Example #1
0
 static function setTags($tagger, $tagged, $newtags)
 {
     $newtags = array_unique($newtags);
     $oldtags = Profile_tag::getTags($tagger, $tagged);
     # Delete stuff that's old that not in new
     $to_delete = array_diff($oldtags, $newtags);
     # Insert stuff that's in new and not in old
     $to_insert = array_diff($newtags, $oldtags);
     $profile_tag = new Profile_tag();
     $profile_tag->tagger = $tagger;
     $profile_tag->tagged = $tagged;
     $profile_tag->query('BEGIN');
     foreach ($to_delete as $deltag) {
         $profile_tag->tag = $deltag;
         $result = $profile_tag->delete();
         if (!$result) {
             common_log_db_error($profile_tag, 'DELETE', __FILE__);
             return false;
         }
     }
     foreach ($to_insert as $instag) {
         $profile_tag->tag = $instag;
         $result = $profile_tag->insert();
         if (!$result) {
             common_log_db_error($profile_tag, 'INSERT', __FILE__);
             return false;
         }
     }
     $profile_tag->query('COMMIT');
     return true;
 }
Example #2
0
 function showTags()
 {
     $tags = Profile_tag::getTags($this->owner->id, $this->profile->id);
     $this->out->elementStart('dl', 'entity_tags');
     $this->out->elementStart('dt');
     if ($this->isOwn()) {
         $this->out->element('a', array('href' => common_local_url('tagother', array('id' => $this->profile->id))), _('Tags'));
     } else {
         $this->out->text(_('Tags'));
     }
     $this->out->elementEnd('dt');
     $this->out->elementStart('dd');
     if ($tags) {
         $this->out->elementStart('ul', 'tags xoxo');
         foreach ($tags as $tag) {
             $this->out->elementStart('li');
             // Avoid space by using raw output.
             $pt = '<span class="mark_hash">#</span><a rel="tag" href="' . common_local_url($this->action->trimmed('action'), array('nickname' => $this->owner->nickname, 'tag' => $tag)) . '">' . $tag . '</a>';
             $this->out->raw($pt);
             $this->out->elementEnd('li');
         }
         $this->out->elementEnd('ul');
     } else {
         $this->out->text(_('(None)'));
     }
     $this->out->elementEnd('dd');
     $this->out->elementEnd('dl');
 }
Example #3
0
 function showTags()
 {
     $tags = Profile_tag::getTags($this->owner->id, $this->profile->id);
     $this->out->elementStart('dl', 'entity_tags');
     $this->out->elementStart('dt');
     if ($this->isOwn()) {
         $this->out->element('a', array('href' => common_local_url('tagother', array('id' => $this->profile->id))), _('Tags'));
     } else {
         $this->out->text(_('Tags'));
     }
     $this->out->elementEnd('dt');
     $this->out->elementStart('dd');
     if ($tags) {
         $this->out->elementStart('ul', 'tags xoxo');
         foreach ($tags as $tag) {
             $this->out->elementStart('li');
             $this->out->element('span', 'mark_hash', '#');
             $this->out->element('a', array('rel' => 'tag', 'href' => common_local_url($this->action->trimmed('action'), array('nickname' => $this->owner->nickname, 'tag' => $tag))), $tag);
             $this->out->elementEnd('li');
         }
         $this->out->elementEnd('ul');
     } else {
         $this->out->text(_('(none)'));
     }
     $this->out->elementEnd('dd');
     $this->out->elementEnd('dl');
 }
 function __construct($out, $tagger, $tagged)
 {
     parent::__construct($out);
     $this->user = common_current_user();
     $this->tag = Profile_tag::getTags($tagger->id, $tagged->id, $this->user);
     $this->tagger = $tagger;
     $this->tagged = $tagged;
 }
