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 'core/Tracker/Action.php')
-rw-r--r--core/Tracker/Action.php51
1 files changed, 49 insertions, 2 deletions
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index f7a9445058..e2641f35f1 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -65,6 +65,8 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
private $actionType;
private $actionUrl;
+ static private $queryParametersToExclude = array('phpsessid', 'jsessionid', 'sessionid', 'aspsessionid');
+
public function setRequest($requestArray)
{
$this->request = $requestArray;
@@ -117,17 +119,54 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
protected function setActionName($name)
{
+ $name = $this->truncate($name);
$this->actionName = $name;
}
+
protected function setActionType($type)
{
$this->actionType = $type;
}
+
protected function setActionUrl($url)
{
+ $url = self::excludeQueryParametersFromUrl($url, $this->idSite);
+ $url = $this->truncate($url);
$this->actionUrl = $url;
}
+ static public function excludeQueryParametersFromUrl($originalUrl, $idSite)
+ {
+ $website = Piwik_Common::getCacheWebsiteAttributes( $idSite );
+ $originalUrl = Piwik_Common::unsanitizeInputValue($originalUrl);
+ $parsedUrl = @parse_url($originalUrl);
+ if(empty($parsedUrl['query']))
+ {
+ return $originalUrl;
+ }
+ $excludedParameters = isset($website['excluded_parameters']) ? $website['excluded_parameters'] : array();
+ $parametersToExclude = array_merge($excludedParameters, self::$queryParametersToExclude);
+
+ $parametersToExclude = array_map('strtolower', $parametersToExclude);
+ $queryParameters = Piwik_Common::getArrayFromQueryString($parsedUrl['query']);
+
+ $validQuery = '';
+ $separator = '&';
+ foreach($queryParameters as $name => $value)
+ {
+ if(!in_array(strtolower($name), $parametersToExclude))
+ {
+ $validQuery .= $name.'='.$value.$separator;
+ }
+ }
+ $parsedUrl['query'] = substr($validQuery,0,-strlen($separator));
+ $url = Piwik_Common::getParseUrlReverse($parsedUrl);
+ printDebug('Excluded parameters "'.implode(',',$excludedParameters).'" from URL.
+ Before was <br/><code>"'.$originalUrl.'"</code>, <br/>
+ After is <br/><code>"'.$url.'"</code>');
+ return $url;
+ }
+
public function init()
{
$info = $this->extractUrlAndActionNameFromRequest();
@@ -136,6 +175,12 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
$this->setActionUrl($info['url']);
}
+ protected function truncate( $label )
+ {
+ $limit = Piwik_Tracker_Config::getInstance()->Tracker['page_maximum_length'];
+ return substr($label, 0, $limit);
+ }
+
/**
* Loads the idaction of the current action name and the current action url.
* These idactions are used in the visitor logging table to link the visit information
@@ -288,8 +333,10 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
$actionType = self::TYPE_ACTION_URL;
$url = Piwik_Common::getRequestVar( 'url', '', 'string', $this->request);
- // get the delimiter, by default '/'
- $actionCategoryDelimiter = Piwik_Tracker_Config::getInstance()->General['action_category_delimiter'];
+ // get the delimiter, by default '/'; BC, we read the old action_category_delimiter first (see #1067)
+ $actionCategoryDelimiter = isset(Piwik_Tracker_Config::getInstance()->General['action_category_delimiter'])
+ ? Piwik_Tracker_Config::getInstance()->General['action_category_delimiter']
+ : Piwik_Tracker_Config::getInstance()->General['action_url_category_delimiter'];
// create an array of the categories delimited by the delimiter
$split = explode($actionCategoryDelimiter, $actionName);