X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fapi.php;h=dd0bf041bdb74dd4061bcfa05a67e680f9219638;hb=d6efb578186f1b0277533516ad5d18fcfe1e7d34;hp=ecdd6457153f089d9db4bacdd70564f2af6412a6;hpb=91f519c919d6f2a2722f4985fe1b5d71082c5620;p=platal.git diff --git a/modules/api.php b/modules/api.php index ecdd645..dd0bf04 100644 --- a/modules/api.php +++ b/modules/api.php @@ -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]); @@ -70,7 +88,7 @@ class ApiModule extends PlModule require_once 'userset.inc.php'; $view = new QuickSearchSet(); - $view->addMod('json', 'JSon', true, array('with_score' => true, 'starts_with' => $byletter)); + $view->addMod('json', 'JSon', true, $payload); $view->apply('api/1/search', $page, 'json'); return PL_JSON; }