Skip to content
Extraits de code Groupes Projets
API.php 2,79 ko
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * Piwik - Open source web analytics
     * 
     * @link http://piwik.org
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
     * @version $Id$
     * 
     * @category Piwik_Plugins
     * @package Piwik_CustomVariables
     */
    
    /**
    
    mattpiwik's avatar
    mattpiwik a validé
     * The Custom Variables API lets you access reports for your <a href='http://piwik.org/docs/custom-variables/' target='_blank'>Custom Variables</a> names and values.
    
     * 
     * @package Piwik_CustomVariables
     */
    class Piwik_CustomVariables_API 
    {
    	static private $instance = null;
    	
    
    mattpiwik's avatar
    mattpiwik a validé
    	/**
    	 * @return Piwik_CustomVariables_API
    	 */
    
    	static public function getInstance()
    	{
    		if (self::$instance == null)
    		{
    			self::$instance = new self;
    		}
    		return self::$instance;
    	}
    
    
    mattpiwik's avatar
    mattpiwik a validé
    	/**
    	 * @return Piwik_DataTable
    	 */
    
    mattpiwik's avatar
    mattpiwik a validé
    	protected function getDataTable($idSite, $period, $date, $segment, $expanded, $idSubtable)
    
    mattpiwik's avatar
    mattpiwik a validé
    	    $dataTable = Piwik_Archive::getDataTableFromArchive('CustomVariables_valueByName', $idSite, $period, $date, $segment, $expanded, $idSubtable);
    
    		$dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_VISITS, 'desc', $naturalSort = false, $expanded));
    
    		$dataTable->queueFilter('ReplaceColumnNames');
    
    	    return $dataTable;
    	}
    
    
    mattpiwik's avatar
    mattpiwik a validé
    	/**
    	 * @return Piwik_DataTable
    	 */
    	public function getCustomVariables($idSite, $period, $date, $segment = false, $expanded = false, $_leavePiwikCoreVariables = false)
    
    mattpiwik's avatar
    mattpiwik a validé
    	    $dataTable = $this->getDataTable($idSite, $period, $date, $segment, $expanded, $idSubtable = null);
    
    mattpiwik's avatar
    mattpiwik a validé
    	    
    	    if($dataTable instanceof Piwik_DataTable
    	    	&& !$_leavePiwikCoreVariables)
    	    {
    	    	$mapping = array(
    	    		'_pks' => Piwik_Translate('Goals_ProductSKU'),
    	    		'_pkn' => Piwik_Translate('Goals_ProductName'),
    	    		'_pkc' => Piwik_Translate('Goals_ProductCategory'),
    
    mattpiwik's avatar
    mattpiwik a validé
    	    		'_pkp' => 'do not display price values in UI'
    
    mattpiwik's avatar
    mattpiwik a validé
    	    	);
    	    	foreach($mapping as $core => $friendly)
    	    	{
    	    		$row = $dataTable->getRowFromLabel($core);
    	    		if($row)
    	    		{
    	    			$row->setColumn('label', $friendly);
    
    mattpiwik's avatar
    mattpiwik a validé
    		    		if($core == '_pkp') 
    		    		{
    		    			$dataTable->deleteRow($dataTable->getRowIdFromLabel($core));
    		    		}
    
    mattpiwik's avatar
    mattpiwik a validé
    	    		}
    	    	}
    	    }
    
    		return $dataTable;
    	}
    
    
    mattpiwik's avatar
    mattpiwik a validé
    	/**
    	 * @return Piwik_DataTable
    	 */
    
    mattpiwik's avatar
    mattpiwik a validé
    	public function getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment = false)
    
    mattpiwik's avatar
    mattpiwik a validé
    	    $dataTable = $this->getDataTable($idSite, $period, $date, $segment, $expanded = false, $idSubtable);
    
    mattpiwik's avatar
    mattpiwik a validé
    	    
    	    // Hack Ecommerce product price tracking to display correctly
    	    $dataTable->renameColumn('price_viewed', 'price');
    
    mattpiwik's avatar
    mattpiwik a validé
        	$dataTable->queueFilter('ColumnCallbackReplace', 
        		array('label', create_function('$label', 'return $label == Piwik_CustomVariables::LABEL_CUSTOM_VALUE_NOT_DEFINED ? "'. Piwik_Translate( 'General_NotDefined', Piwik_Translate('CustomVariables_ColumnCustomVariableValue')) .'" : $label;')));
    	    
    
    		return $dataTable;
    	}
    }