public static getIdSitesFromIdSitesString ( string | array $ids, boolean | string $_restrictSitesToLogin = false ) : array | ||
$ids | string | array | Comma separated idSite list, eg, `'1,2,3,4'` or an array of IDs, eg, `array(1, 2, 3, 4)`. |
$_restrictSitesToLogin | boolean | string | Implementation detail. Used only when running as a scheduled task. |
return | array | An array of valid, unique integers. |
public static function getIdSitesFromIdSitesString($ids, $_restrictSitesToLogin = false)
{
if ($ids === 'all') {
return API::getInstance()->getSitesIdWithAtLeastViewAccess($_restrictSitesToLogin);
}
if (is_bool($ids)) {
return array();
}
if (!is_array($ids)) {
$ids = explode(',', $ids);
}
$validIds = array();
foreach ($ids as $id) {
$id = trim($id);
if (!empty($id) && is_numeric($id) && $id > 0) {
$validIds[] = $id;
}
}
$validIds = array_filter($validIds);
$validIds = array_unique($validIds);
return $validIds;
}
/** * Return the number of visitors that visited every site in the given list for the * given date range. Includes the number of visitors that visited at least one site * and the number that visited every site. * * This data is calculated on demand, and for very large tables can take a long time * to run. * * See {@link Model\DistinctMetricsAggregator} for more information. * * @param string $idSite comma separated list of site IDs, ie, `"1,2,3"` * @param string $period * @param string $date * @return array Metrics **nb_total_visitors** and **nb_shared_visitors**. * @throws Exception if $idSite references zero sites or just one site. */ public function getCommonVisitors($idSite, $period, $date, $segment = false) { if (empty($idSite)) { throw new Exception("No sites to get common visitors for."); } $idSites = Site::getIdSitesFromIdSitesString($idSite); Piwik::checkUserHasViewAccess($idSites); $segment = new Segment($segment, $idSites); $period = PeriodFactory::build($period, $date); return $this->distinctMetricsAggregator->getCommonVisitorCount($idSites, $period->getDateStart(), $period->getDateEnd(), $segment); }