コード例 #1
0
ファイル: Xml.php プロジェクト: Doluci/tomatocart
 protected function renderTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false);
     $array = $renderer->flatRender(null, (bool) Piwik_Common::getRequestVar('expanded', false));
     // case DataTable_Array
     if ($table instanceof Piwik_DataTable_Array) {
         return $this->renderDataTableArray($table, $array);
     }
     // integer value of ZERO is a value we want to display
     if ($array != 0 && empty($array)) {
         $out = "<result />";
         return $this->output($out);
     }
     if ($table instanceof Piwik_DataTable_Simple) {
         if (is_array($array)) {
             $out = $this->renderDataTableSimple($array);
             $out = "<result>\n" . $out . "</result>";
         } else {
             $out = "<result>" . $array . "</result>";
         }
         return $this->output($out);
     }
     if ($table instanceof Piwik_DataTable) {
         $out = $this->renderDataTable($array);
         $out = "<result>\n{$out}</result>";
         return $this->output($out);
     }
 }
コード例 #2
0
ファイル: Controller.php プロジェクト: nnnnathann/piwik
 function worldMap()
 {
     if (!Piwik_PluginsManager::getInstance()->isPluginActivated('UserCountry')) {
         return '';
     }
     $idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
     Piwik::checkUserHasViewAccess($idSite);
     $period = Piwik_Common::getRequestVar('period');
     $date = Piwik_Common::getRequestVar('date');
     $token_auth = Piwik::getCurrentUserTokenAuth();
     $view = Piwik_View::factory('worldmap');
     $view->dataUrl = "?module=API" . "&method=API.getProcessedReport&format=XML" . "&apiModule=UserCountry&apiAction=getCountry" . "&idSite=" . $idSite . "&period=" . $period . "&date=" . $date . "&token_auth=" . $token_auth . "&segment=" . Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('segment', '')) . "&filter_limit=-1";
     // definition of the color scale
     $view->hueMin = 218;
     $view->hueMax = 216;
     $view->satMin = "0.285";
     $view->satMax = "0.9";
     $view->lgtMin = ".97";
     $view->lgtMax = ".44";
     $request = new Piwik_API_Request('method=API.getMetadata&format=PHP' . '&apiModule=UserCountry&apiAction=getCountry' . '&idSite=' . $idSite . '&period=' . $period . '&date=' . $date . '&token_auth=' . $token_auth . '&filter_limit=-1');
     $metaData = $request->process();
     $metrics = array();
     foreach ($metaData[0]['metrics'] as $id => $val) {
         if (Piwik_Common::getRequestVar('period') == 'day' || $id != 'nb_uniq_visitors') {
             $metrics[] = array($id, $val);
         }
     }
     foreach ($metaData[0]['processedMetrics'] as $id => $val) {
         $metrics[] = array($id, $val);
     }
     $view->metrics = $metrics;
     $view->defaultMetric = 'nb_visits';
     echo $view->render();
 }
コード例 #3
0
	function dispatch()
	{
		$language = Piwik_Common::getRequestVar('language', '', 'string');
		if($language != '')
		{
			$updaterController = new Piwik_CoreUpdater_Controller();
			$updaterController->saveLanguage();
			exit;
		}

		$updater = new Piwik_Updater();
		$updater->addComponentToCheck('core', Piwik_Version::VERSION);
		
		$plugins = Piwik_PluginsManager::getInstance()->getInstalledPlugins();
		foreach($plugins as $pluginName => $plugin)
		{
			$updater->addComponentToCheck($pluginName, $plugin->getVersion());
		}
		
		$componentsWithUpdateFile = $updater->getComponentsWithUpdateFile();
		if(count($componentsWithUpdateFile) == 0)
		{
			return;
		}
			
		$updaterController = new Piwik_CoreUpdater_Controller();
		$updaterController->runUpdaterAndExit($updater, $componentsWithUpdateFile);
	}	
コード例 #4
0
 protected function buildView()
 {
     $view = new Piwik_View($this->dataTableTemplate);
     $this->uniqueIdViewDataTable = $this->getUniqueIdViewDataTable();
     $view->graphType = $this->graphType;
     $this->chartDivId = $this->uniqueIdViewDataTable . "Chart_swf";
     $this->parametersToModify['action'] = $this->currentControllerAction;
     $this->parametersToModify = array_merge($this->variablesDefault, $this->parametersToModify);
     $url = Piwik_Url::getCurrentQueryStringWithParametersModified($this->parametersToModify);
     $this->includeData = !Zend_Registry::get('config')->Debug->disable_merged_requests;
     $idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
     Piwik_API_Request::reloadAuthUsingTokenAuth();
     if (!Piwik::isUserHasViewAccess($idSite)) {
         throw new Exception(Piwik_TranslateException('General_ExceptionPrivilegeAccessWebsite', array("'view'", $idSite)));
     }
     if ($this->includeData) {
         $this->chartData = $this->getFlashData();
     } else {
         $this->chartData = null;
     }
     $view->flashParameters = $this->getFlashParameters();
     $view->urlGraphData = $url;
     $view->chartDivId = $this->chartDivId;
     $view->formEmbedId = "formEmbed" . $this->uniqueIdViewDataTable;
     $view->javascriptVariablesToSet = $this->getJavascriptVariablesToSet();
     $view->properties = $this->getViewProperties();
     return $view;
 }
