X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FAutocomplete%2Fautocomplete.php;h=0bb1b783dbc6b9fa51c753d721ca9e9c6c470dc0;hb=0cca861ea7b029cfa8e247e225981158fef831c0;hp=9a30ba01d9c1c0f43d0a3b70a355711beee3f2fd;hpb=6317f7d92bf94f8563a7d9392631d0da06b3042b;p=quix0rs-gnu-social.git diff --git a/plugins/Autocomplete/autocomplete.php b/plugins/Autocomplete/autocomplete.php index 9a30ba01d9..0bb1b783db 100644 --- a/plugins/Autocomplete/autocomplete.php +++ b/plugins/Autocomplete/autocomplete.php @@ -43,7 +43,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @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; @@ -60,7 +59,7 @@ class AutocompleteAction extends Action { $max=0; foreach($this->users as $user){ - $max = max($max,strtotime($user->modified),strtotime($user->profile->modified)); + $max = max($max,strtotime($user->modified),strtotime($user->getProfile()->modified)); } foreach($this->groups as $group){ $max = max($max,strtotime($group->modified)); @@ -80,6 +79,7 @@ class AutocompleteAction extends Action 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())) . '"'; @@ -87,7 +87,16 @@ class AutocompleteAction extends Action function prepare($args) { + // If we die, show short error messages. + StatusNet::setApi(true); + parent::prepare($args); + + $cur = common_current_user(); + if (!$cur) { + // TRANS: Client exception in autocomplete plugin. + throw new ClientException(_m('Access forbidden.'), true); + } $this->groups=array(); $this->users=array(); $q = $this->arg('q'); @@ -126,13 +135,47 @@ class AutocompleteAction extends Action $results = array(); foreach($this->users as $user){ $profile = $user->getProfile(); - $results[]=array('nickname' => $user->nickname, 'fullname'=> $profile->fullname, 'type'=>'user'); + $avatar = $profile->getAvatar(AVATAR_MINI_SIZE); + // sigh.... encapsulate this upstream! + if ($avatar) { + $avatar = $avatar->displayUrl(); + } else { + $avatar = Avatar::defaultImage(AVATAR_MINI_SIZE); + } + $results[] = array( + 'nickname' => $user->nickname, + 'fullname'=> $profile->fullname, + 'avatar' => $avatar, + 'type' => 'user' + ); } foreach($this->groups as $group){ - $results[]=array('nickname' => $group->nickname, 'fullname'=> $group->fullname, 'type'=>'group'); + // sigh.... encapsulate this upstream! + if ($group->mini_logo) { + $avatar = $group->mini_logo; + } else { + $avatar = User_group::defaultLogo(AVATAR_MINI_SIZE); + } + $results[] = array( + 'nickname' => $group->nickname, + 'fullname'=> $group->fullname, + 'avatar' => $avatar, + 'type' => 'group'); } foreach($results as $result) { print json_encode($result) . "\n"; } } + + /** + * Is this action read-only? + * + * @param array $args other arguments + * + * @return boolean is read only action? + */ + function isReadOnly($args) + { + return true; + } }