forked from GNUsocial/gnu-social
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x
This commit is contained in:
@@ -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)
|
||||
{
|
||||
$client = HTTPClient::start();
|
||||
if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) {
|
||||
throw new Exception("skipping due to recent web service timeout");
|
||||
}
|
||||
|
||||
$result = $client->get($this->wsUrl($method, $params));
|
||||
$client = HTTPClient::start();
|
||||
$client->setConfig('connect_timeout', $this->timeout);
|
||||
$client->setConfig('timeout', $this->timeout);
|
||||
|
||||
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);
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
@@ -50,20 +50,47 @@ $encGroup = str_replace($marker, '%', $encGroup);
|
||||
$sql = "SELECT * FROM ostatus_profile WHERE uri LIKE '%s' OR uri LIKE '%s'";
|
||||
$oprofile->query(sprintf($sql, $encProfile, $encGroup));
|
||||
|
||||
echo "Found $oprofile->N bogus ostatus_profile entries for local users and groups:\n";
|
||||
$count = $oprofile->N;
|
||||
echo "Found $count bogus ostatus_profile entries shadowing local users and groups:\n";
|
||||
|
||||
while ($oprofile->fetch()) {
|
||||
echo "$oprofile->uri";
|
||||
|
||||
if ($dry) {
|
||||
echo " (unchanged)\n";
|
||||
$uri = $oprofile->uri;
|
||||
if (preg_match('!/group/(\d+)/id!', $oprofile->uri, $matches)) {
|
||||
$id = intval($matches[1]);
|
||||
$group = Local_group::staticGet('group_id', $id);
|
||||
if ($group) {
|
||||
$nick = $group->nickname;
|
||||
} else {
|
||||
$nick = '<deleted>';
|
||||
}
|
||||
echo "group $id ($nick) hidden by $uri";
|
||||
} else if (preg_match('!/user/(\d+)!', $uri, $matches)) {
|
||||
$id = intval($matches[1]);
|
||||
$user = User::staticGet('id', $id);
|
||||
if ($user) {
|
||||
$nick = $user->nickname;
|
||||
} else {
|
||||
$nick = '<deleted>';
|
||||
}
|
||||
echo "user $id ($nick) hidden by $uri";
|
||||
} else {
|
||||
echo " removing bogus ostatus_profile entry...";
|
||||
echo "$uri matched query, but we don't recognize it.\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($dry) {
|
||||
echo " - skipping\n";
|
||||
} else {
|
||||
echo " - removing bogus ostatus_profile entry...";
|
||||
$evil = clone($oprofile);
|
||||
$evil->delete();
|
||||
echo " ok\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo "done.\n";
|
||||
if ($count && $dry) {
|
||||
echo "NO CHANGES MADE -- To delete the bogus entries, run again without --dry-run option.\n";
|
||||
} else {
|
||||
echo "done.\n";
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user