コード例 #5
0
ファイル: RowEvolution.php プロジェクト: nomoto-ubicast/piwik
 /**
  * The constructor
  * Initialize some local variables from the request
  * @param int $idSite
  * @param Piwik_Date $date ($this->date from controller)
  * @throws Exception
  */
 public function __construct($idSite, $date, $graphType = null)
 {
     $this->apiMethod = Piwik_Common::getRequestVar('apiMethod', '', 'string');
     if (empty($this->apiMethod)) {
         throw new Exception("Parameter apiMethod not set.");
     }
     $this->label = Piwik_Common::getRequestVar('label', '', 'string');
     $this->label = Piwik_Common::unsanitizeInputValue($this->label);
     if ($this->label === '') {
         throw new Exception("Parameter label not set.");
     }
     $this->period = Piwik_Common::getRequestVar('period', '', 'string');
     if (empty($this->period)) {
         throw new Exception("Parameter period not set.");
     }
     $this->idSite = $idSite;
     $this->graphType = $graphType;
     if ($this->period != 'range') {
         // handle day, week, month and year: display last X periods
         $end = $date->toString();
         list($this->date, $lastN) = Piwik_ViewDataTable_GenerateGraphHTML_ChartEvolution::getDateRangeAndLastN($this->period, $end);
     }
     $this->segment = Piwik_Common::getRequestVar('segment', '', 'string');
     $this->loadEvolutionReport();
 }
コード例 #6
0
	protected function setDateTodayIfWebsiteCreatedToday()
	{
		$date = Piwik_Common::getRequestVar('date', false);
		if($date == 'today'
			|| Piwik_Common::getRequestVar('period', false) == 'range') 
		{
			return;
		} 
		$websiteId = Piwik_Common::getRequestVar('idSite', false, 'int');
		if ($websiteId) 
		{
			$website = new Piwik_Site($websiteId);
			$datetimeCreationDate = $this->site->getCreationDate()->getDatetime();
			$creationDateLocalTimezone = Piwik_Date::factory($datetimeCreationDate, $website->getTimezone())->toString('Y-m-d');
			$todayLocalTimezone = Piwik_Date::factory('now', $website->getTimezone())->toString('Y-m-d');
			if( $creationDateLocalTimezone == $todayLocalTimezone ) 
			{
				Piwik::redirectToModule( 'CoreHome', 'index', 
										array(	'date' => 'today', 
												'idSite' => $websiteId, 
												'period' => Piwik_Common::getRequestVar('period')) 
				);
			}
		}
	}
コード例 #7
0
ファイル: Tracker.php プロジェクト: BackupTheBerlios/oos-svn
	/**
	 * Returns our 'generator home made' Piwik_VisitorGenerator_Visit object.
	 *
	 * @return Piwik_VisitorGenerator_Visit
	 */
	protected function getNewVisitObject()
	{
		$ip = Piwik_Common::getRequestVar('cip', false);
		$visit = new Piwik_VisitorGenerator_Visit($ip);
		$visit->generateTimestamp();
		return $visit;
	}	
コード例 #8
0
	/**
	 * Get protocol information, with the exception of HTTPS
	 *
	 * @return string protocol information
	 */
	public static function getProtocolInformation()
	{
		if(Piwik_Common::getRequestVar('clientProtocol', 'http', 'string') == 'https')
		{
			return 'https';
		}

		if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443)
		{
			return 'SERVER_PORT=443';
		}

		if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https')
		{
			return 'X-Forwarded-Proto';
		}

		if(isset($_SERVER['HTTP_X_FORWARDED_SCHEME']) && strtolower($_SERVER['HTTP_X_FORWARDED_SCHEME']) == 'https')
		{
			return 'X-Forwarded-Scheme';
		}

		if(isset($_SERVER['HTTP_X_URL_SCHEME']) && strtolower($_SERVER['HTTP_X_URL_SCHEME']) == 'https')
		{
			return 'X-Url-Scheme';
		}

		return null;
	}
