]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/apistatusesretweet.php
Merge branch 'nightly' into repeat_as_shareplugin
[quix0rs-gnu-social.git] / actions / apistatusesretweet.php
index fc71d2274332625e6fa46713b5dfc42dad714eac..922d395154f2a364c410dca2b45cf57f9c2ededf 100644 (file)
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET')) {
-    exit(1);
-}
-
-require_once INSTALLDIR . '/lib/apiauth.php';
-require_once INSTALLDIR . '/lib/mediafile.php';
+if (!defined('GNUSOCIAL')) { exit(1); }
 
 /**
  * Repeat a notice through the API
@@ -43,9 +38,10 @@ require_once INSTALLDIR . '/lib/mediafile.php';
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 class ApiStatusesRetweetAction extends ApiAuthAction
 {
+    protected $needPost = true;
+
     var $original = null;
 
     /**
@@ -54,43 +50,18 @@ class ApiStatusesRetweetAction extends ApiAuthAction
      * @param array $args $_REQUEST args
      *
      * @return boolean success flag
-     *
      */
-
-    function prepare($args)
+    protected function prepare(array $args=array())
     {
         parent::prepare($args);
 
-        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-            $this->clientError(_('This method requires a POST.'),
-                               400, $this->format);
-            return false;
-        }
-
         $id = $this->trimmed('id');
 
-        $this->original = Notice::staticGet('id', $id);
+        $this->original = Notice::getKV('id', $id);
 
-        if (empty($this->original)) {
-            $this->clientError(_('No such notice'),
-                               400, $this->format);
-            return false;
-        }
-
-        $this->user = $this->auth_user;
-
-        if ($this->user->id == $notice->profile_id) {
-            $this->clientError(_('Cannot repeat your own notice'));
-                               400, $this->format);
-            return false;
-        }
-
-        $profile = $this->user->getProfile();
-
-        if ($profile->hasRepeated($id)) {
-            $this->clientError(_('Already repeated that notice'),
-                               400, $this->format);
-            return false;
+        if (!$this->original instanceof Notice) {
+            // TRANS: Client error displayed trying to repeat a non-existing notice through the API.
+            $this->clientError(_('No such notice.'), 400, $this->format);
         }
 
         return true;
@@ -105,14 +76,11 @@ class ApiStatusesRetweetAction extends ApiAuthAction
      *
      * @return void
      */
-
-    function handle($args)
+    protected function handle()
     {
-        parent::handle($args);
+        parent::handle();
 
-        $repeat = $this->original->repeat($this->user->id, $this->source);
-
-        common_broadcast_notice($repeat);
+        $repeat = $this->original->repeat($this->scoped, $this->source);
 
         $this->showNotice($repeat);
     }
@@ -122,7 +90,6 @@ class ApiStatusesRetweetAction extends ApiAuthAction
      *
      * @return void
      */
-
     function showNotice($notice)
     {
         if (!empty($notice)) {