summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-04-20 13:52:58 +0200
committerBrion Vibber <brion@pobox.com>2010-04-20 13:52:58 +0200
commitdf41287226d113f178ef66f320c8568566890fe9 (patch)
tree26cc4094f89dd76c1d95584c729ec4c32072610a /lib
parent056cce4b5eed28751bbad97e0dc826ee5310ff39 (diff)
parent61098faf5dd2685ea00c110bb4a3c871da17a300 (diff)
Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
Diffstat (limited to 'lib')
-rw-r--r--lib/distribqueuehandler.php17
-rw-r--r--lib/installer.php14
-rw-r--r--lib/mail.php4
-rw-r--r--lib/util.php31
4 files changed, 51 insertions, 15 deletions
diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php
index d2be7a92c..8f4b72d5c 100644
--- a/lib/distribqueuehandler.php
+++ b/lib/distribqueuehandler.php
@@ -49,19 +49,22 @@ class DistribQueueHandler
}
/**
- * Here's the meat of your queue handler -- you're handed a Notice
- * object, which you may do as you will with.
+ * Handle distribution of a notice after we've saved it:
+ * @li add to local recipient inboxes
+ * @li send email notifications to local @-reply targets
+ * @li run final EndNoticeSave plugin events
+ * @li put any remaining post-processing into the queues
*
* If this function indicates failure, a warning will be logged
* and the item is placed back in the queue to be re-run.
*
+ * @fixme addToInboxes is known to fail sometimes with large recipient sets
+ *
* @param Notice $notice
* @return boolean true on success, false on failure
*/
function handle($notice)
{
- // XXX: do we need to change this for remote users?
-
try {
$notice->addToInboxes();
} catch (Exception $e) {
@@ -69,6 +72,12 @@ class DistribQueueHandler
}
try {
+ $notice->sendReplyNotifications();
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
+
+ try {
Event::handle('EndNoticeSave', array($notice));
// Enqueue for other handlers
} catch (Exception $e) {
diff --git a/lib/installer.php b/lib/installer.php
index d0e46f95c..589a19a66 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -51,7 +51,7 @@ abstract class Installer
public static $dbModules = array(
'mysql' => array(
'name' => 'MySQL',
- 'check_module' => 'mysql', // mysqli?
+ 'check_module' => 'mysqli',
'installer' => 'mysql_db_installer',
),
'pgsql' => array(
@@ -341,7 +341,6 @@ abstract class Installer
* @param string $password
* @return mixed array of database connection params on success, false on failure
*
- * @fixme be consistent about using mysqli vs mysql!
* @fixme escape things in the connection string in case we have a funny pass etc
*/
function Mysql_Db_installer($host, $database, $username, $password)
@@ -349,14 +348,13 @@ abstract class Installer
$this->updateStatus("Starting installation...");
$this->updateStatus("Checking database...");
- $conn = mysql_connect($host, $username, $password);
- if (!$conn) {
+ $conn = mysqli_init();
+ if (!$conn->real_connect($host, $username, $password)) {
$this->updateStatus("Can't connect to server '$host' as '$username'.", true);
return false;
}
$this->updateStatus("Changing to database...");
- $res = mysql_select_db($database, $conn);
- if (!$res) {
+ if (!$conn->select_db($database)) {
$this->updateStatus("Can't change to database.", true);
return false;
}
@@ -438,9 +436,9 @@ abstract class Installer
// FIXME: use PEAR::DB or PDO instead of our own switch
switch ($type) {
case 'mysqli':
- $res = mysql_query($stmt, $conn);
+ $res = $conn->query($stmt);
if ($res === false) {
- $error = mysql_error();
+ $error = $conn->error();
}
break;
case 'pgsql':
diff --git a/lib/mail.php b/lib/mail.php
index c38d9f2f5..5fc584e28 100644
--- a/lib/mail.php
+++ b/lib/mail.php
@@ -636,7 +636,7 @@ function mail_notify_attn($user, $notice)
$bestname = $sender->getBestName();
- common_init_locale($user->language);
+ common_switch_locale($user->language);
if ($notice->hasConversation()) {
$conversationUrl = common_local_url('conversation',
@@ -679,7 +679,7 @@ function mail_notify_attn($user, $notice)
$headers = _mail_prepare_headers('mention', $user->nickname, $sender->nickname);
- common_init_locale();
+ common_switch_locale();
mail_to_user($user, $subject, $body, $headers);
}
diff --git a/lib/util.php b/lib/util.php
index b11bb06e3..81920eb44 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -41,11 +41,13 @@ function common_init_locale($language=null)
}
putenv('LANGUAGE='.$language);
putenv('LANG='.$language);
- return setlocale(LC_ALL, $language . ".utf8",
+ $ok = setlocale(LC_ALL, $language . ".utf8",
$language . ".UTF8",
$language . ".utf-8",
$language . ".UTF-8",
$language);
+
+ return $ok;
}
function common_init_language()
@@ -89,6 +91,32 @@ function common_init_language()
$locale_set = common_init_locale($language);
}
+ common_init_gettext();
+}
+
+/**
+ * @access private
+ */
+function common_init_gettext()
+{
+ setlocale(LC_CTYPE, 'C');
+ // So we do not have to make people install the gettext locales
+ $path = common_config('site','locale_path');
+ bindtextdomain("statusnet", $path);
+ bind_textdomain_codeset("statusnet", "UTF-8");
+ textdomain("statusnet");
+}
+
+/**
+ * Switch locale during runtime, and poke gettext until it cries uncle.
+ * Otherwise, sometimes it doesn't actually switch away from the old language.
+ *
+ * @param string $language code for locale ('en', 'fr', 'pt_BR' etc)
+ */
+function common_switch_locale($language=null)
+{
+ common_init_locale($language);
+
setlocale(LC_CTYPE, 'C');
// So we do not have to make people install the gettext locales
$path = common_config('site','locale_path');
@@ -97,6 +125,7 @@ function common_init_language()
textdomain("statusnet");
}
+
function common_timezone()
{
if (common_logged_in()) {