]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/repeat.php
Merge branch 'master' into FeedPoller
[quix0rs-gnu-social.git] / actions / repeat.php
index 2ec641578bcf995a3ec7cd623a2f58298bbc2e65..9e527c526940a9600f79d2f0e7773d1142734e7b 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * Repeat action.
  *
@@ -46,50 +45,36 @@ class RepeatAction extends Action
     var $user = null;
     var $notice = null;
 
-    function prepare($args)
+    protected $needLogin = true;
+
+    protected function prepare(array $args=array())
     {
         parent::prepare($args);
 
-        $this->user = common_current_user();
-
-        if (empty($this->user)) {
-            $this->clientError(_('Only logged-in users can repeat notices.'));
-            return false;
-        }
-
         $id = $this->trimmed('notice');
 
         if (empty($id)) {
+            // TRANS: Client error displayed when trying to repeat a notice while not providing a notice ID.
             $this->clientError(_('No notice specified.'));
             return false;
         }
 
-        $this->notice = Notice::staticGet('id', $id);
+        $this->notice = Notice::getKV('id', $id);
 
-        if (empty($this->notice)) {
+        if (!($this->notice instanceof Notice)) {
+            // TRANS: Client error displayed when trying to repeat a non-existing notice.
             $this->clientError(_('No notice specified.'));
             return false;
         }
 
-        if ($this->user->id == $this->notice->profile_id) {
-            $this->clientError(_('You cannot repeat your own notice.'));
-            return false;
-        }
-
-        $token  = $this->trimmed('token-'.$id);
+        $token = $this->trimmed('token-'.$id);
 
         if (empty($token) || $token != common_session_token()) {
+            // TRANS: Client error displayed when the session token does not match or is not given.
             $this->clientError(_('There was a problem with your session token. Try again, please.'));
             return false;
         }
 
-        $profile = $this->user->getProfile();
-
-        if ($profile->hasRepeated($id)) {
-            $this->clientError(_('You already repeated that notice.'));
-            return false;
-        }
-
         return true;
     }
 
@@ -100,25 +85,27 @@ class RepeatAction extends Action
      *
      * @return void
      */
-    function handle($args)
+    protected function handle()
     {
-        $repeat = $this->notice->repeat($this->user->id, 'web');
-
+        parent::handle();
 
+        $repeat = $this->notice->repeat($this->scoped->id, 'web');
 
         if ($this->boolean('ajax')) {
             $this->startHTML('text/xml;charset=utf-8');
             $this->elementStart('head');
+            // TRANS: Title after repeating a notice.
             $this->element('title', null, _('Repeated'));
             $this->elementEnd('head');
             $this->elementStart('body');
             $this->element('p', array('id' => 'repeat_response',
                                       'class' => 'repeated'),
+                                // TRANS: Confirmation text after repeating a notice.
                                 _('Repeated!'));
             $this->elementEnd('body');
-            $this->elementEnd('html');
+            $this->endHTML();
         } else {
-            // FIXME!
+            // @todo FIXME!
         }
     }
 }