+ if (!is_null($pids)) {
+ $where = XDB::format(' AND pa.pid IN {?}', $pids);
+ } else {
+ $where = '';
+ }
+
+ if (!S::logged() || !S::user()->checkPerms('directory_ax')) {
+ $where .= " AND pa.pub = 'public'";
+ $name_publicity = 'public';
+ } else if (!S::user()->checkPerms('directory_private')) {
+ $where .= " AND pa.pub = 'ax'";
+ $name_publicity = 'public';
+ } else {
+ $name_publicity = 'private';
+ }
+
+ $data = XDB::rawFetchAllAssoc('SELECT pa.latitude, pa.longitude, GROUP_CONCAT(DISTINCT p.hrpid SEPARATOR \',\') AS hrpid,
+ GROUP_CONCAT(pd.promo SEPARATOR \',\') AS promo,
+ GROUP_CONCAT(DISTINCT pd.' . $name_publicity . '_name, \' (\', pd.promo, \')\' SEPARATOR \', \') AS name,
+ GROUP_CONCAT(DISTINCT pa.pid SEPARATOR \',\') AS pid
+ FROM profile_addresses AS pa
+ INNER JOIN profiles AS p ON (pa.pid = p.pid)
+ INNER JOIN profile_display AS pd ON (pd.pid = pa.pid)
+ WHERE pa.type = \'home\' AND p.deathdate IS NULL AND pa.latitude IS NOT NULL AND pa.longitude IS NOT NULL' . $where . '
+ GROUP BY pa.latitude, pa.longitude');