public function index() { $view = new View('@VisitTime/index'); $view->dataTableVisitInformationPerLocalTime = $this->renderReport(new GetVisitInformationPerLocalTime()); $view->dataTableVisitInformationPerServerTime = $this->renderReport(new GetVisitInformationPerServerTime()); return $view->render(); }
/** * @see ViewDataTable::main() * @return mixed */ public function render() { $view = new View('@CoreVisualizations/_dataTableViz_sparklines.twig'); $columnsList = array(); if ($this->config->hasSparklineMetrics()) { foreach ($this->config->getSparklineMetrics() as $cols) { $columns = $cols['columns']; if (!is_array($columns)) { $columns = array($columns); } $columnsList = array_merge($columns, $columnsList); } } $view->allMetricsDocumentation = Metrics::getDefaultMetricsDocumentation(); $this->requestConfig->request_parameters_to_modify['columns'] = $columnsList; $this->requestConfig->request_parameters_to_modify['format_metrics'] = '1'; if (!empty($this->requestConfig->apiMethodToRequestDataTable)) { $this->fetchConfiguredSparklines(); } $view->sparklines = $this->config->getSortedSparklines(); $view->isWidget = Common::getRequestVar('widget', 0, 'int'); $view->titleAttributes = $this->config->title_attributes; $view->footerMessage = $this->config->show_footer_message; $view->areSparklinesLinkable = $this->config->areSparklinesLinkable(); $view->title = ''; if ($this->config->show_title) { $view->title = $this->config->title; } return $view->render(); }
/** * Renders and echo's HTML that displays the Piwik promo video. */ public function getPromoVideo() { $view = new View('@CoreHome/getPromoVideo'); $view->shareText = $this->translator->translate('CoreHome_SharePiwikShort'); $view->shareTextLong = $this->translator->translate('CoreHome_SharePiwikLong'); $view->promoVideoUrl = 'https://www.youtube.com/watch?v=OslfF_EH81g'; return $view->render(); }
public function displayDbConnectionMessage($exception = null) { $view = new PiwikView("@Installation/cannotConnectToDb"); $view->exceptionMessage = $exception->getMessage(); $ex = new DatabaseConnectionFailedException($view->render()); $ex->setIsHtmlMessage(); throw $ex; }
public function testJsInclude2() { $view = new View('@Widgetize/testJsInclude2'); $view->url1 = '?module=Widgetize&action=js&moduleToWidgetize=UserSettings&actionToWidgetize=getBrowser&idSite=1&period=day&date=yesterday'; $view->url2 = '?module=Widgetize&action=js&moduleToWidgetize=UserCountry&actionToWidgetize=getCountry&idSite=1&period=day&date=yesterday&viewDataTable=cloud&show_footer=0'; $view->url3 = '?module=Widgetize&action=js&moduleToWidgetize=Referrers&actionToWidgetize=getKeywords&idSite=1&period=day&date=yesterday&viewDataTable=table&show_footer=0'; return $view->render(); }
/** * Renders and returns the language selector HTML. * * @return string */ public function getLanguagesSelector() { $view = new View("@LanguagesManager/getLanguagesSelector"); $view->languages = API::getInstance()->getAvailableLanguageNames(); $view->currentLanguageCode = self::getLanguageCodeForCurrentUser(); $view->currentLanguageName = self::getLanguageNameForCurrentUser(); return $view->render(); }
public function promoPiwikPro() { $view = new View('@PiwikPro/promoPiwikProWidget'); $promo = $this->promo->getContent(); $view->ctaLinkUrl = $this->advertising->getPromoUrlForOnPremises('PromoWidget', $promo['campaignContent']); $view->ctaText = $promo['text']; $view->ctaLinkTitle = $this->promo->getLinkTitle(); return $view->render(); }
public function index() { $view = new View('@VisitorInterest/index'); $view->dataTableNumberOfVisitsPerVisitDuration = $this->getNumberOfVisitsPerVisitDuration(true); $view->dataTableNumberOfVisitsPerPage = $this->getNumberOfVisitsPerPage(true); $view->dataTableNumberOfVisitsByVisitNum = $this->getNumberOfVisitsByVisitCount(true); $view->dataTableNumberOfVisitsByDaysSinceLast = $this->getNumberOfVisitsByDaysSinceLast(true); return $view->render(); }
public function promoServices() { $view = new View('@ProfessionalServices/promoServicesWidget'); $promo = $this->promo->getContent(); $view->ctaLinkUrl = $this->advertising->getPromoUrlForPiwikProUpgrade(); $view->ctaText = $promo['text']; $view->ctaLinkTitle = $this->promo->getLinkTitle(); return $view->render(); }
/** * Echo's an HTML chunk describing the current database size, and the estimated space * savings after the scheduled data purge is run. */ public function getDatabaseSize() { Piwik::checkUserHasSuperUserAccess(); $view = new View('@PrivacyManager/getDatabaseSize'); $forceEstimate = Common::getRequestVar('forceEstimate', 0); $view->dbStats = $this->getDeleteDBSizeEstimate($getSettingsFromQuery = true, $forceEstimate); $view->language = LanguagesManager::getLanguageCodeForCurrentUser(); return $view->render(); }
public function render() { $view = new View('@ProfessionalServices/promoServicesWidget'); $promo = $this->promo->getContent(); $view->ctaLinkUrl = $promo['url']; $view->ctaText = $promo['text']; $view->ctaLinkTitle = $this->promo->getLinkTitle(); return $view->render(); }
public function indexSiteSearch() { $view = new View('@Actions/indexSiteSearch'); $view->keywords = $this->getSiteSearchKeywords(true); $view->noResultKeywords = $this->getSiteSearchNoResultKeywords(true); $view->pagesUrlsFollowingSiteSearch = $this->getPageUrlsFollowingSiteSearch(true); $categoryTrackingEnabled = \Piwik\Plugin\Manager::getInstance()->isPluginActivated('CustomVariables'); if ($categoryTrackingEnabled) { $view->categories = $this->getSiteSearchCategories(true); } return $view->render(); }
public function goalConversionsOverview() { $view = new View('@Goals/conversionOverview'); $idGoal = Common::getRequestVar('idGoal', null, 'string'); $view->topDimensions = $this->getTopDimensions($idGoal); $goalMetrics = Request::processRequest('Goals.get', array('idGoal' => $idGoal)); // conversion rate for new and returning visitors $view->conversion_rate_returning = $this->formatConversionRate($goalMetrics, 'conversion_rate_returning_visit'); $view->conversion_rate_new = $this->formatConversionRate($goalMetrics, 'conversion_rate_new_visit'); $view->idGoal = $idGoal; return $view->render(); }
public function index() { $view = new View('@UserSettings/index'); $view->dataTablePlugin = $this->getPlugin(true); $view->dataTableResolution = $this->getResolution(true); $view->dataTableConfiguration = $this->getConfiguration(true); $view->dataTableOS = $this->getOS(true); $view->dataTableBrowser = $this->getBrowser(true); $view->dataTableBrowserType = $this->getBrowserType(true); $view->dataTableMobileVsDesktop = $this->getMobileVsDesktop(true); $view->dataTableBrowserLanguage = $this->getLanguage(true); return $view->render(); }
/** * Assigns the given variables to the template and renders it. * * Example: * * public function myControllerAction () { * return $this->renderTemplate('index', array( * 'answerToLife' => '42' * )); * } * * This will render the 'index.twig' file within the plugin templates folder and assign the view variable * `answerToLife` to `42`. * * @param string $template The name of the template file. If only a name is given it will automatically use * the template within the plugin folder. For instance 'myTemplate' will result in * '@$pluginName/myTemplate.twig'. Alternatively you can include the full path: * '@anyOtherFolder/otherTemplate'. The trailing '.twig' is not needed. * @param array $variables For instance array('myViewVar' => 'myValue'). In template you can use {{ myViewVar }} * @return string * @api */ protected function renderTemplate($template, array $variables = array()) { if (false === strpos($template, '@') || false === strpos($template, '/')) { $aPluginName = explode('\\', get_class($this)); $aPluginName = $aPluginName[2]; $template = '@' . $aPluginName . '/' . $template; } $view = new View($template); foreach ($variables as $key => $value) { $view->{$key} = $value; } return $view->render(); }
public function render() { $lastMinutes = Config::getInstance()->General[Controller::SIMPLE_VISIT_COUNT_WIDGET_LAST_MINUTES_CONFIG_KEY]; $lastNData = Request::processRequest('Live.getCounters', array('lastMinutes' => $lastMinutes)); $view = new View('@Live/getSimpleLastVisitCount'); $view->lastMinutes = $lastMinutes; $view->visitors = MetricsFormatter::getPrettyNumber($lastNData[0]['visitors']); $view->visits = MetricsFormatter::getPrettyNumber($lastNData[0]['visits']); $view->actions = MetricsFormatter::getPrettyNumber($lastNData[0]['actions']); $view->refreshAfterXSecs = Config::getInstance()->General['live_widget_refresh_after_seconds']; $view->translations = array('one_visitor' => Piwik::translate('Live_NbVisitor'), 'visitors' => Piwik::translate('Live_NbVisitors'), 'one_visit' => Piwik::translate('General_OneVisit'), 'visits' => Piwik::translate('General_NVisits'), 'one_action' => Piwik::translate('General_OneAction'), 'actions' => Piwik::translate('VisitsSummary_NbActionsDescription'), 'one_minute' => Piwik::translate('General_OneMinute'), 'minutes' => Piwik::translate('General_NMinutes')); return $view->render(); }
public function displayDbConnectionMessage($exception = null) { Common::sendResponseCode(500); $errorMessage = $exception->getMessage(); if (Request::isApiRequest($_GET)) { $ex = new DatabaseConnectionFailedException($errorMessage); throw $ex; } $view = new PiwikView("@Installation/cannotConnectToDb"); $view->exceptionMessage = $errorMessage; $ex = new DatabaseConnectionFailedException($view->render()); $ex->setIsHtmlMessage(); throw $ex; }
public function indexSiteSearch() { $view = new View('@Actions/indexSiteSearch'); $keyword = Report::factory($this->pluginName, 'getSiteSearchKeywords'); $noResult = Report::factory($this->pluginName, 'getSiteSearchNoResultKeywords'); $pageUrls = Report::factory($this->pluginName, 'getPageUrlsFollowingSiteSearch'); $view->keywords = $keyword->render(); $view->noResultKeywords = $noResult->render(); $view->pagesUrlsFollowingSiteSearch = $pageUrls->render(); $categoryTrackingEnabled = Actions::isCustomVariablesPluginsEnabled(); if ($categoryTrackingEnabled) { $categories = Report::factory($this->pluginName, 'getSiteSearchCategories'); $view->categories = $categories->render(); } return $view->render(); }
public function getConversionsOverview() { $view = new View('@Ecommerce/conversionOverview'); $idGoal = Common::getRequestVar('idGoal', null, 'string'); $goalMetrics = Request::processRequest('Goals.get', array('idGoal' => $idGoal)); $dataRow = $goalMetrics->getFirstRow(); $view->idSite = Common::getRequestVar('idSite', null, 'int'); $view->idGoal = $idGoal; if ($dataRow) { $view->revenue = $dataRow->getColumn('revenue'); $view->revenue_subtotal = $dataRow->getColumn('revenue_subtotal'); $view->revenue_tax = $dataRow->getColumn('revenue_tax'); $view->revenue_shipping = $dataRow->getColumn('revenue_shipping'); $view->revenue_discount = $dataRow->getColumn('revenue_discount'); } return $view->render(); }
/** * @internal For Debugging only * Call metadata reports and draw the default graph for each report. */ public function index() { Piwik::checkUserHasSomeAdminAccess(); $idSite = Common::getRequestVar('idSite', 1, 'int'); $period = Common::getRequestVar('period', 'day', 'string'); $date = Common::getRequestVar('date', 'today', 'string'); $_GET['token_auth'] = Piwik::getCurrentUserTokenAuth(); $reports = APIPlugins::getInstance()->getReportMetadata($idSite, $period, $date); $plot = array(); foreach ($reports as $report) { if (!empty($report['imageGraphUrl'])) { $plot[] = array($report['category'] . ' › ' . $report['name'], SettingsPiwik::getPiwikUrl() . $report['imageGraphUrl']); } } $view = new View('@ImageGraph/index'); $view->titleAndUrls = $plot; return $view->render(); }
public function getMeasurableTypeSettings() { $idSite = Common::getRequestVar('idSite', 0, 'int'); $idType = Common::getRequestVar('idType', '', 'string'); if ($idSite >= 1) { Piwik::checkUserHasAdminAccess($idSite); } else { if ($idSite === 0) { Piwik::checkUserHasSomeAdminAccess(); } else { throw new Exception('Invalid idSite parameter. IdSite has to be zero or higher'); } } $view = new View('@SitesManager/measurable_type_settings'); $propSettings = new MeasurableSettings($idSite, $idType); $view->settings = $propSettings->getSettingsForCurrentUser(); return $view->render(); }
function getRank() { $idSite = Common::getRequestVar('idSite'); $site = new Site($idSite); $url = urldecode(Common::getRequestVar('url', '', 'string')); if (!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) { $url = 'http://' . $url; } if (empty($url) || !UrlHelper::isLookLikeUrl($url)) { $url = $site->getMainUrl(); } $dataTable = API::getInstance()->getRank($url); $view = new View('@SEO/getRank'); $view->urlToRank = RankChecker::extractDomainFromUrl($url); /** @var \Piwik\DataTable\Renderer\Php $renderer */ $renderer = Renderer::factory('php'); $renderer->setSerialize(false); $view->ranks = $renderer->render($dataTable); return $view->render(); }
/** * Generate the reports for the dashboard * @return View */ public function index() { $view = new View('@CampaignDetailed/index'); $view->graphEvolutionCampaigns = $this->getCampaignEvolutionGraph(); $view->graphPieCampaigns = $this->getCampaignPieReport(); $view->graphKeywords = $this->getKeywordPieReport(); $view->graphMediums = $this->getMediumBarReport(); $view->graphContents = $this->getContentBarReport(); $view->graphSources = $this->getSourcePieReport(); $distinctMetrics = $this->getDistinctUtmMetrics(); foreach ($distinctMetrics as $name => $value) { $view->{$name} = $value; } $view->sparklineCampaign = $this->getUrlSparkline('getNumberOfDistinctCampaignSparkline'); $view->sparklineKeyword = $this->getUrlSparkline('getNumberOfDistinctKeywordSparkline'); $view->sparklineMedium = $this->getUrlSparkline('getNumberOfDistinctMediumSparkline'); $view->sparklineContent = $this->getUrlSparkline('getNumberOfDistinctContentSparkline'); $view->sparklineSource = $this->getUrlSparkline('getNumberOfDistinctSourceSparkline'); return $view->render(); }
public function render() { // prepare the all steps templates $this->currentStepId = array_search($this->currentStepName, $this->steps); $this->totalNumberOfSteps = count($this->steps); $this->percentDone = round($this->currentStepId * 100 / ($this->totalNumberOfSteps - 1)); $this->percentToDo = 100 - $this->percentDone; $this->nextModuleName = ''; if (isset($this->steps[$this->currentStepId + 1])) { $this->nextModuleName = $this->steps[$this->currentStepId + 1]; } $this->previousModuleName = ''; if (isset($this->steps[$this->currentStepId - 1])) { $this->previousModuleName = $this->steps[$this->currentStepId - 1]; } $this->previousPreviousModuleName = ''; if (isset($this->steps[$this->currentStepId - 2])) { $this->previousPreviousModuleName = $this->steps[$this->currentStepId - 2]; } return parent::render(); }
/** * Reset password action. Stores new password as hash and sends email * to confirm use. * * @param none */ function resetPassword() { $infoMessage = null; $formErrors = null; $form = new FormResetPassword(); if ($form->validate()) { $nonce = $form->getSubmitValue('form_nonce'); if (Nonce::verifyNonce('Login.login', $nonce)) { $formErrors = $this->resetPasswordFirstStep($form); if (empty($formErrors)) { $infoMessage = Piwik::translate('Login_ConfirmationLinkSent'); } } else { $formErrors = array($this->getMessageExceptionNoAccess()); } } else { // if invalid, display error $formData = $form->getFormData(); $formErrors = $formData['errors']; } $view = new View('@Login/resetPassword'); $view->infoMessage = $infoMessage; $view->formErrors = $formErrors; return $view->render(); }
public function indexWebsites() { $view = new View('@Referrers/indexWebsites'); $view->websites = $this->renderReport(new GetWebsites()); $view->socials = $this->renderReport(new GetSocials()); return $view->render(); }
/** * Shows the "Track Visits" checkbox. */ public function optOut() { $trackVisits = !IgnoreCookie::isIgnoreCookieFound(); $nonce = Common::getRequestVar('nonce', false); $language = Common::getRequestVar('language', ''); if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) { Nonce::discardNonce('Piwik_OptOut'); IgnoreCookie::setIgnoreCookie(); $trackVisits = !$trackVisits; } $view = new View('@CoreAdminHome/optOut'); $view->trackVisits = $trackVisits; $view->nonce = Nonce::getNonce('Piwik_OptOut', 3600); $view->language = APILanguagesManager::getInstance()->isLanguageAvailable($language) ? $language : LanguagesManager::getLanguageCodeForCurrentUser(); return $view->render(); }
public function safemode($lastError = array()) { $this->tryToRepairPiwik(); if (empty($lastError)) { $lastError = array('message' => Common::getRequestVar('error_message', null, 'string'), 'file' => Common::getRequestVar('error_file', null, 'string'), 'line' => Common::getRequestVar('error_line', null, 'integer')); } $outputFormat = Common::getRequestVar('format', 'html', 'string'); $outputFormat = strtolower($outputFormat); if (!empty($outputFormat) && 'html' !== $outputFormat) { $errorMessage = $lastError['message']; if (Piwik::isUserIsAnonymous()) { $errorMessage = 'A fatal error occurred.'; } $response = new \Piwik\API\ResponseBuilder($outputFormat); $message = $response->getResponseException(new Exception($errorMessage)); return $message; } if (Common::isPhpCliMode()) { // TODO: I can't find how this will ever get called / safeMode is never set for Console throw new Exception("Error: " . var_export($lastError, true)); } $view = new View('@CorePluginsAdmin/safemode'); $view->lastError = $lastError; $view->isSuperUser = Piwik::hasUserSuperUserAccess(); $view->isAnonymousUser = Piwik::isUserIsAnonymous(); $view->plugins = Plugin\Manager::getInstance()->loadAllPluginsAndGetTheirInfo(); $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE); $view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE); $view->emailSuperUser = implode(',', Piwik::getAllSuperUserAccessEmailAddresses()); $view->piwikVersion = Version::VERSION; $view->showVersion = !Common::getRequestVar('tests_hide_piwik_version', 0); $view->pluginCausesIssue = ''; if (!empty($lastError['file'])) { preg_match('/piwik\\/plugins\\/(.*)\\//', $lastError['file'], $matches); if (!empty($matches[1])) { $view->pluginCausesIssue = $matches[1]; } } return $view->render(); }
public static function template_reportParametersScheduledReports(&$out) { $view = new View('@ScheduledReports/reportParametersScheduledReports'); $view->currentUserEmail = Piwik::getCurrentUserEmail(); $view->reportType = self::EMAIL_TYPE; $view->defaultDisplayFormat = self::DEFAULT_DISPLAY_FORMAT; $view->defaultEmailMe = self::EMAIL_ME_PARAMETER_DEFAULT_VALUE ? 'true' : 'false'; $view->defaultEvolutionGraph = self::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE ? 'true' : 'false'; $out .= $view->render(); }
/** * send email to Piwik team and display nice thanks * @throws Exception */ function sendFeedback() { $email = Common::getRequestVar('email', '', 'string'); $body = Common::getRequestVar('body', '', 'string'); $category = Common::getRequestVar('category', '', 'string'); $nonce = Common::getRequestVar('nonce', '', 'string'); $view = new View('@Feedback/sendFeedback'); $view->feedbackEmailAddress = Config::getInstance()->General['feedback_email_address']; try { $minimumBodyLength = 40; if (strlen($body) < $minimumBodyLength || strpos($email, 'probe@') !== false || strpos($body, '<probe') !== false) { throw new Exception(Piwik::translate('Feedback_ExceptionBodyLength', array($minimumBodyLength))); } if (!Piwik::isValidEmailString($email)) { throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidEmail')); } if (preg_match('/https?:/i', $body)) { throw new Exception(Piwik::translate('Feedback_ExceptionNoUrls')); } if (!Nonce::verifyNonce('Feedback.sendFeedback', $nonce)) { throw new Exception(Piwik::translate('General_ExceptionNonceMismatch')); } Nonce::discardNonce('Feedback.sendFeedback'); $mail = new Mail(); $mail->setFrom(Common::unsanitizeInputValue($email)); $mail->addTo($view->feedbackEmailAddress, 'Piwik Team'); $mail->setSubject('[ Feedback form - Piwik ] ' . $category); $mail->setBodyText(Common::unsanitizeInputValue($body) . "\n" . 'Piwik ' . Version::VERSION . "\n" . 'IP: ' . IP::getIpFromHeader() . "\n" . 'URL: ' . Url::getReferrer() . "\n"); @$mail->send(); } catch (Exception $e) { $view->errorString = $e->getMessage(); $view->message = $body; } return $view->render(); }