コード例 #9
0
 public function getVisitorLog($fetch = false)
 {
     Piwik_API_Request::reloadAuthUsingTokenAuth();
     // If previous=1 is set, user clicked previous
     // we can't deal with previous so we force display of the first page
     if (Piwik_Common::getRequestVar('previous', 0, 'int') == 1) {
         $_GET['maxIdVisit'] = '';
     }
     $view = Piwik_ViewDataTable::factory();
     $view->init($this->pluginName, __FUNCTION__, 'Live.getLastVisitsDetails');
     $view->disableGenericFilters();
     $view->disableSort();
     $view->setTemplate("Live/templates/visitorLog.tpl");
     $view->setSortedColumn('idVisit', 'ASC');
     $view->disableSearchBox();
     $view->setLimit(20);
     $view->disableOffsetInformation();
     $view->disableExcludeLowPopulation();
     // disable the tag cloud,  pie charts, bar chart icons
     $view->disableShowAllViewsIcons();
     // disable the button "show more datas"
     $view->disableShowAllColumns();
     // disable the RSS feed
     $view->disableShowExportAsRssFeed();
     $view->setReportDocumentation(Piwik_Translate('Live_VisitorLogDocumentation', array('<br />', '<br />')));
     $view->setCustomParameter('dataTablePreviousIsFirst', 1);
     $view->setCustomParameter('filterEcommerce', Piwik_Common::getRequestVar('filterEcommerce', 0, 'int'));
     $view->setCustomParameter('pageUrlNotDefined', Piwik_Translate('General_NotDefined', Piwik_Translate('Actions_ColumnPageURL')));
     return $this->renderView($view, $fetch);
 }
コード例 #10
0
ファイル: SiteUsers.php プロジェクト: BeezyT/piwik-siteusers
 /** Logger hook */
 public function log($notification)
 {
     $data = Piwik_Common::getRequestVar('data', '');
     $data = html_entity_decode($data);
     $data = json_decode($data, true);
     if (!isset($data['SiteUsers_Action'])) {
         return false;
     }
     $action = $notification->getNotificationObject();
     $idaction = $action->getIdActionUrl();
     $info = $notification->getNotificationInfo();
     $idsite = $info['idSite'];
     $idvisit = $info['idVisit'];
     include_once dirname(__FILE__) . '/Model.php';
     include_once dirname(dirname(dirname(__FILE__))) . '/core/Date.php';
     $model = Piwik_SiteUsers_Model::getInstance();
     $logAction = $data['SiteUsers_Action'];
     if ($logAction == 'logout') {
         return $model->logLogout($idvisit);
     }
     if (!isset($data['SiteUsers_UserID']) || !isset($data['SiteUsers_UserName'])) {
         return false;
     }
     $iduser = $data['SiteUsers_UserID'];
     $userName = $data['SiteUsers_UserName'];
     if ($logAction == 'login') {
         $model->logLogin($iduser, $userName, $idsite, $idvisit);
     }
 }
コード例 #11
0
 /**
  * send email to Piwik team and display nice thanks
  */
 function sendFeedback()
 {
     $body = Piwik_Common::getRequestVar('body', '', 'string');
     $email = Piwik_Common::getRequestVar('email', '', 'string');
     $view = new Piwik_View('Feedback/templates/sent.tpl');
     try {
         $minimumBodyLength = 35;
         if (strlen($body) < $minimumBodyLength) {
             throw new Exception(sprintf("Message must be at least %s characters long.", $minimumBodyLength));
         }
         if (!Piwik::isValidEmailString($email)) {
             throw new Exception(Piwik_Translate('UsersManager_ExceptionInvalidEmail'));
         }
         if (strpos($body, 'http://') !== false) {
             throw new Exception("The message cannot contain a URL, to avoid spams messages.");
         }
         $mail = new Piwik_Mail();
         $mail->setFrom($email);
         $mail->addTo('*****@*****.**', 'Piwik Team');
         $mail->setSubject('[ Feedback form - Piwik ]');
         $mail->setBodyText($body);
         @$mail->send();
     } catch (Exception $e) {
         $view->ErrorString = $e->getMessage();
         $view->message = $body;
     }
     echo $view->render();
 }
コード例 #12
0
ファイル: Controller.php プロジェクト: nnnnathann/piwik
 public function getByDayOfWeek($fetch = false)
 {
     $view = $this->getGraph(__FUNCTION__, 'VisitTime.getByDayOfWeek', 'VisitTime_DayOfWeek', $limit = 7, $sort = false);
     $view->disableSort();
     if ($view instanceof Piwik_ViewDataTable_GenerateGraphHTML) {
         $view->showAllTicks();
     }
     // get query params
     $idsite = Piwik_Common::getRequestVar('idSite');
     $date = Piwik_Common::getRequestVar('date');
     $period = Piwik_Common::getRequestVar('period');
     // create a period instance
     $oSite = new Piwik_Site($idsite);
     $oPeriod = Piwik_Archive::makePeriodFromQueryParams($oSite, $period, $date);
     // set the footer message using the period start & end date
     $start = $oPeriod->getDateStart()->toString();
     $end = $oPeriod->getDateEnd()->toString();
     if ($start == $end) {
         $dateRange = $start;
     } else {
         $dateRange = $start . " &ndash; " . $end;
     }
     $view->setFooterMessage(Piwik_Translate('General_ReportGeneratedFrom', $dateRange));
     return $this->renderView($view, $fetch);
 }
