* @package StatusNet
* @author Craig Andrews <candrews@integralblue.com>
* @copyright 2008-2009 StatusNet, Inc.
+ * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
* @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 etag()
{
return '"' . implode(':', array($this->arg('action'),
+ common_user_cache_hash(),
crc32($this->arg('q')), //the actual string can have funny characters in we don't want showing up in the etag
$this->arg('limit'),
$this->lastModified())) . '"';
$user = new User();
$user->limit($limit);
$user->whereAdd('nickname like \'' . trim($user->escape($q), '\'') . '%\'');
- $user->find();
- while($user->fetch()) {
- $profile = Profile::staticGet($user->id);
- $user->profile=$profile;
- $this->users[]=$user;
+ if($user->find()){
+ while($user->fetch()) {
+ $this->users[]=clone($user);
+ }
}
}
if(substr($q,0,1)=='!'){
$group = new User_group();
$group->limit($limit);
$group->whereAdd('nickname like \'' . trim($group->escape($q), '\'') . '%\'');
- $group->find();
- while($group->fetch()) {
- $this->groups[]=$group;
+ if($group->find()){
+ while($group->fetch()) {
+ $this->groups[]=clone($group);
+ }
}
}
return true;
parent::handle($args);
$results = array();
foreach($this->users as $user){
- $results[]=array('nickname' => $user->nickname, 'fullname'=> $user->profile->fullname, 'type'=>'user');
+ $profile = $user->getProfile();
+ $results[]=array('nickname' => $user->nickname, 'fullname'=> $profile->fullname, 'type'=>'user');
}
foreach($this->groups as $group){
$results[]=array('nickname' => $group->nickname, 'fullname'=> $group->fullname, 'type'=>'group');