Exemplo n.º 1
0
 function arg($arg, $def = null)
 {
     // PHP converts '.'s in incoming var names to '_'s.
     // It also merges multiple values, which'll break hub.verify and hub.topic for publishing
     // @fixme handle multiple args
     $arg = str_replace('hub.', 'hub_', $arg);
     return parent::arg($arg, $def);
 }
 /**
  * Link in a JavaScript script for the whitelist invite form
  *
  * @param Action $action Action being shown
  *
  * @return boolean hook flag
  */
 function onEndShowStatusNetScripts($action)
 {
     $name = $action->arg('action');
     if ($name == 'invite') {
         $action->script($this->getPath() . '/js/whitelistinvite.js');
     }
     return true;
 }
Exemplo n.º 3
0
 /**
  * Returns query argument or default value if not found. Certain
  * parameters used throughout the API are lightly scrubbed and
  * bounds checked.  This overrides Action::arg().
  *
  * @param string $key requested argument
  * @param string $def default value to return if $key is not provided
  *
  * @return var $var
  */
 function arg($key, $def = null)
 {
     // XXX: Do even more input validation/scrubbing?
     if (array_key_exists($key, $this->args)) {
         switch ($key) {
             case 'page':
                 $page = (int) $this->args['page'];
                 return $page < 1 ? 1 : $page;
             case 'count':
                 $count = (int) $this->args['count'];
                 if ($count < 1) {
                     return 20;
                 } elseif ($count > 200) {
                     return 200;
                 } else {
                     return $count;
                 }
             case 'since_id':
                 $since_id = (int) $this->args['since_id'];
                 return $since_id < 1 ? 0 : $since_id;
             case 'max_id':
                 $max_id = (int) $this->args['max_id'];
                 return $max_id < 1 ? 0 : $max_id;
             default:
                 return parent::arg($key, $def);
         }
     } else {
         return $def;
     }
 }
Exemplo n.º 4
0
 /**
  * Show a checkbox on the profile form to ask whether to follow everyone
  *
  * @param Action $action The action being executed
  *
  * @return boolean hook value
  */
 function onEndProfileFormData($action)
 {
     $user = common_current_user();
     $action->elementStart('li');
     // TRANS: Checkbox label in form for profile settings.
     $action->checkbox('followeveryone', _('Follow everyone'), $action->arg('followeveryone') ? $action->arg('followeveryone') : User_followeveryone_prefs::followEveryone($user->id));
     $action->elementEnd('li');
     return true;
 }
Exemplo n.º 5
0
 function onEndShowSections(Action $action)
 {
     if ($action->arg('action') != 'showstream') {
         return true;
     }
     $cur = common_current_user();
     if (empty($cur) || !$cur->hasRight(self::VIEWMODLOG)) {
         return true;
     }
     $profile = $action->profile;
     $ml = new ModLog();
     $ml->profile_id = $profile->id;
     $ml->orderBy("created");
     $cnt = $ml->find();
     if ($cnt > 0) {
         $action->elementStart('div', array('id' => 'entity_mod_log', 'class' => 'section'));
         $action->element('h2', null, _('Moderation'));
         $action->elementStart('table');
         while ($ml->fetch()) {
             $action->elementStart('tr');
             $action->element('td', null, strftime('%y-%m-%d', strtotime($ml->created)));
             $action->element('td', null, sprintf($ml->is_grant ? _('+%s') : _('-%s'), $ml->role));
             $action->elementStart('td');
             if ($ml->moderator_id) {
                 $mod = Profile::getKV('id', $ml->moderator_id);
                 if (empty($mod)) {
                     $action->text(_('[unknown]'));
                 } else {
                     $action->element('a', array('href' => $mod->profileurl, 'title' => $mod->fullname), $mod->nickname);
                 }
             } else {
                 $action->text(_('[unknown]'));
             }
             $action->elementEnd('td');
             $action->elementEnd('tr');
         }
         $action->elementEnd('table');
         $action->elementEnd('div');
     }
 }
 public function onEndShowHeadElements(Action $action)
 {
     if ($action instanceof ShowNoticeAction) {
         // Showing a notice
         $notice = Notice::getKV('id', $action->arg('notice'));
         try {
             $flink = Foreign_link::getByUserID($notice->profile_id, TWITTER_SERVICE);
             $fuser = Foreign_user::getForeignUser($flink->foreign_id, TWITTER_SERVICE);
         } catch (NoResultException $e) {
             return true;
         }
         $statusId = twitter_status_id($notice);
         if ($notice instanceof Notice && $notice->isLocal() && $statusId) {
             $tweetUrl = 'https://twitter.com/' . $fuser->nickname . '/status/' . $statusId;
             $action->element('link', array('rel' => 'syndication', 'href' => $tweetUrl));
         }
     }
     if (!$action instanceof AttachmentAction) {
         return true;
     }
     /* Twitter card support. See https://dev.twitter.com/docs/cards */
     /* @fixme: should we display twitter cards only for attachments posted
      *         by local users ? Seems mandatory to display twitter:creator
      *
      * Author: jbfavre
      */
     switch ($action->attachment->mimetype) {
         case 'image/pjpeg':
         case 'image/jpeg':
         case 'image/jpg':
         case 'image/png':
         case 'image/gif':
             $action->element('meta', array('name' => 'twitter:card', 'content' => 'photo'), null);
             $action->element('meta', array('name' => 'twitter:url', 'content' => common_local_url('attachment', array('attachment' => $action->attachment->id))), null);
             $action->element('meta', array('name' => 'twitter:image', 'content' => $action->attachment->url));
             $action->element('meta', array('name' => 'twitter:title', 'content' => $action->attachment->title));
             $ns = new AttachmentNoticeSection($action);
             $notices = $ns->getNotices();
             $noticeArray = $notices->fetchAll();
             // Should not have more than 1 notice for this attachment.
             if (count($noticeArray) != 1) {
                 break;
             }
             $post = $noticeArray[0];
             try {
                 $flink = Foreign_link::getByUserID($post->profile_id, TWITTER_SERVICE);
                 $fuser = Foreign_user::getForeignUser($flink->foreign_id, TWITTER_SERVICE);
                 $action->element('meta', array('name' => 'twitter:creator', 'content' => '@' . $fuser->nickname));
             } catch (NoResultException $e) {
                 // no foreign link and/or user for Twitter on this profile ID
             }
             break;
         default:
             break;
     }
     return true;
 }