コード例 #13
0
ファイル: Controller.php プロジェクト: neolf/PIWIK4MOBILE
 public function index()
 {
     Piwik::checkUserIsSuperUser();
     if ($_SERVER["REQUEST_METHOD"] == "POST") {
         switch (Piwik_Common::getRequestVar('form')) {
             case "formMaskLength":
                 $this->handlePluginState(Piwik_Common::getRequestVar("anonymizeIPEnable", 0));
                 $maskLength = Zend_Registry::get('config')->Tracker;
                 $maskLength->ip_address_mask_length = Piwik_Common::getRequestVar("maskLength", 1);
                 Zend_Registry::get('config')->Tracker = $maskLength->toArray();
                 break;
             case "formDeleteSettings":
                 $deleteLogs = Zend_Registry::get('config')->Deletelogs;
                 $deleteLogs->delete_logs_enable = Piwik_Common::getRequestVar("deleteEnable", 0);
                 $deleteLogs->delete_logs_schedule_lowest_interval = Piwik_Common::getRequestVar("deleteLowestInterval", 7);
                 $deleteLogs->delete_logs_older_than = (int) Piwik_Common::getRequestVar("deleteOlderThan", 180) < 7 ? 7 : Piwik_Common::getRequestVar("deleteOlderThan", 180);
                 $deleteLogs->delete_max_rows_per_run = Piwik_Common::getRequestVar("deleteMaxRows", 100);
                 Zend_Registry::get('config')->Deletelogs = $deleteLogs->toArray();
                 break;
             default:
                 //do nothing
                 break;
         }
     }
     return $this->redirectToIndex('PrivacyManager', 'privacySettings', null, null, null, array('updated' => 1));
 }
コード例 #14
0
ファイル: Controller.php プロジェクト: Gninety/Microweber
 /**
  * send email to Piwik team and display nice thanks
  */
 function sendFeedback()
 {
     $email = Piwik_Common::getRequestVar('email', '', 'string');
     $body = Piwik_Common::getRequestVar('body', '', 'string');
     $category = Piwik_Common::getRequestVar('category', '', 'string');
     $nonce = Piwik_Common::getRequestVar('nonce', '', 'string');
     $view = Piwik_View::factory('sent');
     $view->feedbackEmailAddress = Zend_Registry::get('config')->General->feedback_email_address;
     try {
         $minimumBodyLength = 35;
         if (strlen($body) < $minimumBodyLength) {
             throw new Exception(Piwik_TranslateException('Feedback_ExceptionBodyLength', array($minimumBodyLength)));
         }
         if (!Piwik::isValidEmailString($email)) {
             throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidEmail'));
         }
         if (preg_match('/https?:/i', $body)) {
             throw new Exception(Piwik_TranslateException('Feedback_ExceptionNoUrls'));
         }
         if (!Piwik_Nonce::verifyNonce('Piwik_Feedback.sendFeedback', $nonce)) {
             throw new Exception(Piwik_TranslateException('General_ExceptionNonceMismatch'));
         }
         Piwik_Nonce::discardNonce('Piwik_Feedback.sendFeedback');
         $mail = new Piwik_Mail();
         $mail->setFrom(Piwik_Common::unsanitizeInputValue($email));
         $mail->addTo($view->feedbackEmailAddress, 'Piwik Team');
         $mail->setSubject('[ Feedback form - Piwik ] ' . $category);
         $mail->setBodyText(Piwik_Common::unsanitizeInputValue($body) . "\n" . 'Piwik ' . Piwik_Version::VERSION . "\n" . 'IP: ' . Piwik_Common::getIpString() . "\n" . 'URL: ' . Piwik_Url::getReferer() . "\n");
         @$mail->send();
     } catch (Exception $e) {
         $view->ErrorString = $e->getMessage();
         $view->message = $body;
     }
     echo $view->render();
 }
コード例 #15
0
 function activate()
 {
     Piwik::checkUserIsSuperUser();
     $pluginName = Piwik_Common::getRequestVar('pluginName', null, 'string');
     Piwik_PluginsManager::getInstance()->activatePlugin($pluginName);
     Piwik_Url::redirectToUrl('index.php?module=CorePluginsAdmin');
 }
