summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Facebook/locale/Facebook.pot (renamed from plugins/Facebook/locale/Facebook.po)0
-rw-r--r--plugins/GeonamesPlugin.php18
-rw-r--r--plugins/Gravatar/locale/Gravatar.pot (renamed from plugins/Gravatar/locale/Gravatar.po)0
-rw-r--r--plugins/Mapstraction/locale/Mapstraction.pot (renamed from plugins/Mapstraction/locale/Mapstraction.po)0
-rw-r--r--plugins/Meteor/MeteorPlugin.php20
-rw-r--r--plugins/MobileProfile/MobileProfilePlugin.php36
-rw-r--r--plugins/OStatus/classes/Ostatus_profile.php38
-rw-r--r--plugins/OStatus/locale/OStatus.pot (renamed from plugins/OStatus/locale/OStatus.po)0
-rw-r--r--plugins/OpenID/locale/OpenID.pot (renamed from plugins/OpenID/locale/OpenID.po)0
-rw-r--r--plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot (renamed from plugins/PoweredByStatusNet/locale/PoweredByStatusNet.po)0
-rw-r--r--plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot (renamed from plugins/RequireValidatedEmail/locale/RequireValidatedEmail.po)0
-rw-r--r--plugins/Sample/locale/Sample.pot (renamed from plugins/Sample/locale/Sample.po)0
-rw-r--r--plugins/TwitterBridge/locale/TwitterBridge.pot (renamed from plugins/TwitterBridge/locale/TwitterBridge.po)0
13 files changed, 99 insertions, 13 deletions
diff --git a/plugins/Facebook/locale/Facebook.po b/plugins/Facebook/locale/Facebook.pot
index 4bc00248c..4bc00248c 100644
--- a/plugins/Facebook/locale/Facebook.po
+++ b/plugins/Facebook/locale/Facebook.pot
diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php
index f018e2694..718af9e0b 100644
--- a/plugins/GeonamesPlugin.php
+++ b/plugins/GeonamesPlugin.php
@@ -55,9 +55,13 @@ class GeonamesPlugin extends Plugin
public $username = null;
public $token = null;
public $expiry = 7776000; // 90-day expiry
+ public $timeout = 2; // Web service timeout in seconds.
+ public $timeoutWindow = 60; // Further lookups in this process will be disabled for N seconds after a timeout.
public $cachePrefix = null; // Optional shared memcache prefix override
// to share lookups between local instances.
+ protected $lastTimeout = null; // timestamp of last web service timeout
+
/**
* convert a name into a Location object
*
@@ -437,9 +441,21 @@ class GeonamesPlugin extends Plugin
function getGeonames($method, $params)
{
+ if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) {
+ throw new Exception("skipping due to recent web service timeout");
+ }
+
$client = HTTPClient::start();
+ $client->setConfig('connect_timeout', $this->timeout);
+ $client->setConfig('timeout', $this->timeout);
- $result = $client->get($this->wsUrl($method, $params));
+ try {
+ $result = $client->get($this->wsUrl($method, $params));
+ } catch (Exception $e) {
+ common_log(LOG_ERR, __METHOD__ . ": " . $e->getMessage());
+ $this->lastTimeout = time();
+ throw $e;
+ }
if (!$result->isOk()) {
throw new Exception("HTTP error code " . $result->code);
diff --git a/plugins/Gravatar/locale/Gravatar.po b/plugins/Gravatar/locale/Gravatar.pot
index d7275b929..d7275b929 100644
--- a/plugins/Gravatar/locale/Gravatar.po
+++ b/plugins/Gravatar/locale/Gravatar.pot
diff --git a/plugins/Mapstraction/locale/Mapstraction.po b/plugins/Mapstraction/locale/Mapstraction.pot
index 1dd5dbbcc..1dd5dbbcc 100644
--- a/plugins/Mapstraction/locale/Mapstraction.po
+++ b/plugins/Mapstraction/locale/Mapstraction.pot
diff --git a/plugins/Meteor/MeteorPlugin.php b/plugins/Meteor/MeteorPlugin.php
index 5b345d7c2..5600d5fcc 100644
--- a/plugins/Meteor/MeteorPlugin.php
+++ b/plugins/Meteor/MeteorPlugin.php
@@ -65,6 +65,26 @@ class MeteorPlugin extends RealtimePlugin
parent::__construct();
}
+ /**
+ * Pull settings from config file/database if set.
+ */
+ function initialize()
+ {
+ $settings = array('webserver',
+ 'webport',
+ 'controlport',
+ 'controlserver',
+ 'channelbase');
+ foreach ($settings as $name) {
+ $val = common_config('meteor', $name);
+ if ($val !== false) {
+ $this->$name = $val;
+ }
+ }
+
+ return parent::initialize();
+ }
+
function _getScripts()
{
$scripts = parent::_getScripts();
diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php
index 0b37734b7..60bb3b68f 100644
--- a/plugins/MobileProfile/MobileProfilePlugin.php
+++ b/plugins/MobileProfile/MobileProfilePlugin.php
@@ -73,9 +73,11 @@ class MobileProfilePlugin extends WAP20Plugin
$this->serveMobile = true;
} else {
// If they like the WAP 2.0 mimetype, serve them MP
- if (strstr('application/vnd.wap.xhtml+xml', $type) !== false) {
- $this->serveMobile = true;
- } else {
+ // @fixme $type is undefined, making this if case useless and spewing errors.
+ // What's the intent?
+ //if (strstr('application/vnd.wap.xhtml+xml', $type) !== false) {
+ // $this->serveMobile = true;
+ //} else {
// If they are a mobile device that supports WAP 2.0,
// serve them MP
@@ -139,8 +141,19 @@ class MobileProfilePlugin extends WAP20Plugin
'windows ce'
);
+ $blacklist = array(
+ 'ipad', // Larger screen handles the full theme fairly well.
+ );
+
$httpuseragent = strtolower($_SERVER['HTTP_USER_AGENT']);
+ foreach ($blacklist as $md) {
+ if (strstr($httpuseragent, $md) !== false) {
+ $this->serveMobile = false;
+ return true;
+ }
+ }
+
foreach ($this->mobiledevices as $md) {
if (strstr($httpuseragent, $md) !== false) {
$this->setMobileFeatures($httpuseragent);
@@ -149,7 +162,7 @@ class MobileProfilePlugin extends WAP20Plugin
break;
}
}
- }
+ //}
// If they are okay with MP, and the site has a mobile server,
// redirect there
@@ -167,7 +180,9 @@ class MobileProfilePlugin extends WAP20Plugin
return true;
}
- if (!$type) {
+ // @fixme $type is undefined, making this if case useless and spewing errors.
+ // What's the intent?
+ //if (!$type) {
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ?
$_SERVER['HTTP_ACCEPT'] : null;
@@ -180,7 +195,7 @@ class MobileProfilePlugin extends WAP20Plugin
throw new ClientException(_('This page is not available in a '.
'media type you accept'), 406);
}
- }
+ //}
header('Content-Type: '.$type);
@@ -221,9 +236,12 @@ class MobileProfilePlugin extends WAP20Plugin
function onStartShowHeadElements($action)
{
- if (!$action->serveMobile) {
- return true;
- }
+ // @fixme nothing appears to set a serveMobile on any action,
+ // so this is useless and spews errors. Is this supposed to be
+ // checking $this?
+ //if (!$action->serveMobile) {
+ // return true;
+ //}
$action->showTitle();
$action->showShortcutIcon();
diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
index 8ba2ce0c3..e3b3daa2c 100644
--- a/plugins/OStatus/classes/Ostatus_profile.php
+++ b/plugins/OStatus/classes/Ostatus_profile.php
@@ -726,7 +726,8 @@ class Ostatus_profile extends Memcached_DataObject
*
* @param string $profile_url
* @return Ostatus_profile
- * @throws Exception
+ * @throws Exception on various error conditions
+ * @throws OStatusShadowException if this reference would obscure a local user/group
*/
public static function ensureProfileURL($profile_url, $hints=array())
@@ -813,7 +814,7 @@ class Ostatus_profile extends Memcached_DataObject
* remote profiles.
*
* @return mixed Ostatus_profile or null
- * @throws Exception for local profiles
+ * @throws OStatusShadowException for local profiles
*/
static function getFromProfileURL($profile_url)
{
@@ -836,7 +837,7 @@ class Ostatus_profile extends Memcached_DataObject
$user = User::staticGet('id', $profile->id);
if (!empty($user)) {
- throw new Exception("'$profile_url' is the profile for local user '{$user->nickname}'.");
+ throw new OStatusShadowException($profile, "'$profile_url' is the profile for local user '{$user->nickname}'.");
}
// Continue discovery; it's a remote profile
@@ -1538,6 +1539,7 @@ class Ostatus_profile extends Memcached_DataObject
* @param string $addr webfinger address
* @return Ostatus_profile
* @throws Exception on error conditions
+ * @throws OStatusShadowException if this reference would obscure a local user/group
*/
public static function ensureWebfinger($addr)
{
@@ -1616,9 +1618,18 @@ class Ostatus_profile extends Memcached_DataObject
$oprofile = self::ensureProfileURL($hints['profileurl'], $hints);
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->uri);
return $oprofile;
+ } catch (OStatusShadowException $e) {
+ // We've ended up with a remote reference to a local user or group.
+ // @fixme ideally we should be able to say who it was so we can
+ // go back and refer to it the regular way
+ throw $e;
} catch (Exception $e) {
common_log(LOG_WARNING, "Failed creating profile from profile URL '$profileUrl': " . $e->getMessage());
// keep looking
+ //
+ // @fixme this means an error discovering from profile page
+ // may give us a corrupt entry using the webfinger URI, which
+ // will obscure the correct page-keyed profile later on.
}
}
@@ -1720,3 +1731,24 @@ class Ostatus_profile extends Memcached_DataObject
return $file;
}
}
+
+/**
+ * Exception indicating we've got a remote reference to a local user,
+ * not a remote user!
+ *
+ * If we can ue a local profile after all, it's available as $e->profile.
+ */
+class OStatusShadowException extends Exception
+{
+ public $profile;
+
+ /**
+ * @param Profile $profile
+ * @param string $message
+ */
+ function __construct($profile, $message) {
+ $this->profile = $profile;
+ parent::__construct($message);
+ }
+}
+
diff --git a/plugins/OStatus/locale/OStatus.po b/plugins/OStatus/locale/OStatus.pot
index 7e33a0eed..7e33a0eed 100644
--- a/plugins/OStatus/locale/OStatus.po
+++ b/plugins/OStatus/locale/OStatus.pot
diff --git a/plugins/OpenID/locale/OpenID.po b/plugins/OpenID/locale/OpenID.pot
index 7ed879835..7ed879835 100644
--- a/plugins/OpenID/locale/OpenID.po
+++ b/plugins/OpenID/locale/OpenID.pot
diff --git a/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.po b/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot
index 8f8434a85..8f8434a85 100644
--- a/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.po
+++ b/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot
diff --git a/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.po b/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot
index 49ac4f6f4..49ac4f6f4 100644
--- a/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.po
+++ b/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot
diff --git a/plugins/Sample/locale/Sample.po b/plugins/Sample/locale/Sample.pot
index a52c4ec01..a52c4ec01 100644
--- a/plugins/Sample/locale/Sample.po
+++ b/plugins/Sample/locale/Sample.pot
diff --git a/plugins/TwitterBridge/locale/TwitterBridge.po b/plugins/TwitterBridge/locale/TwitterBridge.pot
index eff125579..eff125579 100644
--- a/plugins/TwitterBridge/locale/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/TwitterBridge.pot