private function __construct()
{
}
-
+
public static function getInstance($id = '__default__')
{
if (empty(self::$_singleton)) {
}
return $result;
}
-
+
protected function _mapAction($action, $path)
{
if (!array_key_exists($action, $this->_actionToPath)) {
$this->_actionToPath[$action][] = $path;
return;
}
-
+
public function generate($values = array(), $qstring = array(), $anchor = '')
{
if (!array_key_exists('action', $values)) {
return parent::generate($values, $qstring, $anchor);
}
-
+
$action = $values['action'];
if (!array_key_exists($action, $this->_actionToPath)) {
return parent::generate($values, $qstring, $anchor);
}
-
+
$oldPaths = $this->paths;
$this->paths = $this->_actionToPath[$action];
$result = parent::generate($values, $qstring, $anchor);
/**
* Create a unique hashkey for the router.
- *
+ *
* The router's url map can change based on the version of the software
* you're running and the plugins that are enabled. To avoid having bad routes
* get stuck in the cache, the key includes a list of plugins and the software
* version.
- *
- * There can still be problems with a) differences in versions of the plugins and
+ *
+ * There can still be problems with a) differences in versions of the plugins and
* b) people running code between official versions, but these tend to be more
* sophisticated users who can grok what's going on and clear their caches.
- *
+ *
* @return string cache key string that should uniquely identify a router
*/
-
+
static function cacheKey()
{
$parts = array('router');
return Cache::codeKey(implode(':', $parts));
}
-
+
function initialize()
{
$m = StatusNet_URL_Mapper::getInstance();
// main stuff is repetitive
$main = array('login', 'logout', 'register', 'subscribe',
- 'unsubscribe', 'confirmaddress', 'recoverpassword',
+ 'unsubscribe', 'cancelsubscription', 'approvesub',
+ 'confirmaddress', 'recoverpassword',
'invite', 'favor', 'disfavor', 'sup',
'block', 'unblock', 'subedit',
'groupblock', 'groupunblock',
$m->connect('group/new', array('action' => 'newgroup'));
- foreach (array('edit', 'join', 'leave', 'delete', 'cancel') as $v) {
+ foreach (array('edit', 'join', 'leave', 'delete', 'cancel', 'approve') as $v) {
$m->connect('group/:nickname/'.$v,
array('action' => $v.'group'),
array('nickname' => Nickname::DISPLAY_FMT));
array('action' => 'makeadmin'),
array('nickname' => Nickname::DISPLAY_FMT));
+ $m->connect('group/:nickname/members/pending',
+ array('action' => 'groupqueue'),
+ array('nickname' => Nickname::DISPLAY_FMT));
+
$m->connect('group/:id/id',
array('action' => 'groupbyid'),
array('id' => '[0-9]+'));
array('tag' => self::REGEX_TAG));
}
+ $m->connect('subscribers/pending',
+ array('action' => 'subqueue',
+ 'nickname' => $nickname));
+
foreach (array('rss', 'groups') as $a) {
$m->connect($a,
array('action' => 'user'.$a,
array('action' => $a),
array('nickname' => Nickname::DISPLAY_FMT));
}
+ $m->connect(':nickname/subscribers/pending',
+ array('action' => 'subqueue'),
+ array('nickname' => Nickname::DISPLAY_FMT));
foreach (array('subscriptions', 'subscribers') as $a) {
$m->connect(':nickname/'.$a.'/:tag',