コード例 #16
0
ファイル: Goals.php プロジェクト: nnnnathann/piwik
 public function main()
 {
     $this->idSite = Piwik_Common::getRequestVar('idSite', null, 'int');
     $this->processOnlyIdGoal = Piwik_Common::getRequestVar('idGoal', 0, 'string');
     $this->isEcommerce = $this->processOnlyIdGoal == Piwik_Archive::LABEL_ECOMMERCE_ORDER;
     $this->viewProperties['show_exclude_low_population'] = true;
     $this->viewProperties['show_goals'] = true;
     if (Piwik_Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) {
         $this->setReportDocumentation(Piwik_Translate('Goals_ConversionByTypeReportDocumentation', array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>')));
     }
     $this->setMetricDocumentation('nb_visits', Piwik_Translate('Goals_ColumnVisits'));
     if ($this->isEcommerce) {
         $this->setMetricDocumentation('revenue_per_visit', Piwik_Translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik_Translate('General_EcommerceOrders')));
         $this->setColumnsTranslations(array('goal_%s_conversion_rate' => Piwik_Translate('Goals_ConversionRate'), 'goal_%s_nb_conversions' => Piwik_Translate('General_EcommerceOrders'), 'goal_%s_revenue' => Piwik_Translate('General_TotalRevenue'), 'goal_%s_revenue_per_visit' => Piwik_Translate('General_ColumnValuePerVisit'), 'goal_%s_avg_order_revenue' => Piwik_Translate('General_AverageOrderValue'), 'goal_%s_items' => Piwik_Translate('General_PurchasedProducts')));
         $this->setColumnsToDisplay(array('label', 'nb_visits', 'goal_%s_nb_conversions', 'goal_%s_revenue', 'goal_%s_conversion_rate', 'goal_%s_avg_order_revenue', 'goal_%s_items', 'goal_%s_revenue_per_visit'));
         // Default sort column
         $this->setSortedColumn('goal_ecommerceOrder_revenue', 'desc');
     } else {
         $this->setMetricDocumentation('revenue_per_visit', Piwik_Translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik_Translate('Goals_EcommerceAndGoalsMenu')));
         $this->setColumnsTranslations(array('goal_%s_conversion_rate' => Piwik_Translate('Goals_ConversionRate'), 'goal_%s_nb_conversions' => Piwik_Translate('Goals_Conversions'), 'goal_%s_revenue' => '%s ' . Piwik_Translate('Goals_ColumnRevenue'), 'goal_%s_revenue_per_visit' => '%s ' . Piwik_Translate('General_ColumnValuePerVisit'), 'nb_conversions' => Piwik_Translate('Goals_ColumnConversions'), 'conversion_rate' => Piwik_Translate('General_ColumnConversionRate'), 'revenue' => Piwik_Translate('Goals_ColumnRevenue'), 'revenue_per_visit' => Piwik_Translate('General_ColumnValuePerVisit')));
         $this->setColumnsToDisplay(array('label', 'nb_visits', 'goal_%s_nb_conversions', 'goal_%s_conversion_rate', 'goal_%s_revenue', 'goal_%s_revenue_per_visit', 'revenue_per_visit'));
         // Default sort column
         $columnsToDisplay = $this->getColumnsToDisplay();
         $columnNbConversionsCurrentGoal = $columnsToDisplay[2];
         if ($this->processOnlyIdGoal > 0 && strpos($columnNbConversionsCurrentGoal, '_nb_conversions') !== false) {
             $this->setSortedColumn($columnNbConversionsCurrentGoal, 'desc');
         }
     }
     parent::main();
 }
コード例 #17
0
 /**
  * @see Piwik_ViewDataTable::main()
  */
 public function main()
 {
     if ($this->mainAlreadyExecuted) {
         return;
     }
     $this->mainAlreadyExecuted = true;
     // If period=range, we force the sparkline to draw daily data points
     $period = Piwik_Common::getRequestVar('period');
     if ($period == 'range') {
         $_GET['period'] = 'day';
     }
     $this->loadDataTableFromAPI();
     // then revert the hack for potentially subsequent getRequestVar
     $_GET['period'] = $period;
     $values = $this->getValuesFromDataTable($this->dataTable);
     $this->isDataAvailable = true;
     if (empty($values)) {
         $values = array_fill(0, 30, 0);
         $this->isDataAvailable = false;
     }
     $graph = new Piwik_Visualization_Sparkline();
     $graph->setValues($values);
     $graph->main();
     $this->view = $graph;
 }
コード例 #18
0
ファイル: Controller.php プロジェクト: Gninety/Microweber
 public function getVisitorLog($fetch = false)
 {
     // If previous=1 is set, user clicked previous
     // we can't deal with previous so we force display of the first page
     if (Piwik_Common::getRequestVar('previous', 0, 'int') == 1) {
         $_GET['maxIdVisit'] = '';
     }
     $view = Piwik_ViewDataTable::factory();
     $view->init($this->pluginName, __FUNCTION__, 'Live.getLastVisitsDetails');
     $view->disableGenericFilters();
     $view->disableSort();
     $view->setTemplate("Live/templates/visitorLog.tpl");
     $view->setSortedColumn('idVisit', 'ASC');
     $view->disableSearchBox();
     $view->setLimit(20);
     $view->disableOffsetInformation();
     $view->disableExcludeLowPopulation();
     // disable the tag cloud,  pie charts, bar chart icons
     $view->disableShowAllViewsIcons();
     // disable the button "show more datas"
     $view->disableShowAllColumns();
     // disable the RSS feed
     $view->disableShowExportAsRssFeed();
     $view->setCustomParameter('pageUrlNotDefined', Zend_Registry::get('config')->General->action_default_url_when_not_defined);
     return $this->renderView($view, $fetch);
 }
