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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Actions/Actions.php')
-rw-r--r--plugins/Actions/Actions.php86
1 files changed, 64 insertions, 22 deletions
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index 199726675a..9919c02019 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -19,7 +19,8 @@
*/
class Piwik_Actions extends Piwik_Plugin
{
- static protected $actionCategoryDelimiter = null;
+ static protected $actionUrlCategoryDelimiter = null;
+ static protected $actionTitleCategoryDelimiter = null;
static protected $defaultActionName = null;
static protected $defaultActionNameWhenNotDefined = null;
static protected $defaultActionUrlWhenNotDefined = null;
@@ -31,11 +32,10 @@ class Piwik_Actions extends Piwik_Plugin
public function getInformation()
{
$info = array(
- 'name' => 'Actions',
- 'description' => 'Reports about the page views, the outlinks and downloads. Outlinks and Downloads tracking is automatic!',
+ 'description' => Piwik_Translate('Actions_PluginDescription'),
'author' => 'Piwik',
- 'homepage' => 'http://piwik.org/',
- 'version' => '0.1',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
);
return $info;
}
@@ -53,7 +53,18 @@ class Piwik_Actions extends Piwik_Plugin
public function __construct()
{
- self::$actionCategoryDelimiter = Zend_Registry::get('config')->General->action_category_delimiter;
+ // for BC, we read the old style delimiter first (see #1067)
+ $actionDelimiter = Zend_Registry::get('config')->General->action_category_delimiter;
+ if(empty($actionDelimiter))
+ {
+ self::$actionUrlCategoryDelimiter = Zend_Registry::get('config')->General->action_url_category_delimiter;
+ self::$actionTitleCategoryDelimiter = Zend_Registry::get('config')->General->action_title_category_delimiter;
+ }
+ else
+ {
+ self::$actionUrlCategoryDelimiter = self::$actionTitleCategoryDelimiter = $actionDelimiter;
+ }
+
self::$defaultActionName = Zend_Registry::get('config')->General->action_default_name;
self::$defaultActionNameWhenNotDefined = Zend_Registry::get('config')->General->action_default_name_when_not_defined;
self::$defaultActionUrlWhenNotDefined = Zend_Registry::get('config')->General->action_default_url_when_not_defined;
@@ -64,6 +75,8 @@ class Piwik_Actions extends Piwik_Plugin
function addWidgets()
{
+ Piwik_AddWidget( 'Actions_Actions', 'Actions_SubmenuPagesEntry', 'Actions', 'getEntryPageUrls');
+ Piwik_AddWidget( 'Actions_Actions', 'Actions_SubmenuPagesExit', 'Actions', 'getExitPageUrls');
Piwik_AddWidget( 'Actions_Actions', 'Actions_SubmenuPages', 'Actions', 'getPageUrls');
Piwik_AddWidget( 'Actions_Actions', 'Actions_SubmenuPageTitles', 'Actions', 'getPageTitles');
Piwik_AddWidget( 'Actions_Actions', 'Actions_SubmenuOutlinks', 'Actions', 'getOutlinks');
@@ -73,6 +86,8 @@ class Piwik_Actions extends Piwik_Plugin
function addMenus()
{
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPages', array('module' => 'Actions', 'action' => 'getPageUrls'));
+ Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'getEntryPageUrls'));
+ Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'getExitPageUrls'));
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'getPageTitles'));
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuOutlinks', array('module' => 'Actions', 'action' => 'getOutlinks'));
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuDownloads', array('module' => 'Actions', 'action' => 'getDownloads'));
@@ -113,6 +128,7 @@ class Piwik_Actions extends Piwik_Plugin
public function archiveDay( $notification )
{
//TODO Actions should use integer based keys like other archive in piwik
+ /* @var $archiveProcessing Piwik_ArchiveProcessing */
$archiveProcessing = $notification->getNotificationObject();
$this->actionsTablesByType = array(
@@ -143,11 +159,12 @@ class Piwik_Actions extends Piwik_Plugin
FROM (".$archiveProcessing->logTable." as t1
LEFT JOIN ".$archiveProcessing->logVisitActionTable." as t2 USING (idvisit))
LEFT JOIN ".$archiveProcessing->logActionTable." as t3 ON (t2.idaction_url = t3.idaction)
- WHERE visit_server_date = ?
+ WHERE visit_last_action_time >= ?
+ AND visit_last_action_time <= ?
AND idsite = ?
GROUP BY t3.idaction
ORDER BY nb_hits DESC";
- $query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));
+ $query = $archiveProcessing->db->query($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ));
$modified = $this->updateActionsTableWithRowQuery($query);
/*
@@ -161,11 +178,12 @@ class Piwik_Actions extends Piwik_Plugin
FROM (".$archiveProcessing->logTable." as t1
LEFT JOIN ".$archiveProcessing->logVisitActionTable." as t2 USING (idvisit))
LEFT JOIN ".$archiveProcessing->logActionTable." as t3 ON (t2.idaction_name = t3.idaction)
- WHERE visit_server_date = ?
+ WHERE visit_last_action_time >= ?
+ AND visit_last_action_time <= ?
AND idsite = ?
GROUP BY t3.idaction
ORDER BY nb_hits DESC";
- $query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));
+ $query = $archiveProcessing->db->query($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ));
$modified = $this->updateActionsTableWithRowQuery($query);
/*
@@ -180,11 +198,12 @@ class Piwik_Actions extends Piwik_Plugin
sum(case visit_total_actions when 1 then 1 else 0 end) as entry_bounce_count
FROM ".$archiveProcessing->logTable."
JOIN ".$archiveProcessing->logActionTable." ON (visit_entry_idaction_url = idaction)
- WHERE visit_server_date = ?
+ WHERE visit_last_action_time >= ?
+ AND visit_last_action_time <= ?
AND idsite = ?
GROUP BY visit_entry_idaction_url
";
- $query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));
+ $query = $archiveProcessing->db->query($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ));
$modified = $this->updateActionsTableWithRowQuery($query);
@@ -194,15 +213,15 @@ class Piwik_Actions extends Piwik_Plugin
$query = "SELECT name,
type,
count(distinct visitor_idcookie) as exit_nb_uniq_visitors,
- count(*) as exit_nb_visits,
- sum(case visit_total_actions when 1 then 1 else 0 end) as exit_bounce_count
+ count(*) as exit_nb_visits
FROM ".$archiveProcessing->logTable."
JOIN ".$archiveProcessing->logActionTable." ON (visit_exit_idaction_url = idaction)
- WHERE visit_server_date = ?
+ WHERE visit_last_action_time >= ?
+ AND visit_last_action_time <= ?
AND idsite = ?
GROUP BY visit_exit_idaction_url
";
- $query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));
+ $query = $archiveProcessing->db->query($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ));
$modified = $this->updateActionsTableWithRowQuery($query);
/*
@@ -214,11 +233,12 @@ class Piwik_Actions extends Piwik_Plugin
FROM (".$archiveProcessing->logTable." log_visit
JOIN ".$archiveProcessing->logVisitActionTable." log_link_visit_action USING (idvisit))
JOIN ".$archiveProcessing->logActionTable." log_action ON (log_action.idaction = log_link_visit_action.idaction_url_ref)
- WHERE visit_server_date = ?
+ WHERE visit_last_action_time >= ?
+ AND visit_last_action_time <= ?
AND idsite = ?
GROUP BY idaction_url_ref
";
- $query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));
+ $query = $archiveProcessing->db->query($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ));
$modified = $this->updateActionsTableWithRowQuery($query);
$this->archiveDayRecordInDatabase($archiveProcessing);
}
@@ -320,12 +340,21 @@ class Piwik_Actions extends Piwik_Plugin
}
}
- if(empty(self::$actionCategoryDelimiter))
+ if($type == Piwik_Tracker_Action::TYPE_ACTION_NAME)
+ {
+ $categoryDelimiter = self::$actionTitleCategoryDelimiter;
+ }
+ else
+ {
+ $categoryDelimiter = self::$actionUrlCategoryDelimiter;
+ }
+
+ if(empty($categoryDelimiter))
{
return array( trim($name) );
}
- $split = explode(self::$actionCategoryDelimiter, $name, self::$limitLevelSubCategory);
+ $split = explode($categoryDelimiter, $name, self::$limitLevelSubCategory);
// trim every category and remove empty categories
$split = array_map('trim', $split);
@@ -349,9 +378,14 @@ class Piwik_Actions extends Piwik_Plugin
$rowsProcessed = 0;
while( $row = $query->fetch() )
{
+ // in some unknown case, the type field is NULL, as reported in #1082 - we ignore this page view
+ if(empty($row['type'])) {
+ continue;
+ }
+
$actionExplodedNames = $this->getActionExplodedNames($row['name'], $row['type']);
- // we work on the root table of the given TYPE (either ACTION or DOWNLOAD or OUTLINK etc.)
+ // we work on the root table of the given TYPE (either ACTION_URL or DOWNLOAD or OUTLINK etc.)
$currentTable =& $this->actionsTablesByType[$row['type']];
// go to the level of the subcategory
@@ -370,7 +404,7 @@ class Piwik_Actions extends Piwik_Plugin
{
$actionName = '/' . $actionName;
}
- else if( $row['type'] == Piwik_Tracker_Action::TYPE_ACTION_NAME )
+ else
{
$actionName = ' ' . $actionName;
}
@@ -397,6 +431,14 @@ class Piwik_Actions extends Piwik_Plugin
}
}
+ // For pages that bounce, we don't know the time on page.
+ if($row['type'] == Piwik_Tracker_Action::TYPE_ACTION_URL
+ && isset($row['nb_visits'])
+ && !isset($row['sum_time_spent']))
+ {
+ $row['sum_time_spent'] = Zend_Registry::get('config')->Tracker->default_time_one_page_visit * $row['nb_visits'];
+ }
+
foreach($row as $name => $value)
{
// we don't add this information as itnot pertinent