if (!defined('GNUSOCIAL')) { exit(1); }
-require_once INSTALLDIR . '/lib/settingsaction.php';
require_once INSTALLDIR . '/lib/peopletags.php';
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()
}
}
- protected function getForm()
- {
- $class = $this->form.'Form';
- $form = new $class($this, $this->target);
- return $form;
- }
-
- protected function handlePost()
+ protected function doPost()
{
- parent::handlePost(); // Does nothing for now
-
$tagstring = $this->trimmed('tags');
$token = $this->trimmed('token');
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')) {
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');
- }
- }
}
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
*/