public static function assign_json_to_map(PlPage $page, $pids = null) { 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'); $page->jsonAssign('data', $data); }
function handler_bulkmail(PlPage $page, PlUser $authUser, $payload) { require_once 'partnersharing.inc.php'; $partner = PartnerSharing::fetchByAPIUser($authUser); if ($partner == null || !$partner->has_bulkmail) { return PL_FORBIDDEN; } if (!isset($payload['uids'])) { $page->trigError('Malformed query.'); return PL_BAD_REQUEST; } $uids = $payload['uids']; $pf = new UserFilter(new PFC_And(new UFC_PartnerSharingID($partner->id, $uids), new UFC_HasValidEmail(), new UFC_PartnerSharingEmail($partner->id))); $contexts = array(); foreach ($pf->iterUsers() as $user) { $contexts[] = array('name' => $user->fullName(), 'email' => $user->bestEmail(), 'gender' => $user->isFemale() ? 'woman' : 'man'); } $page->jsonAssign('contexts', $contexts); return PL_JSON; }
function handler_search(PlPage $page, PlUser $authUser, $payload, $mode = 'quick') { if (!isset($payload['quick'])) { $page->trigError('Malformed search query'); return PL_BAD_REQUEST; } $query = trim($payload['quick']); if (@$payload['allow_special']) { if (starts_with($query, 'admin:')) { $page->jsonAssign('link_type', 'admin'); $query = substr($query, 6); } else { if (starts_with($query, 'adm:')) { $page->jsonAssign('link_type', 'admin'); $query = substr($query, 4); } else { if (starts_with('admin', $query) || strpos($query, ':') !== false) { $page->jsonAssign('profile_count', -1); $page->jsonAssign('profiles', array()); return PL_JSON; } else { $page->jsonAssign('link_type', 'profile'); } } } } if (strlen($query) < 3) { $page->jsonAssign('profile_count', -1); $page->jsonAssign('profiles', array()); return PL_JSON; } Env::set('quick', $query); foreach (array('with_soundex', 'exact') as $key) { if (isset($payload[$key])) { Env::set($key, $payload[$key]); } } require_once 'userset.inc.php'; $view = new QuickSearchSet(); $view->addMod('json', 'JSon', true, $payload); $view->apply('api/1/search', $page, 'json'); return PL_JSON; }
public function apply(PlPage $page) { $export = array(); $start = isset($this->params['offset']) ? $this->params['offset'] : 0; $count = isset($this->params['count']) ? $this->params['count'] : 10; $profiles = $this->set->get(new PlLimit($start, $count)); foreach ($profiles as $profile) { $export[] = $profile->export(); } $page->jsonAssign('profile_count', $this->set->count()); $page->jsonAssign('profiles', $export); }
public function assignToPage(PlPage $page) { $response = $this->get(); $page->jsonAssign('matches', $response['matches']); $page->jsonAssign('profiles', $response['profiles']); }