]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Poll/PollPlugin.php
Plugins didn't match lib/plugin.php onPluginVersion function definition
[quix0rs-gnu-social.git] / plugins / Poll / PollPlugin.php
index 76f46171cc589e68c5e2afeb7c3cb0ba742fd8c7..53a491ef4776918d27ae6db14848bcc95d06c37e 100644 (file)
@@ -51,6 +51,8 @@ class PollPlugin extends MicroAppPlugin
     const POLL_OBJECT          = 'http://activityschema.org/object/poll';
     const POLL_RESPONSE_OBJECT = 'http://activityschema.org/object/poll-response';
 
+    var $oldSaveNew = true;
+
     /**
      * Database schema setup
      *
@@ -84,11 +86,11 @@ class PollPlugin extends MicroAppPlugin
     /**
      * Map URLs to actions
      *
-     * @param Net_URL_Mapper $m path-to-action mapper
+     * @param URLMapper $m path-to-action mapper
      *
      * @return boolean hook value; true means continue processing, false means stop.
      */
-    function onRouterInitialized($m)
+    public function onRouterInitialized(URLMapper $m)
     {
         $m->connect('main/poll/new',
                     array('action' => 'newpoll'));
@@ -118,7 +120,7 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return value
      */
-    function onPluginVersion(&$versions)
+    function onPluginVersion(array &$versions)
     {
         $versions[] = array('name' => 'Poll',
                             'version' => self::VERSION,
@@ -142,7 +144,7 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value
      */
-    function deleteRelated($notice)
+    function deleteRelated(Notice $notice)
     {
         $p = Poll::getByNotice($notice);
 
@@ -162,7 +164,7 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return Notice resulting notice
      */
-    function saveNoticeFromActivity($activity, $profile, $options=array())
+    function saveNoticeFromActivity(Activity $activity, Profile $profile, array $options=array())
     {
         // @fixme
         common_log(LOG_DEBUG, "XXX activity: " . var_export($activity, true));
@@ -219,7 +221,7 @@ class PollPlugin extends MicroAppPlugin
         }
     }
 
-    function activityObjectFromNotice($notice)
+    function activityObjectFromNotice(Notice $notice)
     {
         assert($this->isMyNotice($notice));
 
@@ -235,7 +237,7 @@ class PollPlugin extends MicroAppPlugin
         }
     }
 
-    function activityObjectFromNoticePollResponse($notice)
+    function activityObjectFromNoticePollResponse(Notice $notice)
     {
         $object = new ActivityObject();
         $object->id      = $notice->uri;
@@ -258,7 +260,7 @@ class PollPlugin extends MicroAppPlugin
         return $object;
     }
 
-    function activityObjectFromNoticePoll($notice)
+    function activityObjectFromNoticePoll(Notice $notice)
     {
         $object = new ActivityObject();
         $object->id      = $notice->uri;
@@ -373,70 +375,6 @@ class PollPlugin extends MicroAppPlugin
         }
     }
 
-
-    /**
-     * @fixme WARNING WARNING WARNING parent class closes the final div that we
-     * open here, but we probably shouldn't open it here. Check parent class
-     * and Bookmark plugin for if that's right.
-     */
-    function showNotice(Notice $notice, $out)
-    {
-        switch ($notice->object_type) {
-        case self::POLL_OBJECT:
-            return $this->showNoticePoll($notice, $out);
-        case self::POLL_RESPONSE_OBJECT:
-            return $this->showNoticePollResponse($notice, $out);
-        default:
-            // TRANS: Exception thrown when performing an unexpected action on a poll.
-            // TRANS: %s is the unexpected object type.
-            throw new Exception(sprintf(_m('Unexpected type for poll plugin: %s.'), $notice->object_type));
-        }
-    }
-
-    function showNoticePoll(Notice $notice, $out)
-    {
-        $user = common_current_user();
-
-        // @hack we want regular rendering, then just add stuff after that
-        $nli = new NoticeListItem($notice, $out);
-        $nli->showNotice();
-
-        $out->elementStart('div', array('class' => 'entry-content poll-content'));
-        $poll = Poll::getByNotice($notice);
-        if ($poll) {
-            if ($user) {
-                $profile = $user->getProfile();
-                $response = $poll->getResponse($profile);
-                if ($response) {
-                    // User has already responded; show the results.
-                    $form = new PollResultForm($poll, $out);
-                } else {
-                    $form = new PollResponseForm($poll, $out);
-                }
-                $form->show();
-            }
-        } else {
-            // TRANS: Error text displayed if no poll data could be found.
-            $out->text(_m('Poll data is missing'));
-        }
-        $out->elementEnd('div');
-
-        // @fixme
-        $out->elementStart('div', array('class' => 'entry-content'));
-    }
-
-    function showNoticePollResponse(Notice $notice, $out)
-    {
-        $user = common_current_user();
-
-        // @hack we want regular rendering, then just add stuff after that
-        $nli = new NoticeListItem($notice, $out);
-        $nli->showNotice();
-
-        // @fixme
-        $out->elementStart('div', array('class' => 'entry-content'));
-    }
-
     function entryForm($out)
     {
         return new NewPollForm($out);
@@ -502,4 +440,27 @@ class PollPlugin extends MicroAppPlugin
 
         return true;
     }
+
+    protected function showNoticeContent(Notice $stored, HTMLOutputter $out, Profile $scoped=null)
+    {
+        if ($stored->object_type == self::POLL_RESPONSE_OBJECT) {
+            parent::showNoticeContent($stored, $out, $scoped);
+            return;
+        }
+
+        // If the stored notice is a POLL_OBJECT
+        $poll = Poll::getByNotice($stored);
+        if ($poll instanceof Poll) {
+            if (!$scoped instanceof Profile || $poll->getResponse($scoped) instanceof Poll_response) {
+                // Either the user is not logged in or it has already responded; show the results.
+                $form = new PollResultForm($poll, $out);
+            } else {
+                $form = new PollResponseForm($poll, $out);
+            }
+            $form->show();
+        } else {
+            // TRANS: Error text displayed if no poll data could be found.
+            $out->text(_m('Poll data is missing'));
+        }
+    }
 }