public function actionCharts() { // sanitize $_POST['dimension'] = preg_replace('#[^a-z0-9\\:]#i', '', @$_POST['dimension']); $_POST['metric'] = preg_replace('#[^a-z0-9\\:]#i', '', @$_POST['metric']); $_POST['days'] = absint(@$_POST['days']); $_POST['realtime'] = absint(@$_POST['realtime']); $dimension = substr($_POST['dimension'], 2); $type = substr($_POST['dimension'], 0, 1); $betterAnalyticsPick = get_option('ba_dashboard_pick'); if ($_POST['dimension'] != @$betterAnalyticsPick['dimension'] || $_POST['metric'] != @$betterAnalyticsPick['metric'] || $_POST['days'] != @$betterAnalyticsPick['days'] || $_POST['realtime'] != @$betterAnalyticsPick['realtime']) { update_option('ba_dashboard_pick', array('dimension' => $_POST['dimension'], 'metric' => $_POST['metric'], 'days' => $_POST['days'], 'realtime' => $_POST['realtime'])); } if (!empty($_POST['realtime'])) { if (!($realTime = get_transient('ba_realtime'))) { $realTime = DigitalPointBetterAnalytics_Model_Widget::getRealtimeData(55, true); } $realTimeOutput = array('users' => 0); if (!empty($realTime)) { foreach ($realTime as $key => $value) { if (is_array($value)) { $realTimeOutput[$key][] = array(ucwords(strtolower($key == 'keywords' ? __('Organic Search Keywords', 'better-analytics') : ($key == 'referral_path' ? __('Referring URL', 'better-analytics') : ($key == 'page_path' ? __('Current Page', 'better-analytics') : ($key == 'medium' ? __('Medium', 'better-analytics') : ($key == 'devices' ? __('Devices', 'better-analytics') : '')))))), __('Visitors', 'better-analytics')); foreach ($value as $name => $amount) { $realTimeOutput[$key][] = array($name, intval($amount)); } } else { $realTimeOutput[$key] = intval($value); } } } wp_send_json(array('realtime_data' => $realTimeOutput, 'title' => __('Real-time', 'better-analytics'))); } else { $validDimensions = $this->getDimensionsForCharts(); $validMetrics = $this->getMetricsForCharts(); $chartData = array_merge(array(array($validDimensions[$_POST['dimension']], $validMetrics[$_POST['metric']])), DigitalPointBetterAnalytics_Helper_Reporting::getInstance()->getChart(1, intval($_POST['days']), $_POST['metric'], $dimension)); wp_send_json(array('chart_data' => $chartData, 'title' => $dimension == 'ga:date' ? $validMetrics[$_POST['metric']] : $validDimensions[$_POST['dimension']], 'type' => $type)); } }
public static function minute() { if (is_active_widget(false, false, 'better-analytics_popular_widget')) { DigitalPointBetterAnalytics_Model_Widget::getRealtimeData(); } }