X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FBookmark%2Fnewbookmark.php;h=d60d3d4670caab9b70be04257e7f8fa96abea0d7;hb=0b81532cbc7b957c65b58d38d04e09ff7eda2f36;hp=034e73b429ba1e2c70ded88b0fd03a5216325f30;hpb=f64103447188f71101ce90fdb2f76b1c6e5889a0;p=quix0rs-gnu-social.git diff --git a/plugins/Bookmark/newbookmark.php b/plugins/Bookmark/newbookmark.php index 034e73b429..d60d3d4670 100644 --- a/plugins/Bookmark/newbookmark.php +++ b/plugins/Bookmark/newbookmark.php @@ -4,7 +4,7 @@ * Copyright (C) 2010, StatusNet, Inc. * * Add a new bookmark - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -27,7 +27,6 @@ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ - if (!defined('STATUSNET')) { // This check helps protect against security problems; // your code file can't be executed directly from the web. @@ -44,21 +43,26 @@ if (!defined('STATUSNET')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ - class NewbookmarkAction extends Action { - private $_user = null; - private $_error = null; - private $_complete = null; - private $_title = null; - private $_url = null; - private $_tags = null; - private $_description = null; - - function title() - { - return _('New bookmark'); - } + protected $user = null; + protected $error = null; + protected $complete = null; + protected $title = null; + protected $url = null; + protected $tags = null; + protected $description = null; + + /** + * Returns the title of the action + * + * @return string Action title + */ + function title() + { + // TRANS: Title for action to create a new bookmark. + return _m('New bookmark'); + } /** * For initializing members of the class. @@ -67,25 +71,30 @@ class NewbookmarkAction extends Action * * @return boolean true */ - function prepare($argarray) { parent::prepare($argarray); - $this->_user = common_current_user(); + if ($this->boolean('ajax')) { + StatusNet::setApi(true); + } + + $this->user = common_current_user(); - if (empty($this->_user)) { - throw new ClientException(_("Must be logged in to post a bookmark."), 403); - } + if (empty($this->user)) { + // TRANS: Client exception thrown when trying to create a new bookmark while not logged in. + throw new ClientException(_m('Must be logged in to post a bookmark.'), + 403); + } - if ($this->isPost()) { - $this->checkSessionToken(); - } + if ($this->isPost()) { + $this->checkSessionToken(); + } - $this->_title = $this->trimmed('title'); - $this->_url = $this->trimmed('url'); - $this->_tags = $this->trimmed('tags'); - $this->_description = $this->trimmed('description'); + $this->title = $this->trimmed('title'); + $this->url = $this->trimmed('url'); + $this->tags = $this->trimmed('tags'); + $this->description = $this->trimmed('description'); return true; } @@ -97,16 +106,15 @@ class NewbookmarkAction extends Action * * @return void */ - function handle($argarray=null) { - parent::handle($argarray); + parent::handle($argarray); - if ($this->isPost()) { - $this->newBookmark(); - } else { - $this->showPage(); - } + if ($this->isPost()) { + $this->newBookmark(); + } else { + $this->showPage(); + } return; } @@ -116,102 +124,91 @@ class NewbookmarkAction extends Action * * @return void */ - function newBookmark() { - try { - if (empty($this->_title)) { - throw new ClientException(_('Bookmark must have a title.')); - } - - if (empty($this->_url)) { - throw new ClientException(_('Bookmark must have an URL.')); - } - - // XXX: filter "for:nickname" tags - - $tags = array_map('common_canonical_tag', - preg_split('/[\s,]+/', $this->_tags)); - - $hashtags = array(); - $taglinks = array(); - - foreach ($tags as $tag) { - $hashtags[] = '#'.$tag; - if (common_config('singleuser', 'enabled')) { - // regular TagAction isn't set up in 1user mode - $nickname = User::singleUserNickname(); - $url = common_local_url('showstream', - array('nickname' => $nickname, - 'tag' => $tag)); - } else { - $url = common_local_url('tag', array('tag' => $tag)); - } - $attrs = array('href' => $url, - 'rel' => $tag, - 'class' => 'tag'); - $taglinks[] = XMLStringer::estring('a', $attrs, $tag); - } - - $content = sprintf(_('"%s" %s %s %s'), - $this->_title, - File_redirection::makeShort($this->_url, $this->_user), - $this->_description, - implode(' ', $hashtags)); - - $rendered = sprintf(_(''. - '%s '. - '%s '. - '%s'. - ''), - htmlspecialchars($this->_url), - htmlspecialchars($this->_title), - htmlspecialchars($this->_description), - implode(' ', $taglinks)); - - $options = array('urls' => array($this->_url), - 'rendered' => $rendered, - 'tags' => $tags); - - $saved = Notice::saveNew($this->_user->id, - $content, - 'web', - $options); - - if (!empty($saved)) { - $nb = new Notice_bookmark(); - $nb->notice_id = $saved->id; - $nb->insert(); - } - - } catch (ClientException $ce) { - $this->_error = $ce->getMessage(); - $this->showPage(); - return; - } - - common_redirect($saved->bestUrl(), 303); + try { + if (empty($this->title)) { + // TRANS: Client exception thrown when trying to create a new bookmark without a title. + throw new ClientException(_m('Bookmark must have a title.')); + } + + if (empty($this->url)) { + // TRANS: Client exception thrown when trying to create a new bookmark without a URL. + throw new ClientException(_m('Bookmark must have an URL.')); + } + + $options = array(); + + ToSelector::fillOptions($this, $options); + + $saved = Bookmark::saveNew($this->user->getProfile(), + $this->title, + $this->url, + $this->tags, + $this->description, + $options); + + } catch (ClientException $ce) { + if ($this->boolean('ajax')) { + throw $ce; + } else { + $this->error = $ce->getMessage(); + $this->showPage(); + return; + } + } + + if ($this->boolean('ajax')) { + header('Content-Type: text/xml;charset=utf-8'); + $this->xw->startDocument('1.0', 'UTF-8'); + $this->elementStart('html'); + $this->elementStart('head'); + // TRANS: Page title after posting a bookmark. + $this->element('title', null, _m('Bookmark posted')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->showNotice($saved); + $this->elementEnd('body'); + $this->elementEnd('html'); + } else { + common_redirect($saved->bestUrl(), 303); + } } /** - * Show the bookmark form + * Output a notice + * + * Used to generate the notice code for Ajax results. + * + * @param Notice $notice Notice that was saved * * @return void */ + function showNotice($notice) + { + class_exists('NoticeList'); // @fixme hack for autoloader + $nli = new NoticeListItem($notice, $this); + $nli->show(); + } + /** + * Show the bookmark form + * + * @return void + */ function showContent() { - if (!empty($this->_error)) { - $this->element('p', 'error', $this->_error); - } + if (!empty($this->error)) { + $this->element('p', 'error', $this->error); + } - $form = new BookmarkForm($this, - $this->_title, - $this->_url, - $this->_tags, - $this->_description); + $form = new BookmarkForm($this, + $this->title, + $this->url, + $this->tags, + $this->description); - $form->show(); + $form->show(); return; } @@ -225,7 +222,6 @@ class NewbookmarkAction extends Action * * @return boolean is read only action? */ - function isReadOnly($args) { if ($_SERVER['REQUEST_METHOD'] == 'GET' ||