From e3bd0c0b9e8bd34efd27d31fe310602fcfc3a894 Mon Sep 17 00:00:00 2001 From: mattab <matthieu.aubry@gmail.com> Date: Sat, 14 Sep 2013 15:23:23 +1200 Subject: [PATCH] Moving piwik settings specific getters to SettingsPiwik class Adding MetricsFormatter class which knows how to format/display metrics (time, money, size, etc) --- core/ArchiveProcessor/Period.php | 9 +- core/ArchiveProcessor/Rules.php | 3 +- core/AssetManager.php | 2 +- core/Common.php | 14 - core/Controller.php | 15 +- core/Cookie.php | 6 +- core/DataAccess/ArchiveWriter.php | 3 +- core/Filesystem.php | 12 + core/FrontController.php | 4 +- core/Mail.php | 5 +- core/Metrics.php | 3 +- core/MetricsFormatter.php | 217 ++++++++++ core/Nonce.php | 4 +- core/Piwik.php | 372 +----------------- core/PluginsManager.php | 4 +- core/ReportRenderer/Html.php | 8 +- core/Segment.php | 5 +- core/SettingsPiwik.php | 180 +++++++++ core/Timer.php | 4 +- core/Twig.php | 10 +- core/View.php | 2 +- core/ViewDataTable.php | 16 +- misc/cron/archive.php | 10 +- plugins/API/API.php | 7 +- plugins/API/ProcessedReport.php | 15 +- plugins/Actions/Actions.php | 16 +- plugins/CoreAdminHome/API.php | 3 +- plugins/CoreAdminHome/Controller.php | 16 +- plugins/CoreUpdater/Controller.php | 4 +- plugins/CoreUpdater/CoreUpdater.php | 7 +- .../Visualizations/HtmlTable.php | 17 +- plugins/DBStats/Controller.php | 10 +- plugins/DBStats/DBStats.php | 4 +- plugins/Goals/Goals.php | 2 +- plugins/ImageGraph/Controller.php | 7 +- plugins/Installation/Controller.php | 2 +- plugins/Live/API.php | 19 +- plugins/Live/Controller.php | 19 +- plugins/Live/Visitor.php | 7 +- plugins/Login/Controller.php | 3 +- plugins/MultiSites/Controller.php | 11 +- plugins/Overlay/Controller.php | 3 +- plugins/PrivacyManager/Controller.php | 9 +- plugins/Referers/Referers.php | 5 +- plugins/SEO/RankChecker.php | 6 +- plugins/SitesManager/API.php | 8 +- plugins/UsersManager/UsersManager.php | 6 +- plugins/VisitsSummary/API.php | 8 +- tests/PHPUnit/Core/PiwikTest.php | 7 +- tests/PHPUnit/IntegrationTestCase.php | 4 +- 50 files changed, 568 insertions(+), 565 deletions(-) create mode 100644 core/MetricsFormatter.php create mode 100644 core/SettingsPiwik.php diff --git a/core/ArchiveProcessor/Period.php b/core/ArchiveProcessor/Period.php index 778b41f075..02d1af72db 100644 --- a/core/ArchiveProcessor/Period.php +++ b/core/ArchiveProcessor/Period.php @@ -13,13 +13,12 @@ namespace Piwik\ArchiveProcessor; use Exception; use Piwik\Archive; -use Piwik\Metrics; -use Piwik\Piwik; -use Piwik\Common; use Piwik\ArchiveProcessor; +use Piwik\Common; use Piwik\DataTable; -use Piwik\DataTable\Map; use Piwik\DataTable\Manager; +use Piwik\Metrics; +use Piwik\SettingsPiwik; /** * This class provides generic methods to archive data for a period (week / month / year). @@ -266,7 +265,7 @@ class Period extends ArchiveProcessor protected function enrichWithUniqueVisitorsMetric(&$results) { if (array_key_exists('nb_uniq_visitors', $results)) { - if (Piwik::isUniqueVisitorsEnabled($this->getPeriod()->getLabel())) { + if (SettingsPiwik::isUniqueVisitorsEnabled($this->getPeriod()->getLabel())) { $results['nb_uniq_visitors'] = (float)$this->computeNbUniqVisitors(); } else { unset($results['nb_uniq_visitors']); diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php index eadb6ad244..9b40be42bc 100644 --- a/core/ArchiveProcessor/Rules.php +++ b/core/ArchiveProcessor/Rules.php @@ -15,6 +15,7 @@ use Piwik\Config; use Piwik\Date; use Piwik\Piwik; use Piwik\Segment; +use Piwik\SettingsPiwik; use Piwik\SettingsServer; use Piwik\Site; use Piwik\Tracker\Cache; @@ -59,7 +60,7 @@ class Rules return true; } - $segmentsToProcess = Piwik::getKnownSegmentsToArchive(); + $segmentsToProcess = SettingsPiwik::getKnownSegmentsToArchive(); if (!empty($segmentsToProcess)) { // If the requested segment is one of the segments to pre-process // we ensure that any call to the API will trigger archiving of all reports for this segment diff --git a/core/AssetManager.php b/core/AssetManager.php index 1f4a190475..b5ae6a6a5f 100644 --- a/core/AssetManager.php +++ b/core/AssetManager.php @@ -86,7 +86,7 @@ class AssetManager public static function generateAssetsCacheBuster() { $pluginList = md5(implode(",", PluginsManager::getInstance()->getLoadedPluginsName())); - $cacheBuster = md5(Common::getSalt() . $pluginList . PHP_VERSION . Version::VERSION); + $cacheBuster = md5(SettingsPiwik::getSalt() . $pluginList . PHP_VERSION . Version::VERSION); return $cacheBuster; } diff --git a/core/Common.php b/core/Common.php index d115cc53ed..36ff82061e 100644 --- a/core/Common.php +++ b/core/Common.php @@ -586,20 +586,6 @@ class Common return md5(uniqid(rand(), true)); } - /** - * Get salt from [superuser] section - * - * @return string - */ - public static function getSalt() - { - static $salt = null; - if (is_null($salt)) { - $salt = @Config::getInstance()->superuser['salt']; - } - return $salt; - } - /** * Configureable hash() algorithm (defaults to md5) * diff --git a/core/Controller.php b/core/Controller.php index b1d394430d..c241085848 100644 --- a/core/Controller.php +++ b/core/Controller.php @@ -11,23 +11,14 @@ namespace Piwik; use Exception; -use Piwik\Config; +use Piwik\API\Request; use Piwik\DataTable\Filter\CalculateEvolutionFilter; -use Piwik\Period; use Piwik\Period\Month; +use Piwik\Period; use Piwik\Period\Range; -use Piwik\Piwik; -use Piwik\Common; -use Piwik\Access; -use Piwik\NoAccessException; -use Piwik\Date; -use Piwik\Site; use Piwik\Plugins\API\API; -use Piwik\API\Request; -use Piwik\FrontController; use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\SitesManager\API as SitesManagerAPI; -use Piwik\Url; use Piwik\Plugins\UsersManager\API as UsersManagerAPI; use Piwik\View; use Piwik\ViewDataTable; @@ -549,7 +540,7 @@ abstract class Controller } $currentPeriod = Common::getRequestVar('period'); - $view->displayUniqueVisitors = Piwik::isUniqueVisitorsEnabled($currentPeriod); + $view->displayUniqueVisitors = SettingsPiwik::isUniqueVisitorsEnabled($currentPeriod); $availablePeriods = array('day', 'week', 'month', 'year', 'range'); if (!in_array($currentPeriod, $availablePeriods)) { throw new Exception("Period must be one of: " . implode(",", $availablePeriods)); diff --git a/core/Cookie.php b/core/Cookie.php index 84246569af..4492fffb72 100644 --- a/core/Cookie.php +++ b/core/Cookie.php @@ -10,8 +10,6 @@ */ namespace Piwik; -use Piwik\Common; - /** * Simple class to handle the cookies: * - read a cookie values @@ -206,7 +204,7 @@ class Cookie { $signature = substr($content, -40); if (substr($content, -43, 3) == self::VALUE_SEPARATOR . '_=' && - $signature == sha1(substr($content, 0, -40) . Common::getSalt()) + $signature == sha1(substr($content, 0, -40) . SettingsPiwik::getSalt()) ) { // strip trailing: VALUE_SEPARATOR '_=' signature" return substr($content, 0, -43); @@ -272,7 +270,7 @@ class Cookie $cookieStr .= '_='; // sign cookie - $signature = sha1($cookieStr . Common::getSalt()); + $signature = sha1($cookieStr . SettingsPiwik::getSalt()); return $cookieStr . $signature; } diff --git a/core/DataAccess/ArchiveWriter.php b/core/DataAccess/ArchiveWriter.php index 18bc227d74..45027c5bd3 100644 --- a/core/DataAccess/ArchiveWriter.php +++ b/core/DataAccess/ArchiveWriter.php @@ -20,6 +20,7 @@ use Piwik\Db\BatchInsert; use Piwik\Period; use Piwik\Piwik; use Piwik\Segment; +use Piwik\SettingsPiwik; /** * This class is used to create a new Archive. @@ -134,7 +135,7 @@ class ArchiveWriter . $period->getId() . '/' . $period->getDateStart()->toString('Y-m-d') . ',' . $period->getDateEnd()->toString('Y-m-d'); - return $lockName . '/' . md5($lockName . Common::getSalt()); + return $lockName . '/' . md5($lockName . SettingsPiwik::getSalt()); } public function finalizeArchive() diff --git a/core/Filesystem.php b/core/Filesystem.php index 45877e6763..34b66ed777 100644 --- a/core/Filesystem.php +++ b/core/Filesystem.php @@ -11,9 +11,21 @@ namespace Piwik; use Exception; +use Piwik\Tracker\Cache; class Filesystem { + /** + * Called on Core install, update, plugin enable/disable + * Will clear all cache that could be affected by the change in configuration being made + */ + public static function deleteAllCacheOnUpdate() + { + AssetManager::removeMergedAssets(); + View::clearCompiledTemplates(); + Cache::deleteTrackerCache(); + } + /** * ending WITHOUT slash * diff --git a/core/FrontController.php b/core/FrontController.php index 693d5bd5ae..e3db4927d8 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -276,8 +276,8 @@ class FrontController PluginsManager::getInstance()->installLoadedPlugins(); // ensure the current Piwik URL is known for later use - if (method_exists('Piwik\Piwik', 'getPiwikUrl')) { - $host = Piwik::getPiwikUrl(); + if (method_exists('Piwik\SettingsPiwik', 'getPiwikUrl')) { + $host = SettingsPiwik::getPiwikUrl(); } Piwik_PostEvent('FrontController.initAuthenticationObject'); diff --git a/core/Mail.php b/core/Mail.php index 1ffbc5d2e4..27ccf629ef 100644 --- a/core/Mail.php +++ b/core/Mail.php @@ -10,9 +10,6 @@ */ namespace Piwik; -use Piwik\Config; -use Piwik\Piwik; -use Piwik\Url; use Zend_Mail; /** @@ -48,7 +45,7 @@ class Mail extends Zend_Mail $piwikHost = Url::getCurrentHost($hostname); // If known Piwik URL, use it instead of "localhost" - $piwikUrl = Piwik::getPiwikUrl(); + $piwikUrl = SettingsPiwik::getPiwikUrl(); $url = parse_url($piwikUrl); if (isset($url['host']) && $url['host'] != 'localhost' diff --git a/core/Metrics.php b/core/Metrics.php index 3d6bc17c48..ada20a7646 100644 --- a/core/Metrics.php +++ b/core/Metrics.php @@ -9,7 +9,6 @@ * @package Piwik */ namespace Piwik; -use Piwik\Piwik; /** * This class holds the various mappings we use to internally store and manipulate metrics. @@ -194,7 +193,7 @@ class Metrics { $nameToUnit = array( '_rate' => '%', - 'revenue' => Piwik::getCurrency($idSite), + 'revenue' => MetricsFormatter::getCurrencySymbol($idSite), '_time_' => 's' ); diff --git a/core/MetricsFormatter.php b/core/MetricsFormatter.php new file mode 100644 index 0000000000..63794f3c81 --- /dev/null +++ b/core/MetricsFormatter.php @@ -0,0 +1,217 @@ +<?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 + * @package Piwik + */ +namespace Piwik; + +use Piwik\Tracker\GoalManager; + +class MetricsFormatter +{ + /** + * Gets a prettified string representation of a number. The result will have + * thousands separators and a decimal point specific to the current locale. + * + * @param number $value + * @return string + */ + public static function getPrettyNumber($value) + { + $locale = localeconv(); + + $decimalPoint = $locale['decimal_point']; + $thousandsSeparator = $locale['thousands_sep']; + + return number_format($value, 0, $decimalPoint, $thousandsSeparator); + } + + /** + * Pretty format a time + * + * @param int $numberOfSeconds + * @param bool $displayTimeAsSentence If set to true, will output "5min 17s", if false "00:05:17" + * @param bool $isHtml + * @param bool $round to the full seconds + * @return string + */ + public static function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAsSentence = true, $isHtml = true, $round = false) + { + $numberOfSeconds = $round ? (int)$numberOfSeconds : (float)$numberOfSeconds; + + // Display 01:45:17 time format + if ($displayTimeAsSentence === false) { + $hours = floor($numberOfSeconds / 3600); + $minutes = floor(($reminder = ($numberOfSeconds - $hours * 3600)) / 60); + $seconds = floor($reminder - $minutes * 60); + $time = sprintf("%02s", $hours) . ':' . sprintf("%02s", $minutes) . ':' . sprintf("%02s", $seconds); + $centiSeconds = ($numberOfSeconds * 100) % 100; + if ($centiSeconds) { + $time .= '.' . sprintf("%02s", $centiSeconds); + } + return $time; + } + $secondsInYear = 86400 * 365.25; + $years = floor($numberOfSeconds / $secondsInYear); + $minusYears = $numberOfSeconds - $years * $secondsInYear; + $days = floor($minusYears / 86400); + + $minusDays = $numberOfSeconds - $days * 86400; + $hours = floor($minusDays / 3600); + + $minusDaysAndHours = $minusDays - $hours * 3600; + $minutes = floor($minusDaysAndHours / 60); + + $seconds = $minusDaysAndHours - $minutes * 60; + $precision = ($seconds > 0 && $seconds < 0.01 ? 3 : 2); + $seconds = round($seconds, $precision); + + if ($years > 0) { + $return = sprintf(Piwik_Translate('General_YearsDays'), $years, $days); + } elseif ($days > 0) { + $return = sprintf(Piwik_Translate('General_DaysHours'), $days, $hours); + } elseif ($hours > 0) { + $return = sprintf(Piwik_Translate('General_HoursMinutes'), $hours, $minutes); + } elseif ($minutes > 0) { + $return = sprintf(Piwik_Translate('General_MinutesSeconds'), $minutes, $seconds); + } else { + $return = sprintf(Piwik_Translate('General_Seconds'), $seconds); + } + if ($isHtml) { + return str_replace(' ', ' ', $return); + } + return $return; + } + + /** + * Pretty format a memory size value + * + * @param number $size size in bytes + * @param string $unit The specific unit to use, if any. If null, the unit is determined by $size. + * @param int $precision The precision to use when rounding. + * @return string + */ + public static function getPrettySizeFromBytes($size, $unit = null, $precision = 1) + { + if ($size == 0) { + return '0 M'; + } + + $units = array('B', 'K', 'M', 'G', 'T'); + foreach ($units as $currentUnit) { + if ($size >= 1024 && $unit != $currentUnit) { + $size = $size / 1024; + } else { + break; + } + } + return round($size, $precision) . " " . $currentUnit; + } + + /** + * Pretty format monetary value for a site + * + * @param int|string $value + * @param int $idSite + * @param bool $htmlAllowed + * @return string + */ + public static function getPrettyMoney($value, $idSite, $htmlAllowed = true) + { + $currencyBefore = MetricsFormatter::getCurrencySymbol($idSite); + + $space = ' '; + if ($htmlAllowed) { + $space = ' '; + } + + $currencyAfter = ''; + // manually put the currency symbol after the amount for euro + // (maybe more currencies prefer this notation?) + if (in_array($currencyBefore, array('€', 'kr'))) { + $currencyAfter = $space . $currencyBefore; + $currencyBefore = ''; + } + + // if the input is a number (it could be a string or INPUT form), + // and if this number is not an int, we round to precision 2 + if (is_numeric($value)) { + if ($value == round($value)) { + // 0.0 => 0 + $value = round($value); + } else { + $precision = GoalManager::REVENUE_PRECISION; + $value = sprintf("%01." . $precision . "f", $value); + } + } + $prettyMoney = $currencyBefore . $space . $value . $currencyAfter; + return $prettyMoney; + } + + /** + * For the given value, based on the column name, will apply: pretty time, pretty money + * @param int $idSite + * @param string $columnName + * @param mixed $value + * @param bool $htmlAllowed + * @return string + */ + public static function getPrettyValue($idSite, $columnName, $value, $htmlAllowed) + { + // Display time in human readable + if (strpos($columnName, 'time') !== false) { + // Little hack: Display 15s rather than 00:00:15, only for "(avg|min|max)_generation_time" + $timeAsSentence = (substr($columnName, -16) == '_time_generation'); + return self::getPrettyTimeFromSeconds($value, $timeAsSentence); + } + // Add revenue symbol to revenues + if (strpos($columnName, 'revenue') !== false && strpos($columnName, 'evolution') === false) { + return self::getPrettyMoney($value, $idSite, $htmlAllowed); + } + // Add % symbol to rates + if (strpos($columnName, '_rate') !== false) { + if (strpos($value, "%") === false) { + return $value . "%"; + } + } + return $value; + } + + /** + * Get currency symbol for a site + * + * @param int $idSite + * @return string + */ + public static function getCurrencySymbol($idSite) + { + $symbols = MetricsFormatter::getCurrencyList(); + $site = new Site($idSite); + $currency = $site->getCurrency(); + if (isset($symbols[$currency])) { + return $symbols[$currency][0]; + } + + return ''; + } + + /** + * Returns a list of currency symbols + * + * @return array array( currencyCode => symbol, ... ) + */ + public static function getCurrencyList() + { + static $currenciesList = null; + if (is_null($currenciesList)) { + require_once PIWIK_INCLUDE_PATH . '/core/DataFiles/Currencies.php'; + $currenciesList = $GLOBALS['Piwik_CurrencyList']; + } + return $currenciesList; + } +} \ No newline at end of file diff --git a/core/Nonce.php b/core/Nonce.php index d7606854f9..136db339af 100644 --- a/core/Nonce.php +++ b/core/Nonce.php @@ -10,9 +10,7 @@ */ namespace Piwik; -use Piwik\Common; use Piwik\Session\SessionNamespace; -use Piwik\Url; /** * Nonce class. @@ -46,7 +44,7 @@ class Nonce // to handle browser pre-fetch or double fetch caused by some browser add-ons/extensions if (empty($nonce)) { // generate a new nonce - $nonce = md5(Common::getSalt() . time() . Common::generateUniqId()); + $nonce = md5(SettingsPiwik::getSalt() . time() . Common::generateUniqId()); $ns->nonce = $nonce; $ns->setExpirationSeconds($ttl, 'nonce'); } diff --git a/core/Piwik.php b/core/Piwik.php index 926393a531..75f37139b9 100644 --- a/core/Piwik.php +++ b/core/Piwik.php @@ -18,9 +18,7 @@ use Piwik\Log\ScreenFormatter; use Piwik\Plugin; use Piwik\Plugins\UsersManager\API; use Piwik\Session; -use Piwik\Tracker\Cache; use Piwik\Tracker; -use Piwik\Tracker\GoalManager; use Piwik\View; use Zend_Registry; @@ -61,42 +59,6 @@ class Piwik const LABEL_ID_GOAL_IS_ECOMMERCE_CART = 'ecommerceAbandonedCart'; const LABEL_ID_GOAL_IS_ECOMMERCE_ORDER = 'ecommerceOrder'; - /** - * Should we process and display Unique Visitors? - * -> Always process for day/week/month periods - * For Year and Range, only process if it was enabled in the config file, - * - * @param string $periodLabel Period label (e.g., 'day') - * @return bool - */ - static public function isUniqueVisitorsEnabled($periodLabel) - { - $generalSettings = Config::getInstance()->General; - - $settingName = "enable_processing_unique_visitors_$periodLabel"; - $result = !empty($generalSettings[$settingName]) && $generalSettings[$settingName] == 1; - - // check enable_processing_unique_visitors_year_and_range for backwards compatibility - if (($periodLabel == 'year' || $periodLabel == 'range') - && isset($generalSettings['enable_processing_unique_visitors_year_and_range']) - ) { - $result |= $generalSettings['enable_processing_unique_visitors_year_and_range'] == 1; - } - - return $result; - } - - /** - * Returns true if Segmentation is allowed for this user - * - * @return bool - */ - public static function isSegmentationEnabled() - { - return !Piwik::isUserIsAnonymous() - || Config::getInstance()->General['anonymous_user_enable_use_segments_API']; - } - /** * Uninstallation helper */ @@ -121,69 +83,6 @@ class Piwik } } - /** - * Called on Core install, update, plugin enable/disable - * Will clear all cache that could be affected by the change in configuration being made - */ - static public function deleteAllCacheOnUpdate() - { - AssetManager::removeMergedAssets(); - View::clearCompiledTemplates(); - Cache::deleteTrackerCache(); - } - - /** - * Cache for result of getPiwikUrl. - * Can be overwritten for testing purposes only. - * - * @var string - */ - static public $piwikUrlCache = null; - - /** - * Returns the cached the Piwik URL, eg. http://demo.piwik.org/ or http://example.org/piwik/ - * If not found, then tries to cache it and returns the value. - * - * If the Piwik URL changes (eg. Piwik moved to new server), the value will automatically be refreshed in the cache. - * - * @return string - */ - static public function getPiwikUrl() - { - // Only set in tests - if (self::$piwikUrlCache !== null) { - return self::$piwikUrlCache; - } - - $key = 'piwikUrl'; - $url = Piwik_GetOption($key); - if (SettingsServer::isPhpCliMode() - // in case archive.php is triggered with domain localhost - || SettingsServer::isArchivePhpTriggered() - || defined('PIWIK_MODE_ARCHIVE') - ) { - return $url; - } - - $currentUrl = Common::sanitizeInputValue(Url::getCurrentUrlWithoutFileName()); - - if (empty($url) - // if URL changes, always update the cache - || $currentUrl != $url - ) { - if (strlen($currentUrl) >= strlen('http://a/')) { - Piwik_SetOption($key, $currentUrl, $autoLoad = true); - } - $url = $currentUrl; - } - return $url; - } - - - /* - * PHP environment settings - */ - /** * Logging and error handling * @@ -199,7 +98,7 @@ class Piwik static public function log($message = '') { if (is_null(self::$shouldLog)) { - self::$shouldLog = self::shouldLoggerLog(); + self::$shouldLog = SettingsPiwik::shouldLoggerLog(); // It is possible that the logger is not setup: // - Tracker request, and debug disabled, // - and some scheduled tasks call code that tries and log something @@ -214,24 +113,6 @@ class Piwik } } - /** - * Returns if logging should work - * @return bool - */ - static public function shouldLoggerLog() - { - try { - $shouldLog = (SettingsServer::isPhpCliMode() - || Config::getInstance()->log['log_only_when_cli'] == 0) - && - (Config::getInstance()->log['log_only_when_debug_parameter'] == 0 - || isset($_REQUEST['debug'])); - } catch (Exception $e) { - $shouldLog = false; - } - return $shouldLog; - } - /** * Trigger E_USER_ERROR with optional message * @@ -263,21 +144,6 @@ class Piwik * Amounts, Percentages, Currency, Time, Math Operations, and Pretty Printing */ - /** - * Returns a list of currency symbols - * - * @return array array( currencyCode => symbol, ... ) - */ - static public function getCurrencyList() - { - static $currenciesList = null; - if (is_null($currenciesList)) { - require_once PIWIK_INCLUDE_PATH . '/core/DataFiles/Currencies.php'; - $currenciesList = $GLOBALS['Piwik_CurrencyList']; - } - return $currenciesList; - } - /** * Computes the division of i1 by i2. If either i1 or i2 are not number, or if i2 has a value of zero * we return 0 to avoid the division by zero. @@ -310,192 +176,6 @@ class Piwik return round(100 * $dividend / $divisor, $precision); } - /** - * Get currency symbol for a site - * - * @param int $idSite - * @return string - */ - static public function getCurrency($idSite) - { - $symbols = self::getCurrencyList(); - $site = new Site($idSite); - $currency = $site->getCurrency(); - if (isset($symbols[$currency])) { - return $symbols[$currency][0]; - } - - return ''; - } - - /** - * For the given value, based on the column name, will apply: pretty time, pretty money - * @param int $idSite - * @param string $columnName - * @param mixed $value - * @param bool $htmlAllowed - * @return string - */ - static public function getPrettyValue($idSite, $columnName, $value, $htmlAllowed) - { - // Display time in human readable - if (strpos($columnName, 'time') !== false) { - // Little hack: Display 15s rather than 00:00:15, only for "(avg|min|max)_generation_time" - $timeAsSentence = (substr($columnName, -16) == '_time_generation'); - return Piwik::getPrettyTimeFromSeconds($value, $timeAsSentence); - } - // Add revenue symbol to revenues - if (strpos($columnName, 'revenue') !== false && strpos($columnName, 'evolution') === false) { - return Piwik::getPrettyMoney($value, $idSite, $htmlAllowed); - } - // Add % symbol to rates - if (strpos($columnName, '_rate') !== false) { - if (strpos($value, "%") === false) { - return $value . "%"; - } - } - return $value; - } - - /** - * Pretty format monetary value for a site - * - * @param int|string $value - * @param int $idSite - * @param bool $htmlAllowed - * @return string - */ - static public function getPrettyMoney($value, $idSite, $htmlAllowed = true) - { - $currencyBefore = self::getCurrency($idSite); - - $space = ' '; - if ($htmlAllowed) { - $space = ' '; - } - - $currencyAfter = ''; - // manually put the currency symbol after the amount for euro - // (maybe more currencies prefer this notation?) - if (in_array($currencyBefore, array('€', 'kr'))) { - $currencyAfter = $space . $currencyBefore; - $currencyBefore = ''; - } - - // if the input is a number (it could be a string or INPUT form), - // and if this number is not an int, we round to precision 2 - if (is_numeric($value)) { - if ($value == round($value)) { - // 0.0 => 0 - $value = round($value); - } else { - $precision = GoalManager::REVENUE_PRECISION; - $value = sprintf("%01." . $precision . "f", $value); - } - } - $prettyMoney = $currencyBefore . $space . $value . $currencyAfter; - return $prettyMoney; - } - - /** - * Pretty format a memory size value - * - * @param number $size size in bytes - * @param string $unit The specific unit to use, if any. If null, the unit is determined by $size. - * @param int $precision The precision to use when rounding. - * @return string - */ - static public function getPrettySizeFromBytes($size, $unit = null, $precision = 1) - { - if ($size == 0) { - return '0 M'; - } - - $units = array('B', 'K', 'M', 'G', 'T'); - foreach ($units as $currentUnit) { - if ($size >= 1024 && $unit != $currentUnit) { - $size = $size / 1024; - } else { - break; - } - } - return round($size, $precision) . " " . $currentUnit; - } - - /** - * Pretty format a time - * - * @param int $numberOfSeconds - * @param bool $displayTimeAsSentence If set to true, will output "5min 17s", if false "00:05:17" - * @param bool $isHtml - * @param bool $round to the full seconds - * @return string - */ - static public function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAsSentence = true, $isHtml = true, $round = false) - { - $numberOfSeconds = $round ? (int)$numberOfSeconds : (float)$numberOfSeconds; - - // Display 01:45:17 time format - if ($displayTimeAsSentence === false) { - $hours = floor($numberOfSeconds / 3600); - $minutes = floor(($reminder = ($numberOfSeconds - $hours * 3600)) / 60); - $seconds = floor($reminder - $minutes * 60); - $time = sprintf("%02s", $hours) . ':' . sprintf("%02s", $minutes) . ':' . sprintf("%02s", $seconds); - $centiSeconds = ($numberOfSeconds * 100) % 100; - if ($centiSeconds) { - $time .= '.' . sprintf("%02s", $centiSeconds); - } - return $time; - } - $secondsInYear = 86400 * 365.25; - $years = floor($numberOfSeconds / $secondsInYear); - $minusYears = $numberOfSeconds - $years * $secondsInYear; - $days = floor($minusYears / 86400); - - $minusDays = $numberOfSeconds - $days * 86400; - $hours = floor($minusDays / 3600); - - $minusDaysAndHours = $minusDays - $hours * 3600; - $minutes = floor($minusDaysAndHours / 60); - - $seconds = $minusDaysAndHours - $minutes * 60; - $precision = ($seconds > 0 && $seconds < 0.01 ? 3 : 2); - $seconds = round($seconds, $precision); - - if ($years > 0) { - $return = sprintf(Piwik_Translate('General_YearsDays'), $years, $days); - } elseif ($days > 0) { - $return = sprintf(Piwik_Translate('General_DaysHours'), $days, $hours); - } elseif ($hours > 0) { - $return = sprintf(Piwik_Translate('General_HoursMinutes'), $hours, $minutes); - } elseif ($minutes > 0) { - $return = sprintf(Piwik_Translate('General_MinutesSeconds'), $minutes, $seconds); - } else { - $return = sprintf(Piwik_Translate('General_Seconds'), $seconds); - } - if ($isHtml) { - return str_replace(' ', ' ', $return); - } - return $return; - } - - /** - * Gets a prettified string representation of a number. The result will have - * thousands separators and a decimal point specific to the current locale. - * - * @param number $value - * @return string - */ - static public function getPrettyNumber($value) - { - $locale = localeconv(); - - $decimalPoint = $locale['decimal_point']; - $thousandsSeparator = $locale['thousands_sep']; - - return number_format($value, 0, $decimalPoint, $thousandsSeparator); - } - /** * Returns the Javascript code to be inserted on every page to track * @@ -538,44 +218,6 @@ class Piwik return $title; } - /** - * Number of websites to show in the Website selector - * - * @return int - */ - static public function getWebsitesCountToDisplay() - { - $count = max(Config::getInstance()->General['site_selector_max_sites'], - Config::getInstance()->General['autocomplete_min_sites']); - return (int)$count; - } - - /** - * Segments to pre-process - * - * @return string - */ - static public function getKnownSegmentsToArchive() - { - if (self::$cachedKnownSegmentsToArchive === null) { - $segments = Config::getInstance()->Segments; - $cachedResult = isset($segments['Segments']) ? $segments['Segments'] : array(); - - Piwik_PostEvent('Piwik.getKnownSegmentsToArchiveAllSites', array(&$cachedResult)); - - self::$cachedKnownSegmentsToArchive = array_unique($cachedResult); - } - - return self::$cachedKnownSegmentsToArchive; - } - - static public function getKnownSegmentsToArchiveForSite($idSite) - { - $segments = array(); - Piwik_PostEvent('Piwik.getKnownSegmentsToArchiveForSite', array(&$segments, $idSite)); - return $segments; - } - /* * Access */ @@ -1006,7 +648,7 @@ class Piwik */ static public function checkValidLoginString($userLogin) { - if (!self::isChecksEnabled() + if (!SettingsPiwik::isUserCredentialsSanityCheckEnabled() && !empty($userLogin) ) { return; @@ -1022,16 +664,6 @@ class Piwik } } - /** - * Should Piwik check that the login & password have minimum length and valid characters? - * - * @return bool True if checks enabled; false otherwise - */ - static public function isChecksEnabled() - { - return Config::getInstance()->General['disable_checks_usernames_attributes'] == 0; - } - /* * Database and table definition methods */ diff --git a/core/PluginsManager.php b/core/PluginsManager.php index 2df4707994..b56f4a4e43 100644 --- a/core/PluginsManager.php +++ b/core/PluginsManager.php @@ -243,7 +243,7 @@ class PluginsManager } Config::getInstance()->forceSave(); - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); return $plugins; } @@ -310,7 +310,7 @@ class PluginsManager $this->updatePluginsConfig($plugins); Config::getInstance()->forceSave(); - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); } protected function isPluginInFilesystem($pluginName) diff --git a/core/ReportRenderer/Html.php b/core/ReportRenderer/Html.php index 40055bbaa6..4e8a2c53cf 100644 --- a/core/ReportRenderer/Html.php +++ b/core/ReportRenderer/Html.php @@ -10,10 +10,10 @@ */ namespace Piwik\ReportRenderer; -use Piwik\Piwik; -use Piwik\View; -use Piwik\ReportRenderer; use Piwik\Plugins\API\API; +use Piwik\ReportRenderer; +use Piwik\SettingsPiwik; +use Piwik\View; /** * @@ -119,7 +119,7 @@ class Html extends ReportRenderer $view->assign("reportTableHeaderTextSize", self::REPORT_TABLE_HEADER_TEXT_SIZE); $view->assign("reportTableRowTextSize", self::REPORT_TABLE_ROW_TEXT_SIZE); $view->assign("reportBackToTopTextSize", self::REPORT_BACK_TO_TOP_TEXT_SIZE); - $view->assign("currentPath", Piwik::getPiwikUrl()); + $view->assign("currentPath", SettingsPiwik::getPiwikUrl()); $view->assign("logoHeader", API::getInstance()->getHeaderLogoUrl()); } diff --git a/core/Segment.php b/core/Segment.php index 8687362a56..508afbdd11 100644 --- a/core/Segment.php +++ b/core/Segment.php @@ -10,10 +10,7 @@ */ namespace Piwik; use Exception; -use Piwik\Piwik; -use Piwik\Common; use Piwik\Plugins\API\API; -use Piwik\SegmentExpression; /** * @@ -34,7 +31,7 @@ class Segment public function __construct($string, $idSites) { $string = trim($string); - if (!Piwik::isSegmentationEnabled() + if (!SettingsPiwik::isSegmentationEnabled() && !empty($string) ) { throw new Exception("The Super User has disabled the Segmentation feature."); diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php new file mode 100644 index 0000000000..8067c8a215 --- /dev/null +++ b/core/SettingsPiwik.php @@ -0,0 +1,180 @@ +<?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 + * @package Piwik + */ +namespace Piwik; + +use Exception; + +class SettingsPiwik +{ + /** + * Get salt from [superuser] section + * + * @return string + */ + public static function getSalt() + { + static $salt = null; + if (is_null($salt)) { + $salt = @Config::getInstance()->superuser['salt']; + } + return $salt; + } + + /** + * Should Piwik check that the login & password have minimum length and valid characters? + * + * @return bool True if checks enabled; false otherwise + */ + public static function isUserCredentialsSanityCheckEnabled() + { + return Config::getInstance()->General['disable_checks_usernames_attributes'] == 0; + } + + /** + * Segments to pre-process + * + * @return string + */ + static public function getKnownSegmentsToArchive() + { + if (self::$cachedKnownSegmentsToArchive === null) { + $segments = Config::getInstance()->Segments; + $cachedResult = isset($segments['Segments']) ? $segments['Segments'] : array(); + + Piwik_PostEvent('Piwik.getKnownSegmentsToArchiveAllSites', array(&$cachedResult)); + + self::$cachedKnownSegmentsToArchive = array_unique($cachedResult); + } + + return self::$cachedKnownSegmentsToArchive; + } + + + public static function getKnownSegmentsToArchiveForSite($idSite) + { + $segments = array(); + Piwik_PostEvent('Piwik.getKnownSegmentsToArchiveForSite', array(&$segments, $idSite)); + return $segments; + } + + /** + * Number of websites to show in the Website selector + * + * @return int + */ + public static function getWebsitesCountToDisplay() + { + $count = max(Config::getInstance()->General['site_selector_max_sites'], + Config::getInstance()->General['autocomplete_min_sites']); + return (int)$count; + } + + /** + * Returns if logging should work + * @return bool + */ + public static function shouldLoggerLog() + { + try { + $shouldLog = (SettingsServer::isPhpCliMode() + || Config::getInstance()->log['log_only_when_cli'] == 0) + && + (Config::getInstance()->log['log_only_when_debug_parameter'] == 0 + || isset($_REQUEST['debug'])); + } catch (Exception $e) { + $shouldLog = false; + } + return $shouldLog; + } + + /** + * Cache for result of getPiwikUrl. + * Can be overwritten for testing purposes only. + * + * @var string + */ + static public $piwikUrlCache = null; + + /** + * Returns the cached the Piwik URL, eg. http://demo.piwik.org/ or http://example.org/piwik/ + * If not found, then tries to cache it and returns the value. + * + * If the Piwik URL changes (eg. Piwik moved to new server), the value will automatically be refreshed in the cache. + * + * @return string + */ + public static function getPiwikUrl() + { + // Only set in tests + if (Piwik::$piwikUrlCache !== null) { + return Piwik::$piwikUrlCache; + } + + $key = 'piwikUrl'; + $url = Piwik_GetOption($key); + if (SettingsServer::isPhpCliMode() + // in case archive.php is triggered with domain localhost + || SettingsServer::isArchivePhpTriggered() + || defined('PIWIK_MODE_ARCHIVE') + ) { + return $url; + } + + $currentUrl = Common::sanitizeInputValue(Url::getCurrentUrlWithoutFileName()); + + if (empty($url) + // if URL changes, always update the cache + || $currentUrl != $url + ) { + if (strlen($currentUrl) >= strlen('http://a/')) { + Piwik_SetOption($key, $currentUrl, $autoLoad = true); + } + $url = $currentUrl; + } + return $url; + } + + /** + * Returns true if Segmentation is allowed for this user + * + * @return bool + */ + public static function isSegmentationEnabled() + { + return !Piwik::isUserIsAnonymous() + || Config::getInstance()->General['anonymous_user_enable_use_segments_API']; + } + + /** + * Should we process and display Unique Visitors? + * -> Always process for day/week/month periods + * For Year and Range, only process if it was enabled in the config file, + * + * @param string $periodLabel Period label (e.g., 'day') + * @return bool + */ + public static function isUniqueVisitorsEnabled($periodLabel) + { + $generalSettings = Config::getInstance()->General; + + $settingName = "enable_processing_unique_visitors_$periodLabel"; + $result = !empty($generalSettings[$settingName]) && $generalSettings[$settingName] == 1; + + // check enable_processing_unique_visitors_year_and_range for backwards compatibility + if (($periodLabel == 'year' || $periodLabel == 'range') + && isset($generalSettings['enable_processing_unique_visitors_year_and_range']) + ) { + $result |= $generalSettings['enable_processing_unique_visitors_year_and_range'] == 1; + } + + return $result; + } +} diff --git a/core/Timer.php b/core/Timer.php index c1d17a8020..cddb7cb93f 100644 --- a/core/Timer.php +++ b/core/Timer.php @@ -10,8 +10,6 @@ */ namespace Piwik; -use Piwik\Piwik; - /** * * @package Piwik @@ -61,7 +59,7 @@ class Timer */ public function getMemoryLeak() { - return "Memory delta: " . Piwik::getPrettySizeFromBytes($this->getMemoryUsage() - $this->memoryStart); + return "Memory delta: " . MetricsFormatter::getPrettySizeFromBytes($this->getMemoryUsage() - $this->memoryStart); } /** diff --git a/core/Twig.php b/core/Twig.php index 09dbe27940..59fabb8a2e 100644 --- a/core/Twig.php +++ b/core/Twig.php @@ -11,13 +11,7 @@ namespace Piwik; use Exception; -use Piwik\API\Request; -use Piwik\Piwik; -use Piwik\Common; -use Piwik\AssetManager; use Piwik\Translate; -use Piwik\Url; -use Piwik\PluginsManager; use Piwik\Visualization\Sparkline; use Twig_Environment; use Twig_Extension_Debug; @@ -170,7 +164,7 @@ class Twig } $idSite = func_get_args(); $idSite = $idSite[1]; - return Piwik::getPrettyMoney($amount, $idSite); + return MetricsFormatter::getPrettyMoney($amount, $idSite); }); $this->twig->addFilter($moneyFilter); } @@ -178,7 +172,7 @@ class Twig protected function addFilter_sumTime() { $sumtimeFilter = new Twig_SimpleFilter('sumtime', function ($numberOfSeconds) { - return Piwik::getPrettyTimeFromSeconds($numberOfSeconds); + return MetricsFormatter::getPrettyTimeFromSeconds($numberOfSeconds); }); $this->twig->addFilter($sumtimeFilter); } diff --git a/core/View.php b/core/View.php index 910e5b1397..98406e30cc 100644 --- a/core/View.php +++ b/core/View.php @@ -99,7 +99,7 @@ class View implements ViewInterface $userLogin = Piwik::getCurrentUserLogin(); $this->userLogin = $userLogin; - $count = Piwik::getWebsitesCountToDisplay(); + $count = SettingsPiwik::getWebsitesCountToDisplay(); $sites = SitesManagerAPI::getInstance()->getSitesWithAtLeastViewAccess($count); usort($sites, function($site1, $site2) { diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index fd4d171615..5fdd36c32a 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -10,21 +10,13 @@ */ namespace Piwik; -use Piwik\Config; -use Piwik\Metrics; -use Piwik\Period; use Piwik\API\Request; -use Piwik\Period\Range; -use Piwik\Piwik; -use Piwik\NoAccessException; -use Piwik\Common; -use Piwik\Date; use Piwik\DataTable; -use Piwik\Url; -use Piwik\Site; +use Piwik\Period; +use Piwik\Period\Range; +use Piwik\Plugins\API\API; use Piwik\ViewDataTable\Properties; use Piwik\ViewDataTable\VisualizationPropertiesProxy; -use Piwik\Plugins\API\API; /** * This class is used to load (from the API) and customize the output of a given DataTable. @@ -645,7 +637,7 @@ class ViewDataTable $today = mktime(0, 0, 0); if ($date->getTimestamp() > $today) { $elapsedSeconds = time() - $date->getTimestamp(); - $timeAgo = Piwik::getPrettyTimeFromSeconds($elapsedSeconds); + $timeAgo = MetricsFormatter::getPrettyTimeFromSeconds($elapsedSeconds); return Piwik_Translate('CoreHome_ReportGeneratedXAgo', $timeAgo); } diff --git a/misc/cron/archive.php b/misc/cron/archive.php index c8ff067b1c..7b8580dcea 100644 --- a/misc/cron/archive.php +++ b/misc/cron/archive.php @@ -153,7 +153,7 @@ class Archiving // Try and not request older data we know is already archived if ($this->timeLastCompleted !== false) { $dateLast = time() - $this->timeLastCompleted; - $this->log("- Archiving was last executed without error " . Piwik::getPrettyTimeFromSeconds($dateLast, true, $isHtml = false) . " ago"); + $this->log("- Archiving was last executed without error " . \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($dateLast, true, $isHtml = false) . " ago"); } $this->initWebsitesToProcess(); @@ -251,7 +251,7 @@ class Archiving && $elapsedSinceLastArchiving < $this->todayArchiveTimeToLive ) { $this->log("Skipped website id $idsite, already processed today's report in recent run, " - . Piwik::getPrettyTimeFromSeconds($elapsedSinceLastArchiving, true, $isHtml = false) + . \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($elapsedSinceLastArchiving, true, $isHtml = false) . " ago, " . $timerWebsite->__toString()); $skippedDayArchivesWebsites++; $skipped++; @@ -405,7 +405,7 @@ class Archiving private function getSegmentsForSite($idsite) { $segmentsAllSites = $this->segments; - $segmentsThisSite = Piwik::getKnownSegmentsToArchiveForSite($idsite); + $segmentsThisSite = \Piwik\SettingsPiwik::getKnownSegmentsToArchiveForSite($idsite); if (!empty($segmentsThisSite)) { $this->log("Will pre-process the following " . count($segmentsThisSite) . " Segments for this website (id = $idsite): " . implode(", ", $segmentsThisSite)); } @@ -731,12 +731,12 @@ class Archiving if (empty($timestampActiveTraffic)) { $timestampActiveTraffic = time() - $this->firstRunActiveWebsitesWithTraffic; $this->log("--force-all-periods was detected: we will process websites with visits in the last " - . Piwik::getPrettyTimeFromSeconds($this->firstRunActiveWebsitesWithTraffic, true, false) + . \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($this->firstRunActiveWebsitesWithTraffic, true, false) ); } $this->websites = SitesManagerAPI::getInstance()->getSitesIdWithVisits($timestampActiveTraffic); $websiteIds = !empty($this->websites) ? ", IDs: " . implode(", ", $this->websites) : ""; - $prettySeconds = Piwik::getPrettyTimeFromSeconds(empty($this->timeLastCompleted) + $prettySeconds = \Piwik\MetricsFormatter::getPrettyTimeFromSeconds(empty($this->timeLastCompleted) ? $this->firstRunActiveWebsitesWithTraffic : (time() - $this->timeLastCompleted), true, false); diff --git a/plugins/API/API.php b/plugins/API/API.php index 19cade72f1..d95ba716fb 100644 --- a/plugins/API/API.php +++ b/plugins/API/API.php @@ -20,6 +20,7 @@ use Piwik\Date; use Piwik\Filesystem; use Piwik\Metrics; use Piwik\Piwik; +use Piwik\SettingsPiwik; use Piwik\Tracker\GoalManager; use Piwik\Translate; use Piwik\Version; @@ -289,7 +290,7 @@ class API $logo = 'misc/user/logo.png'; } if (!$pathOnly) { - return Piwik::getPiwikUrl() . $logo; + return SettingsPiwik::getPiwikUrl() . $logo; } return Filesystem::getPathToPiwikRoot() . '/' . $logo; } @@ -309,7 +310,7 @@ class API $logo = 'misc/user/logo-header.png'; } if (!$pathOnly) { - return Piwik::getPiwikUrl() . $logo; + return SettingsPiwik::getPiwikUrl() . $logo; } return Filesystem::getPathToPiwikRoot() . '/' . $logo; } @@ -330,7 +331,7 @@ class API $logo = 'misc/user/logo.svg'; } if (!$pathOnly) { - return Piwik::getPiwikUrl() . $logo; + return SettingsPiwik::getPiwikUrl() . $logo; } return Filesystem::getPathToPiwikRoot() . '/' . $logo; } diff --git a/plugins/API/ProcessedReport.php b/plugins/API/ProcessedReport.php index 92e82aa275..6926595b6f 100644 --- a/plugins/API/ProcessedReport.php +++ b/plugins/API/ProcessedReport.php @@ -12,17 +12,18 @@ namespace Piwik\Plugins\API; use Exception; use Piwik\API\Request; -use Piwik\DataTable\Simple; +use Piwik\Common; use Piwik\DataTable\Row; +use Piwik\DataTable\Simple; +use Piwik\DataTable; +use Piwik\Date; use Piwik\Metrics; +use Piwik\MetricsFormatter; use Piwik\Period; use Piwik\Piwik; -use Piwik\Common; -use Piwik\Date; -use Piwik\DataTable; -use Piwik\Url; -use Piwik\Timer; use Piwik\Site; +use Piwik\Timer; +use Piwik\Url; class ProcessedReport { @@ -518,7 +519,7 @@ class ProcessedReport // filter metrics according to metadata definition if (isset($metadataColumns[$columnName])) { // generate 'human readable' metric values - $prettyValue = Piwik::getPrettyValue($idSite, $columnName, $columnValue, $htmlAllowed = false); + $prettyValue = MetricsFormatter::getPrettyValue($idSite, $columnName, $columnValue, $htmlAllowed = false); $enhancedRow->addColumn($columnName, $prettyValue); } // For example the Maps Widget requires the raw metrics to do advanced datavis elseif ($returnRawMetrics) { diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index bed8cb94a6..4e936bab2f 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -12,14 +12,14 @@ namespace Piwik\Plugins\Actions; use Piwik\API\Request; use Piwik\ArchiveProcessor; -use Piwik\Piwik; use Piwik\Common; +use Piwik\Db; +use Piwik\MetricsFormatter; +use Piwik\SegmentExpression; +use Piwik\Site; use Piwik\Tracker\Action; use Piwik\ViewDataTable; use Piwik\WidgetsList; -use Piwik\SegmentExpression; -use Piwik\Db; -use Piwik\Site; /** * Actions plugin @@ -735,12 +735,12 @@ class Actions extends \Piwik\Plugin ); // prettify avg_time_on_page column - $getPrettyTimeFromSeconds = '\Piwik\Piwik::getPrettyTimeFromSeconds'; + $getPrettyTimeFromSeconds = '\Piwik\MetricsFormatter::getPrettyTimeFromSeconds'; $result['filters'][] = array('ColumnCallbackReplace', array('avg_time_on_page', $getPrettyTimeFromSeconds)); // prettify avg_time_generation column $avgTimeCallback = function ($time) { - return $time ? Piwik::getPrettyTimeFromSeconds($time, true, true, false) : "-"; + return $time ? MetricsFormatter::getPrettyTimeFromSeconds($time, true, true, false) : "-"; }; $result['filters'][] = array('ColumnCallbackReplace', array('avg_time_generation', $avgTimeCallback)); @@ -753,8 +753,8 @@ class Actions extends \Piwik\Plugin return Piwik_Translate("Actions_AvgGenerationTimeTooltip", array( $hits, "<br />", - Piwik::getPrettyTimeFromSeconds($min), - Piwik::getPrettyTimeFromSeconds($max) + MetricsFormatter::getPrettyTimeFromSeconds($min), + MetricsFormatter::getPrettyTimeFromSeconds($max) )); }; $result['filters'][] = array('ColumnCallbackAddMetadata', diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php index 71444288e3..13aff44da3 100644 --- a/plugins/CoreAdminHome/API.php +++ b/plugins/CoreAdminHome/API.php @@ -18,6 +18,7 @@ use Piwik\Piwik; use Piwik\Config; use Piwik\Common; use Piwik\Date; +use Piwik\SettingsPiwik; use Piwik\TaskScheduler; use Piwik\Site; use Piwik\Db; @@ -54,7 +55,7 @@ class API public function getKnownSegmentsToArchive() { Piwik::checkUserIsSuperUser(); - return Piwik::getKnownSegmentsToArchive(); + return SettingsPiwik::getKnownSegmentsToArchive(); } /* diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php index f8a23c8dc2..e49d412744 100644 --- a/plugins/CoreAdminHome/Controller.php +++ b/plugins/CoreAdminHome/Controller.php @@ -13,17 +13,17 @@ namespace Piwik\Plugins\CoreAdminHome; use Exception; use Piwik\API\ResponseBuilder; use Piwik\ArchiveProcessor\Rules; -use Piwik\Config; -use Piwik\Piwik; use Piwik\Common; +use Piwik\Config; use Piwik\Nonce; -use Piwik\Tracker\IgnoreCookie; -use Piwik\View; -use Piwik\Url; -use Piwik\Site; -use Piwik\Plugins\LanguagesManager\LanguagesManager; +use Piwik\Piwik; use Piwik\Plugins\LanguagesManager\API as LanguagesManagerAPI; +use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\SitesManager\API; +use Piwik\Site; +use Piwik\Tracker\IgnoreCookie; +use Piwik\Url; +use Piwik\View; /** * @@ -153,7 +153,7 @@ class Controller extends \Piwik\Controller\Admin $view->idSite = Common::getRequestVar('idSite', $defaultIdSite, 'int'); $view->defaultReportSiteName = Site::getNameFor($view->idSite); - $view->defaultSiteRevenue = Piwik::getCurrency($view->idSite); + $view->defaultSiteRevenue = \Piwik\MetricsFormatter::getCurrencySymbol($view->idSite); $allUrls = API::getInstance()->getSiteUrlsFromId($view->idSite); if (isset($allUrls[1])) { diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php index 41a94678c4..1112421591 100644 --- a/plugins/CoreUpdater/Controller.php +++ b/plugins/CoreUpdater/Controller.php @@ -325,7 +325,7 @@ class Controller extends \Piwik\Controller } $this->warningMessages = array_merge($this->warningMessages, array_slice($integrityInfo, 1)); } - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); $view->coreError = $this->coreError; $view->warningMessages = $this->warningMessages; @@ -339,7 +339,7 @@ class Controller extends \Piwik\Controller { $this->loadAndExecuteUpdateFiles($updater, $componentsWithUpdateFile); - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); $view->coreError = $this->coreError; $view->warningMessages = $this->warningMessages; diff --git a/plugins/CoreUpdater/CoreUpdater.php b/plugins/CoreUpdater/CoreUpdater.php index 20f3f5c0ae..cb4f2edd1e 100644 --- a/plugins/CoreUpdater/CoreUpdater.php +++ b/plugins/CoreUpdater/CoreUpdater.php @@ -11,12 +11,13 @@ namespace Piwik\Plugins\CoreUpdater; use Exception; -use Piwik\Piwik; use Piwik\Common; +use Piwik\Filesystem; use Piwik\FrontController; +use Piwik\Piwik; +use Piwik\UpdateCheck; use Piwik\Updater; use Piwik\Version; -use Piwik\UpdateCheck; /** * @@ -61,7 +62,7 @@ class CoreUpdater extends \Piwik\Plugin $updater->addComponentToCheck('core', Version::VERSION); $updates = $updater->getComponentsWithNewVersion(); if (!empty($updates)) { - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); } if (self::getComponentUpdates($updater) !== null && $module != 'CoreUpdater' diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable.php b/plugins/CoreVisualizations/Visualizations/HtmlTable.php index 9ffc3393eb..d5e1f32775 100644 --- a/plugins/CoreVisualizations/Visualizations/HtmlTable.php +++ b/plugins/CoreVisualizations/Visualizations/HtmlTable.php @@ -10,15 +10,16 @@ */ namespace Piwik\Plugins\CoreVisualizations\Visualizations; -use Piwik\Piwik; -use Piwik\DataTable; -use Piwik\View; -use Piwik\Config; use Piwik\Common; -use Piwik\Site; -use Piwik\DataTableVisualization; +use Piwik\Config; +use Piwik\DataTable; use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal; +use Piwik\DataTableVisualization; +use Piwik\MetricsFormatter; +use Piwik\Piwik; use Piwik\Plugins\Goals\API as Goals_API; +use Piwik\Site; +use Piwik\View; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php'; @@ -188,7 +189,7 @@ class HtmlTable extends DataTableVisualization $view->columns_to_display = $columnsToDisplay; }; - $prettifyTime = array('\Piwik\Piwik', 'getPrettyTimeFromSeconds'); + $prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds'); $view->filters[] = array('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime)); $view->show_exclude_low_population = true; @@ -244,7 +245,7 @@ class HtmlTable extends DataTableVisualization } $formatPercent = function ($value) use($idSite) { - return Piwik::getPrettyMoney(sprintf("%.1f", $value), $idSite); + return MetricsFormatter::getPrettyMoney(sprintf("%.1f", $value), $idSite); }; foreach ($view->columns_to_display as $columnName) { diff --git a/plugins/DBStats/Controller.php b/plugins/DBStats/Controller.php index 941b095f81..890fd1d71c 100644 --- a/plugins/DBStats/Controller.php +++ b/plugins/DBStats/Controller.php @@ -10,10 +10,10 @@ */ namespace Piwik\Plugins\DBStats; +use Piwik\MetricsFormatter; use Piwik\Piwik; -use Piwik\Plugins\DBStats\API; -use Piwik\ViewDataTable; use Piwik\View; +use Piwik\ViewDataTable; /** * @package DBStats @@ -40,9 +40,9 @@ class Controller extends \Piwik\Controller\Admin $view->adminDataSummary = $this->getAdminDataSummary(true); list($siteCount, $userCount, $totalSpaceUsed) = API::getInstance()->getGeneralInformation(); - $view->siteCount = Piwik::getPrettyNumber($siteCount); - $view->userCount = Piwik::getPrettyNumber($userCount); - $view->totalSpaceUsed = Piwik::getPrettySizeFromBytes($totalSpaceUsed); + $view->siteCount = MetricsFormatter::getPrettyNumber($siteCount); + $view->userCount = MetricsFormatter::getPrettyNumber($userCount); + $view->totalSpaceUsed = MetricsFormatter::getPrettySizeFromBytes($totalSpaceUsed); echo $view->render(); } diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php index 22e767f360..ba1dca5fbe 100644 --- a/plugins/DBStats/DBStats.php +++ b/plugins/DBStats/DBStats.php @@ -332,7 +332,7 @@ class DBStats extends \Piwik\Plugin } } - $getPrettySize = array('\Piwik\Piwik', 'getPrettySizeFromBytes'); + $getPrettySize = array('\Piwik\MetricsFormatter', 'getPrettySizeFromBytes'); $params = !isset($fixedMemoryUnit) ? array() : array($fixedMemoryUnit); $properties['filters'][] = array( 'ColumnCallbackReplace', array($sizeColumns, $getPrettySize, $params), $runPrettySizeFilterBeforeGeneric); @@ -346,7 +346,7 @@ class DBStats extends \Piwik\Plugin $properties['filters'][] = array('ColumnCallbackReplace', array($sizeColumns, $replaceSpaces)); } - $getPrettyNumber = array('\Piwik\Piwik', 'getPrettyNumber'); + $getPrettyNumber = array('\Piwik\MetricsFormatter', 'getPrettyNumber'); $properties['filters'][] = array('ColumnCallbackReplace', array('row_count', $getPrettyNumber)); return $viewDataTable; diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php index c0fb1d6c6f..43ef4b1717 100644 --- a/plugins/Goals/Goals.php +++ b/plugins/Goals/Goals.php @@ -577,7 +577,7 @@ class Goals extends \Piwik\Plugin $moneyColumns = array('revenue', 'avg_price'); $prettifyMoneyColumns = array( - 'ColumnCallbackReplace', array($moneyColumns, '\Piwik\Piwik::getPrettyMoney', array($idSite))); + 'ColumnCallbackReplace', array($moneyColumns, '\Piwik\MetricsFormatter::getPrettyMoney', array($idSite))); $result = array( 'show_ecommerce' => true, diff --git a/plugins/ImageGraph/Controller.php b/plugins/ImageGraph/Controller.php index 19925fdc41..ae217dc768 100644 --- a/plugins/ImageGraph/Controller.php +++ b/plugins/ImageGraph/Controller.php @@ -10,10 +10,11 @@ */ namespace Piwik\Plugins\ImageGraph; -use Piwik\Piwik; use Piwik\Common; -use Piwik\View; +use Piwik\Piwik; use Piwik\Plugins\API\API; +use Piwik\SettingsPiwik; +use Piwik\View; class Controller extends \Piwik\Controller { @@ -33,7 +34,7 @@ class Controller extends \Piwik\Controller // Title $report['category'] . ' › ' . $report['name'], //URL - Piwik::getPiwikUrl() . $report['imageGraphUrl'] + SettingsPiwik::getPiwikUrl() . $report['imageGraphUrl'] ); } } diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php index ea1ce67b70..81540f913f 100644 --- a/plugins/Installation/Controller.php +++ b/plugins/Installation/Controller.php @@ -103,7 +103,7 @@ class Controller extends \Piwik\Controller\Admin function welcome($message = false) { // Delete merged js/css files to force regenerations based on updated activated plugin list - Piwik::deleteAllCacheOnUpdate(); + Filesystem::deleteAllCacheOnUpdate(); $view = new View( '@Installation/welcome', diff --git a/plugins/Live/API.php b/plugins/Live/API.php index 6b2c19aa7f..008c4abc43 100644 --- a/plugins/Live/API.php +++ b/plugins/Live/API.php @@ -11,24 +11,23 @@ namespace Piwik\Plugins\Live; use Exception; +use Piwik\Common; use Piwik\Config; use Piwik\DataAccess\LogAggregator; use Piwik\DataTable\Filter\ColumnDelete; use Piwik\DataTable\Row; +use Piwik\DataTable; +use Piwik\Date; +use Piwik\Db; use Piwik\Period; use Piwik\Period\Range; use Piwik\Piwik; -use Piwik\Common; -use Piwik\Date; -use Piwik\DataTable; -use Piwik\Tracker; +use Piwik\Plugins\SitesManager\API as SitesManagerAPI; use Piwik\Segment; use Piwik\Site; -use Piwik\Db; use Piwik\Tracker\Action; +use Piwik\Tracker; use Piwik\Tracker\GoalManager; -use Piwik\Plugins\Live\Visitor; -use Piwik\Plugins\SitesManager\API as SitesManagerAPI; /** * @see plugins/Live/Visitor.php @@ -283,7 +282,7 @@ class API 'prettyName' => \Piwik\Plugins\UserCountry\continentTranslate($continentCode)); } - $result['totalVisitDurationPretty'] = Piwik::getPrettyTimeFromSeconds($result['totalVisitDuration']); + $result['totalVisitDurationPretty'] = \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($result['totalVisitDuration']); // use requested visits for first/last visit info $rows = $visits->getRows(); @@ -813,13 +812,13 @@ class API // Set the time spent for this action (which is the timeSpentRef of the next action) if (isset($actionDetails[$actionIdx + 1])) { $actionDetail['timeSpent'] = $actionDetails[$actionIdx + 1]['timeSpentRef']; - $actionDetail['timeSpentPretty'] = Piwik::getPrettyTimeFromSeconds($actionDetail['timeSpent']); + $actionDetail['timeSpentPretty'] = \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($actionDetail['timeSpent']); } unset($actionDetails[$actionIdx]['timeSpentRef']); // not needed after timeSpent is added // Handle generation time if ($actionDetail['custom_float'] > 0) { - $actionDetail['generationTime'] = Piwik::getPrettyTimeFromSeconds($actionDetail['custom_float'] / 1000); + $actionDetail['generationTime'] = \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($actionDetail['custom_float'] / 1000); } unset($actionDetail['custom_float']); diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php index dfbb0720c1..ca546b45c8 100644 --- a/plugins/Live/Controller.php +++ b/plugins/Live/Controller.php @@ -10,17 +10,16 @@ */ namespace Piwik\Plugins\Live; -use Piwik\Url; use Piwik\API\Request; use Piwik\Common; -use Piwik\Piwik; use Piwik\Config; -use Piwik\Plugins\Live\API; -use Piwik\ViewDataTable; -use Piwik\View; -use Piwik\FrontController; -use Piwik\PluginsManager; +use Piwik\MetricsFormatter; +use Piwik\Piwik; use Piwik\Plugins\Goals\API as Goals_API; +use Piwik\PluginsManager; +use Piwik\Url; +use Piwik\View; +use Piwik\ViewDataTable; /** * @package Live @@ -53,9 +52,9 @@ class Controller extends \Piwik\Controller $view = new View('@Live/getSimpleLastVisitCount'); $view->lastMinutes = $lastMinutes; - $view->visitors = Piwik::getPrettyNumber($lastNData[0]['visitors']); - $view->visits = Piwik::getPrettyNumber($lastNData[0]['visits']); - $view->actions = Piwik::getPrettyNumber($lastNData[0]['actions']); + $view->visitors = MetricsFormatter::getPrettyNumber($lastNData[0]['visitors']); + $view->visits = MetricsFormatter::getPrettyNumber($lastNData[0]['visits']); + $view->actions = MetricsFormatter::getPrettyNumber($lastNData[0]['actions']); $view->refreshAfterXSecs = Config::getInstance()->General['live_widget_refresh_after_seconds']; $view->translations = array( 'one_visitor' => Piwik_Translate('Live_NbVisitor'), diff --git a/plugins/Live/Visitor.php b/plugins/Live/Visitor.php index 849521ba3d..70076fd1c3 100644 --- a/plugins/Live/Visitor.php +++ b/plugins/Live/Visitor.php @@ -10,14 +10,13 @@ */ namespace Piwik\Plugins\Live; -use Piwik\Piwik; use Piwik\Common; use Piwik\IP; -use Piwik\Tracker; -use Piwik\Tracker\Visit; use Piwik\Plugins\API\API as MetaAPI; use Piwik\Plugins\Referers\API as ReferersAPI; use Piwik\Plugins\UserCountry\LocationProvider\GeoIp; +use Piwik\Tracker; +use Piwik\Tracker\Visit; /** * @see plugins/Referers/functions.php @@ -207,7 +206,7 @@ class Visitor function getVisitLengthPretty() { - return Piwik::getPrettyTimeFromSeconds($this->details['visit_total_time']); + return \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($this->details['visit_total_time']); } function getVisitorReturning() diff --git a/plugins/Login/Controller.php b/plugins/Login/Controller.php index ad4e91c1d1..bb6b3fbe6a 100644 --- a/plugins/Login/Controller.php +++ b/plugins/Login/Controller.php @@ -23,6 +23,7 @@ use Piwik\Plugins\UsersManager\UsersManager; use Piwik\ProxyHttp; use Piwik\QuickForm2; use Piwik\Session; +use Piwik\SettingsPiwik; use Piwik\Url; use Piwik\View; @@ -48,7 +49,7 @@ class Controller extends \Piwik\Controller $passwordLen = strlen($password) / 2; $hash = Common::hash( $userInfo . substr($password, 0, $passwordLen) - . Common::getSalt() . substr($password, $passwordLen) + . SettingsPiwik::getSalt() . substr($password, $passwordLen) ); return $hash; } diff --git a/plugins/MultiSites/Controller.php b/plugins/MultiSites/Controller.php index 56ed2351d4..91ba38bfba 100644 --- a/plugins/MultiSites/Controller.php +++ b/plugins/MultiSites/Controller.php @@ -10,15 +10,16 @@ */ namespace Piwik\Plugins\MultiSites; -use Piwik\Period; -use Piwik\Piwik; use Piwik\Common; use Piwik\Config; use Piwik\Date; +use Piwik\MetricsFormatter; +use Piwik\Period; +use Piwik\Piwik; use Piwik\Plugins\MultiSites\API as MultiSitesAPI; -use Piwik\View; -use Piwik\Site; use Piwik\Plugins\SitesManager\API as SitesManagerAPI; +use Piwik\Site; +use Piwik\View; /** * @@ -208,7 +209,7 @@ class Controller extends \Piwik\Controller foreach ($sites as $idsite => &$site) { $revenue = "-"; if (!empty($site['revenue'])) { - $revenue = Piwik::getPrettyMoney($site['revenue'], $site['idsite'], $htmlAllowed = false); + $revenue = MetricsFormatter::getPrettyMoney($site['revenue'], $site['idsite'], $htmlAllowed = false); } $site['revenue'] = '"' . $revenue . '"'; } diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php index 128ba12e6b..86a7fd266d 100644 --- a/plugins/Overlay/Controller.php +++ b/plugins/Overlay/Controller.php @@ -14,6 +14,7 @@ use Piwik\API\Request; use Piwik\Common; use Piwik\Config; use Piwik\Metrics; +use Piwik\MetricsFormatter; use Piwik\Piwik; use Piwik\Plugins\Actions\ArchivingHelper; use Piwik\Plugins\SitesManager\API; @@ -89,7 +90,7 @@ class Controller extends \Piwik\Controller continue; } if ($metric == 'avg_time_on_page') { - $value = Piwik::getPrettyTimeFromSeconds($value); + $value = MetricsFormatter::getPrettyTimeFromSeconds($value); } $data[] = array( 'name' => $translations[$metric], diff --git a/plugins/PrivacyManager/Controller.php b/plugins/PrivacyManager/Controller.php index 2be20e059a..ef37f7c969 100644 --- a/plugins/PrivacyManager/Controller.php +++ b/plugins/PrivacyManager/Controller.php @@ -14,6 +14,7 @@ use Piwik\Common; use Piwik\Config; use Piwik\Date; use Piwik\Db; +use Piwik\MetricsFormatter; use Piwik\Piwik; use Piwik\Plugins\DBStats\MySQLMetadataProvider; use Piwik\Plugins\LanguagesManager\LanguagesManager; @@ -185,7 +186,7 @@ class Controller extends \Piwik\Controller\Admin } $result = array( - 'currentSize' => Piwik::getPrettySizeFromBytes($totalBytes) + 'currentSize' => MetricsFormatter::getPrettySizeFromBytes($totalBytes) ); // if the db size estimate feature is enabled, get the estimate @@ -212,8 +213,8 @@ class Controller extends \Piwik\Controller\Admin } } - $result['sizeAfterPurge'] = Piwik::getPrettySizeFromBytes($totalAfterPurge); - $result['spaceSaved'] = Piwik::getPrettySizeFromBytes($totalBytes - $totalAfterPurge); + $result['sizeAfterPurge'] = MetricsFormatter::getPrettySizeFromBytes($totalAfterPurge); + $result['spaceSaved'] = MetricsFormatter::getPrettySizeFromBytes($totalBytes - $totalAfterPurge); } return $result; @@ -277,7 +278,7 @@ class Controller extends \Piwik\Controller\Admin } } - $deleteDataInfos["nextRunPretty"] = Piwik::getPrettyTimeFromSeconds($deleteDataInfos["nextScheduleTime"] - time()); + $deleteDataInfos["nextRunPretty"] = MetricsFormatter::getPrettyTimeFromSeconds($deleteDataInfos["nextScheduleTime"] - time()); return $deleteDataInfos; } diff --git a/plugins/Referers/Referers.php b/plugins/Referers/Referers.php index 66a7b853d5..63c4c29160 100644 --- a/plugins/Referers/Referers.php +++ b/plugins/Referers/Referers.php @@ -11,9 +11,8 @@ namespace Piwik\Plugins\Referers; use Piwik\ArchiveProcessor; -use Piwik\Piwik; use Piwik\Common; -use Piwik\Plugins\Referers\Archiver; +use Piwik\SettingsPiwik; use Piwik\WidgetsList; /** @@ -220,7 +219,7 @@ class Referers extends \Piwik\Plugin WidgetsList::add('Referers_Referers', 'Referers_WidgetCampaigns', 'Referers', 'getCampaigns'); WidgetsList::add('Referers_Referers', 'Referers_WidgetOverview', 'Referers', 'getRefererType'); WidgetsList::add('Referers_Referers', 'Referers_WidgetGetAll', 'Referers', 'getAll'); - if (Piwik::isSegmentationEnabled()) { + if (SettingsPiwik::isSegmentationEnabled()) { WidgetsList::add('SEO', 'Referers_WidgetTopKeywordsForPages', 'Referers', 'getKeywordsForPage'); } } diff --git a/plugins/SEO/RankChecker.php b/plugins/SEO/RankChecker.php index 74d8afda3b..9584d4bc2a 100644 --- a/plugins/SEO/RankChecker.php +++ b/plugins/SEO/RankChecker.php @@ -11,9 +11,9 @@ namespace Piwik\Plugins\SEO; use Exception; -use Piwik\Piwik; use Piwik\Http; -use Piwik\Plugins\SEO\MajesticClient; +use Piwik\MetricsFormatter; +use Piwik\Piwik; /** * The functions below are derived/adapted from GetRank.org's @@ -174,7 +174,7 @@ class RankChecker } if ($maxAge) { - return Piwik::getPrettyTimeFromSeconds(time() - $maxAge); + return MetricsFormatter::getPrettyTimeFromSeconds(time() - $maxAge); } return false; } diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php index 2dcc54efed..9017a70af2 100644 --- a/plugins/SitesManager/API.php +++ b/plugins/SitesManager/API.php @@ -16,7 +16,9 @@ use Piwik\Common; use Piwik\Date; use Piwik\Db; use Piwik\IP; +use Piwik\MetricsFormatter; use Piwik\Piwik; +use Piwik\SettingsPiwik; use Piwik\SettingsServer; use Piwik\Site; use Piwik\TaskScheduler; @@ -1079,7 +1081,7 @@ class API */ public function getCurrencyList() { - $currencies = Piwik::getCurrencyList(); + $currencies = MetricsFormatter::getCurrencyList(); return array_map(function($a) { return $a[1]." (".$a[0].")"; }, $currencies); } @@ -1090,7 +1092,7 @@ class API */ public function getCurrencySymbols() { - $currencies = Piwik::getCurrencyList(); + $currencies = MetricsFormatter::getCurrencyList(); return array_map(function($a) { return $a[0]; }, $currencies); } @@ -1353,7 +1355,7 @@ class API OR s.main_url like ? $where ) AND idsite in ($ids_str) - LIMIT " . Piwik::getWebsitesCountToDisplay(), + LIMIT " . SettingsPiwik::getWebsitesCountToDisplay(), $bind); return $sites; } diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php index 427f0e4b7e..1b58ee3626 100644 --- a/plugins/UsersManager/UsersManager.php +++ b/plugins/UsersManager/UsersManager.php @@ -11,9 +11,9 @@ namespace Piwik\Plugins\UsersManager; use Exception; -use Piwik\Piwik; use Piwik\Option; -use Piwik\Plugins\UsersManager\API; +use Piwik\Piwik; +use Piwik\SettingsPiwik; /** * Manage Piwik users @@ -110,7 +110,7 @@ class UsersManager extends \Piwik\Plugin */ public static function isValidPasswordString($input) { - if (!Piwik::isChecksEnabled() + if (!SettingsPiwik::isUserCredentialsSanityCheckEnabled() && !empty($input) ) { return true; diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php index 831828b775..a0685029e3 100644 --- a/plugins/VisitsSummary/API.php +++ b/plugins/VisitsSummary/API.php @@ -11,7 +11,9 @@ namespace Piwik\Plugins\VisitsSummary; use Piwik\Archive; +use Piwik\MetricsFormatter; use Piwik\Piwik; +use Piwik\SettingsPiwik; /** * VisitsSummary API lets you access the core web analytics metrics (visits, unique visitors, @@ -108,7 +110,7 @@ class API 'sum_visit_length', 'max_actions' ); - if (Piwik::isUniqueVisitorsEnabled($period)) { + if (SettingsPiwik::isUniqueVisitorsEnabled($period)) { $columns = array_merge(array('nb_uniq_visitors'), $columns); } $columns = array_values($columns); @@ -163,9 +165,9 @@ class API $table = $this->getSumVisitsLength($idSite, $period, $date, $segment); if (is_object($table)) { $table->filter('ColumnCallbackReplace', - array('sum_visit_length', '\Piwik\Piwik::getPrettyTimeFromSeconds')); + array('sum_visit_length', '\Piwik\MetricsFormatter::getPrettyTimeFromSeconds')); } else { - $table = Piwik::getPrettyTimeFromSeconds($table); + $table = MetricsFormatter::getPrettyTimeFromSeconds($table); } return $table; } diff --git a/tests/PHPUnit/Core/PiwikTest.php b/tests/PHPUnit/Core/PiwikTest.php index 0da18e4fbf..56930f6123 100644 --- a/tests/PHPUnit/Core/PiwikTest.php +++ b/tests/PHPUnit/Core/PiwikTest.php @@ -7,6 +7,7 @@ */ use Piwik\Access; use Piwik\Filesystem; +use Piwik\MetricsFormatter; use Piwik\Piwik; use Piwik\Plugins\SitesManager\API; use Piwik\Translate; @@ -120,8 +121,8 @@ class PiwikTest extends DatabaseTestCase $sentenceExpected = str_replace(' ', ' ', $expected[0]); $numericExpected = $expected[1]; - $this->assertEquals($sentenceExpected, Piwik::getPrettyTimeFromSeconds($seconds, $sentence = true)); - $this->assertEquals($numericExpected, Piwik::getPrettyTimeFromSeconds($seconds, $sentence = false)); + $this->assertEquals($sentenceExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = true)); + $this->assertEquals($numericExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = false)); Translate::getInstance()->unloadEnglishTranslation(); } @@ -223,7 +224,7 @@ class PiwikTest extends DatabaseTestCase $this->assertEquals( $expected, - Piwik::getPrettyValue($idsite, $columnName, $value, false, false) + MetricsFormatter::getPrettyValue($idsite, $columnName, $value, false, false) ); Translate::getInstance()->unloadEnglishTranslation(); diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php index 1e97462fce..c1d7e9e76f 100755 --- a/tests/PHPUnit/IntegrationTestCase.php +++ b/tests/PHPUnit/IntegrationTestCase.php @@ -144,7 +144,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase public static function _setUpBeforeClass($dbName = false, $createEmptyDatabase = true, $createConfig = true, $installPlugins = null) { try { - Piwik::$piwikUrlCache = ''; + \Piwik\SettingsPiwik::$piwikUrlCache = ''; if ($createConfig) { static::createTestConfig(); @@ -215,7 +215,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase public static function _tearDownAfterClass($dropDatabase = true) { - Piwik::$piwikUrlCache = null; + \Piwik\SettingsPiwik::$piwikUrlCache = null; IntegrationTestCase::unloadAllPlugins(); /* $plugins = \Piwik\PluginsManager::getInstance()->getLoadedPlugins(); -- GitLab