if (!defined('LACONICA')) { exit(1); }
-require_once(INSTALLDIR.'/lib/profilelist.php');
+require_once INSTALLDIR.'/lib/profilelist.php';
-class PeopletagAction extends Action {
-
- function handle($args) {
+class PeopletagAction extends Action
+{
+
+ var $tag = null;
+ var $page = null;
+
+ function handle($args)
+ {
+ parent::handle($args);
+
+ parent::prepare($args);
- parent::handle($args);
+ $this->tag = $this->trimmed('tag');
- $tag = $this->trimmed('tag');
-
- if (!common_valid_profile_tag($tag)) {
- $this->client_error(sprintf(_('Not a valid people tag: %s'), $tag));
- return;
- }
+ if (!common_valid_profile_tag($this->tag)) {
+ $this->clientError(sprintf(_('Not a valid people tag: %s'), $this->tag));
+ return;
+ }
- $page = $this->trimmed('page');
-
- if (!$page) {
- $page = 1;
- }
-
- # Looks like we're good; show the header
+ $this->page = $this->trimmed('page');
- common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page),
- NULL, $tag, array($this, 'show_top'));
+ if (!$this->page) {
+ $this->page = 1;
+ }
+
+ $this->showPage();
+ }
+
+ function showContent()
+ {
+
+ $profile = new Profile();
- $this->show_people($tag, $page);
+ $offset = ($page-1)*PROFILES_PER_PAGE;
+ $limit = PROFILES_PER_PAGE + 1;
+
+ if (common_config('db','type') == 'pgsql') {
+ $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
+ } else {
+ $lim = ' LIMIT ' . $offset . ', ' . $limit;
+ }
- common_show_footer();
- }
+ # XXX: memcached this
+
+ $qry = 'SELECT profile.* ' .
+ 'FROM profile JOIN profile_tag ' .
+ 'ON profile.id = profile_tag.tagger ' .
+ 'WHERE profile_tag.tagger = profile_tag.tagged ' .
+ 'AND tag = "%s" ' .
+ 'ORDER BY profile_tag.modified DESC';
+
+ $profile->query(sprintf($qry, $this->tag, $lim));
- function show_people($tag, $page) {
-
- $profile = new Profile();
-
- $offset = ($page-1)*PROFILES_PER_PAGE;
- $limit = PROFILES_PER_PAGE + 1;
-
- if (common_config('db','type') == 'pgsql') {
- $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
- } else {
- $lim = ' LIMIT ' . $offset . ', ' . $limit;
- }
-
- # XXX: memcached this
-
- $profile->query(sprintf('SELECT profile.* ' .
- 'FROM profile JOIN profile_tag ' .
- 'ON profile.id = profile_tag.tagger ' .
- 'WHERE profile_tag.tagger = profile_tag.tagged ' .
- 'AND tag = "%s" ' .
- 'ORDER BY profile_tag.modified DESC ' .
- $lim, $tag));
-
- $pl = new ProfileList($profile);
- $cnt = $pl->show_list();
-
- common_pagination($page > 1,
- $cnt > PROFILES_PER_PAGE,
- $page,
- $this->trimmed('action'),
- array('tag' => $tag));
- }
-
- function show_top($tag) {
- $instr = sprintf(_('These are users who have tagged themselves "%s" ' .
- 'to show a common interest, characteristic, hobby or job.'), $tag);
- common_element_start('div', 'instructions');
- common_element_start('p');
- common_text($instr);
- common_element_end('p');
- common_element_end('div');
- }
-
- function get_title() {
- return NULL;
- }
-
- function show_header($arr) {
- return;
- }
+ $pl = new ProfileList($profile, null, $this);
+ $cnt = $pl->show();
+
+ $this->pagination($this->page > 1,
+ $cnt > PROFILES_PER_PAGE,
+ $this->page,
+ $this->trimmed('action'),
+ array('tag' => $this->tag));
+ }
+
+ function title()
+ {
+ return sprintf( _('Users self-tagged with %s - page %d'), $this->tag, $this->page);
+ }
+
}