示例#1
0
 public static function getAllTablesStatus()
 {
     Piwik::checkUserIsSuperUser();
     $db = Zend_Registry::get('db');
     // http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
     $tablesPiwik = Piwik::getTablesInstalled();
     $total = array('Name' => 'Total', 'Data_length' => 0, 'Index_length' => 0, 'Rows' => 0);
     $table = array();
     foreach ($tablesPiwik as $tableName) {
         $t = self::getTableStatus($tableName);
         $total['Data_length'] += $t['Data_length'];
         $total['Index_length'] += $t['Index_length'];
         $total['Rows'] += $t['Rows'];
         $t['Total_length'] = Piwik::getPrettySizeFromBytes($t['Index_length'] + $t['Data_length']);
         $t['Data_length'] = Piwik::getPrettySizeFromBytes($t['Data_length']);
         $t['Index_length'] = Piwik::getPrettySizeFromBytes($t['Index_length']);
         $t['Rows'] = Piwik::getPrettySizeFromBytes($t['Rows']);
         $table[] = $t;
     }
     $total['Total_length'] = Piwik::getPrettySizeFromBytes($total['Data_length'] + $total['Index_length']);
     $total['Data_length'] = Piwik::getPrettySizeFromBytes($total['Data_length']);
     $total['Index_length'] = Piwik::getPrettySizeFromBytes($total['Index_length']);
     $total['TotalRows'] = Piwik::getPrettySizeFromBytes($total['Rows']);
     $table['Total'] = $total;
     return $table;
 }
示例#2
0
 public function oneClickUpdate()
 {
     Piwik::checkUserIsSuperUser();
     $this->newVersion = $this->checkNewVersionIsAvailableOrDie();
     Piwik::setMaxExecutionTime(0);
     $url = Zend_Registry::get('config')->General->latest_version_url;
     $steps = array(array('oneClick_Download', Piwik_Translate('CoreUpdater_DownloadingUpdateFromX', $url)), array('oneClick_Unpack', Piwik_Translate('CoreUpdater_UnpackingTheUpdate')), array('oneClick_Verify', Piwik_Translate('CoreUpdater_VerifyingUnpackedFiles')), array('oneClick_CreateConfigFileBackup', Piwik_Translate('CoreUpdater_CreatingBackupOfConfigurationFile', self::CONFIG_FILE_BACKUP)), array('oneClick_Copy', Piwik_Translate('CoreUpdater_InstallingTheLatestVersion')), array('oneClick_Finished', Piwik_Translate('CoreUpdater_PiwikUpdatedSuccessfully')));
     $errorMessage = false;
     $messages = array();
     foreach ($steps as $step) {
         try {
             $method = $step[0];
             $message = $step[1];
             $this->{$method}();
             $messages[] = $message;
         } catch (Exception $e) {
             $errorMessage = $e->getMessage();
             break;
         }
     }
     $view = Piwik_View::factory('update_one_click_done');
     $view->coreError = $errorMessage;
     $view->feedbackMessages = $messages;
     echo $view->render();
 }
示例#3
0
 public function setGeneralSettings()
 {
     Piwik::checkUserIsSuperUser();
     $response = new Piwik_API_ResponseBuilder(Piwik_Common::getRequestVar('format'));
     try {
         $this->checkTokenInUrl();
         $enableBrowserTriggerArchiving = Piwik_Common::getRequestVar('enableBrowserTriggerArchiving');
         $todayArchiveTimeToLive = Piwik_Common::getRequestVar('todayArchiveTimeToLive');
         Piwik_ArchiveProcessing::setBrowserTriggerArchiving((bool) $enableBrowserTriggerArchiving);
         Piwik_ArchiveProcessing::setTodayArchiveTimeToLive($todayArchiveTimeToLive);
         // Update email settings
         $mail = Zend_Registry::get('config')->mail;
         $mail->transport = Piwik_Common::getRequestVar('mailUseSmtp') == '1' ? 'smtp' : '';
         $mail->port = Piwik_Common::getRequestVar('mailPort', '');
         $mail->host = Piwik_Common::getRequestVar('mailHost', '');
         $mail->type = Piwik_Common::getRequestVar('mailType', '');
         $mail->username = Piwik_Common::getRequestVar('mailUsername', '');
         $mail->password = Piwik_Common::getRequestVar('mailPassword', '');
         $mail->encryption = Piwik_Common::getRequestVar('mailEncryption', '');
         Zend_Registry::get('config')->mail = $mail->toArray();
         $toReturn = $response->getResponse();
     } catch (Exception $e) {
         $toReturn = $response->getResponseException($e);
     }
     echo $toReturn;
 }
