Merge pull request #1114 from annando/1409-api-search-users

API: The command "users/search" is now supported.
This commit is contained in:
fabrixxm 2014-09-07 07:40:44 +02:00
commit e41005ce6e
3 changed files with 42 additions and 6 deletions

View file

@ -12,7 +12,7 @@ Deny from all
# Protect repository directory from browsing # Protect repository directory from browsing
RewriteRule "(^|/)\.git" - [F] RewriteRule "(^|/)\.git" - [F]
# Rewrite current-style URLs of the form 'index.php?q=x'. # Rewrite current-style URLs of the form 'index.php?pagename=x'.
# Also place auth information into REMOTE_USER for sites running # Also place auth information into REMOTE_USER for sites running
# in CGI mode. # in CGI mode.
@ -28,7 +28,7 @@ Deny from all
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] RewriteRule ^(.*)$ index.php?pagename=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule> </IfModule>

View file

@ -507,13 +507,20 @@ if(! class_exists('App')) {
set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path()); set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path());
if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") { if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,9) === "pagename=") {
$this->query_string = substr($_SERVER['QUERY_STRING'],9);
// removing trailing / - maybe a nginx problem
if (substr($this->query_string, 0, 1) == "/")
$this->query_string = substr($this->query_string, 1);
} elseif((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") {
$this->query_string = substr($_SERVER['QUERY_STRING'],2); $this->query_string = substr($_SERVER['QUERY_STRING'],2);
// removing trailing / - maybe a nginx problem // removing trailing / - maybe a nginx problem
if (substr($this->query_string, 0, 1) == "/") if (substr($this->query_string, 0, 1) == "/")
$this->query_string = substr($this->query_string, 1); $this->query_string = substr($this->query_string, 1);
} }
if(x($_GET,'q')) if (x($_GET,'pagename'))
$this->cmd = trim($_GET['pagename'],'/\\');
elseif (x($_GET,'q'))
$this->cmd = trim($_GET['q'],'/\\'); $this->cmd = trim($_GET['q'],'/\\');
// unix style "homedir" // unix style "homedir"
@ -1019,7 +1026,8 @@ if(! function_exists('update_db')) {
$t = get_config('database','dbupdate_'.DB_UPDATE_VERSION); $t = get_config('database','dbupdate_'.DB_UPDATE_VERSION);
if($t !== false) if($t !== false)
break; return;
set_config('database','dbupdate_'.DB_UPDATE_VERSION, time()); set_config('database','dbupdate_'.DB_UPDATE_VERSION, time());
require_once("include/dbstructure.php"); require_once("include/dbstructure.php");

View file

@ -122,7 +122,6 @@
// preset // preset
$type="json"; $type="json";
foreach ($API as $p=>$info){ foreach ($API as $p=>$info){
if (strpos($a->query_string, $p)===0){ if (strpos($a->query_string, $p)===0){
$called_api= explode("/",$p); $called_api= explode("/",$p);
@ -936,6 +935,35 @@
} }
api_register_func('api/users/show','api_users_show'); api_register_func('api/users/show','api_users_show');
function api_users_search(&$a, $type) {
$page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
$userlist = array();
if (isset($_GET["q"])) {
$r = q("SELECT id FROM unique_contacts WHERE name='%s'", dbesc($_GET["q"]));
if (!count($r))
$r = q("SELECT id FROM unique_contacts WHERE nick='%s'", dbesc($_GET["q"]));
if (count($r)) {
foreach ($r AS $user) {
$user_info = api_get_user($a, $user["id"]);
//echo print_r($user_info, true)."\n";
$userdata = api_apply_template("user", $type, array('user' => $user_info));
$userlist[] = $userdata["user"];
}
$userlist = array("users" => $userlist);
} else
die(api_error($a, $type, t("User not found.")));
} else
die(api_error($a, $type, t("User not found.")));
return ($userlist);
}
api_register_func('api/users/search','api_users_search');
/** /**
* *
* http://developer.twitter.com/doc/get/statuses/home_timeline * http://developer.twitter.com/doc/get/statuses/home_timeline