. * * @category Plugin * @package StatusNet * @author Craig Andrews * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } /** * List users for autocompletion * * This is the form for adding a new g * * @category Plugin * @package StatusNet * @author Craig Andrews * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ class AutocompleteAction extends Action { private $result; function prepare($args) { parent::prepare($args); $this->results = array(); $q = $this->arg('q'); $limit = $this->arg('limit'); if($limit > 200) $limit=200; //prevent DOS attacks if(substr($q,0,1)=='@'){ //user search $q=substr($q,1); $user = new User(); $user->limit($limit); $user->whereAdd('nickname like \'' . trim($user->escape($q), '\'') . '%\''); $user->find(); while($user->fetch()) { $profile = Profile::staticGet($user->id); $this->results[]=array('nickname' => $user->nickname, 'fullname'=> $profile->fullname, 'type'=>'user'); } } if(substr($q,0,1)=='!'){ //group search $q=substr($q,1); $group = new User_group(); $group->limit($limit); $group->whereAdd('nickname like \'' . trim($group->escape($q), '\'') . '%\''); $group->find(); while($group->fetch()) { $this->results[]=array('nickname' => $group->nickname, 'fullname'=> $group->fullname, 'type'=>'group'); } } return true; } function handle($args) { parent::handle($args); foreach($this->results as $result) { print json_encode($result) . "\n"; } } }