$schema = Schema::get();
$schema->ensureTable('poll', Poll::schemaDef());
$schema->ensureTable('poll_response', Poll_response::schemaDef());
+ $schema->ensureTable('user_poll_prefs', User_poll_prefs::schemaDef());
return true;
}
return true;
}
- /**
- * Load related modules when needed
- *
- * @param string $cls Name of the class to be loaded
- *
- * @return boolean hook value; true means continue processing, false means stop.
- */
- function onAutoload($cls)
- {
- $dir = dirname(__FILE__);
-
- switch ($cls)
- {
- case 'ShowpollAction':
- case 'NewpollAction':
- case 'RespondpollAction':
- include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
- return false;
- case 'Poll':
- case 'Poll_response':
- include_once $dir.'/'.$cls.'.php';
- return false;
- case 'NewPollForm':
- case 'PollResponseForm':
- case 'PollResultForm':
- include_once $dir.'/'.strtolower($cls).'.php';
- return false;
- default:
- return true;
- }
- }
-
/**
* Map URLs to actions
*
array('action' => 'respondpoll'),
array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'));
+ $m->connect('settings/poll',
+ array('action' => 'pollsettings'));
+
return true;
}
// TRANS: Exception thrown trying to respond to a poll without a poll reference.
throw new Exception(_m('Invalid poll response: No poll reference.'));
}
- $poll = Poll::staticGet('uri', $pollUri);
+ $poll = Poll::getKV('uri', $pollUri);
if (!$poll) {
// TRANS: Exception thrown trying to respond to a non-existing poll.
throw new Exception(_m('Invalid poll response: Poll is unknown.'));
}
return true;
}
+
+ // Hide poll responses for @chuck
+
+ function onEndNoticeWhoGets($notice, &$ni) {
+ if ($notice->object_type == self::POLL_RESPONSE_OBJECT) {
+ foreach ($ni as $id => $source) {
+ $user = User::getKV('id', $id);
+ if (!empty($user)) {
+ $pollPrefs = User_poll_prefs::getKV('user_id', $user->id);
+ if (!empty($pollPrefs) && ($pollPrefs->hide_responses)) {
+ unset($ni[$id]);
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Menu item for personal subscriptions/groups area
+ *
+ * @param Action $action action being executed
+ *
+ * @return boolean hook return
+ */
+
+ function onEndAccountSettingsNav($action)
+ {
+ $action_name = $action->trimmed('action');
+
+ $action->menuItem(common_local_url('pollsettings'),
+ // TRANS: Poll plugin menu item on user settings page.
+ _m('MENU', 'Polls'),
+ // TRANS: Poll plugin tooltip for user settings menu item.
+ _m('Configure poll behavior'),
+ $action_name === 'pollsettings');
+
+ return true;
+ }
}