示例#4
0
 function activate()
 {
     Piwik::checkUserIsSuperUser();
     $pluginName = Piwik_Common::getRequestVar('pluginName', null, 'string');
     Piwik_PluginsManager::getInstance()->activatePlugin($pluginName);
     Piwik_Url::redirectToUrl('index.php?module=CorePluginsAdmin');
 }
示例#5
0
 public function activate()
 {
     Piwik::checkUserIsSuperUser();
     $this->checkTokenInUrl();
     $pluginName = Piwik_Common::getRequestVar('pluginName', null, 'string');
     Piwik_PluginsManager::getInstance()->activatePlugin($pluginName);
     Piwik_Url::redirectToReferer();
 }
示例#6
0
	function index()
	{
		Piwik::checkUserIsSuperUser();
		$view = Piwik_View::factory('DBStats');
		$view->tablesStatus = Piwik_DBStats_API::getInstance()->getAllTablesStatus();
		$this->setBasicVariablesView($view);
		$view->menu = Piwik_GetAdminMenu();
		echo $view->render();		
	}
 public function oneClickResults()
 {
     Piwik_API_Request::reloadAuthUsingTokenAuth($_POST);
     Piwik::checkUserIsSuperUser();
     $view = Piwik_View::factory('update_one_click_results');
     $view->coreError = Piwik_Common::getRequestVar('error', '', 'string', $_POST);
     $view->feedbackMessages = safe_unserialize(Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('messages', '', 'string', $_POST)));
     echo $view->render();
 }
示例#8
0
文件: API.php 项目: klando/pgpiwik
 public function getLastVisits($idSite = false, $limit = 10, $minIdVisit = false)
 {
     if (is_null($idSite)) {
         Piwik::checkUserIsSuperUser();
     } else {
         Piwik::checkUserHasViewAccess($idSite);
     }
     $visitorDetails = self::loadLastVisitorDetailsFromDatabase(null, $idSite, $limit, $minIdVisit);
     $table = self::getCleanedVisitorsFromDetails($visitorDetails);
     return $table;
 }
示例#9
0
	public function generate() 
	{
		Piwik::checkUserIsSuperUser();
		$nonce = Piwik_Common::getRequestVar('form_nonce', '', 'string', $_POST);
		if(Piwik_Common::getRequestVar('choice', 'no') != 'yes' ||
				!Piwik_Nonce::verifyNonce('Piwik_VisitorGenerator.generate', $nonce))
		{
			Piwik::redirectToModule('VisitorGenerator', 'index');
		}
		Piwik_Nonce::discardNonce('Piwik_VisitorGenerator.generate');

		$daysToCompute = Piwik_Common::getRequestVar('daysToCompute', 1, 'int');

		// get idSite from POST with fallback to GET
		$idSite = Piwik_Common::getRequestVar('idSite', false, 'int', $_GET);
		$idSite = Piwik_Common::getRequestVar('idSite', $idSite, 'int', $_POST);

		Piwik::setMaxExecutionTime(0);

		$timer = new Piwik_Timer;
		$time = time() - ($daysToCompute-1)*86400;
		
		// Update site.ts_created if we generate visits on days before the website was created
		$site = new Piwik_Site($idSite);
		$minGeneratedDate = Piwik_Date::factory($time);
		if($minGeneratedDate->isEarlier($site->getCreationDate()))
		{
			// direct access to the website table (bad practise but this is a debug / dev plugin)
    		Zend_Registry::get('db')->update(Piwik_Common::prefixTable("site"), 
    							array('ts_created' =>  $minGeneratedDate->getDatetime()),
    							"idsite = $idSite");
		}
		
		$nbActionsTotal = 0;
		while($time <= time()) 
		{
			$nbActionsTotalThisDay = $this->generateVisits($time, $idSite);
			$time += 86400;
			$nbActionsTotal += $nbActionsTotalThisDay;
		}

		// Init view
		$view = Piwik_View::factory('generate');
		$this->setBasicVariablesView($view);
		$view->menu = Piwik_GetAdminMenu();
		$view->assign('timer', $timer);
		$view->assign('days', $daysToCompute);
		$view->assign('nbActionsTotal', $nbActionsTotal);
		$view->assign('nbRequestsPerSec', round($nbActionsTotal / $timer->getTime(),0));
		echo $view->render();
	}
