diff --git a/index.php b/index.php index b060a3d52a..049d46afce 100644 --- a/index.php +++ b/index.php @@ -272,11 +272,7 @@ function main() return; } - // Note the order here: arguments from the URL mapper will - // override request params that have been sent. This ensures - // that for instance an action parameter can't be overridden - // with an arbitrary action class. - $args = array_merge($_REQUEST, $args); + $args = array_merge($args, $_REQUEST); Event::handle('ArgsInitialize', array(&$args)); diff --git a/lib/router.php b/lib/router.php index 9640ec1e04..a0ea996ecf 100644 --- a/lib/router.php +++ b/lib/router.php @@ -128,12 +128,13 @@ class Router { if (empty($this->m)) { $k = self::cacheKey(); - $m = Cache::get($k); + $c = Cache::instance(); + $m = $c->get($k); if (!empty($m)) { $this->m = $m; } else { $this->m = $this->initialize(); - Cache::set($k, $this->m); + $c->set($k, $this->m); } } } @@ -156,18 +157,18 @@ class Router static function cacheKey() { $plugins = StatusNet::getActivePlugins(); - $names = array(); + $names = array(); - foreach ($plugins as $plugin) { - $names[] = $plugin[0]; - } + foreach ($plugins as $plugin) { + $names[] = $plugin[0]; + } - $names = array_unique($names); - asort($names); + $names = array_unique($names); + asort($names); - // Unique enough. + // Unique enough. - $uniq = crc32(implode(',', $names)); + $uniq = crc32(implode(',', $names)); return Cache::key('router:'.STATUSNET_VERSION.':'.$uniq); } diff --git a/plugins/Awesomeness/AwesomenessPlugin.php b/plugins/Awesomeness/AwesomenessPlugin.php new file mode 100644 index 0000000000..294f094389 --- /dev/null +++ b/plugins/Awesomeness/AwesomenessPlugin.php @@ -0,0 +1,110 @@ +. + * + * @category Plugin + * @package StatusNet + * @author Jeroen De Dauw + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Fun sample plugin: tweaks input data and adds a 'Cornify' widget to sidebar. + * + * @category Plugin + * @package StatusNet + * @author Jeroen De Dauw + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class AwesomenessPlugin extends Plugin +{ + + const VERSION = '0.0.42'; + + public function onPluginVersion(&$versions) + { + $versions[] = array( + 'name' => 'Awesomeness', + 'version' => self::VERSION, + 'author' => 'Jeroen De Dauw', + 'homepage' => 'http://status.net/wiki/Plugin:Awesomeness', + 'rawdescription' => _m( + 'The Awesomeness plugin adds adittional awesomeness ' . + 'to your StatusNet install. ' + ) + ); + return true; + } + + /** + * Add the conrnify button + * + * @param Action $action the current action + * + * @return void + */ + + function onEndShowSections(Action $action) + { + $action->elementStart('div', array('id' => 'cornify_section', + 'class' => 'section')); + + $action->raw( + << + Cornify + + +EOT + ); + + $action->elementEnd('div'); + } + + /** + * Hook for new-notice form processing to take our HTML goodies; + * won't affect API posting etc. + * + * @param NewNoticeAction $action + * @param User $user + * @param string $content + * @param array $options + * @return boolean hook return + */ + function onStartSaveNewNoticeWeb($action, $user, &$content, &$options) + { + $content = htmlspecialchars($content); + $options['rendered'] = preg_replace("/(^|\s|-)((?:awesome|awesomeness)[\?!\.\,]?)(\s|$)/i", " $2 ", $content); + } + +} \ No newline at end of file diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index 93a35b3f38..b4f80a50a4 100644 --- a/plugins/BitlyUrl/BitlyUrlPlugin.php +++ b/plugins/BitlyUrl/BitlyUrlPlugin.php @@ -118,7 +118,7 @@ class BitlyUrlPlugin extends UrlShortenerPlugin $params = http_build_query(array( 'login' => $this->getLogin(), 'apiKey' => $this->getApiKey()), '', '&'); - $serviceUrl = sprintf($this->serviceUrl, $url) . '&' . $params; + $serviceUrl = sprintf($this->serviceUrl, urlencode($url)) . '&' . $params; $request = HTTPClient::start(); return $request->get($serviceUrl); @@ -145,6 +145,10 @@ class BitlyUrlPlugin extends UrlShortenerPlugin common_log(LOG_INFO, $body); $json = json_decode($body, true); if ($json['statusCode'] == 'OK') { + if (!isset($json['results'][$url])) { + common_log(LOG_ERR, "bit.ly returned OK response, but didn't find expected URL $url in $body"); + return false; + } $data = $json['results'][$url]; if (isset($data['shortUrl'])) { return true; diff --git a/plugins/TwitterBridge/twitteradminpanel.php b/plugins/TwitterBridge/twitteradminpanel.php index d05a2c6b3e..1a83b47d56 100644 --- a/plugins/TwitterBridge/twitteradminpanel.php +++ b/plugins/TwitterBridge/twitteradminpanel.php @@ -133,6 +133,11 @@ class TwitteradminpanelAction extends AdminPanelAction $config->query('COMMIT'); + // Flush the router cache: we may have enabled/disabled bridging, + // which will add or remove some actions. + $cache = Cache::instance(); + $cache->delete(Router::cacheKey()); + return; }