Piwik\Plugins\Referrers\API::getReferrerType PHP Method

getReferrerType() public method

The subtable reports are: 'getKeywords' (for search engine referrer type), 'getWebsites', and 'getCampaigns'.
public getReferrerType ( string $idSite, string $period, string $date, boolean | string $segment = false, boolean | integer $typeReferrer = false, boolean | integer $idSubtable = false, boolean $expanded = false ) : DataTable
$idSite string The site ID.
$period string The period to get data for, either 'day', 'week', 'month', 'year', or 'range'.
$date string The date of the period.
$segment boolean | string The segment to use.
$typeReferrer boolean | integer (deprecated) If you want to get data only for a specific referrer type, supply a type for this parameter.
$idSubtable boolean | integer For this report this value is a referrer type ID and not an actual subtable ID. The result when using this parameter will be the specific report for the given referrer type.
$expanded boolean Whether to get report w/ subtables loaded or not.
return Piwik\DataTable
    public function getReferrerType($idSite, $period, $date, $segment = false, $typeReferrer = false, $idSubtable = false, $expanded = false)
    {
        // if idSubtable is supplied, interpret idSubtable as referrer type and return correct report
        if ($idSubtable !== false) {
            $result = false;
            switch ($idSubtable) {
                case Common::REFERRER_TYPE_SEARCH_ENGINE:
                    $result = $this->getKeywords($idSite, $period, $date, $segment);
                    break;
                case Common::REFERRER_TYPE_WEBSITE:
                    $result = $this->getWebsites($idSite, $period, $date, $segment);
                    break;
                case Common::REFERRER_TYPE_CAMPAIGN:
                    $result = $this->getCampaigns($idSite, $period, $date, $segment);
                    break;
                default:
                    // invalid idSubtable, return whole report
                    break;
            }
            if ($result) {
                $result->filter('ColumnCallbackDeleteMetadata', array('segment'));
                $result->filter('ColumnCallbackDeleteMetadata', array('segmentValue'));
                return $this->removeSubtableIds($result);
                // this report won't return subtables of individual reports
            }
        }
        // get visits by referrer type
        $dataTable = $this->getDataTable(Archiver::REFERRER_TYPE_RECORD_NAME, $idSite, $period, $date, $segment);
        if ($typeReferrer !== false) {
            $dataTable->filter('Pattern', array('label', $typeReferrer));
        }
        // set subtable IDs for each row to the label (which holds the int referrer type)
        $dataTable->filter('Piwik\\Plugins\\Referrers\\DataTable\\Filter\\SetGetReferrerTypeSubtables', array($idSite, $period, $date, $segment, $expanded));
        $dataTable->filter('AddSegmentByLabelMapping', array('referrerType', array(Common::REFERRER_TYPE_DIRECT_ENTRY => 'direct', Common::REFERRER_TYPE_CAMPAIGN => 'campaign', Common::REFERRER_TYPE_SEARCH_ENGINE => 'search', Common::REFERRER_TYPE_WEBSITE => 'website')));
        // set referrer type column to readable value
        $dataTable->queueFilter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\\getReferrerTypeLabel'));
        return $dataTable;
    }