示例#10
0
 public function testAllSizes()
 {
     Piwik::checkUserIsSuperUser();
     $view = Piwik_View::factory('debug_graphs_all_sizes');
     $this->setGeneralVariablesView($view);
     $period = Piwik_Common::getRequestVar('period', 'day', 'string');
     $date = Piwik_Common::getRequestVar('date', 'today', 'string');
     $_GET['token_auth'] = Piwik::getCurrentUserTokenAuth();
     $availableReports = Piwik_API_API::getInstance()->getReportMetadata($this->idSite, $period, $date);
     $view->availableReports = $availableReports;
     $view->graphTypes = array('');
     $view->graphSizes = array(array(null, null), array(Piwik_ReportRenderer::IMAGE_GRAPH_WIDTH, Piwik_ReportRenderer::IMAGE_GRAPH_HEIGHT), array(460, 150), array(300, 150), array(240, 150), array(800, 150), array(600, 300, $fontSize = 18, 300, 150));
     echo $view->render();
 }
示例#11
0
 /**
  * Sets the current LocationProvider type.
  * 
  * Input:
  *   Requires the 'id' query parameter to be set to the desired LocationProvider's ID.
  * 
  * Output:
  *   Nothing.
  */
 public function setCurrentLocationProvider()
 {
     Piwik::checkUserIsSuperUser();
     if ($_SERVER["REQUEST_METHOD"] == "POST") {
         $this->checkTokenInUrl();
         $providerId = Piwik_Common::getRequestVar('id');
         $provider = Piwik_UserCountry_LocationProvider::setCurrentProvider($providerId);
         if ($provider === false) {
             throw new Exception("Invalid provider ID: '{$providerId}'.");
         }
         // make sure the tracker will use the new location provider
         Piwik_Common::regenerateCacheGeneral();
     }
 }
示例#12
0
 public function setSettings()
 {
     $response = new Piwik_API_ResponseBuilder(Piwik_Common::getRequestVar('format'));
     try {
         Piwik::checkUserIsSuperUser();
         $this->checkTokenInUrl();
         $mode = Piwik_Common::getRequestVar('TeraWurflMode');
         $url = Piwik_Common::getRequestVar('TeraWurflURL');
         $path = Piwik_Common::getRequestVar('TeraWurflPath');
         switch ($mode) {
             case 'TeraWurfl':
             case 'TeraWurflEnterprise':
                 if (!(file_exists($path) && (require_once $path))) {
                     echo $response->getResponseException(new Exception("Could not save settings: The file " . htmlentities($path) . " does not exist"));
                     return;
                 } elseif (!class_exists($mode)) {
                     echo $response->getResponseException(new Exception("Could not save settings: The file " . htmlentities($path) . " exists but does not contain the required class " . htmlentities($mode)));
                     return;
                 } else {
                     Piwik_MobileAnalytics::saveSetting('TeraWurflMode', $mode);
                     Piwik_MobileAnalytics::saveSetting('TeraWurflPath', $path);
                 }
                 break;
             case 'TeraWurflRemoteClient':
                 require_once PIWIK_INCLUDE_PATH . '/plugins/MobileAnalytics/TeraWurflRemoteClient.php';
                 try {
                     $this->wurflObj = new TeraWurflRemoteClient($url);
                     @$this->wurflObj->getCapabilitiesFromAgent(null, Piwik_MobileAnalytics::$requiredCapabilities);
                 } catch (Exception $e) {
                     echo $response->getResponseException(new Exception("Could not save settings: A request to the Tera-WURFL web service (" . htmlentities($url) . ") failed."));
                     return;
                 }
                 Piwik_MobileAnalytics::saveSetting('TeraWurflURL', $url);
                 Piwik_MobileAnalytics::saveSetting('TeraWurflMode', $mode);
                 break;
             default:
             case 'disabled':
                 Piwik_MobileAnalytics::saveSetting('TeraWurflMode', 'disabled');
                 break;
         }
         echo $response->getResponse();
     } catch (Exception $e) {
         echo $response->getResponseException($e);
     }
 }
