class PeopletagautocompleteAction extends Action
{
var $user;
+ var $tags;
+ var $last_mod;
/**
* Check pre-requisites and instantiate attributes
*
* @return boolean success flag
*/
-
function prepare($args)
{
parent::prepare($args);
$this->user = common_current_user();
if (empty($this->user)) {
+ // TRANS: Error message displayed when trying to perform an action that requires a logged in user.
$this->clientError(_('Not logged in.'));
return false;
}
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
+ // TRANS: Client error displayed when the session token does not match or is not given.
$this->clientError(_('There was a problem with your session token.'.
' Try again, please.'));
return false;
}
+ $profile = $this->user->getProfile();
+ $tags = $profile->getLists(common_current_user());
+
+ $this->tags = array();
+ while ($tags->fetch()) {
+
+ if (empty($this->last_mod)) {
+ $this->last_mod = $tags->modified;
+ }
+
+ $arr = array();
+ $arr['tag'] = $tags->tag;
+ $arr['mode'] = $tags->private ? 'private' : 'public';
+ // $arr['url'] = $tags->homeUrl();
+ $arr['freq'] = $tags->taggedCount();
+
+ $this->tags[] = $arr;
+ }
+
+ $tags = NULL;
+
return true;
}
+ /**
+ * Last modified time
+ *
+ * Helps in browser-caching
+ *
+ * @return String time
+ */
+ function lastModified()
+ {
+ return strtotime($this->last_mod);
+ }
+
/**
* Handle request
*
- * Does the subscription and returns results.
+ * Print the JSON autocomplete data
*
* @param Array $args unused.
*
* @return void
*/
-
function handle($args)
{
- $profile = $this->user->getProfile();
- $tags = $profile->getOwnedTags(common_current_user());
-
- $tags_array = array();
- while ($tags->fetch()) {
- $arr = array();
- $arr['tag'] = $tags->tag;
- $arr['mode'] = $tags->private ? 'private' : 'public';
- // $arr['url'] = $tags->homeUrl();
- $arr['freq'] = $tags->taggedCount();
-
- $tags_array[] = $arr;
+ //common_log(LOG_DEBUG, 'Autocomplete data: ' . json_encode($this->tags));
+ if ($this->tags) {
+ print(json_encode($this->tags));
+ exit(0);
}
-
- $tags->free();
-
- //common_log(LOG_DEBUG, 'Autocomplete data: ' . json_encode($tags_array));
- print(json_encode($tags_array));
- exit(0);
+ return false;
}
}