update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
296343bf3b
commit
d885a4baa9
5833 changed files with 418860 additions and 226988 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -13,29 +13,47 @@ use Piwik\API\ResponseBuilder;
|
|||
use Piwik\ArchiveProcessor\Rules;
|
||||
use Piwik\Common;
|
||||
use Piwik\Config;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\DataTable\Renderer\Json;
|
||||
use Piwik\Menu\MenuTop;
|
||||
use Piwik\Menu\MenuUser;
|
||||
use Piwik\Nonce;
|
||||
use Piwik\Option;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\ControllerAdmin;
|
||||
use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication;
|
||||
use Piwik\Plugins\CustomVariables\CustomVariables;
|
||||
use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
|
||||
use Piwik\Plugins\LanguagesManager\LanguagesManager;
|
||||
use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
|
||||
use Piwik\Plugins\SitesManager\API as APISitesManager;
|
||||
use Piwik\Settings\Manager as SettingsManager;
|
||||
use Piwik\Settings\SystemSetting;
|
||||
use Piwik\Settings\UserSetting;
|
||||
use Piwik\Site;
|
||||
use Piwik\Tracker\IgnoreCookie;
|
||||
use Piwik\Translation\Translator;
|
||||
use Piwik\UpdateCheck;
|
||||
use Piwik\Url;
|
||||
use Piwik\View;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Controller extends \Piwik\Plugin\ControllerAdmin
|
||||
class Controller extends ControllerAdmin
|
||||
{
|
||||
const SET_PLUGIN_SETTINGS_NONCE = 'CoreAdminHome.setPluginSettings';
|
||||
|
||||
/**
|
||||
* @var Translator
|
||||
*/
|
||||
private $translator;
|
||||
|
||||
/** @var OptOutManager */
|
||||
private $optOutManager;
|
||||
|
||||
public function __construct(Translator $translator, OptOutManager $optOutManager)
|
||||
{
|
||||
$this->translator = $translator;
|
||||
$this->optOutManager = $optOutManager;
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->redirectToIndex('UsersManager', 'userSettings');
|
||||
|
|
@ -44,42 +62,87 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
|
||||
public function generalSettings()
|
||||
{
|
||||
Piwik::checkUserHasSomeAdminAccess();
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
|
||||
$view = new View('@CoreAdminHome/generalSettings');
|
||||
$this->handleGeneralSettingsAdmin($view);
|
||||
|
||||
if (Piwik::hasUserSuperUserAccess()) {
|
||||
$this->handleGeneralSettingsAdmin($view);
|
||||
|
||||
$view->trustedHosts = Url::getTrustedHostsFromConfig();
|
||||
|
||||
$logo = new CustomLogo();
|
||||
$view->branding = array('use_custom_logo' => $logo->isEnabled());
|
||||
$view->logosWriteable = $logo->isCustomLogoWritable();
|
||||
$view->pathUserLogo = CustomLogo::getPathUserLogo();
|
||||
$view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall();
|
||||
$view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo();
|
||||
$view->pathUserLogoDirectory = realpath(dirname($view->pathUserLogo) . '/');
|
||||
}
|
||||
$view->trustedHosts = Url::getTrustedHostsFromConfig();
|
||||
$logo = new CustomLogo();
|
||||
$view->branding = array('use_custom_logo' => $logo->isEnabled());
|
||||
$view->fileUploadEnabled = $logo->isFileUploadEnabled();
|
||||
$view->logosWriteable = $logo->isCustomLogoWritable();
|
||||
$view->pathUserLogo = CustomLogo::getPathUserLogo();
|
||||
$view->pathUserFavicon = CustomLogo::getPathUserFavicon();
|
||||
$view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall();
|
||||
$view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo();
|
||||
$view->pathUserLogoDirectory = realpath(dirname($view->pathUserLogo) . '/');
|
||||
|
||||
$view->language = LanguagesManager::getLanguageCodeForCurrentUser();
|
||||
$this->setBasicVariablesView($view);
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
public function pluginSettings()
|
||||
public function adminPluginSettings()
|
||||
{
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
|
||||
$settings = $this->getPluginSettings();
|
||||
|
||||
$vars = array(
|
||||
'nonce' => Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE),
|
||||
'pluginsSettings' => $this->getSettingsByType($settings, 'admin'),
|
||||
'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings),
|
||||
'mode' => 'admin'
|
||||
);
|
||||
|
||||
return $this->renderTemplate('pluginSettings', $vars);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Piwik\Plugin\Settings[] $pluginsSettings
|
||||
* @return array array([pluginName] => [])
|
||||
*/
|
||||
private function getSettingsByType($pluginsSettings, $mode)
|
||||
{
|
||||
$byType = array();
|
||||
|
||||
foreach ($pluginsSettings as $pluginName => $pluginSettings) {
|
||||
$settings = array();
|
||||
|
||||
foreach ($pluginSettings->getSettingsForCurrentUser() as $setting) {
|
||||
if ('admin' === $mode && $setting instanceof SystemSetting) {
|
||||
$settings[] = $setting;
|
||||
} elseif ('user' === $mode && $setting instanceof UserSetting) {
|
||||
$settings[] = $setting;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($settings)) {
|
||||
$byType[$pluginName] = array(
|
||||
'introduction' => $pluginSettings->getIntroduction(),
|
||||
'settings' => $settings
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $byType;
|
||||
}
|
||||
|
||||
public function userPluginSettings()
|
||||
{
|
||||
Piwik::checkUserIsNotAnonymous();
|
||||
|
||||
$settings = $this->getPluginSettings();
|
||||
|
||||
$view = new View('@CoreAdminHome/pluginSettings');
|
||||
$view->nonce = Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE);
|
||||
$view->pluginSettings = $settings;
|
||||
$view->firstSuperUserSettingNames = $this->getFirstSuperUserSettingNames($settings);
|
||||
$vars = array(
|
||||
'nonce' => Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE),
|
||||
'pluginsSettings' => $this->getSettingsByType($settings, 'user'),
|
||||
'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings),
|
||||
'mode' => 'user'
|
||||
);
|
||||
|
||||
$this->setBasicVariablesView($view);
|
||||
|
||||
return $view->render();
|
||||
return $this->renderTemplate('pluginSettings', $vars);
|
||||
}
|
||||
|
||||
private function getPluginSettings()
|
||||
|
|
@ -121,7 +184,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
if (!Nonce::verifyNonce(static::SET_PLUGIN_SETTINGS_NONCE, $nonce)) {
|
||||
return json_encode(array(
|
||||
'result' => 'error',
|
||||
'message' => Piwik::translate('General_ExceptionNonceMismatch')
|
||||
'message' => $this->translator->translate('General_ExceptionNonceMismatch')
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -140,15 +203,28 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
}
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
$message = $e->getMessage();
|
||||
|
||||
if (!empty($setting)) {
|
||||
$message = $setting->title . ': ' . $message;
|
||||
}
|
||||
|
||||
$message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');
|
||||
return json_encode(array('result' => 'error', 'message' => $message));
|
||||
}
|
||||
|
||||
try {
|
||||
foreach ($pluginsSettings as $pluginSetting) {
|
||||
$pluginSetting->save();
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
$message = html_entity_decode($e->getMessage(), ENT_QUOTES, 'UTF-8');
|
||||
return json_encode(array('result' => 'error', 'message' => $message));
|
||||
return json_encode(array(
|
||||
'result' => 'error',
|
||||
'message' => $this->translator->translate('CoreAdminHome_PluginSettingsSaveFailed'))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Nonce::discardNonce(static::SET_PLUGIN_SETTINGS_NONCE);
|
||||
return json_encode(array('result' => 'success'));
|
||||
}
|
||||
|
|
@ -165,7 +241,13 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
|
||||
foreach ($settings as $setting) {
|
||||
if ($setting['name'] == $settingKey) {
|
||||
return $setting['value'];
|
||||
$value = $setting['value'];
|
||||
|
||||
if (is_string($value)) {
|
||||
return Common::unsanitizeInputValue($value);
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -200,9 +282,12 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
*/
|
||||
public function trackingCodeGenerator()
|
||||
{
|
||||
Piwik::checkUserHasSomeViewAccess();
|
||||
|
||||
$view = new View('@CoreAdminHome/trackingCodeGenerator');
|
||||
$this->setBasicVariablesView($view);
|
||||
$view->topMenu = MenuTop::getInstance()->getMenu();
|
||||
$view->topMenu = MenuTop::getInstance()->getMenu();
|
||||
$view->userMenu = MenuUser::getInstance()->getMenu();
|
||||
|
||||
$viewableIdSites = APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess();
|
||||
|
||||
|
|
@ -210,8 +295,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
$view->idSite = Common::getRequestVar('idSite', $defaultIdSite, 'int');
|
||||
|
||||
$view->defaultReportSiteName = Site::getNameFor($view->idSite);
|
||||
$view->defaultSiteRevenue = \Piwik\MetricsFormatter::getCurrencySymbol($view->idSite);
|
||||
$view->maxCustomVariables = CustomVariables::getMaxCustomVariables();
|
||||
$view->defaultSiteRevenue = Site::getCurrencySymbolFor($view->idSite);
|
||||
$view->maxCustomVariables = CustomVariables::getNumUsableCustomVariables();
|
||||
|
||||
$allUrls = APISitesManager::getInstance()->getSiteUrlsFromId($view->idSite);
|
||||
if (isset($allUrls[1])) {
|
||||
|
|
@ -227,7 +312,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
// get currencies for each viewable site
|
||||
$view->currencySymbols = APISitesManager::getInstance()->getCurrencySymbols();
|
||||
|
||||
$view->serverSideDoNotTrackEnabled = \Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker::isActive();
|
||||
$dntChecker = new DoNotTrackHeaderChecker();
|
||||
$view->serverSideDoNotTrackEnabled = $dntChecker->isActive();
|
||||
|
||||
return $view->render();
|
||||
}
|
||||
|
|
@ -237,46 +323,37 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
*/
|
||||
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();
|
||||
return $this->optOutManager->getOptOutView()->render();
|
||||
}
|
||||
|
||||
public function uploadCustomLogo()
|
||||
{
|
||||
Piwik::checkUserHasSuperUserAccess();
|
||||
$this->checkTokenInUrl();
|
||||
|
||||
$logo = new CustomLogo();
|
||||
$success = $logo->copyUploadedLogoToFilesystem();
|
||||
$successLogo = $logo->copyUploadedLogoToFilesystem();
|
||||
$successFavicon = $logo->copyUploadedFaviconToFilesystem();
|
||||
|
||||
if($success) {
|
||||
if ($successLogo || $successFavicon) {
|
||||
return '1';
|
||||
}
|
||||
return '0';
|
||||
}
|
||||
|
||||
static public function isGeneralSettingsAdminEnabled()
|
||||
public static function isGeneralSettingsAdminEnabled()
|
||||
{
|
||||
return (bool) Config::getInstance()->General['enable_general_settings_admin'];
|
||||
}
|
||||
|
||||
private function makeReleaseChannels()
|
||||
{
|
||||
return StaticContainer::get('Piwik\Plugin\ReleaseChannels');
|
||||
}
|
||||
|
||||
private function saveGeneralSettings()
|
||||
{
|
||||
if(!self::isGeneralSettingsAdminEnabled()) {
|
||||
if (!self::isGeneralSettingsAdminEnabled()) {
|
||||
// General settings + Beta channel + SMTP settings is disabled
|
||||
return;
|
||||
}
|
||||
|
|
@ -287,10 +364,14 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
Rules::setBrowserTriggerArchiving((bool)$enableBrowserTriggerArchiving);
|
||||
Rules::setTodayArchiveTimeToLive($todayArchiveTimeToLive);
|
||||
|
||||
$releaseChannels = $this->makeReleaseChannels();
|
||||
|
||||
// update beta channel setting
|
||||
$debug = Config::getInstance()->Debug;
|
||||
$debug['allow_upgrades_to_beta'] = Common::getRequestVar('enableBetaReleaseCheck', '0', 'int');
|
||||
Config::getInstance()->Debug = $debug;
|
||||
$releaseChannel = Common::getRequestVar('releaseChannel', '', 'string');
|
||||
if (!$releaseChannels->isValidReleaseChannelId($releaseChannel)) {
|
||||
$releaseChannel = '';
|
||||
}
|
||||
$releaseChannels->setActiveReleaseChannelId($releaseChannel);
|
||||
|
||||
// Update email settings
|
||||
$mail = array();
|
||||
|
|
@ -309,6 +390,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
if ($trustedHosts !== false) {
|
||||
Url::saveTrustedHostnameInConfig($trustedHosts);
|
||||
}
|
||||
|
||||
Config::getInstance()->forceSave();
|
||||
|
||||
$pluginUpdateCommunication = new UpdateCommunication();
|
||||
|
|
@ -323,7 +405,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
{
|
||||
// Whether to display or not the general settings (cron, beta, smtp)
|
||||
$view->isGeneralSettingsAdminEnabled = self::isGeneralSettingsAdminEnabled();
|
||||
if($view->isGeneralSettingsAdminEnabled) {
|
||||
if ($view->isGeneralSettingsAdminEnabled) {
|
||||
$this->displayWarningIfConfigFileNotWritable();
|
||||
}
|
||||
|
||||
|
|
@ -337,9 +419,22 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
}
|
||||
$view->showWarningCron = $showWarningCron;
|
||||
$view->todayArchiveTimeToLive = $todayArchiveTimeToLive;
|
||||
$view->todayArchiveTimeToLiveDefault = Rules::getTodayArchiveTimeToLiveDefault();
|
||||
$view->enableBrowserTriggerArchiving = $enableBrowserTriggerArchiving;
|
||||
|
||||
$view->enableBetaReleaseCheck = Config::getInstance()->Debug['allow_upgrades_to_beta'];
|
||||
$releaseChannels = $this->makeReleaseChannels();
|
||||
$activeChannelId = $releaseChannels->getActiveReleaseChannel()->getId();
|
||||
$allChannels = array();
|
||||
foreach ($releaseChannels->getAllReleaseChannels() as $channel) {
|
||||
$allChannels[] = array(
|
||||
'id' => $channel->getId(),
|
||||
'name' => $channel->getName(),
|
||||
'description' => $channel->getDescription(),
|
||||
'active' => $channel->getId() === $activeChannelId
|
||||
);
|
||||
}
|
||||
|
||||
$view->releaseChannels = $allChannels;
|
||||
$view->mail = Config::getInstance()->mail;
|
||||
|
||||
$pluginUpdateCommunication = new UpdateCommunication();
|
||||
|
|
@ -347,5 +442,4 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
|
|||
$view->enableSendPluginUpdateCommunication = $pluginUpdateCommunication->isEnabled();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue