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; }
/** * 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; } }
/** * 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; }
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; }