summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-11-30 16:34:52 -0800
committerBrion Vibber <brion@pobox.com>2010-11-30 16:34:52 -0800
commit749367e12f9742d7fd5ee028230fefa627599125 (patch)
treeb52d7de6bb389fdc5a0e631d8022f409c2908d21
parent6bdce2b1e5f7250e5309048cfb64eeefa770f3bb (diff)
parentb4fc54c308936477706acb5cc3c4acae4c3f3a4d (diff)
Merge branch 'master' of gitorious.org:statusnet/mainline into 0.9.x
Conflicts: lib/router.php
-rw-r--r--index.php6
-rw-r--r--lib/router.php21
-rw-r--r--plugins/Awesomeness/AwesomenessPlugin.php110
-rw-r--r--plugins/BitlyUrl/BitlyUrlPlugin.php6
-rw-r--r--plugins/TwitterBridge/twitteradminpanel.php5
5 files changed, 132 insertions, 16 deletions
diff --git a/index.php b/index.php
index b060a3d52..049d46afc 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 9640ec1e0..a0ea996ec 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 000000000..294f09438
--- /dev/null
+++ b/plugins/Awesomeness/AwesomenessPlugin.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to add adittional awesomenss to StatusNet
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Jeroen De Dauw <jeroendedauw@gmail.com>
+ * @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 <jeroendedauw@gmail.com>
+ * @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(
+ <<<EOT
+ <a href="http://www.cornify.com" onclick="cornify_add();return false;">
+ <img src="http://www.cornify.com/assets/cornify.gif" width="61" height="16" border="0" alt="Cornify" />
+ </a>
+ <script type="text/javascript">(function() {
+ var js = document.createElement('script');
+ js.type = 'text/javascript';
+ js.async = true;
+ js.src = 'http://www.cornify.com/js/cornify.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(js);
+})();</script>
+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", " <b>$2</b> ", $content);
+ }
+
+} \ No newline at end of file
diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php
index 93a35b3f3..b4f80a50a 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 d05a2c6b3..1a83b47d5 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;
}