summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/tagrss.php1
-rw-r--r--actions/userrss.php37
-rw-r--r--classes/Foreign_link.php17
-rw-r--r--config.php.sample4
-rw-r--r--install.php13
-rw-r--r--plugins/OStatus/classes/Ostatus_profile.php13
-rw-r--r--plugins/OpenID/User_openid.php14
-rw-r--r--plugins/TwitterBridge/twitter.php2
-rw-r--r--plugins/TwitterBridge/twitterauthorization.php13
-rw-r--r--plugins/TwitterBridge/twittersettings.php2
10 files changed, 91 insertions, 25 deletions
diff --git a/actions/tagrss.php b/actions/tagrss.php
index 75cbfa274..467a64abe 100644
--- a/actions/tagrss.php
+++ b/actions/tagrss.php
@@ -35,6 +35,7 @@ class TagrssAction extends Rss10Action
$this->clientError(_('No such tag.'));
return false;
} else {
+ $this->notices = $this->getNotices($this->limit);
return true;
}
}
diff --git a/actions/userrss.php b/actions/userrss.php
index 19e610551..e03eb9356 100644
--- a/actions/userrss.php
+++ b/actions/userrss.php
@@ -29,6 +29,8 @@ class UserrssAction extends Rss10Action
function prepare($args)
{
+ common_debug("UserrssAction");
+
parent::prepare($args);
$nickname = $this->trimmed('nickname');
$this->user = User::staticGet('nickname', $nickname);
@@ -38,20 +40,24 @@ class UserrssAction extends Rss10Action
$this->clientError(_('No such user.'));
return false;
} else {
- $this->notices = $this->getNotices($this->limit);
+ if (!empty($this->tag)) {
+ $this->notices = $this->getTaggedNotices();
+ } else {
+ $this->notices = $this->getNotices();
+ }
return true;
}
}
- function getTaggedNotices($tag = null, $limit=0)
+ function getTaggedNotices()
{
- $user = $this->user;
-
- if (is_null($user)) {
- return null;
- }
-
- $notice = $user->getTaggedNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit, 0, 0, null, $tag);
+ $notice = $this->user->getTaggedNotices(
+ $this->tag,
+ 0,
+ ($this->limit == 0) ? NOTICES_PER_PAGE : $this->limit,
+ 0,
+ 0
+ );
$notices = array();
while ($notice->fetch()) {
@@ -62,15 +68,12 @@ class UserrssAction extends Rss10Action
}
- function getNotices($limit=0)
+ function getNotices()
{
- $user = $this->user;
-
- if (is_null($user)) {
- return null;
- }
-
- $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
+ $notice = $this->user->getNotices(
+ 0,
+ ($limit == 0) ? NOTICES_PER_PAGE : $limit
+ );
$notices = array();
while ($notice->fetch()) {
diff --git a/classes/Foreign_link.php b/classes/Foreign_link.php
index ae8c22fd8..e47b2e309 100644
--- a/classes/Foreign_link.php
+++ b/classes/Foreign_link.php
@@ -113,4 +113,21 @@ class Foreign_link extends Memcached_DataObject
return User::staticGet($this->user_id);
}
+ // Make sure we only ever delete one record at a time
+ function safeDelete()
+ {
+ if (!empty($this->user_id)
+ && !empty($this->foreign_id)
+ && !empty($this->service))
+ {
+ return $this->delete();
+ } else {
+ common_debug(LOG_WARNING,
+ 'Foreign_link::safeDelete() tried to delete a '
+ . 'Foreign_link without a fully specified compound key: '
+ . var_export($this, true));
+ return false;
+ }
+ }
+
}
diff --git a/config.php.sample b/config.php.sample
index b8852dc67..33ac94a6d 100644
--- a/config.php.sample
+++ b/config.php.sample
@@ -124,6 +124,8 @@ $config['sphinx']['port'] = 3312;
// Email info, used for all outbound email
// $config['mail']['notifyfrom'] = 'microblog@example.net';
+// Domain for generating no-reply and incoming email addresses, if enabled.
+// Defaults to site server name.
// $config['mail']['domain'] = 'microblog.example.net';
// See http://pear.php.net/manual/en/package.mail.mail.factory.php for options
// $config['mail']['backend'] = 'smtp';
@@ -131,8 +133,6 @@ $config['sphinx']['port'] = 3312;
// 'host' => 'localhost',
// 'port' => 25,
// );
-// For incoming email, if enabled. Defaults to site server name.
-// $config['mail']['domain'] = 'incoming.example.net';
// exponential decay factor for tags, default 10 days
// raise this if traffic is slow, lower it if it's fast
diff --git a/install.php b/install.php
index 8c9b6138b..7fece8999 100644
--- a/install.php
+++ b/install.php
@@ -301,6 +301,19 @@ function checkPrereqs()
$pass = false;
}
+ // Look for known library bugs
+ $str = "abcdefghijklmnopqrstuvwxyz";
+ $replaced = preg_replace('/[\p{Cc}\p{Cs}]/u', '*', $str);
+ if ($str != $replaced) {
+ printf('<p class="error">PHP is linked to a version of the PCRE library ' .
+ 'that does not support Unicode properties. ' .
+ 'If you are running Red Hat Enterprise Linux / ' .
+ 'CentOS 5.3 or earlier, see <a href="' .
+ 'http://status.net/wiki/Red_Hat_Enterprise_Linux#PCRE_library' .
+ '">our documentation page</a> on fixing this.</p>');
+ $pass = false;
+ }
+
$reqs = array('gd', 'curl',
'xmlwriter', 'mbstring', 'xml', 'dom', 'simplexml');
diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
index fcca1a252..abc8100ce 100644
--- a/plugins/OStatus/classes/Ostatus_profile.php
+++ b/plugins/OStatus/classes/Ostatus_profile.php
@@ -428,10 +428,18 @@ class Ostatus_profile extends Memcached_DataObject
* Currently assumes that all items in the feed are new,
* coming from a PuSH hub.
*
- * @param DOMDocument $feed
+ * @param DOMDocument $doc
+ * @param string $source identifier ("push")
*/
- public function processFeed($feed, $source)
+ public function processFeed(DOMDocument $doc, $source)
{
+ $feed = $doc->documentElement;
+
+ if ($feed->localName != 'feed' || $feed->namespaceURI != Activity::ATOM) {
+ common_log(LOG_ERR, __METHOD__ . ": not an Atom feed, ignoring");
+ return;
+ }
+
$entries = $feed->getElementsByTagNameNS(Activity::ATOM, 'entry');
if ($entries->length == 0) {
common_log(LOG_ERR, __METHOD__ . ": no entries in feed update, ignoring");
@@ -449,6 +457,7 @@ class Ostatus_profile extends Memcached_DataObject
*
* @param DOMElement $entry
* @param DOMElement $feed for context
+ * @param string $source identifier ("push" or "salmon")
*/
public function processEntry($entry, $feed, $source)
{
diff --git a/plugins/OpenID/User_openid.php b/plugins/OpenID/User_openid.php
index 801b49ecc..5ef05b4c7 100644
--- a/plugins/OpenID/User_openid.php
+++ b/plugins/OpenID/User_openid.php
@@ -39,9 +39,21 @@ class User_openid extends Memcached_DataObject
);
}
+ /**
+ * List primary and unique keys in this table.
+ * Unique keys used for lookup *MUST* be listed to ensure proper caching.
+ */
function keys()
{
- return array('canonical' => 'K', 'display' => 'U');
+ return array('canonical' => 'K', 'display' => 'U', 'user_id' => 'U');
+ }
+
+ /**
+ * No sequence keys in this table.
+ */
+ function sequenceKey()
+ {
+ return array(false, false, false);
}
Static function hasOpenID($user_id)
diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php
index ceb83b037..508699939 100644
--- a/plugins/TwitterBridge/twitter.php
+++ b/plugins/TwitterBridge/twitter.php
@@ -264,7 +264,7 @@ function remove_twitter_link($flink)
common_log(LOG_INFO, 'Removing Twitter bridge Foreign link for ' .
"user $user->nickname (user id: $user->id).");
- $result = $flink->delete();
+ $result = $flink->safeDelete();
if (empty($result)) {
common_log(LOG_ERR, 'Could not remove Twitter bridge ' .
diff --git a/plugins/TwitterBridge/twitterauthorization.php b/plugins/TwitterBridge/twitterauthorization.php
index c93f6666b..bc004cb95 100644
--- a/plugins/TwitterBridge/twitterauthorization.php
+++ b/plugins/TwitterBridge/twitterauthorization.php
@@ -273,7 +273,13 @@ class TwitterauthorizationAction extends Action
$flink->user_id = $user_id;
$flink->service = TWITTER_SERVICE;
- $flink->delete(); // delete stale flink, if any
+
+ // delete stale flink, if any
+ $result = $flink->find(true);
+
+ if (!empty($result)) {
+ $flink->safeDelete();
+ }
$flink->user_id = $user_id;
$flink->foreign_id = $twuid;
@@ -455,6 +461,11 @@ class TwitterauthorizationAction extends Action
$user = User::register($args);
+ if (empty($user)) {
+ $this->serverError(_('Error registering user.'));
+ return;
+ }
+
$result = $this->saveForeignLink($user->id,
$this->twuid,
$this->access_token);
diff --git a/plugins/TwitterBridge/twittersettings.php b/plugins/TwitterBridge/twittersettings.php
index 0137060e9..631b29f52 100644
--- a/plugins/TwitterBridge/twittersettings.php
+++ b/plugins/TwitterBridge/twittersettings.php
@@ -250,7 +250,7 @@ class TwittersettingsAction extends ConnectSettingsAction
$user = common_current_user();
$flink = Foreign_link::getByUserID($user->id, TWITTER_SERVICE);
- $result = $flink->delete();
+ $result = $flink->safeDelete();
if (empty($result)) {
common_log_db_error($flink, 'DELETE', __FILE__);