示例#13
0
 function index()
 {
     Piwik::checkUserIsSuperUser();
     require_once dirname(__FILE__) . '/PhpSecInfo/PhpSecInfo.php';
     // instantiate the class
     $psi = new PhpSecInfo();
     // load and run all tests
     $psi->loadAndRun();
     // grab the results as a multidimensional array
     $results = $psi->getResultsAsArray();
     // suppress results
     unset($results['test_results']['Core']['memory_limit']);
     unset($results['test_results']['Core']['post_max_size']);
     unset($results['test_results']['Core']['upload_max_filesize']);
     $view = Piwik_View::factory('index');
     $this->setGeneralVariablesView($view);
     $view->menu = Piwik_GetAdminMenu();
     $view->results = $results;
     echo $view->render();
 }
示例#14
0
 protected function getDeleteLogsInfo()
 {
     Piwik::checkUserIsSuperUser();
     $deleteLogsInfos = array();
     $taskScheduler = new Piwik_TaskScheduler();
     $deleteLogsInfos["config"] = Zend_Registry::get('config')->Deletelogs->toArray();
     $privacyManager = new Piwik_PrivacyManager();
     $deleteLogsInfos["deleteTables"] = implode(", ", $privacyManager->getDeleteTableLogTables());
     $scheduleTimetable = $taskScheduler->getScheduledTimeForTask("Piwik_PrivacyManager", "deleteLogTables");
     $optionTable = Piwik_GetOption(self::OPTION_LAST_DELETE_PIWIK_LOGS);
     //If task was already rescheduled, read time from taskTimetable. Else, calculate next possible runtime.
     if (!empty($scheduleTimetable) && $scheduleTimetable - time() > 0) {
         $nextPossibleSchedule = (int) $scheduleTimetable;
     } else {
         $date = Piwik_Date::factory("today");
         $nextPossibleSchedule = $date->addDay(1)->getTimestamp();
     }
     //deletion schedule did not run before
     if (empty($optionTable)) {
         $deleteLogsInfos["lastRun"] = false;
         //next run ASAP (with next schedule run)
         $date = Piwik_Date::factory("today");
         $deleteLogsInfos["nextScheduleTime"] = $nextPossibleSchedule;
     } else {
         $deleteLogsInfos["lastRun"] = $optionTable;
         $deleteLogsInfos["lastRunPretty"] = Piwik_Date::factory((int) $optionTable)->getLocalized('%day% %shortMonth% %longYear%');
         //Calculate next run based on last run + interval
         $nextScheduleRun = (int) ($deleteLogsInfos["lastRun"] + $deleteLogsInfos["config"]["delete_logs_schedule_lowest_interval"] * 24 * 60 * 60);
         //is the calculated next run in the past? (e.g. plugin was disabled in the meantime or something) -> run ASAP
         if ($nextScheduleRun - time() <= 0) {
             $deleteLogsInfos["nextScheduleTime"] = $nextPossibleSchedule;
         } else {
             $deleteLogsInfos["nextScheduleTime"] = $nextScheduleRun;
         }
     }
     $deleteLogsInfos["nextRunPretty"] = Piwik::getPrettyTimeFromSeconds($deleteLogsInfos["nextScheduleTime"] - time());
     return $deleteLogsInfos;
 }
