Piwik\Plugins\UserCountry\API::getCity PHP Method

getCity() public method

Returns visit information for every city with at least one visit.
public getCity ( integer | string $idSite, string $period, string $date, string | boolean $segment = false ) : DataTable
$idSite integer | string
$period string
$date string
$segment string | boolean
return Piwik\DataTable
    public function getCity($idSite, $period, $date, $segment = false)
    {
        $dataTable = $this->getDataTable(Archiver::CITY_RECORD_NAME, $idSite, $period, $date, $segment);
        $segments = array('city', 'regionCode', 'countryCode');
        $dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR));
        $separator = Archiver::LOCATION_SEPARATOR;
        $unk = Visit::UNKNOWN_CODE;
        // split the label and put the elements into the 'city_name', 'region', 'country',
        // 'lat' & 'long' metadata fields
        $strUnknown = Piwik::translate('General_Unknown');
        $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'city_name', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 0, $strUnknown)));
        $dataTable->filter('MetadataCallbackAddMetadata', array('city_name', 'city', function ($city) use($strUnknown) {
            if ($city == $strUnknown) {
                return "xx";
            } else {
                return false;
            }
        }));
        $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'region', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 1, $unk)));
        $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'country', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 2, $unk)));
        // backwards compatibility: for reports that have lat|long in label
        $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'lat', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 3, false)));
        $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'long', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 4, false)));
        // add country name & region name metadata
        $dataTable->filter('MetadataCallbackAddMetadata', array('country', 'country_name', __NAMESPACE__ . '\\countryTranslate', $applyToSummaryRow = false));
        $getRegionName = '\\Piwik\\Plugins\\UserCountry\\LocationProvider\\GeoIp::getRegionNameFromCodes';
        $dataTable->filter('MetadataCallbackAddMetadata', array(array('country', 'region'), 'region_name', $getRegionName, $applyToSummaryRow = false));
        // add the country flag as a url to the 'logo' metadata field
        $dataTable->filter('MetadataCallbackAddMetadata', array('country', 'logo', __NAMESPACE__ . '\\getFlagFromCode'));
        // prettify the label
        $dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\\getPrettyCityName'));
        $dataTable->queueFilter('ReplaceSummaryRowLabel');
        return $dataTable;
    }