0, 'blocked' => 0, 'deactivated' => 0, 'history' => array()); add_option('adblocker_notify_counter', $anCount); } //update option with new values $anCount[$an_state] ++; //then update history $anCount = an_history_counter($anCount, $an_state); } //update db update_option('adblocker_notify_counter', $anCount); exit; } add_action('wp_ajax_call_an_adblock_counter', 'an_adblock_counter'); add_action('wp_ajax_nopriv_call_an_adblock_counter', 'an_adblock_counter'); /*************************************************************** * Calcul date diff ***************************************************************/ function an_date_diff($toDay, $toCheck) { $todayObj = new DateTime($toDay); $expiredObj = new DateTime($toCheck); $dateDiff = $todayObj->diff($expiredObj); return $dateDiff->days; } /*************************************************************** * Page history counter ***************************************************************/ function an_history_counter($anCount, $val = null) { $anToday = date('Y-m-d', current_time('timestamp', 0)); //$anToday = date( 'Y-m-d', strtotime( '1 day', strtotime( date( 'Y-m-d', current_time( 'timestamp', 0 ) ) ) ) ); if (empty($anCount['history'][0])) { $anCount['history'][0] = array('date' => $anToday, 'total' => $anCount['total'], 'blocked' => $anCount['blocked']); } else { $anDate = $anCount['history'][0]['date']; $anDiff = an_date_diff($anToday, $anDate); if ($anDate == $anToday) { //increase current date if ($val == 'total') { $anCount['history'][0]['total'] = $anCount['history'][0]['total'] + 1; } elseif ($val == 'blocked') { $anCount['history'][0]['blocked'] = $anCount['history'][0]['blocked'] + 1; } } else if ($anDiff > 0) { //remove last + add new one if ($val == 'total') { $anNew = array('date' => $anToday, 'total' => 1, 'blocked' => 0); } elseif ($val == 'blocked') { $anNew = array('date' => $anToday, 'total' => 1, 'blocked' => 1); } $anCount['history'] = array_merge(array($anNew), $anCount['history']); if (count($anCount['history'] == 8)) { $anOld = an_date_diff($anToday, $anCount['history'][7]['date']); if ($anOld == 7 && count($anCount['history'] == 8)) { //remove last + add new one ($anRemove is a rubbish var) array_pop($anCount['history']); } } } } return $anCount; } /*************************************************************** * Data history extraction & order revert for chart ***************************************************************/ function an_widget_data_histoty($anCount, $val = null) { if (empty($anCount['history'][0])) return; foreach ($anCount['history'] as $row) { $anOutput[] = $row[$val]; } return $anOutput; } /*************************************************************** * Display the Dashboard Widget ***************************************************************/ function an_get_counters() { $anCount = get_option('adblocker_notify_counter'); if (empty($anCount)) { echo '
No data
'; return; } //prevent plugin's counter to be higher than the page counter if page is refreshed during the ajax call or if wordpress caching systeme in not badly configured if ( ($anCount['blocked'] > $anCount['total']) || ($anCount['history'][0]['blocked'] > $anCount['history'][0]['total']) ) { if ($anCount['blocked'] > $anCount['total']) { $anCount['total'] = $anCount['blocked']; } if ($anCount['history'][0]['blocked'] > $anCount['history'][0]['total']) { $anCount['history'][0]['total'] = $anCount['history'][0]['blocked']; } //update db update_option('adblocker_notify_counter', $anCount); } if (empty($anCount['total'])) $anCount['total'] = 0; if (empty($anCount['history'][0]['total'])) $anCount['history'][0]['total'] = 0; if (empty($anCount['blocked'])) $anCount['blocked'] = 0; if (empty($anCount['history'][0]['blocked'])) $anCount['history'][0]['blocked'] = 0; if (empty($anCount['deactivated'])) $anCount['deactivated'] = 0; $totalNoBlocker = $anCount['total'] - $anCount['blocked']; $average = 0; if ($anCount['total'] != 0) { $average = round(($anCount['blocked'] / $anCount['total']) * 100, 2); } $totalNoBlockerToday = $anCount['history'][0]['total'] - $anCount['history'][0]['blocked']; $averageToday = 0; if ($anCount['total'] != 0) { $averageToday = round(($anCount['history'][0]['blocked'] / $anCount['history'][0]['total']) * 100, 2); } $output .= '' . $anCount['deactivated'] . ' ' . __('Ad Blocker software deactivated', 'an-translate') . '
' . __('Settings', 'an-translate') . '     ' . __('Reset Stats', 'an-translate') . '
'; $output .= ''; echo $output; } /*************************************************************** * Register the Dashboard Widget display function ***************************************************************/ function an_dashboard_widgets() { $an_option = TitanFramework::getInstance('adblocker_notify'); if (isset($an_option) && $an_option->getOption('an_option_stats') != 2) { wp_add_dashboard_widget('an_dashboard_widgets', '