]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
reformat profilelist code
authorEvan Prodromou <evan@controlyourself.ca>
Thu, 22 Jan 2009 16:06:06 +0000 (17:06 +0100)
committerEvan Prodromou <evan@controlyourself.ca>
Thu, 22 Jan 2009 16:06:06 +0000 (17:06 +0100)
lib/gallery.php [deleted file]
lib/galleryaction.php [new file with mode: 0644]
lib/profilelist.php

diff --git a/lib/gallery.php b/lib/gallery.php
deleted file mode 100644 (file)
index 34b5851..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-<?php
-/**
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) {
-    exit(1);
-}
-
-require_once INSTALLDIR.'/lib/profilelist.php';
-
-// 10x8
-
-define('AVATARS_PER_PAGE', 80);
-
-class GalleryAction extends Action
-{
-    function is_readonly()
-    {
-        return true;
-    }
-
-    function handle($args)
-    {
-        parent::handle($args);
-
-        // Post from the tag dropdown; redirect to a GET
-
-        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-            common_redirect($this->self_url(), 307);
-        }
-
-        $nickname = common_canonical_nickname($this->arg('nickname'));
-
-        $user = User::staticGet('nickname', $nickname);
-
-        if (!$user) {
-            $this->no_such_user();
-            return;
-        }
-
-        $profile = $user->getProfile();
-
-        if (!$profile) {
-            $this->server_error(_('User without matching profile in system.'));
-            return;
-        }
-
-        $page = $this->arg('page');
-
-        if (!$page) {
-            $page = 1;
-        }
-
-        $display = $this->arg('display');
-
-        if (!$display) {
-            $display = 'list';
-        }
-
-        $tag = $this->arg('tag');
-
-        common_show_header($profile->nickname . ": " . $this->gallery_type(),
-                           null, $profile,
-                           array($this, 'show_top'));
-
-        $this->display_links($profile, $page, $display);
-        $this->show_tags_dropdown($profile);
-
-        $this->show_gallery($profile, $page, $display, $tag);
-        common_show_footer();
-    }
-
-    function no_such_user()
-    {
-        $this->client_error(_('No such user.'));
-    }
-
-    function show_tags_dropdown($profile)
-    {
-        $tag = $this->trimmed('tag');
-
-        list($lst, $usr) = $this->fields();
-
-        $tags = $this->get_all_tags($profile, $lst, $usr);
-
-        $content = array();
-
-        foreach ($tags as $t) {
-            $content[$t] = $t;
-        }
-        if ($tags) {
-            common_element_start('dl', array('id'=>'filter_tags'));
-            common_element('dt', null, _('Filter tags'));
-            common_element_start('dd');
-            common_element_start('ul');
-            common_element_start('li', array('id' => 'filter_tags_all',
-                                             'class' => 'child_1'));
-            common_element('a',
-                           array('href' =>
-                                 common_local_url($this->trimmed('action'),
-                                                  array('nickname' =>
-                                                        $profile->nickname))),
-                           _('All'));
-            common_element_end('li');
-            common_element_start('li', array('id'=>'filter_tags_item'));
-            common_element_start('form', array('name' => 'bytag',
-                                               'id' => 'bytag',
-                                               'method' => 'post'));
-            common_dropdown('tag', _('Tag'), $content,
-                            _('Choose a tag to narrow list'), false, $tag);
-            common_submit('go', _('Go'));
-            common_element_end('form');
-            common_element_end('li');
-            common_element_end('ul');
-            common_element_end('dd');
-            common_element_end('dl');
-        }
-    }
-
-    function show_top($profile)
-    {
-        common_element('div', 'instructions',
-                       $this->get_instructions($profile));
-        $this->show_menu();
-    }
-
-    function show_menu()
-    {
-        // action => array('prompt', 'title', $args)
-        $action   = $this->trimmed('action');
-        $nickname = $this->trimmed('nickname');
-
-        $menu =
-          array('subscriptions' =>
-                array( _('Subscriptions'),
-                       _('Subscriptions'),
-                       array('nickname' => $nickname)),
-                'subscribers' =>
-                array(
-                      _('Subscribers'),
-                      _('Subscribers'),
-                      array('nickname' => $nickname)),
-                );
-        $this->nav_menu($menu);
-    }
-
-    function show_gallery($profile, $page, $display='list', $tag=null)
-    {
-        $other = new Profile();
-
-        list($lst, $usr) = $this->fields();
-
-        $per_page = ($display == 'list') ? PROFILES_PER_PAGE : AVATARS_PER_PAGE;
-
-        $offset = ($page-1)*$per_page;
-        $limit = $per_page + 1;
-
-        if (common_config('db', 'type') == 'pgsql') {
-            $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-        } else {
-            $lim = ' LIMIT ' . $offset . ', ' . $limit;
-        }
-
-        // XXX: memcached results
-        // FIXME: SQL injection on $tag
-
-        $other->query('SELECT profile.* ' .
-                      'FROM profile JOIN subscription ' .
-                      'ON profile.id = subscription.' . $lst . ' ' .
-                      (($tag) ? 'JOIN profile_tag ON (profile.id = profile_tag.tagged AND subscription.'.$usr.'= profile_tag.tagger) ' : '') .
-                      'WHERE ' . $usr . ' = ' . $profile->id . ' ' .
-                      'AND subscriber != subscribed ' .
-                      (($tag) ? 'AND profile_tag.tag= "' . $tag . '" ': '') .
-                      'ORDER BY subscription.created DESC, profile.id DESC ' .
-                      $lim);
-
-        if ($display == 'list') {
-            $cls = $this->profile_list_class();
-            $profile_list = new $cls($other, $profile, $this->trimmed('action'));
-            $cnt = $profile_list->show_list();
-        } else {
-            $cnt = $this->icon_list($other);
-        }
-
-        // For building the pagination URLs
-
-        $args = array('nickname' => $profile->nickname);
-
-        if ($display != 'list') {
-            $args['display'] = $display;
-        }
-
-        common_pagination($page > 1,
-                          $cnt > $per_page,
-                          $page,
-                          $this->trimmed('action'),
-                          $args);
-    }
-
-    function profile_list_class()
-    {
-        return 'ProfileList';
-    }
-
-    function icon_list($other)
-    {
-        common_element_start('ul', $this->div_class());
-
-        $cnt = 0;
-
-        while ($other->fetch()) {
-
-            $cnt++;
-
-            if ($cnt > AVATARS_PER_PAGE) {
-                break;
-            }
-
-            common_element_start('li');
-
-            common_element_start('a', array('title' => ($other->fullname) ?
-                                            $other->fullname :
-                                            $other->nickname,
-                                            'href' => $other->profileurl,
-                                            'class' => 'subscription'));
-            $avatar = $other->getAvatar(AVATAR_STREAM_SIZE);
-            common_element('img',
-                           array('src' =>
-                                 (($avatar) ? common_avatar_display_url($avatar) :
-                                  common_default_avatar(AVATAR_STREAM_SIZE)),
-                                 'width' => AVATAR_STREAM_SIZE,
-                                 'height' => AVATAR_STREAM_SIZE,
-                                 'class' => 'avatar stream',
-                                 'alt' => ($other->fullname) ?
-                                 $other->fullname :
-                                 $other->nickname));
-            common_element_end('a');
-
-            // XXX: subscribe form here
-
-            common_element_end('li');
-        }
-
-        common_element_end('ul');
-
-        return $cnt;
-    }
-
-    function gallery_type()
-    {
-        return null;
-    }
-
-    function get_instructions(&$profile)
-    {
-        return null;
-    }
-
-    function fields()
-    {
-        return null;
-    }
-
-    function div_class()
-    {
-        return '';
-    }
-
-    function display_links($profile, $page, $display)
-    {
-        $tag = $this->trimmed('tag');
-
-        common_element_start('dl', array('id'=>'subscriptions_nav'));
-        common_element('dt', null, _('Subscriptions navigation'));
-        common_element_start('dd');
-        common_element_start('ul', array('class'=>'nav'));
-
-        switch ($display) {
-         case 'list':
-            common_element('li', array('class'=>'child_1'), _('List'));
-            common_element_start('li');
-            $url_args = array('display' => 'icons',
-                              'nickname' => $profile->nickname,
-                              'page' => 1 + floor((($page - 1) * PROFILES_PER_PAGE) / AVATARS_PER_PAGE));
-            if ($tag) {
-                $url_args['tag'] = $tag;
-            }
-            $url = common_local_url($this->trimmed('action'), $url_args);
-            common_element('a', array('href' => $url),
-                           _('Icons'));
-            common_element_end('li');
-            break;
-         default:
-            common_element_start('li', array('class'=>'child_1'));
-            $url_args = array('nickname' => $profile->nickname,
-                              'page' => 1 + floor((($page - 1) * AVATARS_PER_PAGE) / PROFILES_PER_PAGE));
-            if ($tag) {
-                $url_args['tag'] = $tag;
-            }
-            $url = common_local_url($this->trimmed('action'), $url_args);
-            common_element('a', array('href' => $url),
-                           _('List'));
-            common_element_end('li');
-            common_element('li', null, _('Icons'));
-            break;
-        }
-
-        common_element_end('ul');
-        common_element_end('dd');
-        common_element_end('dl');
-    }
-
-    // Get list of tags we tagged other users with
-
-    function get_all_tags($profile, $lst, $usr)
-    {
-        $profile_tag = new Notice_tag();
-        $profile_tag->query('SELECT DISTINCT(tag) ' .
-                            'FROM profile_tag, subscription ' .
-                            'WHERE tagger = ' . $profile->id . ' ' .
-                            'AND ' . $usr . ' = ' . $profile->id . ' ' .
-                            'AND ' . $lst . ' = tagged ' .
-                            'AND tagger != tagged');
-        $tags = array();
-        while ($profile_tag->fetch()) {
-            $tags[] = $profile_tag->tag;
-        }
-        $profile_tag->free();
-        return $tags;
-    }
-}
\ No newline at end of file
diff --git a/lib/galleryaction.php b/lib/galleryaction.php
new file mode 100644 (file)
index 0000000..b36f1ea
--- /dev/null
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/profilelist.php';
+
+// 10x8
+
+define('AVATARS_PER_PAGE', 80);
+
+class GalleryAction extends Action
+{
+    var $profile = null;
+    var $user = null;
+    var $page = null;
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        // FIXME very similar code below
+
+        $nickname_arg = $this->arg('nickname');
+        $nickname = common_canonical_nickname($nickname_arg);
+
+        // Permanent redirect on non-canonical nickname
+
+        if ($nickname_arg != $nickname) {
+            $args = array('nickname' => $nickname);
+            if ($this->arg('page') && $this->arg('page') != 1) {
+                $args['page'] = $this->arg['page'];
+            }
+            common_redirect(common_local_url('subscriptions', $args), 301);
+            return false;
+        }
+
+        $this->user = User::staticGet('nickname', $nickname);
+
+        if (!$this->user) {
+            $this->clientError(_('No such user.'), 404);
+            return false;
+        }
+
+        $this->profile = $this->user->getProfile();
+
+        if (!$this->profile) {
+            $this->serverError(_('User has no profile.'));
+            return false;
+        }
+
+        $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
+
+        return true;
+    }
+
+    function isReadOnly()
+    {
+        return true;
+    }
+
+    function handle($args)
+    {
+        parent::handle($args);
+
+               # Post from the tag dropdown; redirect to a GET
+
+               if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+                   common_redirect($this->self_url(), 307);
+            return;
+               }
+
+        $this->showPage();
+    }
+
+    function showLocalNav()
+    {
+        $nav = new SubGroupNav($this, $this->user);
+        $nav->show();
+    }
+
+    function showContent()
+    {
+        $this->showTagsDropdown();
+    }
+
+    function showTagsDropdown()
+    {
+        $tag = $this->trimmed('tag');
+
+        $tags = $this->getAllTags();
+
+        $content = array();
+
+        foreach ($tags as $t) {
+            $content[$t] = $t;
+        }
+        if ($tags) {
+            $this->elementStart('dl', array('id'=>'filter_tags'));
+            $this->element('dt', null, _('Filter tags'));
+            $this->elementStart('dd');
+            $this->elementStart('ul');
+            $this->elementStart('li', array('id' => 'filter_tags_all',
+                                             'class' => 'child_1'));
+            $this->element('a',
+                           array('href' =>
+                                 common_local_url($this->trimmed('action'),
+                                                  array('nickname' =>
+                                                        $profile->nickname))),
+                           _('All'));
+            $this->elementEnd('li');
+            $this->elementStart('li', array('id'=>'filter_tags_item'));
+            $this->elementStart('form', array('name' => 'bytag',
+                                               'id' => 'bytag',
+                                               'method' => 'post'));
+            $this->dropdown('tag', _('Tag'), $content,
+                            _('Choose a tag to narrow list'), false, $tag);
+            $this->submit('go', _('Go'));
+            $this->elementEnd('form');
+            $this->elementEnd('li');
+            $this->elementEnd('ul');
+            $this->elementEnd('dd');
+            $this->elementEnd('dl');
+        }
+    }
+
+    // Get list of tags we tagged other users with
+
+    function getTags($lst, $usr)
+    {
+        $profile_tag = new Notice_tag();
+        $profile_tag->query('SELECT DISTINCT(tag) ' .
+                            'FROM profile_tag, subscription ' .
+                            'WHERE tagger = ' . $profile->id . ' ' .
+                            'AND ' . $usr . ' = ' . $profile->id . ' ' .
+                            'AND ' . $lst . ' = tagged ' .
+                            'AND tagger != tagged');
+        $tags = array();
+        while ($profile_tag->fetch()) {
+            $tags[] = $profile_tag->tag;
+        }
+        $profile_tag->free();
+        return $tags;
+    }
+
+    function getAllTags()
+    {
+        return array();
+    }
+}
\ No newline at end of file
index 73c129efe8021367e94453c3715b7550be1bcde2..a510c518c5dffc4564ae779666c58779d4ab3cc1 100644 (file)
@@ -92,25 +92,24 @@ class ProfileList extends Widget
 
         $user = common_current_user();
 
-
         $this->out->elementStart('div', 'entity_profile vcard');
 
         $avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
         $this->out->elementStart('a', array('href' => $this->profile->profileurl,
                                             'class' => 'url'));
         $this->out->element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE),
-                                    'class' => 'photo avatar',
-                                    'width' => AVATAR_STREAM_SIZE,
-                                    'height' => AVATAR_STREAM_SIZE,
-                                    'alt' =>
-                                    ($this->profile->fullname) ? $this->profile->fullname :
-                                    $this->profile->nickname));
+                                         'class' => 'photo avatar',
+                                         'width' => AVATAR_STREAM_SIZE,
+                                         'height' => AVATAR_STREAM_SIZE,
+                                         'alt' =>
+                                         ($this->profile->fullname) ? $this->profile->fullname :
+                                         $this->profile->nickname));
         $hasFN = ($this->profile->fullname) ? 'nickname' : 'fn nickname';
         $this->out->elementStart('span', $hasFN);
         $this->out->raw($this->highlight($this->profile->nickname));
         $this->out->elementEnd('span');
         $this->out->elementEnd('a');
-        
+
         if ($this->profile->fullname) {
             $this->out->elementStart('dl', 'entity_fn');
             $this->out->element('dt', null, 'Full name');
@@ -159,8 +158,8 @@ class ProfileList extends Widget
             $this->out->elementStart('dt');
             if ($user->id == $this->owner->id) {
                 $this->out->element('a', array('href' => common_local_url('tagother',
-                                                                     array('id' => $this->profile->id))),
-                               _('Tags'));
+                                                                          array('id' => $this->profile->id))),
+                                    _('Tags'));
             } else {
                 $this->out->text(_('Tags'));
             }
@@ -172,10 +171,10 @@ class ProfileList extends Widget
                     $this->out->elementStart('li');
                     $this->element('span', 'mark_hash', '#');
                     $this->out->element('a', array('rel' => 'tag',
-                                              'href' => common_local_url($this->action,
-                                                                         array('nickname' => $this->owner->nickname,
-                                                                               'tag' => $tag))),
-                                   $tag);
+                                                   'href' => common_local_url($this->action,
+                                                                              array('nickname' => $this->owner->nickname,
+                                                                                    'tag' => $tag))),
+                                        $tag);
                     $this->out->elementEnd('li');
                 }
                 $this->out->elementEnd('ul');