コード例 #19
0
	/**
	 * Check for a newer version
	 */
	public static function check()
	{
		$lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
		if($lastTimeChecked === false
			|| time() - self::CHECK_INTERVAL > $lastTimeChecked )
		{
			$parameters = array(
				'piwik_version' => Piwik_Version::VERSION,
				'php_version' => phpversion(),
				'url' => Piwik_Url::getCurrentUrlWithoutQueryString(),
				'trigger' => Piwik_Common::getRequestVar('module','','string'),
			);

			$url = self::PIWIK_HOST . "?" . http_build_query($parameters, '', '&');
			$timeout = self::SOCKET_TIMEOUT;
			try {
				$latestVersion = Piwik::sendHttpRequest($url, $timeout);
				Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
			} catch(Exception $e) {
				// e.g., disable_functions = fsockopen; allow_url_open = Off
				Piwik_SetOption(self::LATEST_VERSION, '');
			}
			Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoload = 1);
		}
	}
コード例 #20
0
	public function getEvolutionGraph( $fetch = false, $columns = false)
	{
		$view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitFrequency.get");
		if(empty($columns))
		{
			$columns = Piwik_Common::getRequestVar('columns');
		}
		$columns = !is_array($columns) ? array($columns) : $columns;
		$view->setColumnsToDisplay($columns);
		$view->setColumnsTranslations(array(
			'nb_visits_returning' => Piwik_Translate('VisitFrequency_ColumnReturningVisits'),
			'nb_actions_returning' => Piwik_Translate('VisitFrequency_ColumnActionsByReturningVisits'),
			'avg_time_on_site_returning' => Piwik_Translate('VisitFrequency_ColumnAverageVisitDurationForReturningVisitors'),
			'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
			'nb_actions_per_visit_returning' => Piwik_Translate('VisitFrequency_ColumnAvgActionsPerReturningVisit'),
		));
		
		$doc = Piwik_Translate('VisitFrequency_ReturningVisitsDocumentation').'<br />'
		     . Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
		     . Piwik_Translate('VisitFrequency_ReturningVisitDocumentation');
		
		$view->setReportDocumentation($doc);
		
		return $this->renderView($view, $fetch);
	}
コード例 #21
0
	/**
	 * Check for a newer version
	 *
	 * @param bool $force Force check
	 */
	public static function check($force = false)
	{
		$lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
		if($force || $lastTimeChecked === false
			|| time() - self::CHECK_INTERVAL > $lastTimeChecked )
		{
			// set the time checked first, so that parallel Piwik requests don't all trigger the http requests
			Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoload = 1);
			$parameters = array(
				'piwik_version' => Piwik_Version::VERSION,
				'php_version' => PHP_VERSION,
				'url' => Piwik_Url::getCurrentUrlWithoutQueryString(),
				'trigger' => Piwik_Common::getRequestVar('module','','string'),
				'timezone' => Piwik_SitesManager_API::getInstance()->getDefaultTimezone(),
			);

			$url = Zend_Registry::get('config')->General->api_service_url;
			$url .= '/1.0/getLatestVersion/';
			$url .= '?' . http_build_query($parameters, '', '&');
			$timeout = self::SOCKET_TIMEOUT;
			try {
				$latestVersion = Piwik_Http::sendHttpRequest($url, $timeout);
				Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
			} catch(Exception $e) {
				// e.g., disable_functions = fsockopen; allow_url_open = Off
				Piwik_SetOption(self::LATEST_VERSION, '');
			}
		}
	}
コード例 #22
0
	function init()
	{
		$resetToken = Piwik_Common::getRequestVar('token', '', 'string');

		$formElements = array(
			array('text', 'form_login'),
			array('password', 'form_password'),
			array('password', 'form_password_bis'),
			array('text', 'form_token'),
		);
		$this->addElements( $formElements );

		$defaults = array(
			'form_token' => $resetToken,
		);
		$this->setDefaults($defaults);

		$formRules = array(
			array('form_login', sprintf(Piwik_Translate('General_Required'), Piwik_Translate('General_Username')), 'required'),
			array('form_password', sprintf(Piwik_Translate('General_Required'), Piwik_Translate('Login_Password')), 'required'),
			array('form_password_bis', sprintf(Piwik_Translate('General_Required'), Piwik_Translate('Login_PasswordRepeat')), 'required'),
			array('form_token', sprintf(Piwik_Translate('General_Required'), Piwik_Translate('Login_PasswordResetToken')), 'required'),
			array('form_password', Piwik_Translate( 'Login_PasswordsDoNotMatch'), 'fieldHaveSameValue', 'form_password_bis'),
		);
		$this->addRules( $formRules );

		$this->addElement('submit', 'submit');
	}
