/** * Show field */ public function getInputHtml($name, $value) { if (craft()->analytics_plugin->checkRequirements()) { if (craft()->config->get('enableFieldtype', 'analytics')) { $plugin = craft()->plugins->getPlugin('analytics'); // Reformat the input name into something that looks more like an ID $id = craft()->templates->formatInputId($name); // Figure out what that ID is going to look like once it has been namespaced $namespacedId = craft()->templates->namespaceInputId($id); $variables = array(); if ($this->element->uri) { $uri = craft()->analytics->getElementUrlPath($this->element->id, $this->element->locale); $ids = craft()->analytics->getProfileId(); $startDate = date('Y-m-d', strtotime('-1 month')); $endDate = date('Y-m-d'); $metrics = 'ga:pageviews'; $dimensions = 'ga:date'; $optParams = array('dimensions' => $dimensions, 'filters' => "ga:pagePath==" . $uri); $criteria = new Analytics_RequestCriteriaModel(); $criteria->startDate = $startDate; $criteria->endDate = $endDate; $criteria->metrics = $metrics; $criteria->optParams = $optParams; $options = []; $cacheId = ['ReportsController.actionGetElementReport', $criteria->getAttributes()]; $response = craft()->analytics_cache->get($cacheId); if ($response) { $response = ['type' => 'area', 'chart' => $response]; $options = ['cachedResponse' => $response]; } $jsonOptions = json_encode($options); craft()->templates->includeJsResource('analytics/js/jsapi.js', true); craft()->templates->includeJsResource('analytics/js/Analytics.js'); craft()->templates->includeJsResource('analytics/js/ReportField.js'); craft()->templates->includeCssResource('analytics/css/ReportField.css'); craft()->templates->includeJs('var AnalyticsChartLanguage = "' . Craft::t('analyticsChartLanguage') . '";'); craft()->templates->includeJs('new AnalyticsReportField("' . $namespacedId . '-field", ' . $jsonOptions . ');'); $variables = array('isNew' => false, 'hasUrl' => true, 'id' => $id, 'uri' => $uri, 'name' => $name, 'value' => $value, 'model' => $this->model, 'element' => $this->element); } elseif (!$this->element->id) { $variables = array('hasUrl' => false, 'isNew' => true); } else { $variables = array('hasUrl' => false, 'isNew' => false); } $variables['isConfigured'] = $plugin->isConfigured(); return craft()->templates->render('analytics/_components/fieldtypes/Report/input', $variables); } else { return craft()->templates->render('analytics/_components/fieldtypes/Report/disabled'); } } else { return craft()->templates->render('analytics/_special/install/plugin-not-configured'); } }
/** * Element Report * * @param array $variables * * @return null */ public function actionGetElementReport(array $variables = array()) { try { $elementId = craft()->request->getRequiredParam('elementId'); $locale = craft()->request->getRequiredParam('locale'); $metric = craft()->request->getRequiredParam('metric'); $uri = craft()->analytics->getElementUrlPath($elementId, $locale); if ($uri) { if ($uri == '__home__') { $uri = ''; } $start = date('Y-m-d', strtotime('-1 month')); $end = date('Y-m-d'); $dimensions = 'ga:date'; $optParams = array('dimensions' => $dimensions, 'filters' => "ga:pagePath==" . $uri); $criteria = new Analytics_RequestCriteriaModel(); $criteria->startDate = $start; $criteria->endDate = $end; $criteria->metrics = $metric; $criteria->optParams = $optParams; $cacheId = ['ReportsController.actionGetElementReport', $criteria->getAttributes()]; $response = craft()->analytics_cache->get($cacheId); if (!$response) { $response = craft()->analytics->sendRequest($criteria); if ($response) { craft()->analytics_cache->set($cacheId, $response); } } $this->returnJson(['type' => 'area', 'chart' => $response]); } else { throw new Exception("Element doesn't support URLs.", 1); } } catch (\Exception $e) { $this->returnErrorJson($e->getMessage()); } }