Example #5
0
 function showProfile()
 {
     $this->elementStart('div', 'entity_profile vcard author');
     $this->element('h2', null, _('User profile'));
     $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
     $this->elementStart('dl', 'entity_depiction');
     $this->element('dt', null, _('Photo'));
     $this->elementStart('dd');
     $this->element('img', array('src' => $avatar ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE), 'class' => 'photo avatar', 'width' => AVATAR_PROFILE_SIZE, 'height' => AVATAR_PROFILE_SIZE, 'alt' => $this->profile->nickname));
     $this->elementEnd('dd');
     $user = User::staticGet('id', $this->profile->id);
     $cur = common_current_user();
     if ($cur && $cur->id == $user->id) {
         $this->elementStart('dd');
         $this->element('a', array('href' => common_local_url('avatarsettings')), _('Edit Avatar'));
         $this->elementEnd('dd');
     }
     $this->elementEnd('dl');
     $this->elementStart('dl', 'entity_nickname');
     $this->element('dt', null, _('Nickname'));
     $this->elementStart('dd');
     $hasFN = $this->profile->fullname ? 'nickname url uid' : 'fn nickname url uid';
     $this->element('a', array('href' => $this->profile->profileurl, 'rel' => 'me', 'class' => $hasFN), $this->profile->nickname);
     $this->elementEnd('dd');
     $this->elementEnd('dl');
     if ($this->profile->fullname) {
         $this->elementStart('dl', 'entity_fn');
         $this->element('dt', null, _('Full name'));
         $this->elementStart('dd');
         $this->element('span', 'fn', $this->profile->fullname);
         $this->elementEnd('dd');
         $this->elementEnd('dl');
     }
     if ($this->profile->location) {
         $this->elementStart('dl', 'entity_location');
         $this->element('dt', null, _('Location'));
         $this->element('dd', 'label', $this->profile->location);
         $this->elementEnd('dl');
     }
     if ($this->profile->homepage) {
         $this->elementStart('dl', 'entity_url');
         $this->element('dt', null, _('URL'));
         $this->elementStart('dd');
         $this->element('a', array('href' => $this->profile->homepage, 'rel' => 'me', 'class' => 'url'), $this->profile->homepage);
         $this->elementEnd('dd');
         $this->elementEnd('dl');
     }
     if ($this->profile->bio) {
         $this->elementStart('dl', 'entity_note');
         $this->element('dt', null, _('Note'));
         $this->element('dd', 'note', $this->profile->bio);
         $this->elementEnd('dl');
     }
     $tags = Profile_tag::getTags($this->profile->id, $this->profile->id);
     if (count($tags) > 0) {
         $this->elementStart('dl', 'entity_tags');
         $this->element('dt', null, _('Tags'));
         $this->elementStart('dd');
         $this->elementStart('ul', 'tags xoxo');
         foreach ($tags as $tag) {
             $this->elementStart('li');
             // Avoid space by using raw output.
             $pt = '<span class="mark_hash">#</span><a rel="tag" href="' . common_local_url('peopletag', array('tag' => $tag)) . '">' . $tag . '</a>';
             $this->raw($pt);
             $this->elementEnd('li');
         }
         $this->elementEnd('ul');
         $this->elementEnd('dd');
         $this->elementEnd('dl');
     }
     $this->elementEnd('div');
     $this->elementStart('div', 'entity_actions');
     $this->element('h2', null, _('User actions'));
     $this->elementStart('ul');
     $cur = common_current_user();
     if ($cur && $cur->id == $this->profile->id) {
         $this->elementStart('li', 'entity_edit');
         $this->element('a', array('href' => common_local_url('profilesettings'), 'title' => _('Edit profile settings')), _('Edit'));
         $this->elementEnd('li');
     }
     if ($cur) {
         if ($cur->id != $this->profile->id) {
             $this->elementStart('li', 'entity_subscribe');
             if ($cur->isSubscribed($this->profile)) {
                 $usf = new UnsubscribeForm($this, $this->profile);
                 $usf->show();
             } else {
                 $sf = new SubscribeForm($this, $this->profile);
                 $sf->show();
             }
             $this->elementEnd('li');
         }
     } else {
         $this->elementStart('li', 'entity_subscribe');
         $this->showRemoteSubscribeLink();
         $this->elementEnd('li');
     }
     if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
         $this->elementStart('li', 'entity_send-a-message');
         $this->element('a', array('href' => common_local_url('newmessage', array('to' => $user->id)), 'title' => _('Send a direct message to this user')), _('Message'));
         $this->elementEnd('li');
         if ($user->email && $user->emailnotifynudge) {
             $this->elementStart('li', 'entity_nudge');
             $nf = new NudgeForm($this, $user);
             $nf->show();
             $this->elementEnd('li');
         }
     }
     if ($cur && $cur->id != $this->profile->id) {
         $blocked = $cur->hasBlocked($this->profile);
         $this->elementStart('li', 'entity_block');
         if ($blocked) {
             $ubf = new UnblockForm($this, $this->profile);
             $ubf->show();
         } else {
             $bf = new BlockForm($this, $this->profile);
             $bf->show();
         }
         $this->elementEnd('li');
     }
     $this->elementEnd('ul');
     $this->elementEnd('div');
 }
