diff options
author | mattab <matthieu.aubry@gmail.com> | 2013-08-02 17:59:33 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2013-08-02 17:59:33 +0400 |
commit | a96ec40e983a8b64f4c25def541a519ff3670e6a (patch) | |
tree | bef2a5f7b1e9532dc96161334e23a553cdff7ea1 /plugins/Actions | |
parent | 61997f45e4c39360000e815c9e0853ae04e2f56f (diff) |
Refs #4059 Converting dozens of plugins/* classes to use Namespaces, \Piwik\Plugins\*
Added namespaces to functions.php files in the five plugins that had one
Work in progress
Diffstat (limited to 'plugins/Actions')
-rw-r--r-- | plugins/Actions/API.php | 38 | ||||
-rw-r--r-- | plugins/Actions/Actions.php | 211 | ||||
-rw-r--r-- | plugins/Actions/Archiver.php | 70 | ||||
-rw-r--r-- | plugins/Actions/ArchivingHelper.php | 35 | ||||
-rw-r--r-- | plugins/Actions/Controller.php | 25 |
5 files changed, 195 insertions, 184 deletions
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php index 263e3e4a6b..1804ca4a07 100644 --- a/plugins/Actions/API.php +++ b/plugins/Actions/API.php @@ -6,15 +6,22 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * * @category Piwik_Plugins - * @package Piwik_Actions + * @package Actions */ +namespace Piwik\Plugins\Actions; + +use Exception; use Piwik\Archive; use Piwik\Metrics; use Piwik\Piwik; use Piwik\Common; use Piwik\Date; use Piwik\DataTable; +use Piwik\Plugins\Actions\Actions; use Piwik\Tracker\Action; +use Piwik\Plugins\Actions\Archiver; +use Piwik\Plugins\Actions\ArchivingHelper; +use Piwik\Plugins\CustomVariables\API as CustomVariablesAPI; /** * The Actions API lets you request reports for all your Visitor Actions: Page URLs, Page titles (Piwik Events), @@ -28,14 +35,14 @@ use Piwik\Tracker\Action; * and an outlink via "getOutlink". * * Note: pageName, pageUrl, outlinkUrl, downloadUrl parameters must be URL encoded before you call the API. - * @package Piwik_Actions + * @package Actions */ -class Piwik_Actions_API +class API { static private $instance = null; /** - * @return Piwik_Actions_API + * @return \Piwik\Plugins\Actions\API */ static public function getInstance() { @@ -60,7 +67,7 @@ class Piwik_Actions_API Piwik::checkUserHasViewAccess($idSite); $archive = Archive::build($idSite, $period, $date, $segment); - $metrics = Piwik_Actions_Archiver::$actionsAggregateMetrics; + $metrics = Archiver::$actionsAggregateMetrics; $metrics['Actions_avg_time_generation'] = 'avg_time_generation'; // get requested columns @@ -89,13 +96,13 @@ class Piwik_Actions_API } if ($avgGenerationTimeRequested) { - $tempColumns[] = Piwik_Actions_Archiver::METRIC_SUM_TIME_RECORD_NAME; - $tempColumns[] = Piwik_Actions_Archiver::METRIC_HITS_TIMED_RECORD_NAME; + $tempColumns[] = Archiver::METRIC_SUM_TIME_RECORD_NAME; + $tempColumns[] = Archiver::METRIC_HITS_TIMED_RECORD_NAME; $columns = array_merge($columns, $tempColumns); $columns = array_unique($columns); - $nameReplace[Piwik_Actions_Archiver::METRIC_SUM_TIME_RECORD_NAME] = 'sum_time_generation'; - $nameReplace[Piwik_Actions_Archiver::METRIC_HITS_TIMED_RECORD_NAME] = 'nb_hits_with_time_generation'; + $nameReplace[Archiver::METRIC_SUM_TIME_RECORD_NAME] = 'sum_time_generation'; + $nameReplace[Archiver::METRIC_HITS_TIMED_RECORD_NAME] = 'nb_hits_with_time_generation'; } $table = $archive->getDataTableFromNumeric($columns); @@ -327,8 +334,8 @@ class Piwik_Actions_API */ public function getSiteSearchCategories($idSite, $period, $date, $segment = false) { - Piwik_Actions::checkCustomVariablesPluginEnabled(); - $customVariables = Piwik_CustomVariables_API::getInstance()->getCustomVariables($idSite, $period, $date, $segment, $expanded = false, $_leavePiwikCoreVariables = true); + Actions::checkCustomVariablesPluginEnabled(); + $customVariables = CustomVariablesAPI::getInstance()->getCustomVariables($idSite, $period, $date, $segment, $expanded = false, $_leavePiwikCoreVariables = true); $customVarNameToLookFor = Action::CVAR_KEY_SEARCH_CATEGORY; @@ -347,7 +354,7 @@ class Piwik_Actions_API if ($row) { $dateRewrite = $customVariableTableForDate->metadata['period']->getDateStart()->toString(); $idSubtable = $row->getIdSubDataTable(); - $categories = Piwik_CustomVariables_API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $dateRewrite, $idSubtable, $segment); + $categories = CustomVariablesAPI::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $dateRewrite, $idSubtable, $segment); $dataTable->addTable($categories, $key); } } @@ -356,7 +363,7 @@ class Piwik_Actions_API $row = $customVariables->getRowFromLabel($customVarNameToLookFor); if ($row) { $idSubtable = $row->getIdSubDataTable(); - $dataTable = Piwik_CustomVariables_API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment); + $dataTable = CustomVariablesAPI::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment); } } $this->filterActionsDataTable($dataTable); @@ -383,8 +390,8 @@ class Piwik_Actions_API $searchedString = $search; } } - Piwik_Actions_ArchivingHelper::reloadConfig(); - $searchTree = Piwik_Actions_ArchivingHelper::getActionExplodedNames($searchedString, $actionType); + ArchivingHelper::reloadConfig(); + $searchTree = ArchivingHelper::getActionExplodedNames($searchedString, $actionType); } if ($table === false) { @@ -405,7 +412,6 @@ class Piwik_Actions_API return $newTableArray; } - } return $this->doFilterPageDatatableSearch($callBackParameters, $table, $searchTree); diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index fdd116c671..665e0511f1 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -6,8 +6,10 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * * @category Piwik_Plugins - * @package Piwik_Actions + * @package Actions */ +namespace Piwik\Plugins\Actions; + use Piwik\API\Request; use Piwik\ArchiveProcessor; use Piwik\Piwik; @@ -15,7 +17,6 @@ use Piwik\Common; use Piwik\Tracker\Action; use Piwik\ViewDataTable; use Piwik\WidgetsList; -use Piwik\Plugin; use Piwik\SegmentExpression; use Piwik\Db; use Piwik\Site; @@ -25,18 +26,18 @@ use Piwik\Site; * * Reports about the page views, the outlinks and downloads. * - * @package Piwik_Actions + * @package Actions */ -class Piwik_Actions extends Plugin +class Actions extends \Piwik\Plugin { const ACTIONS_REPORT_ROWS_DISPLAY = 100; - + private $columnTranslations; - + public function __construct() { parent::__construct(); - + $this->columnTranslations = array( 'nb_hits' => Piwik_Translate('General_ColumnPageviews'), 'nb_visits' => Piwik_Translate('General_ColumnUniquePageviews'), @@ -63,7 +64,7 @@ class Piwik_Actions extends Plugin ); return $hooks; } - + public function getSegmentsMetadata(&$segments) { $sqlFilter = array($this, 'getIdActionFromSegment'); @@ -211,7 +212,7 @@ class Piwik_Actions extends Plugin 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks'), 'nb_searches' => Piwik_Translate('Actions_ColumnSearches'), 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'), - 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTime'), + 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTime'), ), 'metricsDocumentation' => array( 'nb_pageviews' => Piwik_Translate('General_ColumnPageviewsDocumentation'), @@ -221,7 +222,7 @@ class Piwik_Actions extends Plugin 'nb_outlinks' => Piwik_Translate('Actions_ColumnClicksDocumentation'), 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'), 'nb_searches' => Piwik_Translate('Actions_ColumnSearchesDocumentation'), - 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTimeDocumentation'), + 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTimeDocumentation'), // 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'), ), 'processedMetrics' => false, @@ -581,16 +582,16 @@ class Piwik_Actions extends Plugin */ public function archiveDay(ArchiveProcessor\Day $archiveProcessor) { - $archiving = new Piwik_Actions_Archiver($archiveProcessor); - if($archiving->shouldArchive()) { + $archiving = new Archiver($archiveProcessor); + if ($archiving->shouldArchive()) { $archiving->archiveDay(); } } function archivePeriod(ArchiveProcessor\Period $archiveProcessor) { - $archiving = new Piwik_Actions_Archiver($archiveProcessor); - if($archiving->shouldArchive()) { + $archiving = new Archiver($archiveProcessor); + if ($archiving->shouldArchive()) { $archiving->archivePeriod(); } } @@ -631,20 +632,20 @@ class Piwik_Actions extends Plugin public function getReportDisplayProperties(&$properties) { $properties['Actions.getPageUrls'] = $this->getDisplayPropertiesForPageUrls(); - $properties['Actions.getEntryPageUrls'] = $this->getDisplayPropertiesForEntryPageUrls(); - $properties['Actions.getExitPageUrls'] = $this->getDisplayPropertiesForExitPageUrls(); - $properties['Actions.getSiteSearchKeywords'] = $this->getDisplayPropertiesForSiteSearchKeywords(); - $properties['Actions.getSiteSearchNoResultKeywords'] = $this->getDisplayPropertiesForSiteSearchNoResultKeywords(); - $properties['Actions.getSiteSearchCategories'] = $this->getDisplayPropertiesForSiteSearchCategories(); - $properties['Actions.getPageUrlsFollowingSiteSearch'] = $this->getDisplayPropertiesForGetPageUrlsOrTitlesFollowingSiteSearch(false); - $properties['Actions.getPageTitlesFollowingSiteSearch'] = $this->getDisplayPropertiesForGetPageUrlsOrTitlesFollowingSiteSearch(true); - $properties['Actions.getPageTitles'] = $this->getDisplayPropertiesForGetPageTitles(); - $properties['Actions.getEntryPageTitles'] = $this->getDisplayPropertiesForGetEntryPageTitles(); - $properties['Actions.getExitPageTitles'] = $this->getDisplayPropertiesForGetExitPageTitles(); - $properties['Actions.getDownloads'] = $this->getDisplayPropertiesForGetDownloads(); - $properties['Actions.getOutlinks'] = $this->getDisplayPropertiesForGetOutlinks(); + $properties['Actions.getEntryPageUrls'] = $this->getDisplayPropertiesForEntryPageUrls(); + $properties['Actions.getExitPageUrls'] = $this->getDisplayPropertiesForExitPageUrls(); + $properties['Actions.getSiteSearchKeywords'] = $this->getDisplayPropertiesForSiteSearchKeywords(); + $properties['Actions.getSiteSearchNoResultKeywords'] = $this->getDisplayPropertiesForSiteSearchNoResultKeywords(); + $properties['Actions.getSiteSearchCategories'] = $this->getDisplayPropertiesForSiteSearchCategories(); + $properties['Actions.getPageUrlsFollowingSiteSearch'] = $this->getDisplayPropertiesForGetPageUrlsOrTitlesFollowingSiteSearch(false); + $properties['Actions.getPageTitlesFollowingSiteSearch'] = $this->getDisplayPropertiesForGetPageUrlsOrTitlesFollowingSiteSearch(true); + $properties['Actions.getPageTitles'] = $this->getDisplayPropertiesForGetPageTitles(); + $properties['Actions.getEntryPageTitles'] = $this->getDisplayPropertiesForGetEntryPageTitles(); + $properties['Actions.getExitPageTitles'] = $this->getDisplayPropertiesForGetExitPageTitles(); + $properties['Actions.getDownloads'] = $this->getDisplayPropertiesForGetDownloads(); + $properties['Actions.getOutlinks'] = $this->getDisplayPropertiesForGetOutlinks(); } - + private function addBaseDisplayProperties(&$result) { $result['datatable_css_class'] = 'dataTableActions'; @@ -654,34 +655,34 @@ class Piwik_Actions extends Plugin $result['show_all_views_icons'] = false; $result['show_table_all_columns'] = false; $result['filter_limit'] = self::ACTIONS_REPORT_ROWS_DISPLAY; - + // if the flat parameter is not provided, make sure it is set to 0 in the URL, // so users can see that they can set it to 1 (see #3365) $result['custom_parameters'] = array('flat' => 0); - + if (ViewDataTable::shouldLoadExpanded()) { $result['show_expanded'] = true; - + $result['filters'][] = function ($dataTable) { - Piwik_Actions::setDataTableRowLevels($dataTable); + Actions::setDataTableRowLevels($dataTable); }; } - + return $result; } - + public static function setDataTableRowLevels($dataTable, $level = 0) { foreach ($dataTable->getRows() as $row) { - $row->setMetadata('css_class', 'level'.$level); - + $row->setMetadata('css_class', 'level' . $level); + $subtable = $row->getSubtable(); if ($subtable) { self::setDataTableRowLevels($subtable, $level + 1); } } } - + private function addExcludeLowPopDisplayProperties(&$result) { if (Common::getRequestVar('enable_filter_excludelowpop', '0', 'string') != '0') { @@ -691,60 +692,60 @@ class Piwik_Actions extends Plugin $visitsInfo = Piwik_VisitsSummary_Controller::getVisitsSummary()->getFirstRow(); $nbActions = $visitsInfo->getColumn('nb_actions'); $nbActionsLowPopulationThreshold = floor(0.02 * $nbActions); - + // we remove 1 to make sure some actions/downloads are displayed in the case we have a very few of them // and each of them has 1 or 2 hits... return min($visitsInfo->getColumn('max_actions') - 1, $nbActionsLowPopulationThreshold - 1); }; } } - + private function addPageDisplayProperties(&$result) { // add common translations $result['translations'] += array( - 'nb_hits' => Piwik_Translate('General_ColumnPageviews'), - 'nb_visits' => Piwik_Translate('General_ColumnUniquePageviews'), - 'avg_time_on_page' => Piwik_Translate('General_ColumnAverageTimeOnPage'), - 'bounce_rate' => Piwik_Translate('General_ColumnBounceRate'), - 'exit_rate' => Piwik_Translate('General_ColumnExitRate'), + 'nb_hits' => Piwik_Translate('General_ColumnPageviews'), + 'nb_visits' => Piwik_Translate('General_ColumnUniquePageviews'), + 'avg_time_on_page' => Piwik_Translate('General_ColumnAverageTimeOnPage'), + 'bounce_rate' => Piwik_Translate('General_ColumnBounceRate'), + 'exit_rate' => Piwik_Translate('General_ColumnExitRate'), 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTime'), ); - + // prettify avg_time_on_page column $getPrettyTimeFromSeconds = '\Piwik\Piwik::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) : "-"; }; $result['filters'][] = array('ColumnCallbackReplace', array('avg_time_generation', $avgTimeCallback)); - + // add avg_generation_time tooltip $tooltipCallback = function ($hits, $min, $max) { if (!$hits) { return false; } - + return Piwik_Translate("Actions_AvgGenerationTimeTooltip", array( - $hits, - "<br />", - Piwik::getPrettyTimeFromSeconds($min), - Piwik::getPrettyTimeFromSeconds($max) - )); + $hits, + "<br />", + Piwik::getPrettyTimeFromSeconds($min), + Piwik::getPrettyTimeFromSeconds($max) + )); }; $result['filters'][] = array('ColumnCallbackAddMetadata', - array( - array('nb_hits_with_time_generation', 'min_time_generation', 'max_time_generation'), - 'avg_time_generation_tooltip', - $tooltipCallback - ) + array( + array('nb_hits_with_time_generation', 'min_time_generation', 'max_time_generation'), + 'avg_time_generation_tooltip', + $tooltipCallback + ) ); - + $this->addExcludeLowPopDisplayProperties($result); } - + public function getDisplayPropertiesForPageUrls() { $result = array( @@ -752,26 +753,26 @@ class Piwik_Actions extends Plugin 'columns_to_display' => array('label', 'nb_hits', 'nb_visits', 'bounce_rate', 'avg_time_on_page', 'exit_rate', 'avg_time_generation'), ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } - + public function getDisplayPropertiesForEntryPageUrls() { // link to the page, not just the report, but only if not a widget $widget = Common::getRequestVar('widget', false); $reportUrl = Request::getCurrentUrlWithoutGenericFilters(array( - 'module' => 'Actions', - 'action' => $widget === false ? 'indexEntryPageUrls' : 'getEntryPageUrls' - )); - + 'module' => 'Actions', + 'action' => $widget === false ? 'indexEntryPageUrls' : 'getEntryPageUrls' + )); + $result = array( - 'translations' => array('label' => Piwik_Translate('Actions_ColumnEntryPageURL'), + 'translations' => array('label' => Piwik_Translate('Actions_ColumnEntryPageURL'), 'entry_bounce_count' => Piwik_Translate('General_ColumnBounces'), - 'entry_nb_visits' => Piwik_Translate('General_ColumnEntrances')), + 'entry_nb_visits' => Piwik_Translate('General_ColumnEntrances')), 'columns_to_display' => array('label', 'entry_nb_visits', 'entry_bounce_count', 'bounce_rate'), 'filter_sort_column' => 'entry_nb_visits', 'filter_sort_order' => 'desc', @@ -781,24 +782,24 @@ class Piwik_Actions extends Plugin ), 'self_url' => $reportUrl ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } - + public function getDisplayPropertiesForExitPageUrls() { // link to the page, not just the report, but only if not a widget $widget = Common::getRequestVar('widget', false); $reportUrl = Request::getCurrentUrlWithoutGenericFilters(array( - 'module' => 'Actions', - 'action' => $widget === false ? 'indexExitPageUrls' : 'getExitPageUrls' - )); - + 'module' => 'Actions', + 'action' => $widget === false ? 'indexExitPageUrls' : 'getExitPageUrls' + )); + $result = array( - 'translations' => array('label' => Piwik_Translate('Actions_ColumnExitPageURL'), + 'translations' => array('label' => Piwik_Translate('Actions_ColumnExitPageURL'), 'exit_nb_visits' => Piwik_Translate('General_ColumnExits')), 'columns_to_display' => array('label', 'exit_nb_visits', 'nb_visits', 'exit_rate'), 'filter_sort_column' => 'exit_nb_visits', @@ -809,13 +810,13 @@ class Piwik_Actions extends Plugin ), 'self_url' => $reportUrl, ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } - + private function addSiteSearchDisplayProperties(&$result) { $result['translations'] += array( @@ -826,16 +827,16 @@ class Piwik_Actions extends Plugin $result['show_bar_chart'] = false; $result['show_table_all_columns'] = false; } - + public function getDisplayPropertiesForSiteSearchKeywords() { $result = array( 'translations' => array('label' => Piwik_Translate('Actions_ColumnSearchKeyword')), 'columns_to_display' => array('label', 'nb_visits', 'nb_pages_per_search', 'exit_rate'), ); - + $this->addSiteSearchDisplayProperties($result); - + return $result; } @@ -845,9 +846,9 @@ class Piwik_Actions extends Plugin 'translations' => array('label', Piwik_Translate('Actions_ColumnNoResultKeyword')), 'columns_to_display' => array('label', 'nb_visits', 'exit_rate') ); - + $this->addSiteSearchDisplayProperties($result); - + return $result; } @@ -870,12 +871,12 @@ class Piwik_Actions extends Plugin { $title = $isTitle ? Piwik_Translate('Actions_WidgetPageTitlesFollowingSearch') : Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'); - + $relatedReports = array( 'Actions.getPageTitlesFollowingSiteSearch' => Piwik_Translate('Actions_WidgetPageTitlesFollowingSearch'), - 'Actions.getPageUrlsFollowingSiteSearch' => Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'), + 'Actions.getPageUrlsFollowingSiteSearch' => Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'), ); - + $result = array( 'translations' => array( 'label' => Piwik_Translate('General_ColumnDestinationPage'), @@ -889,10 +890,10 @@ class Piwik_Actions extends Plugin 'title' => $title, 'relatedReports' => $relatedReports ); - + $this->addExcludeLowPopDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } @@ -901,10 +902,10 @@ class Piwik_Actions extends Plugin // link to the page, not just the report, but only if not a widget $widget = Common::getRequestVar('widget', false); $reportUrl = Request::getCurrentUrlWithoutGenericFilters(array( - 'module' => 'Actions', - 'action' => $widget === false ? 'indexPageTitles' : 'getPageTitles' - )); - + 'module' => 'Actions', + 'action' => $widget === false ? 'indexPageTitles' : 'getPageTitles' + )); + $result = array( 'translations' => array('label' => Piwik_Translate('Actions_ColumnPageName')), 'columns_to_display' => array('label', 'nb_hits', 'nb_visits', 'bounce_rate', @@ -916,10 +917,10 @@ class Piwik_Actions extends Plugin ), 'self_url' => $reportUrl ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } @@ -927,7 +928,7 @@ class Piwik_Actions extends Plugin { $entryPageUrlAction = Common::getRequestVar('widget', false) === false ? 'indexEntryPageUrls' : 'getEntryPageUrls'; - + $result = array( 'translations' => array( 'label' => Piwik_Translate('Actions_ColumnEntryPageTitle'), @@ -941,10 +942,10 @@ class Piwik_Actions extends Plugin "Actions.$entryPageUrlAction" => Piwik_Translate('Actions_SubmenuPagesEntry') ), ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } @@ -952,7 +953,7 @@ class Piwik_Actions extends Plugin { $exitPageUrlAction = Common::getRequestVar('widget', false) === false ? 'indexExitPageUrls' : 'getExitPageUrls'; - + $result = array( 'translations' => array( 'label' => Piwik_Translate('Actions_ColumnExitPageTitle'), @@ -965,10 +966,10 @@ class Piwik_Actions extends Plugin "Actions.$exitPageUrlAction" => Piwik_Translate('Actions_SubmenuPagesExit'), ), ); - + $this->addPageDisplayProperties($result); $this->addBaseDisplayProperties($result); - + return $result; } @@ -983,9 +984,9 @@ class Piwik_Actions extends Plugin 'columns_to_display' => array('label', 'nb_visits', 'nb_hits'), 'show_exclude_low_population' => false ); - + $this->addBaseDisplayProperties($result); - + return $result; } @@ -1000,9 +1001,9 @@ class Piwik_Actions extends Plugin 'columns_to_display' => array('label', 'nb_visits', 'nb_hits'), 'show_exclude_low_population' => false ); - + $this->addBaseDisplayProperties($result); - + return $result; } } diff --git a/plugins/Actions/Archiver.php b/plugins/Actions/Archiver.php index f3dfa31138..c177a73ffe 100644 --- a/plugins/Actions/Archiver.php +++ b/plugins/Actions/Archiver.php @@ -6,8 +6,10 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * * @category Piwik_Plugins - * @package Piwik_Actions + * @package Actions */ +namespace Piwik\Plugins\Actions; + use Piwik\Config; use Piwik\DataTable\Manager; use Piwik\DataTable\Row\DataTableSummaryRow; @@ -16,13 +18,14 @@ use Piwik\DataTable; use Piwik\RankingQuery; use Piwik\PluginsArchiver; use Piwik\Tracker\Action; +use Piwik\Plugins\Actions\ArchivingHelper; /** * Class encapsulating logic to process Day/Period Archiving for the Actions reports * - * @package Piwik_Actions + * @package Actions */ -class Piwik_Actions_Archiver extends PluginsArchiver +class Archiver extends PluginsArchiver { const DOWNLOADS_RECORD_NAME = 'Actions_downloads'; const OUTLINKS_RECORD_NAME = 'Actions_outlink'; @@ -42,15 +45,15 @@ class Piwik_Actions_Archiver extends PluginsArchiver const METRIC_KEYWORDS_RECORD_NAME = 'Actions_nb_keywords'; /* Metrics in use by the API Actions.get */ - public static $actionsAggregateMetrics = array( - self::METRIC_PAGEVIEWS_RECORD_NAME => 'nb_pageviews', - self::METRIC_UNIQ_PAGEVIEWS_RECORD_NAME => 'nb_uniq_pageviews', - self::METRIC_DOWNLOADS_RECORD_NAME => 'nb_downloads', - self::METRIC_UNIQ_DOWNLOADS_RECORD_NAME => 'nb_uniq_downloads', - self::METRIC_OUTLINKS_RECORD_NAME => 'nb_outlinks', - self::METRIC_UNIQ_OUTLINKS_RECORD_NAME => 'nb_uniq_outlinks', - self::METRIC_SEARCHES_RECORD_NAME => 'nb_searches', - self::METRIC_KEYWORDS_RECORD_NAME => 'nb_keywords', + public static $actionsAggregateMetrics = array( + self::METRIC_PAGEVIEWS_RECORD_NAME => 'nb_pageviews', + self::METRIC_UNIQ_PAGEVIEWS_RECORD_NAME => 'nb_uniq_pageviews', + self::METRIC_DOWNLOADS_RECORD_NAME => 'nb_downloads', + self::METRIC_UNIQ_DOWNLOADS_RECORD_NAME => 'nb_uniq_downloads', + self::METRIC_OUTLINKS_RECORD_NAME => 'nb_outlinks', + self::METRIC_UNIQ_OUTLINKS_RECORD_NAME => 'nb_uniq_outlinks', + self::METRIC_SEARCHES_RECORD_NAME => 'nb_searches', + self::METRIC_KEYWORDS_RECORD_NAME => 'nb_keywords', ); public static $actionTypes = array( @@ -93,24 +96,24 @@ class Piwik_Actions_Archiver extends PluginsArchiver $rankingQueryLimit = self::getRankingQueryLimit(); // FIXME: This is a quick fix for #3482. The actual cause of the bug is that - // the site search & performance metrics additions to - // Piwik_Actions_ArchivingHelper::updateActionsTableWithRowQuery expect every + // the site search & performance metrics additions to + // ArchivingHelper::updateActionsTableWithRowQuery expect every // row to have 'type' data, but not all of the SQL queries that are run w/o // ranking query join on the log_action table and thus do not select the // log_action.type column. - // + // // NOTES: Archiving logic can be generalized as follows: // 0) Do SQL query over log_link_visit_action & join on log_action to select // some metrics (like visits, hits, etc.) // 1) For each row, cache the action row & metrics. (This is done by - // updateActionsTableWithRowQuery for result set rows that have + // updateActionsTableWithRowQuery for result set rows that have // name & type columns.) // 2) Do other SQL queries for metrics we can't put in the first query (like // entry visits, exit vists, etc.) w/o joining log_action. // 3) For each row, find the cached row by idaction & add the new metrics to // it. (This is done by updateActionsTableWithRowQuery for result set rows // that DO NOT have name & type columns.) - // + // // The site search & performance metrics additions expect a 'type' all the time // which breaks the original pre-rankingquery logic. Ranking query requires a // join, so the bug is only seen when ranking query is disabled. @@ -118,7 +121,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver $rankingQueryLimit = 100000; } - Piwik_Actions_ArchivingHelper::reloadConfig(); + ArchivingHelper::reloadConfig(); $this->initActionsTables(); $this->archiveDayActions($rankingQueryLimit); @@ -159,7 +162,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver $this->actionsTablesByType = array(); foreach (self::$actionTypes as $type) { $dataTable = new DataTable(); - $dataTable->setMaximumAllowedRows(Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero); + $dataTable->setMaximumAllowedRows(ArchivingHelper::$maximumRowsInDataTableLevelZero); if ($type == Action::TYPE_ACTION_URL || $type == Action::TYPE_ACTION_NAME @@ -271,7 +274,6 @@ class Piwik_Actions_Archiver extends PluginsArchiver // to the outer select. therefore, $segment needs to know about it. $select = sprintf($select, $sprintfField); - // get query with segmentation $query = $this->getLogAggregator()->generateQuery($select, $from, $where, $groupBy, $orderBy); @@ -285,7 +287,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver // get result $resultSet = $this->getLogAggregator()->getDb()->query($querySql, $query['bind']); - $modified = Piwik_Actions_ArchivingHelper::updateActionsTableWithRowQuery($resultSet, $sprintfField, $this->actionsTablesByType); + $modified = ArchivingHelper::updateActionsTableWithRowQuery($resultSet, $sprintfField, $this->actionsTablesByType); return $modified; } @@ -435,7 +437,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver */ protected function recordDayReports() { - Piwik_Actions_ArchivingHelper::clearActionsCache(); + ArchivingHelper::clearActionsCache(); $this->recordPageUrlsReports(); $this->recordDownloadsReports(); @@ -450,12 +452,12 @@ class Piwik_Actions_Archiver extends PluginsArchiver $this->recordDataTable($dataTable, self::PAGE_URLS_RECORD_NAME); $records = array( - self::METRIC_PAGEVIEWS_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS)), + self::METRIC_PAGEVIEWS_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS)), self::METRIC_UNIQ_PAGEVIEWS_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_NB_VISITS)), - self::METRIC_SUM_TIME_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_SUM_TIME_GENERATION)), - self::METRIC_HITS_TIMED_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION)) + self::METRIC_SUM_TIME_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_SUM_TIME_GENERATION)), + self::METRIC_HITS_TIMED_RECORD_NAME => array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION)) ); - $this->getProcessor()->insertNumericRecords( $records ); + $this->getProcessor()->insertNumericRecords($records); } /** @@ -470,7 +472,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver protected function recordDataTable($dataTable, $recordName) { self::deleteInvalidSummedColumnsFromDataTable($dataTable); - $s = $dataTable->getSerialized(Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation); + $s = $dataTable->getSerialized(ArchivingHelper::$maximumRowsInDataTableLevelZero, ArchivingHelper::$maximumRowsInSubDataTable, ArchivingHelper::$columnToSortByBeforeTruncation); $this->getProcessor()->insertBlobRecord($recordName, $s); } @@ -566,15 +568,15 @@ class Piwik_Actions_Archiver extends PluginsArchiver public function archivePeriod() { - Piwik_Actions_ArchivingHelper::reloadConfig(); + ArchivingHelper::reloadConfig(); $dataTableToSum = array( self::PAGE_TITLES_RECORD_NAME, self::PAGE_URLS_RECORD_NAME, ); $this->getProcessor()->aggregateDataTableReports($dataTableToSum, - Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, - Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, - Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation, + ArchivingHelper::$maximumRowsInDataTableLevelZero, + ArchivingHelper::$maximumRowsInSubDataTable, + ArchivingHelper::$columnToSortByBeforeTruncation, self::$actionColumnAggregationOperations, self::$invalidSummedColumnNameToRenamedNameFromPeriodArchive ); @@ -586,9 +588,9 @@ class Piwik_Actions_Archiver extends PluginsArchiver ); $aggregation = null; $nameToCount = $this->getProcessor()->aggregateDataTableReports($dataTableToSum, - Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, - Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, - Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation, + ArchivingHelper::$maximumRowsInDataTableLevelZero, + ArchivingHelper::$maximumRowsInSubDataTable, + ArchivingHelper::$columnToSortByBeforeTruncation, $aggregation, self::$invalidSummedColumnNameToRenamedNameFromPeriodArchive ); diff --git a/plugins/Actions/ArchivingHelper.php b/plugins/Actions/ArchivingHelper.php index 8c95ae629f..e66cf73a97 100644 --- a/plugins/Actions/ArchivingHelper.php +++ b/plugins/Actions/ArchivingHelper.php @@ -6,29 +6,33 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * * @category Piwik_Plugins - * @package Piwik_Actions + * @package Actions */ +namespace Piwik\Plugins\Actions; + +use PDOStatement; use Piwik\Config; use Piwik\DataTable\Row; use Piwik\Metrics; use Piwik\DataTable; use Piwik\Tracker\Action; +use Zend_Db_Statement; /** * This static class provides: * - logic to parse/cleanup Action names, * - logic to efficiently process aggregate the array data during Archiving * - * @package Piwik_Actions + * @package Actions */ -class Piwik_Actions_ArchivingHelper +class ArchivingHelper { const OTHERS_ROW_KEY = ''; /** - * FIXME See FIXME related to this function at Piwik_Actions_Archiver::archiveDay. - * + * FIXME See FIXME related to this function at Archiver::archiveDay. + * * @param Zend_Db_Statement|PDOStatement $query * @param string|bool $fieldQueried * @param array $actionsTablesByType @@ -91,7 +95,6 @@ class Piwik_Actions_ArchivingHelper } } - if (is_null($actionRow)) { continue; } @@ -226,7 +229,6 @@ class Piwik_Actions_ArchivingHelper DataTable::setMaximumDepthLevelAllowedAtLeast(self::getSubCategoryLevelLimit() + 1); } - /** * The default row is used when archiving, if data is inconsistent in the DB, * there could be pages that have exit/entry hits, but don't yet @@ -242,11 +244,11 @@ class Piwik_Actions_ArchivingHelper // but this action was not properly recorded when it was hit in the first place // so we add this fake row information to make sure there is a nb_hits, etc. column for every action $row = new Row(array( - Row::COLUMNS => array( - Metrics::INDEX_NB_VISITS => 1, - Metrics::INDEX_NB_UNIQ_VISITORS => 1, - Metrics::INDEX_PAGE_NB_HITS => 1, - ))); + Row::COLUMNS => array( + Metrics::INDEX_NB_VISITS => 1, + Metrics::INDEX_NB_UNIQ_VISITORS => 1, + Metrics::INDEX_PAGE_NB_HITS => 1, + ))); } return $row; } @@ -287,7 +289,7 @@ class Piwik_Actions_ArchivingHelper /** * Explodes action name into an array of elements. * - * NOTE: before calling this function make sure Piwik_Actions_ArchivingHelper::reloadConfig(); is called + * NOTE: before calling this function make sure ArchivingHelper::reloadConfig(); is called * * for downloads: * we explode link http://piwik.org/some/path/piwik.zip into an array( 'piwik.org', '/some/path/piwik.zip' ); @@ -357,7 +359,6 @@ class Piwik_Actions_ArchivingHelper $categoryDelimiter = self::$actionUrlCategoryDelimiter; } - if ($isUrl) { $urlFragment = Action::processUrlFragment($urlFragment); if (!empty($urlFragment)) { @@ -504,8 +505,8 @@ class Piwik_Actions_ArchivingHelper private static function createSummaryRow() { return new Row(array( - Row::COLUMNS => - array('label' => DataTable::LABEL_SUMMARY_ROW) + self::getDefaultRowColumns() - )); + Row::COLUMNS => + array('label' => DataTable::LABEL_SUMMARY_ROW) + self::getDefaultRowColumns() + )); } } diff --git a/plugins/Actions/Controller.php b/plugins/Actions/Controller.php index 9ce7800197..e6342352f6 100644 --- a/plugins/Actions/Controller.php +++ b/plugins/Actions/Controller.php @@ -6,23 +6,24 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * * @category Piwik_Plugins - * @package Piwik_Actions + * @package Actions */ -use Piwik\Controller; +namespace Piwik\Plugins\Actions; + use Piwik\ViewDataTable; use Piwik\View; /** * Actions controller * - * @package Piwik_Actions + * @package Actions */ -class Piwik_Actions_Controller extends Controller +class Controller extends \Piwik\Controller { - // + // // Actions that render whole pages - // - + // + public function indexPageUrls($fetch = false) { return View::singleReport( @@ -80,16 +81,16 @@ class Piwik_Actions_Controller extends Controller Piwik_Translate('Actions_SubmenuOutlinks'), $this->getOutlinks(true), $fetch); } - - // + + // // Actions that render individual reports - // - + // + public function getPageUrls($fetch = false) { return ViewDataTable::renderReport($this->pluginName, __FUNCTION__, $fetch); } - + public function getEntryPageUrls($fetch = false) { return ViewDataTable::renderReport($this->pluginName, __FUNCTION__, $fetch); |