示例#15
0
 public function oneClickUpdate()
 {
     Piwik::checkUserIsSuperUser();
     $this->checkNewVersionIsAvailableOrDie();
     $steps = array(array('oneClick_Download', Piwik_Translate('CoreUpdate_DownloadingUpdateFromX', self::LATEST_PIWIK_URL)), array('oneClick_Unpack', Piwik_Translate('CoreUpdate_UnpackingTheUpdate')), array('oneClick_Verify', Piwik_Translate('CoreUpdater_VerifyingUnpackedFiles')), array('oneClick_CreateConfigFileBackup', Piwik_Translate('CoreUpdater_CreatingBackupOfConfigurationFile', self::CONFIG_FILE_BACKUP)), array('oneClick_Copy', Piwik_Translate('CoreUpdater_InstallingTheLatestVersion')), array('oneClick_Finished', Piwik_Translate('CoreUpdater_PiwikUpdatedSuccessfully')));
     $errorMessage = false;
     $messages = array();
     foreach ($steps as $step) {
         try {
             $method = $step[0];
             $message = $step[1];
             $this->{$method}();
             $messages[] = $message;
         } catch (Exception $e) {
             $errorMessage = $e->getMessage();
             break;
         }
     }
     $view = new Piwik_View('CoreUpdater/templates/update_one_click_done.tpl');
     $view->coreError = $errorMessage;
     $view->feedbackMessages = $messages;
     echo $view->render();
 }
示例#16
0
文件: API.php 项目: nnnnathann/piwik
 /**
  * Returns a datatable describing how much total space is taken up by each
  * individual metric type.
  * 
  * Goal metrics, metrics of the format .*_[0-9]+ and 'done...' metrics are grouped together.
  * 
  * @param bool $forceCache false to use the cached result, true to run the queries again and
  *                         cache the result.
  * @return Piwik_DataTable A datatable with three columns: 'data_size', 'index_size', 'row_count'.
  */
 public function getIndividualMetricsSummary($forceCache = false)
 {
     Piwik::checkUserIsSuperUser();
     return $this->metadataProvider->getRowCountsAndSizeByMetricName($forceCache);
 }
示例#17
0
 /**
  * Check that current user is either the specified user or the superuser
  *
  * @param string $theUser
  * @throws exception if the user is neither the super user nor the user $theUser
  */
 public static function checkUserIsSuperUserOrTheUser($theUser)
 {
     try {
         if (Piwik::getCurrentUserLogin() !== $theUser) {
             // or to the super user
             Piwik::checkUserIsSuperUser();
         }
     } catch (Piwik_Access_NoAccessException $e) {
         throw new Piwik_Access_NoAccessException(Piwik_Translate('General_ExceptionCheckUserIsSuperUserOrTheUser', array($theUser)));
     }
 }
