update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
296343bf3b
commit
d885a4baa9
5833 changed files with 418860 additions and 226988 deletions
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugin\Dimension;
|
||||
|
||||
/**
|
||||
* Provides metadata about dimensions for the LogDataPurger class.
|
||||
*/
|
||||
class DimensionMetadataProvider
|
||||
{
|
||||
/**
|
||||
* Overrids for the result of the getActionReferenceColumnsByTable() method. Exists so Piwik
|
||||
* instances can be monkey patched, in case there are idaction columns that this class does not
|
||||
* naturally discover.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $actionReferenceColumnsOverride;
|
||||
|
||||
public function __construct(array $actionReferenceColumnsOverride = array())
|
||||
{
|
||||
$this->actionReferenceColumnsOverride = $actionReferenceColumnsOverride;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of idaction column names organized by table name. Uses dimension metadata
|
||||
* to find idaction columns dynamically.
|
||||
*
|
||||
* Note: It is not currently possible to use the Piwik platform to add idaction columns to tables
|
||||
* other than log_link_visit_action (w/o doing something unsupported), so idaction columns in
|
||||
* other tables are hard coded.
|
||||
*
|
||||
* @return array[]
|
||||
*/
|
||||
public function getActionReferenceColumnsByTable()
|
||||
{
|
||||
$result = array(
|
||||
'log_link_visit_action' => array('idaction_url',
|
||||
'idaction_url_ref',
|
||||
'idaction_name_ref'
|
||||
),
|
||||
|
||||
'log_conversion' => array('idaction_url'),
|
||||
|
||||
'log_visit' => array('visit_exit_idaction_url',
|
||||
'visit_exit_idaction_name',
|
||||
'visit_entry_idaction_url',
|
||||
'visit_entry_idaction_name'),
|
||||
|
||||
'log_conversion_item' => array('idaction_sku',
|
||||
'idaction_name',
|
||||
'idaction_category',
|
||||
'idaction_category2',
|
||||
'idaction_category3',
|
||||
'idaction_category4',
|
||||
'idaction_category5')
|
||||
);
|
||||
|
||||
$dimensionIdActionColumns = $this->getVisitActionTableActionReferences();
|
||||
$result['log_link_visit_action'] = array_unique(
|
||||
array_merge($result['log_link_visit_action'], $dimensionIdActionColumns));
|
||||
|
||||
foreach ($this->actionReferenceColumnsOverride as $table => $columns) {
|
||||
if (empty($result[$table])) {
|
||||
$result[$table] = $columns;
|
||||
} else {
|
||||
$result[$table] = array_unique(array_merge($result[$table], $columns));
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function getVisitActionTableActionReferences()
|
||||
{
|
||||
$idactionColumns = array();
|
||||
foreach (ActionDimension::getAllDimensions() as $actionDimension) {
|
||||
if ($this->isActionReference($actionDimension)) {
|
||||
$idactionColumns[] = $actionDimension->getColumnName();
|
||||
}
|
||||
}
|
||||
return $idactionColumns;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns `true` if the column for this dimension is a reference to the `log_action` table (ie, an "idaction column"),
|
||||
* `false` if otherwise.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function isActionReference(ActionDimension $dimension)
|
||||
{
|
||||
try {
|
||||
$dimension->getActionId();
|
||||
|
||||
return true;
|
||||
} catch (\Exception $ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue