ruạṛ
<?php new CMCR_Registered_Users_Report(); class CMCR_Registered_Users_Report extends CMCR_Report_Base { public function init() { add_filter('cmcr_graph_tab_controls_output-' . $this->getReportSlug(), array($this, 'addGraphControls')); add_filter('cmcr_report_name_filter', array('CMCR_Report_Base', 'addReportNameContent'), 10, 2); } public function addGraphControls($output) { $postArray = filter_input_array(INPUT_POST); ob_start(); ?> <form method="post" action=""> <input type="text" name="date_from" value="<?php echo!empty($postArray['date_from']) ? $postArray['date_from'] : '' ?>" class="datepicker" /> <input type="text" name="date_to" value="<?php echo!empty($postArray['date_to']) ? $postArray['date_to'] : '' ?>" class="datepicker" /> <input type="submit" value="Filter"> </form> <?php $graphControlsOutput = ob_get_clean(); $output = $graphControlsOutput . $output; return $output; } public function getReportSlug() { return 'registered-users'; } public function getReportDescription() { return CM_Custom_Reports::__('Report about number of registered users'); } public function getReportName() { return CM_Custom_Reports::__('Registered Users'); } public function getGroups() { return array('users' => CM_Custom_Reports::__('Users')); } /** * Return the list of possible Graph Types * @param type $possibleGraphTypes * @return type */ public function getPossibleGraphTypes($possibleGraphTypes) { foreach($possibleGraphTypes as $key => $value) { if( !in_array($key, array('bars', 'points')) ) { unset($possibleGraphTypes[$key]); } } return $possibleGraphTypes; } public function getReportExtraOptions() { $graphOptions = array( 'axisLabels' => array( 'show' => true ), 'xaxis' => array( 'axisLabel' => 'Day', 'mode' => 'time', 'timeformat' => CM_Custom_Reports_Backend::getDateFormat('flot'), 'minTickSize' => array(1, "day") ), 'yaxis' => array( 'axisLabel' => 'Amount', 'min' => 0, 'minTickSize' => 1, 'tickDecimals' => 0 ), 'series' => array( 'bars' => array( 'show' => TRUE, 'barWidth' => 24*60*60*1000, 'align' => 'center' ) ), 'grid' => array( 'hoverable' => TRUE, 'clickable' => TRUE, 'autoHighlight' => TRUE, ) ); $reportOptions = array( 'cron' => TRUE, 'graph' => $graphOptions, 'graph_datepicker' => array( 'showOn' => 'both', 'showAnim' => 'fadeIn', 'dateFormat' => CM_Custom_Reports_Backend::getDateFormat('datepicker'), 'buttonImage' => CM_Custom_Reports_Backend::$imagesPath . 'calendar.gif', ) ); return $reportOptions; } public static function addDataFilter() { $dateQuery = array(); $postArray = filter_input_array(INPUT_POST); if( !empty($postArray['date_from']) ) { $dateQuery['after'] = $postArray['date_from']; } if( !empty($postArray['date_to']) ) { $dateQuery['before'] = $postArray['date_to']; } else { $dateQuery['before'] = CM_Custom_Reports_Backend::getDate(); } return $dateQuery; } public function getData($dataArgs = array('json' => FALSE)) { static $savedData = array(); $postByDate = array(); $dataUsers = array(); $args = array( ); $json = !empty($dataArgs['json']) ? $dataArgs['json'] : false; if( empty($dataArgs['date_query']) ) { $args['date_query'] = self::addDataFilter(); } else { $args['date_query'] = $dataArgs['date_query']; } if( !empty($args['date_query']['before']) && !empty($args['date_query']['after']) ) { $args['date_query']['inclusive'] = true; } $argsKey = sha1(maybe_serialize($args)); if( !empty($savedData[$argsKey]) ) { return $savedData[$argsKey]; } /* * Posts */ $query = new WP_User_Query($args); $users = $query->results; if( !empty($users) ) { foreach($users as $user) { $time = strtotime($user->user_registered); $realDate = CM_Custom_Reports_Backend::getDate($time); $realTime = strtotime($realDate); if( isset($postByDate[$realTime]) ) { $postByDate[$realTime] ++; } else { $postByDate[$realTime] = 1; } } ksort($postByDate); reset($postByDate); $first_key = key($postByDate); self::updateDataDateFrom(CM_Custom_Reports_Backend::getDate($first_key)); foreach($postByDate as $key => $value) { $dataUsers[] = array((int) $key * 1000, $value); } } $result = array( array( 'label' => __('Registered Users'), 'data' => $dataUsers ), ); if( $json ) { $result = json_encode($result); } $savedData[$argsKey] = $result; return $result; } }
cải xoăn