示例#18
0
 public function generate()
 {
     // Only admin is allowed to do this!
     Piwik::checkUserIsSuperUser();
     $GET = $_GET;
     $POST = $_POST;
     $COOKIE = $_COOKIE;
     $REQUEST = $_REQUEST;
     $nonce = Piwik_Common::getRequestVar('form_nonce', '', 'string', $_POST);
     if (Piwik_Common::getRequestVar('choice', 'no') != 'yes' || !Piwik_Nonce::verifyNonce('Piwik_VisitorGenerator.generate', $nonce)) {
         Piwik::redirectToModule('VisitorGenerator', 'index');
     }
     Piwik_Nonce::discardNonce('Piwik_VisitorGenerator.generate');
     $minVisitors = Piwik_Common::getRequestVar('minVisitors', 20, 'int');
     $maxVisitors = Piwik_Common::getRequestVar('maxVisitors', 100, 'int');
     $nbActions = Piwik_Common::getRequestVar('nbActions', 10, 'int');
     $daysToCompute = Piwik_Common::getRequestVar('daysToCompute', 1, 'int');
     // get idSite from POST with fallback to GET
     $idSite = Piwik_Common::getRequestVar('idSite', false, 'int', $_GET);
     $idSite = Piwik_Common::getRequestVar('idSite', $idSite, 'int', $_POST);
     Piwik::setMaxExecutionTime(0);
     $loadedPlugins = Piwik_PluginsManager::getInstance()->getLoadedPlugins();
     $loadedPlugins = array_keys($loadedPlugins);
     // we have to unload the Provider plugin otherwise it tries to lookup the IP for a hostname, and there is no dns server here
     if (Piwik_PluginsManager::getInstance()->isPluginActivated('Provider')) {
         Piwik_PluginsManager::getInstance()->unloadPlugin('Provider');
     }
     // we set the DO NOT load plugins so that the Tracker generator doesn't load the plugins we've just disabled.
     // if for some reasons you want to load the plugins, comment this line, and disable the plugin Provider in the plugins interface
     Piwik_PluginsManager::getInstance()->doNotLoadPlugins();
     $generator = new Piwik_VisitorGenerator_Generator();
     $generator->setMaximumUrlDepth(3);
     //$generator->disableProfiler();
     $generator->setIdSite($idSite);
     $nbActionsTotal = 0;
     //$generator->emptyAllLogTables();
     $generator->init();
     $timer = new Piwik_Timer();
     $startTime = time() - ($daysToCompute - 1) * 86400;
     // Update site.ts_created if we generate visits on days before the website was created
     $site = new Piwik_Site($idSite);
     $minGeneratedDate = Piwik_Date::factory($startTime);
     if ($minGeneratedDate->isEarlier($site->getCreationDate())) {
         // direct access to the website table (bad practise but this is a debug / dev plugin)
         Zend_Registry::get('db')->update(Piwik_Common::prefixTable("site"), array('ts_created' => $minGeneratedDate->getDatetime()), "idsite = {$idSite}");
     }
     $dates = array();
     while ($startTime <= time()) {
         $visitors = rand($minVisitors, $maxVisitors);
         $actions = $nbActions;
         $generator->setTimestampToUse($startTime);
         $nbActionsTotalThisDay = $generator->generate($visitors, $actions);
         $actionsPerVisit = round($nbActionsTotalThisDay / $visitors);
         $date = array();
         $date['visitors'] = $visitors;
         $date['actionsPerVisit'] = $actionsPerVisit;
         $date['startTime'] = $startTime;
         $dates[] = $date;
         $startTime += 86400;
         $nbActionsTotal += $nbActionsTotalThisDay;
         //sleep(1);
     }
     $generator->end();
     // Recover all super globals
     $_GET = $GET;
     $_POST = $POST;
     $_COOKIE = $COOKIE;
     $_REQUEST = $REQUEST;
     // Reload plugins
     Piwik_PluginsManager::getInstance()->loadPlugins($loadedPlugins);
     // Init view
     $view = Piwik_View::factory('generate');
     $this->setBasicVariablesView($view);
     $view->menu = Piwik_GetAdminMenu();
     $view->assign('dates', $dates);
     $view->assign('timer', $timer);
     $view->assign('nbActionsTotal', $nbActionsTotal);
     $view->assign('nbRequestsPerSec', round($nbActionsTotal / $timer->getTime(), 0));
     echo $view->render();
 }