Example #6
0
 function showContent()
 {
     $this->elementStart('div', 'entity_profile vcard author');
     $this->element('h2', null, _('User profile'));
     $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
     $this->elementStart('dl', 'entity_depiction');
     $this->element('dt', null, _('Photo'));
     $this->elementStart('dd');
     $this->element('img', array('src' => $avatar ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE), 'class' => 'photo avatar', 'width' => AVATAR_PROFILE_SIZE, 'height' => AVATAR_PROFILE_SIZE, 'alt' => $this->profile->fullname ? $this->profile->fullname : $this->profile->nickname));
     $this->elementEnd('dd');
     $this->elementEnd('dl');
     $this->elementStart('dl', 'entity_nickname');
     $this->element('dt', null, _('Nickname'));
     $this->elementStart('dd');
     $this->element('a', array('href' => $this->profile->profileurl, 'class' => 'nickname'), $this->profile->nickname);
     $this->elementEnd('dd');
     $this->elementEnd('dl');
     if ($this->profile->fullname) {
         $this->elementStart('dl', 'entity_fn');
         $this->element('dt', null, _('Full name'));
         $this->elementStart('dd');
         $this->element('span', 'fn', $this->profile->fullname);
         $this->elementEnd('dd');
         $this->elementEnd('dl');
     }
     if ($this->profile->location) {
         $this->elementStart('dl', 'entity_location');
         $this->element('dt', null, _('Location'));
         $this->element('dd', 'label', $this->profile->location);
         $this->elementEnd('dl');
     }
     if ($this->profile->homepage) {
         $this->elementStart('dl', 'entity_url');
         $this->element('dt', null, _('URL'));
         $this->elementStart('dd');
         $this->element('a', array('href' => $this->profile->homepage, 'rel' => 'me', 'class' => 'url'), $this->profile->homepage);
         $this->elementEnd('dd');
         $this->elementEnd('dl');
     }
     if ($this->profile->bio) {
         $this->elementStart('dl', 'entity_note');
         $this->element('dt', null, _('Note'));
         $this->element('dd', 'note', $this->profile->bio);
         $this->elementEnd('dl');
     }
     $this->elementEnd('div');
     $this->elementStart('form', array('method' => 'post', 'id' => 'form_tag_user', 'class' => 'form_settings', 'name' => 'tagother', 'action' => common_local_url('tagother', array('id' => $this->profile->id))));
     $this->elementStart('fieldset');
     $this->element('legend', null, _('Tag user'));
     $this->hidden('token', common_session_token());
     $this->hidden('id', $this->profile->id);
     $user = common_current_user();
     $this->elementStart('ul', 'form_data');
     $this->elementStart('li');
     $this->input('tags', _('Tags'), $this->arg('tags') ? $this->arg('tags') : implode(' ', Profile_tag::getTags($user->id, $this->profile->id)), _('Tags for this user (letters, numbers, -, ., and _), comma- or space- separated'));
     $this->elementEnd('li');
     $this->elementEnd('ul');
     $this->submit('save', _('Save'));
     $this->elementEnd('fieldset');
     $this->elementEnd('form');
 }
Example #7
0
 function showProfileTags()
 {
     if (Event::handle('StartProfilePageProfileTags', array($this->out, $this->profile))) {
         $tags = Profile_tag::getTags($this->profile->id, $this->profile->id);
         if (count($tags) > 0) {
             $this->out->elementStart('dl', 'entity_tags');
             $this->out->element('dt', null, _('Tags'));
             $this->out->elementStart('dd');
             $this->out->elementStart('ul', 'tags xoxo');
             foreach ($tags as $tag) {
                 $this->out->elementStart('li');
                 // Avoid space by using raw output.
                 $pt = '<span class="mark_hash">#</span><a rel="tag" href="' . common_local_url('peopletag', array('tag' => $tag)) . '">' . $tag . '</a>';
                 $this->out->raw($pt);
                 $this->out->elementEnd('li');
             }
             $this->out->elementEnd('ul');
             $this->out->elementEnd('dd');
             $this->out->elementEnd('dl');
         }
         Event::handle('EndProfilePageProfileTags', array($this->out, $this->profile));
     }
 }