コード例 #23
0
	function dispatch($notification = null)
	{
		if($notification)
		{
			$exception = $notification->getNotificationObject();
			$message = $exception->getMessage();
		}
		else
		{
			$message = '';
		}

		Piwik_Translate::getInstance()->loadCoreTranslation();

		Piwik_PostEvent('Installation.startInstallation', $this);

		$step = Piwik_Common::getRequestVar('action', 'welcome', 'string');
		$controller = $this->getInstallationController();
		if(in_array($step, array_keys($controller->getInstallationSteps())) || $step == 'saveLanguage')
		{
			$controller->$step($message);
		}
		else
		{
			Piwik::exitWithErrorMessage(Piwik_Translate('Installation_NoConfigFound'));
		}

		exit;
	}	
コード例 #24
0
ファイル: Rss.php プロジェクト: Doluci/tomatocart
 protected function renderTable($table)
 {
     if (!$table instanceof Piwik_DataTable_Array) {
         throw new Exception("RSS Feed only used on DataTable_Array");
     }
     $idSite = Piwik_Common::getRequestVar('idSite', 1);
     $period = Piwik_Common::getRequestVar('period');
     $currentUrl = Piwik_Url::getCurrentUrlWithoutFileName();
     $piwikUrl = $currentUrl . "?module=Home&action=index&idSite=" . $idSite . "&period=" . $period;
     $out = "";
     $moreRecentFirst = array_reverse($table->getArray(), true);
     foreach ($moreRecentFirst as $date => $subtable) {
         $timestamp = $table->metaData[$date]['timestamp'];
         $site = $table->metaData[$date]['site'];
         $pudDate = date('r', $timestamp);
         $dateUrl = date('Y-m-d', $timestamp);
         $thisPiwikUrl = htmlentities($piwikUrl . "&date={$dateUrl}");
         $siteName = $site->getName();
         $title = $siteName . " on " . $date;
         $out .= "\t<item>\n\t\t<pubDate>{$pudDate}</pubDate>\n\t\t<guid>{$thisPiwikUrl}</guid>\n\t\t<link>{$thisPiwikUrl}</link>\n\t\t<title>{$title}</title>\n\t\t<author>http://piwik.org</author>\n\t\t<description>";
         $out .= htmlspecialchars($this->renderDataTable($subtable));
         $out .= "</description>\n\t</item>\n";
     }
     $header = $this->getRssHeader();
     $footer = $this->getRssFooter();
     return $this->output($header . $out . $footer);
 }
コード例 #25
0
ファイル: Rss.php プロジェクト: nnnnathann/piwik
 /**
  * Computes the output for the given data table
  *
  * @param Piwik_DataTable  $table
  * @return string
  * @throws Exception
  */
 protected function renderTable($table)
 {
     if (!$table instanceof Piwik_DataTable_Array || $table->getKeyName() != 'date') {
         throw new Exception("RSS feeds can be generated for one specific website &idSite=X." . "\nPlease specify only one idSite or consider using &format=XML instead.");
     }
     $idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
     $period = Piwik_Common::getRequestVar('period');
     $piwikUrl = Piwik_Url::getCurrentUrlWithoutFileName() . "?module=CoreHome&action=index&idSite=" . $idSite . "&period=" . $period;
     $out = "";
     $moreRecentFirst = array_reverse($table->getArray(), true);
     foreach ($moreRecentFirst as $date => $subtable) {
         $timestamp = $table->metadata[$date]['timestamp'];
         $site = $table->metadata[$date]['site'];
         $pudDate = date('r', $timestamp);
         $dateInSiteTimezone = Piwik_Date::factory($timestamp)->setTimezone($site->getTimezone())->toString('Y-m-d');
         $thisPiwikUrl = Piwik_Common::sanitizeInputValue($piwikUrl . "&date={$dateInSiteTimezone}");
         $siteName = $site->getName();
         $title = $siteName . " on " . $date;
         $out .= "\t<item>\n\t\t<pubDate>{$pudDate}</pubDate>\n\t\t<guid>{$thisPiwikUrl}</guid>\n\t\t<link>{$thisPiwikUrl}</link>\n\t\t<title>{$title}</title>\n\t\t<author>http://piwik.org</author>\n\t\t<description>";
         $out .= Piwik_Common::sanitizeInputValue($this->renderDataTable($subtable));
         $out .= "</description>\n\t</item>\n";
     }
     $header = $this->getRssHeader();
     $footer = $this->getRssFooter();
     return $header . $out . $footer;
 }
