Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CoreAdminHome/Controller.php')
-rw-r--r--plugins/CoreAdminHome/Controller.php442
1 files changed, 216 insertions, 226 deletions
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index f5e5d83a9c..c915205bc2 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_CoreAdminHome
*/
@@ -15,228 +15,218 @@
*/
class Piwik_CoreAdminHome_Controller extends Piwik_Controller_Admin
{
- const LOGO_HEIGHT = 300;
- const LOGO_SMALL_HEIGHT = 100;
-
- public function index()
- {
- return $this->redirectToIndex('UsersManager', 'userSettings');
- }
-
- public function generalSettings()
- {
- Piwik::checkUserHasSomeAdminAccess();
- $view = Piwik_View::factory('generalSettings');
-
- if(Piwik::isUserIsSuperUser())
- {
- $enableBrowserTriggerArchiving = Piwik_ArchiveProcessing::isBrowserTriggerArchivingEnabled();
- $todayArchiveTimeToLive = Piwik_ArchiveProcessing::getTodayArchiveTimeToLive();
- $showWarningCron = false;
- if(!$enableBrowserTriggerArchiving
- && $todayArchiveTimeToLive < 3600)
- {
- $showWarningCron = true;
- }
- $view->showWarningCron = $showWarningCron;
- $view->todayArchiveTimeToLive = $todayArchiveTimeToLive;
- $view->enableBrowserTriggerArchiving = $enableBrowserTriggerArchiving;
-
- $config = Piwik_Config::getInstance();
-
- if(!$config->isFileWritable())
- {
- $view->configFileNotWritable = true;
- }
-
- $debug = $config->Debug;
- $view->enableBetaReleaseCheck = $debug['allow_upgrades_to_beta'];
-
- $view->mail = $config->mail;
-
- $view->branding = $config->branding;
-
- $directoryWritable = is_writable(PIWIK_DOCUMENT_ROOT.'/themes/');
- $logoFilesWriteable = is_writeable(PIWIK_DOCUMENT_ROOT.'/themes/logo.png') && is_writeable(PIWIK_DOCUMENT_ROOT.'/themes/logo-header.png');
- $view->logosWriteable = ($logoFilesWriteable || $directoryWritable) && ini_get('file_uploads') == 1;
-
- $trustedHosts = array();
- if (isset($config->General['trusted_hosts']))
- {
- $trustedHosts = $config->General['trusted_hosts'];
- }
- $view->trustedHosts = $trustedHosts;
- }
-
- $view->language = Piwik_LanguagesManager::getLanguageCodeForCurrentUser();
- $this->setBasicVariablesView($view);
- $view->topMenu = Piwik_GetTopMenu();
- $view->menu = Piwik_GetAdminMenu();
- echo $view->render();
- }
-
- 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 = array();
- $mail['transport'] = (Piwik_Common::getRequestVar('mailUseSmtp') == '1') ? 'smtp' : '';
- $mail['port'] = Piwik_Common::getRequestVar('mailPort', '');
- $mail['host'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailHost', ''));
- $mail['type'] = Piwik_Common::getRequestVar('mailType', '');
- $mail['username'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailUsername', ''));
- $mail['password'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailPassword', ''));
- $mail['encryption'] = Piwik_Common::getRequestVar('mailEncryption', '');
-
- $config = Piwik_Config::getInstance();
- $config->mail = $mail;
-
- // update branding settings
- $branding = $config->branding;
- $branding['use_custom_logo'] = Piwik_Common::getRequestVar('useCustomLogo', '0');
- $config->branding = $branding;
-
- // update beta channel setting
- $debug = $config->Debug;
- $debug['allow_upgrades_to_beta'] = Piwik_Common::getRequestVar('enableBetaReleaseCheck', '0', 'int');
- $config->Debug = $debug;
- // update trusted host settings
- $trustedHosts = Piwik_Common::getRequestVar('trustedHosts', false, 'json');
- if ($trustedHosts !== false)
- {
- Piwik_Url::saveTrustedHostnameInConfig($trustedHosts);
- }
-
- $config->forceSave();
-
- $toReturn = $response->getResponse();
- } catch(Exception $e ) {
- $toReturn = $response->getResponseException( $e );
- }
- echo $toReturn;
- }
-
- /**
- * Renders and echo's an admin page that lets users generate custom JavaScript
- * tracking code and custom image tracker links.
- */
- public function trackingCodeGenerator()
- {
- $view = Piwik_View::factory('jsTrackingGenerator');
- $this->setBasicVariablesView($view);
- $view->topMenu = Piwik_GetTopMenu();
- $view->menu = Piwik_GetAdminMenu();
-
- $viewableIdSites = Piwik_SitesManager_API::getInstance()->getSitesIdWithAtLeastViewAccess();
-
- $defaultIdSite = reset($viewableIdSites);
- $view->idSite = Piwik_Common::getRequestVar('idSite', $defaultIdSite, 'int');
-
- $view->defaultReportSiteName = Piwik_Site::getNameFor($view->idSite);
- $view->defaultSiteRevenue = Piwik::getCurrency($view->idSite);
-
- $allUrls = Piwik_SitesManager_API::getInstance()->getSiteUrlsFromId($view->idSite);
- if (isset($allUrls[1]))
- {
- $aliasUrl = $allUrls[1];
- }
- else
- {
- $aliasUrl = 'x.domain.com';
- }
- $view->defaultReportSiteAlias = $aliasUrl;
-
- $mainUrl = Piwik_Site::getMainUrlFor($view->idSite);
- $view->defaultReportSiteDomain = @parse_url($mainUrl, PHP_URL_HOST);
-
- // get currencies for each viewable site
- $view->currencySymbols = Piwik_SitesManager_API::getInstance()->getCurrencySymbols();
-
- $view->serverSideDoNotTrackEnabled = Piwik_PrivacyManager_Controller::isDntSupported();
-
- echo $view->render();
- }
-
- /**
- * Shows the "Track Visits" checkbox.
- */
- public function optOut()
- {
- $trackVisits = !Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound();
-
- $nonce = Piwik_Common::getRequestVar('nonce', false);
- $language = Piwik_Common::getRequestVar('language', '');
- if($nonce !== false && Piwik_Nonce::verifyNonce('Piwik_OptOut', $nonce))
- {
- Piwik_Nonce::discardNonce('Piwik_OptOut');
- Piwik_Tracker_IgnoreCookie::setIgnoreCookie();
- $trackVisits = !$trackVisits;
- }
-
- $view = Piwik_View::factory('optOut');
- $view->trackVisits = $trackVisits;
- $view->nonce = Piwik_Nonce::getNonce('Piwik_OptOut', 3600);
- $view->language = Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($language)
- ? $language
- : Piwik_LanguagesManager::getLanguageCodeForCurrentUser();
- echo $view->render();
- }
-
- 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;
- }
+ const LOGO_HEIGHT = 300;
+ const LOGO_SMALL_HEIGHT = 100;
+
+ public function index()
+ {
+ return $this->redirectToIndex('UsersManager', 'userSettings');
+ }
+
+ public function generalSettings()
+ {
+ Piwik::checkUserHasSomeAdminAccess();
+ $view = Piwik_View::factory('generalSettings');
+
+ if (Piwik::isUserIsSuperUser()) {
+ $enableBrowserTriggerArchiving = Piwik_ArchiveProcessing::isBrowserTriggerArchivingEnabled();
+ $todayArchiveTimeToLive = Piwik_ArchiveProcessing::getTodayArchiveTimeToLive();
+ $showWarningCron = false;
+ if (!$enableBrowserTriggerArchiving
+ && $todayArchiveTimeToLive < 3600
+ ) {
+ $showWarningCron = true;
+ }
+ $view->showWarningCron = $showWarningCron;
+ $view->todayArchiveTimeToLive = $todayArchiveTimeToLive;
+ $view->enableBrowserTriggerArchiving = $enableBrowserTriggerArchiving;
+
+ $config = Piwik_Config::getInstance();
+
+ if (!$config->isFileWritable()) {
+ $view->configFileNotWritable = true;
+ }
+
+ $debug = $config->Debug;
+ $view->enableBetaReleaseCheck = $debug['allow_upgrades_to_beta'];
+
+ $view->mail = $config->mail;
+
+ $view->branding = $config->branding;
+
+ $directoryWritable = is_writable(PIWIK_DOCUMENT_ROOT . '/themes/');
+ $logoFilesWriteable = is_writeable(PIWIK_DOCUMENT_ROOT . '/themes/logo.png') && is_writeable(PIWIK_DOCUMENT_ROOT . '/themes/logo-header.png');
+ $view->logosWriteable = ($logoFilesWriteable || $directoryWritable) && ini_get('file_uploads') == 1;
+
+ $trustedHosts = array();
+ if (isset($config->General['trusted_hosts'])) {
+ $trustedHosts = $config->General['trusted_hosts'];
+ }
+ $view->trustedHosts = $trustedHosts;
+ }
+
+ $view->language = Piwik_LanguagesManager::getLanguageCodeForCurrentUser();
+ $this->setBasicVariablesView($view);
+ $view->topMenu = Piwik_GetTopMenu();
+ $view->menu = Piwik_GetAdminMenu();
+ echo $view->render();
+ }
+
+ 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 = array();
+ $mail['transport'] = (Piwik_Common::getRequestVar('mailUseSmtp') == '1') ? 'smtp' : '';
+ $mail['port'] = Piwik_Common::getRequestVar('mailPort', '');
+ $mail['host'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailHost', ''));
+ $mail['type'] = Piwik_Common::getRequestVar('mailType', '');
+ $mail['username'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailUsername', ''));
+ $mail['password'] = Piwik_Common::unsanitizeInputValue(Piwik_Common::getRequestVar('mailPassword', ''));
+ $mail['encryption'] = Piwik_Common::getRequestVar('mailEncryption', '');
+
+ $config = Piwik_Config::getInstance();
+ $config->mail = $mail;
+
+ // update branding settings
+ $branding = $config->branding;
+ $branding['use_custom_logo'] = Piwik_Common::getRequestVar('useCustomLogo', '0');
+ $config->branding = $branding;
+
+ // update beta channel setting
+ $debug = $config->Debug;
+ $debug['allow_upgrades_to_beta'] = Piwik_Common::getRequestVar('enableBetaReleaseCheck', '0', 'int');
+ $config->Debug = $debug;
+ // update trusted host settings
+ $trustedHosts = Piwik_Common::getRequestVar('trustedHosts', false, 'json');
+ if ($trustedHosts !== false) {
+ Piwik_Url::saveTrustedHostnameInConfig($trustedHosts);
+ }
+
+ $config->forceSave();
+
+ $toReturn = $response->getResponse();
+ } catch (Exception $e) {
+ $toReturn = $response->getResponseException($e);
+ }
+ echo $toReturn;
+ }
+
+ /**
+ * Renders and echo's an admin page that lets users generate custom JavaScript
+ * tracking code and custom image tracker links.
+ */
+ public function trackingCodeGenerator()
+ {
+ $view = Piwik_View::factory('jsTrackingGenerator');
+ $this->setBasicVariablesView($view);
+ $view->topMenu = Piwik_GetTopMenu();
+ $view->menu = Piwik_GetAdminMenu();
+
+ $viewableIdSites = Piwik_SitesManager_API::getInstance()->getSitesIdWithAtLeastViewAccess();
+
+ $defaultIdSite = reset($viewableIdSites);
+ $view->idSite = Piwik_Common::getRequestVar('idSite', $defaultIdSite, 'int');
+
+ $view->defaultReportSiteName = Piwik_Site::getNameFor($view->idSite);
+ $view->defaultSiteRevenue = Piwik::getCurrency($view->idSite);
+
+ $allUrls = Piwik_SitesManager_API::getInstance()->getSiteUrlsFromId($view->idSite);
+ if (isset($allUrls[1])) {
+ $aliasUrl = $allUrls[1];
+ } else {
+ $aliasUrl = 'x.domain.com';
+ }
+ $view->defaultReportSiteAlias = $aliasUrl;
+
+ $mainUrl = Piwik_Site::getMainUrlFor($view->idSite);
+ $view->defaultReportSiteDomain = @parse_url($mainUrl, PHP_URL_HOST);
+
+ // get currencies for each viewable site
+ $view->currencySymbols = Piwik_SitesManager_API::getInstance()->getCurrencySymbols();
+
+ $view->serverSideDoNotTrackEnabled = Piwik_PrivacyManager_Controller::isDntSupported();
+
+ echo $view->render();
+ }
+
+ /**
+ * Shows the "Track Visits" checkbox.
+ */
+ public function optOut()
+ {
+ $trackVisits = !Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound();
+
+ $nonce = Piwik_Common::getRequestVar('nonce', false);
+ $language = Piwik_Common::getRequestVar('language', '');
+ if ($nonce !== false && Piwik_Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
+ Piwik_Nonce::discardNonce('Piwik_OptOut');
+ Piwik_Tracker_IgnoreCookie::setIgnoreCookie();
+ $trackVisits = !$trackVisits;
+ }
+
+ $view = Piwik_View::factory('optOut');
+ $view->trackVisits = $trackVisits;
+ $view->nonce = Piwik_Nonce::getNonce('Piwik_OptOut', 3600);
+ $view->language = Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($language)
+ ? $language
+ : Piwik_LanguagesManager::getLanguageCodeForCurrentUser();
+ echo $view->render();
+ }
+
+ 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;
+ }
}