示例#19
0
 /**
  * Delete a website from the database, given its Id.
  * 
  * Requires Super User access. 
  *
  * @param int $idSite
  */
 public static function deleteSite($idSite)
 {
     Piwik::checkUserIsSuperUser();
     $idSites = Piwik_SitesManager_API::getAllSitesId();
     if (!in_array($idSite, $idSites)) {
         throw new Exception("website id = {$idSite} not found");
     }
     $nbSites = count($idSites);
     if ($nbSites == 1) {
         throw new Exception(Piwik_TranslateException("SitesManager_ExceptionDeleteSite"));
     }
     $db = Zend_Registry::get('db');
     $db->query("DELETE FROM " . Piwik::prefixTable("site") . " \n\t\t\t\t\tWHERE idsite = ?", $idSite);
     $db->query("DELETE FROM " . Piwik::prefixTable("site_url") . " \n\t\t\t\t\tWHERE idsite = ?", $idSite);
     $db->query("DELETE FROM " . Piwik::prefixTable("access") . " \n\t\t\t\t\tWHERE idsite = ?", $idSite);
     Piwik_Common::deleteCacheWebsiteAttributes($idSite);
 }
 public function uploadCustomLogo()
 {
     Piwik::checkUserIsSuperUser();
     if (empty($_FILES['customLogo']) || !empty($_FILES['customLogo']['error'])) {
         echo '0';
         return;
     }
     $file = $_FILES['customLogo']['tmp_name'];
     if (!file_exists($file)) {
         echo '0';
         return;
     }
     $error = false;
     list($width, $height) = getimagesize($file);
     switch ($_FILES['customLogo']['type']) {
         case 'image/jpeg':
             $image = imagecreatefromjpeg($file);
             break;
         case 'image/png':
             $image = imagecreatefrompng($file);
             break;
         case 'image/gif':
             $image = imagecreatefromgif($file);
             break;
         default:
             echo '0';
             return;
     }
     $widthExpected = round($width * self::LOGO_HEIGHT / $height);
     $smallWidthExpected = round($width * self::LOGO_SMALL_HEIGHT / $height);
     $logo = imagecreatetruecolor($widthExpected, self::LOGO_HEIGHT);
     $logoSmall = imagecreatetruecolor($smallWidthExpected, self::LOGO_SMALL_HEIGHT);
     imagecopyresized($logo, $image, 0, 0, 0, 0, $widthExpected, self::LOGO_HEIGHT, $width, $height);
     imagecopyresized($logoSmall, $image, 0, 0, 0, 0, $smallWidthExpected, self::LOGO_SMALL_HEIGHT, $width, $height);
     imagepng($logo, PIWIK_DOCUMENT_ROOT . '/themes/logo.png', 3);
     imagepng($logoSmall, PIWIK_DOCUMENT_ROOT . '/themes/logo-header.png', 3);
     echo '1';
     return;
 }
示例#21
0
 public function index()
 {
     Piwik::checkUserIsSuperUser();
     $view = $this->getDefaultIndexView();
     echo $view->render();
 }
示例#22
0
文件: API.php 项目: Doluci/tomatocart
 public function getPageImpressionsInLastXMin($idSite = false, $limit = 10, $minIdVisit = false, $minutes = 30)
 {
     if (is_null($idSite)) {
         Piwik::checkUserIsSuperUser();
     } else {
         Piwik::checkUserHasViewAccess($idSite);
     }
     //		$pageDetails = $this->loadLastVisitedPagesInLastXMinFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes);
     $pageDetails = $this->loadLastVisitorInLastXTimeFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes, 0, 2);
     $i = -1;
     foreach ($pageDetails as $detail) {
         $i++;
         if (strlen($pageDetails[$i]['name']) > 30) {
             $pageDetails[$i]['name'] = substr($pageDetails[$i]['name'], 0, 30 - 3) . '...';
         }
     }
     return $pageDetails;
 }
示例#23
0
 /**
  * @param string $theUser
  * @throws exception if the user is neither the super user nor the user $theUser
  */
 public static function checkUserIsSuperUserOrTheUser($theUser)
 {
     try {
         if (Piwik::getCurrentUserLogin() !== $theUser) {
             // or to the super user
             Piwik::checkUserIsSuperUser();
         }
     } catch (Piwik_Access_NoAccessException $e) {
         throw new Piwik_Access_NoAccessException("The user has to be either the Super User or the user '{$theUser}' itself.");
     }
 }
示例#24
0
文件: API.php 项目: nnnnathann/piwik
 /**
  * Specify if normal users can manage their own SMS API credential
  *
  * @param bool $delegatedManagement false if SMS API credential only manageable by super admin, true otherwise
  */
 public function setDelegatedManagement($delegatedManagement)
 {
     Piwik::checkUserIsSuperUser();
     Piwik_SetOption(Piwik_MobileMessaging::DELEGATED_MANAGEMENT_OPTION, $delegatedManagement);
 }
