From 55894f02c7c79365c31e211f9b73c5e38e977914 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sun, 8 Mar 2015 20:10:20 +0100 Subject: [PATCH] TagProfileAction and OStatusPlugin now use less redundant code --- actions/tagprofile.php | 65 +++++---------------- plugins/OStatus/OStatusPlugin.php | 31 ---------- plugins/OStatus/classes/Ostatus_profile.php | 1 - 3 files changed, 16 insertions(+), 81 deletions(-) diff --git a/actions/tagprofile.php b/actions/tagprofile.php index 871626ef19..79a401c6a9 100644 --- a/actions/tagprofile.php +++ b/actions/tagprofile.php @@ -19,7 +19,6 @@ if (!defined('GNUSOCIAL')) { exit(1); } -require_once INSTALLDIR . '/lib/settingsaction.php'; require_once INSTALLDIR . '/lib/peopletags.php'; class TagprofileAction extends FormAction @@ -29,36 +28,32 @@ class TagprofileAction extends FormAction protected $target = null; protected $form = 'TagProfile'; - protected function prepare(array $args=array()) + protected function doPreparation() { - parent::prepare($args); - $id = $this->trimmed('id'); - if (!$id) { - $this->target = null; - } else { + $uri = $this->trimmed('uri'); + if (!empty($id)) { $this->target = Profile::getKV('id', $id); if (!$this->target instanceof Profile) { // TRANS: Client error displayed when referring to non-existing profile ID. $this->clientError(_('No profile with that ID.')); } + } elseif (!empty($uri)) { + $this->target = Profile::fromUri($uri); + } else { + // TRANS: Client error displayed when trying to tag a user but no ID or profile is provided. + $this->clientError(_('No profile identifier provided.')); } - if ($this->target instanceof Profile && !$this->scoped->canTag($this->target)) { + if (!$this->scoped->canTag($this->target)) { // TRANS: Client error displayed when trying to tag a user that cannot be tagged. $this->clientError(_('You cannot tag this user.')); } - return true; - } + $this->formOpts = $this->target; - protected function handle() - { - if (Event::handle('StartTagProfileAction', array($this, $this->target))) { - parent::handle(); - Event::handle('EndTagProfileAction', array($this, $this->target)); - } + return true; } function title() @@ -115,17 +110,8 @@ class TagprofileAction extends FormAction } } - protected function getForm() + protected function doPost() { - $class = $this->form.'Form'; - $form = new $class($this, $this->target); - return $form; - } - - protected function handlePost() - { - parent::handlePost(); // Does nothing for now - $tagstring = $this->trimmed('tags'); $token = $this->trimmed('token'); @@ -144,22 +130,16 @@ class TagprofileAction extends FormAction if (!common_valid_profile_tag($tag)) { // TRANS: Form validation error displayed if a given tag is invalid. // TRANS: %s is the invalid tag. - $this->showForm(sprintf(_('Invalid tag: "%s".'), $tag)); - return; + throw new ClientException(sprintf(_('Invalid tag: "%s".'), $tag)); } $tag_priv[$tag] = $private; } } - try { - $result = Profile_tag::setTags($this->scoped->id, $this->target->id, $tags, $tag_priv); - if (!$result) { - throw new Exception('The tags could not be saved.'); - } - } catch (Exception $e) { - $this->showForm($e->getMessage()); - return false; + $result = Profile_tag::setTags($this->scoped->getID(), $this->target->getID(), $tags, $tag_priv); + if (!$result) { + throw new ServerException('The tags could not be saved.'); } if ($this->boolean('ajax')) { @@ -188,17 +168,4 @@ class TagprofileAction extends FormAction Event::handle('EndSavePeopletags', array($this, $tagstring)); } } - - function showPageNotice() - { - if ($this->error) { - $this->element('p', 'error', $this->error); - } else { - $this->elementStart('div', 'instructions'); - $this->element('p', null, - // TRANS: Page notice. - _('Use this form to add your subscribers or subscriptions to lists.')); - $this->elementEnd('div'); - } - } } diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index 15af953b8c..774a13be82 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -233,37 +233,6 @@ class OStatusPlugin extends Plugin return true; } - function onStartTagProfileAction($action, $profile) - { - $err = null; - $uri = $action->trimmed('uri'); - - if (!$profile && $uri) { - try { - if (Validate::email($uri)) { - $oprofile = Ostatus_profile::ensureWebfinger($uri); - } else if (Validate::uri($uri)) { - $oprofile = Ostatus_profile::ensureProfileURL($uri); - } else { - // TRANS: Exception in OStatus when invalid URI was entered. - throw new Exception(_m('Invalid URI.')); - } - - // redirect to the new profile. - common_redirect(common_local_url('tagprofile', array('id' => $oprofile->profile_id)), 303); - - } catch (Exception $e) { - // TRANS: Error message in OStatus plugin. Do not translate the domain names example.com - // TRANS: and example.net, as these are official standard domain names for use in examples. - $err = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); - } - - $action->showForm($err); - return false; - } - return true; - } - /* * If the field being looked for is URI look for the profile */ diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 77b1e9bef5..2cf4f1bdd1 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -2147,7 +2147,6 @@ class Ostatus_profile extends Managed_DataObject throw new ServerException(sprintf(_m('Unrecognized URI protocol for profile: %1$s (%2$s).'), $protocol, $uri)); - break; } } else { // TRANS: Server exception. %s is a URI.