Example #8
0
 function getSelfTags()
 {
     return Profile_tag::getTags($this->id, $this->id);
 }
Example #9
0
 function showProfile()
 {
     $this->out->elementStart('li', array('class' => 'profile', 'id' => 'profile-' . $this->profile->id));
     $user = common_current_user();
     $is_own = !is_null($user) && isset($this->owner) && $user->id === $this->owner->id;
     $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 ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE), '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 (!empty($this->profile->fullname)) {
         $this->out->elementStart('dl', 'entity_fn');
         $this->out->element('dt', null, 'Full name');
         $this->out->elementStart('dd');
         $this->out->elementStart('span', 'fn');
         $this->out->raw($this->highlight($this->profile->fullname));
         $this->out->elementEnd('span');
         $this->out->elementEnd('dd');
         $this->out->elementEnd('dl');
     }
     if (!empty($this->profile->location)) {
         $this->out->elementStart('dl', 'entity_location');
         $this->out->element('dt', null, _('Location'));
         $this->out->elementStart('dd', 'label');
         $this->out->raw($this->highlight($this->profile->location));
         $this->out->elementEnd('dd');
         $this->out->elementEnd('dl');
     }
     if (!empty($this->profile->homepage)) {
         $this->out->elementStart('dl', 'entity_url');
         $this->out->element('dt', null, _('URL'));
         $this->out->elementStart('dd');
         $this->out->elementStart('a', array('href' => $this->profile->homepage, 'class' => 'url'));
         $this->out->raw($this->highlight($this->profile->homepage));
         $this->out->elementEnd('a');
         $this->out->elementEnd('dd');
         $this->out->elementEnd('dl');
     }
     if (!empty($this->profile->bio)) {
         $this->out->elementStart('dl', 'entity_note');
         $this->out->element('dt', null, _('Note'));
         $this->out->elementStart('dd', 'note');
         $this->out->raw($this->highlight($this->profile->bio));
         $this->out->elementEnd('dd');
         $this->out->elementEnd('dl');
     }
     # If we're on a list with an owner (subscriptions or subscribers)...
     if ($this->owner) {
         # Get tags
         $tags = Profile_tag::getTags($this->owner->id, $this->profile->id);
         $this->out->elementStart('dl', 'entity_tags');
         $this->out->elementStart('dt');
         if ($is_own) {
             $this->out->element('a', array('href' => common_local_url('tagother', array('id' => $this->profile->id))), _('Tags'));
         } else {
             $this->out->text(_('Tags'));
         }
         $this->out->elementEnd('dt');
         $this->out->elementStart('dd');
         if ($tags) {
             $this->out->elementStart('ul', 'tags xoxo');
             foreach ($tags as $tag) {
                 $this->out->elementStart('li');
                 $this->out->element('span', 'mark_hash', '#');
                 $this->out->element('a', array('rel' => 'tag', 'href' => common_local_url($this->action->trimmed('action'), array('nickname' => $this->owner->nickname, 'tag' => $tag))), $tag);
                 $this->out->elementEnd('li');
             }
             $this->out->elementEnd('ul');
         } else {
             $this->out->text(_('(none)'));
         }
         $this->out->elementEnd('dd');
         $this->out->elementEnd('dl');
     }
     if ($is_own) {
         $this->showOwnerControls($this->profile);
     }
     $this->out->elementEnd('div');
     $this->out->elementStart('div', 'entity_actions');
     $this->out->elementStart('ul');
     // Is this a logged-in user, looking at someone else's
     // profile?
     if (!empty($user) && $this->profile->id != $user->id) {
         $this->out->elementStart('li', 'entity_subscribe');
         if ($user->isSubscribed($this->profile)) {
             $usf = new UnsubscribeForm($this->out, $this->profile);
             $usf->show();
         } else {
             $sf = new SubscribeForm($this->out, $this->profile);
             $sf->show();
         }
         $this->out->elementEnd('li');
         $this->out->elementStart('li', 'entity_block');
         if ($user->id == $this->owner->id) {
             $this->showBlockForm();
         }
         $this->out->elementEnd('li');
     }
     $this->out->elementEnd('ul');
     $this->out->elementEnd('div');
     $this->out->elementEnd('li');
 }