X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fapi.php;h=edbc2cdac0b97d3cc4b61b53cbd402987b449b33;hb=911075226546c6b058eca1e0b889097f79fa6232;hp=0df1ae88538ae80a6077c38f235c7324297c9eeb;hpb=b1ae686ea4a3259ce490e63a03a33450fa1532ef;p=platal.git diff --git a/modules/api.php b/modules/api.php index 0df1ae8..edbc2cd 100644 --- a/modules/api.php +++ b/modules/api.php @@ -26,7 +26,7 @@ class ApiModule extends PlModule return array( // TODO(vzanotti): Extend the plat/al engine to support placeholders // in handler urls, for instance "api/1/user/%forlife/isRegistered". - 'api/1/user' => $this->make_api_hook('user', AUTH_COOKIE, 'api_user_readonly'), + 'api/1/user' => $this->make_api_hook('user', AUTH_COOKIE, 'api_user_readonly'), 'api/1/search' => $this->make_api_hook('search', AUTH_COOKIE), ); } @@ -56,12 +56,30 @@ class ApiModule extends PlModule $page->trigError('Malformed search query'); return PL_BAD_REQUEST; } - if (strlen(trim($payload['quick'])) < 3) { + + $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', $payload['quick']); + + Env::set('quick', $query); foreach (array('with_soundex', 'exact') as $key) { if (isset($payload[$key])) { Env::set($key, $payload[$key]);