class ProfileList {
var $profile = NULL;
-
- function __construct($profile) {
+ var $owner = NULL;
+ var $action = NULL;
+
+ function __construct($profile, $owner=NULL, $action=NULL) {
$this->profile = $profile;
+ $this->owner = $owner;
+ $this->action = $action;
}
-
+
function show_list() {
-
- common_element_start('ul', array('id' => 'profiles'));
+
+ common_element_start('ul', array('id' => 'profiles', 'class' => 'profile_list'));
$cnt = 0;
-
+
while ($this->profile->fetch()) {
$cnt++;
if($cnt > PROFILES_PER_PAGE) {
}
$this->show();
}
-
+
common_element_end('ul');
-
+
return $cnt;
}
-
+
function show() {
- $this->profile = $this->profile;
-
common_element_start('li', array('class' => 'profile_single',
'id' => 'profile-' . $this->profile->id));
-
+
$user = common_current_user();
+
if ($user && $user->id != $this->profile->id) {
# XXX: special-case for user looking at own
# subscriptions page
common_subscribe_form($this->profile);
}
}
-
+
$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
common_element_start('a', array('href' => $this->profile->profileurl));
common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE),
common_raw($this->highlight($this->profile->bio));
common_element_end('p');
}
-
- $tags = Profile_tag::getTags($this->profile->id, $this->profile->id);
-
- if ($tags) {
- common_element_start('p', 'tags');
- foreach ($tags as $tag) {
- common_element('a', array('rel' => 'tag',
- 'href' => common_local_url('peopletag',
- array('tag' => $tag))),
- $tag);
- }
- common_element_end('p');
- }
-
- $user = common_current_user();
-
- $action = NULL;
-
- if ($user->isSubscribed($profile)) {
- $action = 'subscriptions';
- } else if (Subscription::pkeyGet(array('subscriber' => $profile->id,
- 'subscribed' => $user->id))) {
- $action = 'subscribers';
- }
+ # If we're on a list with an owner (subscriptions or subscribers)...
- if ($action) {
- $tags = Profile_tag::getTags($user->id, $profile->id);
+ if ($this->owner) {
+ # Get tags
+ $tags = Profile_tag::getTags($this->owner->id, $this->profile->id);
+ common_element_start('div', 'tags_user');
+ common_element_start('dl');
+ common_element_start('dt');
+ if ($user->id == $this->owner->id) {
+ common_element('a', array('href' => common_local_url('tagother',
+ array('id' => $this->profile->id))),
+ _('Tags'));
+ } else {
+ common_text(_('Tags'));
+ }
+ common_text(":");
+ common_element_end('dt');
+ common_element_start('dd');
if ($tags) {
- common_element_start('p', 'subtags');
-
+ common_element_start('ul', 'tags xoxo');
foreach ($tags as $tag) {
- common_element('a', array('href' => common_local_url($action,
- array('nickname' => $user->nickname,
+ common_element_start('li');
+ common_element('a', array('rel' => 'tag',
+ 'href' => common_local_url($this->action,
+ array('nickname' => $this->owner->nickname,
'tag' => $tag))),
$tag);
+ common_element_end('li');
}
-
- common_element_end('p');
+ common_element_end('ul');
+ } else {
+ common_text(_('(none)'));
}
-
- common_element('a', array('href' => 'tagother',
- 'id' => $profile->id,
- 'class' => 'tagother'),
- _('Tag'));
+ common_element_end('dd');
+ common_element_end('dl');
+ common_element_end('div');
}
-
+
+ if ($user && $user->id == $this->owner->id) {
+ $this->show_owner_controls($this->profile);
+ }
+
common_element_end('li');
}
+ /* Override this in subclasses. */
+
+ function show_owner_controls($profile) {
+ return;
+ }
+
function highlight($text) {
return htmlspecialchars($text);
}