示例#25
0
	/**
	 * Records settings for the anonymous users (default report, default date)
	 */
	public function recordAnonymousUserSettings()
	{
		$response = new Piwik_API_ResponseBuilder(Piwik_Common::getRequestVar('format'));
		try {
			Piwik::checkUserIsSuperUser();
			$this->checkTokenInUrl();
			$anonymousDefaultReport = Piwik_Common::getRequestVar('anonymousDefaultReport');
			$anonymousDefaultDate = Piwik_Common::getRequestVar('anonymousDefaultDate');
			$userLogin = '******';
			Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin, 
																Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT, 
																$anonymousDefaultReport);
			Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin, 
																Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE, 
																$anonymousDefaultDate);
			$toReturn = $response->getResponse();
		} catch(Exception $e ) {
			$toReturn = $response->getResponseException( $e );
		}
		echo $toReturn;
	}
示例#26
0
	/**
	 * Returns the list of unique timezones from all configured sites.
	 *
	 * @return array ( string )
	 */
	public function getUniqueSiteTimezones()
	{
		Piwik::checkUserIsSuperUser();
		$results = Piwik_FetchAll("SELECT distinct timezone FROM ".Piwik_Common::prefixTable('site'));
		$timezones = array();
		foreach($results as $result)
		{
			$timezones[] = $result['timezone'];
		}
		return $timezones;
	}
示例#27
0
}
$GLOBALS['PIWIK_TRACKER_DEBUG'] = false;
ob_start();
// first check that user has privileges to create some random data in the DB -> he must be super user
define('PIWIK_ENABLE_DISPATCH', false);
require_once PIWIK_INCLUDE_PATH . "/index.php";
require_once "FrontController.php";
Piwik::setMaxExecutionTime(0);
$idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
try {
    Piwik_FrontController::getInstance()->init();
} catch (Exception $e) {
    echo $e->getMessage();
    exit;
}
Piwik::checkUserIsSuperUser();
require_once "PluginsManager.php";
require_once "Tracker.php";
//Piwik_PluginsManager::getInstance()->unloadPlugins();
// we have to unload the Provider plugin otherwise it tries to lookup the IP for ahostname, and there is no dns server here
if (Piwik_PluginsManager::getInstance()->isPluginActivated('Provider')) {
    Piwik_PluginsManager::getInstance()->unloadPlugin('Provider');
}
// we set the DO NOT load plugins so that the Tracker generator doesn't load the plugins we've just disabled.
// if for some reasons you want to load the plugins, comment this line, and disable the plugin Provider in the plugins interface
Piwik_PluginsManager::getInstance()->doNotLoadPlugins();
$generator = new Piwik_Tracker_Generator();
$generator->setMaximumUrlDepth(3);
//$generator->disableProfiler();
$generator->setIdSite($idSite);
$nbActionsTotal = 0;
示例#28
0
 /**
  * Shows a datatable that displays the amount of space each 'admin' table takes
  * up in the MySQL database.
  * 
  * An 'admin' table is a table that is not central to analytics functionality.
  * So any table that isn't an archive table or a log table is an 'admin' table.
  * 
  * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise,
  *                    it is echoed.
  */
 public function getAdminDataSummary($fetch = false)
 {
     Piwik::checkUserIsSuperUser();
     $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table');
     $view->disableOffsetInformationAndPaginationControls();
     return $this->renderView($view, $fetch);
 }
示例#29
0
文件: API.php 项目: nnnnathann/piwik
 /**
  * Delete a user and all its access, given its login.
  * 
  * @param string $userLogin the user login.
  * 
  * @throws Exception if the user doesn't exist
  * 
  * @return bool true on success
  */
 public function deleteUser($userLogin)
 {
     Piwik::checkUserIsSuperUser();
     $this->checkUserIsNotAnonymous($userLogin);
     $this->checkUserIsNotSuperUser($userLogin);
     if (!$this->userExists($userLogin)) {
         throw new Exception(Piwik_TranslateException("UsersManager_ExceptionDeleteDoesNotExist", $userLogin));
     }
     $this->deleteUserOnly($userLogin);
     $this->deleteUserAccess($userLogin);
     Piwik_Common::deleteTrackerCache();
 }
示例#30
0
 public function getKnownSegmentsToArchive()
 {
     Piwik::checkUserIsSuperUser();
     return Piwik::getKnownSegmentsToArchive();
 }