/**
* 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'));
*
* @return value
*/
- function onPluginVersion(&$versions)
+ function onPluginVersion(array &$versions)
{
$versions[] = array('name' => 'Poll',
'version' => self::VERSION,
return array(self::POLL_OBJECT, self::POLL_RESPONSE_OBJECT);
}
-
- function adaptNoticeListItem($nli) {
- return new PollListItem($nli);
- }
-
/**
* When a notice is deleted, delete the related Poll
*
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'));
+ }
+ }
}