Skip to content
Extraits de code Groupes Projets
API.php 3,83 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
    
     * @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;
    
    sgiehl's avatar
    sgiehl a validé
        /**
    
         * @return Piwik_CustomVariables_API
         */
        static public function getInstance()
        {
            if (self::$instance == null) {
                self::$instance = new self;
            }
            return self::$instance;
        }
    
        /**
         * @param int $idSite
         * @param string $period
    
    sgiehl's avatar
    sgiehl a validé
         * @param Piwik_Date $date
    
         * @param string $segment
         * @param bool $expanded
         * @param int $idSubtable
    
    sgiehl's avatar
    sgiehl a validé
         *
         * @return Piwik_DataTable|Piwik_DataTable_Array
         */
    
        protected function getDataTable($idSite, $period, $date, $segment, $expanded, $idSubtable)
        {
    
            $dataTable = Piwik_Archive::getDataTableFromArchive(Piwik_CustomVariables_Archiver::CUSTOM_VARIABLE_RECORD_NAME, $idSite, $period, $date, $segment, $expanded, $idSubtable);
    
            $dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_ACTIONS, 'desc', $naturalSort = false, $expanded));
    
            $dataTable->queueFilter('ReplaceColumnNames');
    
            $dataTable->queueFilter('ColumnDelete', 'nb_uniq_visitors');
    
    sgiehl's avatar
    sgiehl a validé
        /**
    
         * @param int $idSite
         * @param string $period
         * @param Piwik_Date $date
         * @param string|bool $segment
         * @param bool $expanded
         * @param bool $_leavePiwikCoreVariables
    
    sgiehl's avatar
    sgiehl a validé
         *
         * @return Piwik_DataTable|Piwik_DataTable_Array
         */
    
        public function getCustomVariables($idSite, $period, $date, $segment = false, $expanded = false, $_leavePiwikCoreVariables = false)
        {
            $dataTable = $this->getDataTable($idSite, $period, $date, $segment, $expanded, $idSubtable = null);
    
            if ($dataTable instanceof Piwik_DataTable
                && !$_leavePiwikCoreVariables
            ) {
    
                $mapping = self::getReservedCustomVariableKeys();
    
                foreach ($mapping as $name) {
                    $row = $dataTable->getRowFromLabel($name);
                    if ($row) {
                        $dataTable->deleteRow($dataTable->getRowIdFromLabel($name));
                    }
                }
            }
            return $dataTable;
        }
    
        /**
         * @ignore
         * @return array
         */
        public static function getReservedCustomVariableKeys()
        {
            return array('_pks', '_pkn', '_pkc', '_pkp', Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT, Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY);
        }
    
    
    sgiehl's avatar
    sgiehl a validé
        /**
    
         * @param int $idSite
         * @param string $period
         * @param Piwik_Date $date
         * @param int $idSubtable
         * @param string|bool $segment
         * @param bool $_leavePriceViewedColumn
    
    sgiehl's avatar
    sgiehl a validé
         *
         * @return Piwik_DataTable|Piwik_DataTable_Array
         */
    
        public function getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment = false, $_leavePriceViewedColumn = false)
        {
            $dataTable = $this->getDataTable($idSite, $period, $date, $segment, $expanded = false, $idSubtable);
    
            if (!$_leavePriceViewedColumn) {
                $dataTable->deleteColumn('price_viewed');
            } else {
                // Hack Ecommerce product price tracking to display correctly
                $dataTable->renameColumn('price_viewed', 'price');
            }
            $dataTable->queueFilter('ColumnCallbackReplace', array('label', create_function('$label', '
    
    			return $label == Piwik_CustomVariables_Archiver::LABEL_CUSTOM_VALUE_NOT_DEFINED
    
    				? "' . Piwik_Translate('General_NotDefined', Piwik_Translate('CustomVariables_ColumnCustomVariableValue')) . '"
    
    robocoder's avatar
    robocoder a validé
    				: $label;')));