コード例 #26
0
	public function getEvolutionGraph( $fetch = false, $columns = false)
	{
		$view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitsSummary.get");
		if(empty($columns))
		{
			$columns = Piwik_Common::getRequestVar('columns');
		}
		$columns = !is_array($columns) ? array($columns) : $columns;
		$view->setColumnsToDisplay($columns);
		
		$doc = Piwik_Translate('VisitsSummary_VisitsSummaryDocumentation').'<br />'
		     . Piwik_Translate('General_BrokenDownReportDocumentation').'<br /><br />'
		     
		     . '<b>'.Piwik_Translate('General_ColumnNbVisits').':</b> '
		     . Piwik_Translate('General_ColumnNbVisitsDocumentation').'<br />'
		     
		     . '<b>'.Piwik_Translate('General_ColumnNbUniqVisitors').':</b> '
		     . Piwik_Translate('General_ColumnNbUniqVisitorsDocumentation').'<br />'
		     
		     . '<b>'.Piwik_Translate('General_ColumnNbActions').':</b> '
		     . Piwik_Translate('General_ColumnNbActionsDocumentation').'<br />'
		     
		     . '<b>'.Piwik_Translate('General_ColumnActionsPerVisit').':</b> '
		     . Piwik_Translate('General_ColumnActionsPerVisitDocumentation');
		
		$view->setReportDocumentation($doc);
		
		return $this->renderView($view, $fetch);
	}
コード例 #27
0
 function init($currentControllerName, $currentControllerAction, $apiMethodToRequestDataTable)
 {
     parent::init($currentControllerName, $currentControllerAction, $apiMethodToRequestDataTable);
     $this->setParametersToModify(array('date' => Piwik_Common::getRequestVar('date', 'last30', 'string')));
     $this->disableShowAllViewsIcons();
     $this->disableShowTable();
 }
コード例 #28
0
 protected function buildView()
 {
     // access control
     $idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
     Piwik_API_Request::reloadAuthUsingTokenAuth();
     if (!Piwik::isUserHasViewAccess($idSite)) {
         throw new Exception(Piwik_TranslateException('General_ExceptionPrivilegeAccessWebsite', array("'view'", $idSite)));
     }
     // collect data
     $this->parametersToModify['action'] = $this->currentControllerAction;
     $this->parametersToModify = array_merge($this->variablesDefault, $this->parametersToModify);
     $this->graphData = $this->getGraphData();
     // build view
     $view = new Piwik_View($this->dataTableTemplate);
     $view->width = $this->width;
     $view->height = $this->height;
     $view->chartDivId = $this->getUniqueIdViewDataTable() . "Chart";
     $view->graphType = $this->graphType;
     $view->data = $this->graphData;
     $view->isDataAvailable = strpos($this->graphData, '"series":[]') === false;
     $view->javascriptVariablesToSet = $this->getJavascriptVariablesToSet();
     $view->properties = $this->getViewProperties();
     $view->reportDocumentation = $this->getReportDocumentation();
     return $view;
 }
コード例 #29
0
	function init()
	{
		$this->addElement('text', 'form_login')
		     ->addRule('required', Piwik_Translate('General_Required', Piwik_Translate('General_Username')));

		$password = $this->addElement('password', 'form_password');
		$password->addRule('required', Piwik_Translate('General_Required', Piwik_Translate('Login_Password')));

		$passwordBis = $this->addElement('password', 'form_password_bis');
		$passwordBis->addRule('required', Piwik_Translate('General_Required', Piwik_Translate('Login_PasswordRepeat')));
		$passwordBis->addRule('eq', Piwik_Translate( 'Login_PasswordsDoNotMatch'), $password);

		$this->addElement('text', 'form_token')
		     ->addRule('required', Piwik_Translate('General_Required', Piwik_Translate('Login_PasswordResetToken')));

		$this->addElement('hidden', 'form_nonce');

		$this->addElement('submit', 'submit');

		$resetToken = Piwik_Common::getRequestVar('token', '', 'string');
		if(!empty($resetToken)) {
			// default values
			$this->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
				'form_token' => $resetToken,
			)));

			$this->attributes['action'] = 'index.php' . Piwik_Url::getCurrentQueryStringWithParametersModified( array('token' => null) );
		}
	}
コード例 #30
0
ファイル: ExampleFeedburner.php プロジェクト: klando/pgpiwik
    /**
     * Function called to save the Feedburner ID entered in the form
     *
     */
    function saveFeedburnerName()
    {
        // we save the value in the DB for an authenticated user
        if (Piwik::getCurrentUserLogin() != 'anonymous') {
            Piwik_Query('UPDATE ' . Piwik::prefixTable('site') . ' 
						 SET feedburnerName = ? WHERE idsite = ?', array(Piwik_Common::getRequestVar('name', '', 'string'), Piwik_Common::getRequestVar('idSite', 1, 'int')));
        }
    }