*
* @return boolean hook value
*/
- function onEndShowStyles($action)
+ function onEndShowStyles(Action $action)
{
$action->cssLink($this->path('css/poll.css'));
return true;
/**
* 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,
function saveNoticeFromActivity(Activity $activity, Profile $profile, array $options=array())
{
// @fixme
- common_log(LOG_DEBUG, "XXX activity: " . var_export($activity, true));
- common_log(LOG_DEBUG, "XXX profile: " . var_export($profile, true));
- common_log(LOG_DEBUG, "XXX options: " . var_export($options, true));
+ common_debug("XXX activity: " . var_export($activity, true));
+ common_debug("XXX profile: " . var_export($profile, true));
+ common_debug("XXX options: " . var_export($options, true));
// Ok for now, we can grab stuff from the XML entry directly.
// This won't work when reading from JSON source
}
try {
$notice = Poll::saveNew($profile, $question, $opts, $options);
- common_log(LOG_DEBUG, "Saved Poll from ActivityStream data ok: notice id " . $notice->id);
+ common_debug("Saved Poll from ActivityStream data ok: notice id " . $notice->id);
return $notice;
} catch (Exception $e) {
- common_log(LOG_DEBUG, "Poll save from ActivityStream data failed: " . $e->getMessage());
+ common_debug("Poll save from ActivityStream data failed: " . $e->getMessage());
}
} else if ($responseElements->length) {
$data = $responseElements->item(0);
}
try {
$notice = Poll_response::saveNew($profile, $poll, $selection, $options);
- common_log(LOG_DEBUG, "Saved Poll_response ok, notice id: " . $notice->id);
+ common_debug("Saved Poll_response ok, notice id: " . $notice->id);
return $notice;
} catch (Exception $e) {
- common_log(LOG_DEBUG, "Poll response save fail: " . $e->getMessage());
+ common_debug("Poll response save fail: " . $e->getMessage());
}
} else {
- common_log(LOG_DEBUG, "YYY no poll data");
+ common_debug("YYY no poll data");
}
}
}
*/
public function activityObjectOutputJson(ActivityObject $obj, array &$out)
{
- common_log(LOG_DEBUG, 'QQQ: ' . var_export($obj, true));
+ common_debug('QQQ: ' . var_export($obj, true));
if (isset($obj->pollQuestion)) {
/**
* "poll": {
}
}
-
- /**
- * @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' => 'e-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' => 'e-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' => 'e-content'));
- }
-
function entryForm($out)
{
return new NewPollForm($out);
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'));
+ }
+ }
}