aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--boot.php2
-rw-r--r--database.sql1
-rw-r--r--include/pgettext.php23
-rw-r--r--mod/dfrn_confirm.php4
-rw-r--r--mod/dfrn_notify.php11
-rw-r--r--mod/invite.php2
-rw-r--r--mod/item.php5
-rw-r--r--mod/register.php19
-rw-r--r--mod/regmod.php6
-rw-r--r--update.php3
10 files changed, 69 insertions, 7 deletions
diff --git a/boot.php b/boot.php
index 12fd96e77..f72f4dd7f 100644
--- a/boot.php
+++ b/boot.php
@@ -6,7 +6,7 @@ ini_set('pcre.backtrack_limit', 250000);
define ( 'FRIENDIKA_VERSION', '2.2.989' );
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
-define ( 'DB_UPDATE_VERSION', 1054 );
+define ( 'DB_UPDATE_VERSION', 1055 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/database.sql b/database.sql
index c15a9ad9c..fdc08b7c8 100644
--- a/database.sql
+++ b/database.sql
@@ -406,6 +406,7 @@ CREATE TABLE IF NOT EXISTS `register` (
`created` DATETIME NOT NULL ,
`uid` INT(11) UNSIGNED NOT NULL,
`password` CHAR(255) NOT NULL,
+ `language` CHAR(16) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
diff --git a/include/pgettext.php b/include/pgettext.php
index 37e09b54d..47242f7ba 100644
--- a/include/pgettext.php
+++ b/include/pgettext.php
@@ -53,6 +53,29 @@ function get_language() {
}}
+function push_lang($language) {
+ global $lang, $a;
+
+ $a->langsave = $lang;
+
+ if(isset($a->strings) && count($a->strings)) {
+ $a->stringsave = $a->strings;
+ }
+ $a->strings = array();
+ load_translation_table($language);
+ $lang = $language;
+}
+
+function pop_lang() {
+ global $lang, $a;
+ if(isset($a->stringsave))
+ $a->strings = $a->stringsave;
+ else
+ $a->strings = array();
+
+ $lang = $a->langsave;
+}
+
// load string translation table for alternate language
diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php
index 4e2a70e04..7c11b78d5 100644
--- a/mod/dfrn_confirm.php
+++ b/mod/dfrn_confirm.php
@@ -632,12 +632,13 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
logger('dfrn_confirm: request: info updated');
- $r = q("SELECT * FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
+ $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `contact`.`id` = %d LIMIT 1",
intval($dfrn_record)
);
if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
+ push_lang($r[0]['language']);
$tpl = (($new_relation == REL_BUD)
? get_intltext_template('friend_complete_eml.tpl')
: get_intltext_template('intro_complete_eml.tpl'));
@@ -661,6 +662,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
if(!$res) {
// pointless throwing an error here and confusing the person at the other end of the wire.
}
+ pop_lang();
}
xml_status(0); // Success
return; // NOTREACHED
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index 30e95be21..65fd29eb3 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -185,6 +185,8 @@ function dfrn_notify_post(&$a) {
require_once('bbcode.php');
if($importer['notify-flags'] & NOTIFY_MAIL) {
+ push_lang($importer['language']);
+
// name of the automated email sender
$msg['notificationfromname'] = t('Administrator');
// noreply address to send from
@@ -250,6 +252,8 @@ function dfrn_notify_post(&$a) {
$email_html_body_tpl,
$email_text_body_tpl
);
+
+ pop_lang();
}
xml_status(0);
// NOTREACHED
@@ -387,6 +391,7 @@ function dfrn_notify_post(&$a) {
proc_run('php',"include/notifier.php","comment-import","$posted_id");
if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
+ push_lang($importer['language']);
require_once('bbcode.php');
$from = stripslashes($datarray['author-name']);
@@ -442,7 +447,7 @@ function dfrn_notify_post(&$a) {
$email_html_body_tpl,
$email_text_body_tpl
);
-
+ pop_lang();
}
}
xml_status(0);
@@ -514,6 +519,8 @@ function dfrn_notify_post(&$a) {
foreach($myconv as $conv) {
if(! link_compare($conv['author-link'],$importer_url))
continue;
+
+ push_lang($importer['language']);
require_once('bbcode.php');
$from = stripslashes($datarray['author-name']);
@@ -567,7 +574,7 @@ function dfrn_notify_post(&$a) {
$email_html_body_tpl,
$email_text_body_tpl
);
-
+ pop_lang();
break;
}
}
diff --git a/mod/invite.php b/mod/invite.php
index b34bb7d74..b52aa19f6 100644
--- a/mod/invite.php
+++ b/mod/invite.php
@@ -29,7 +29,7 @@ function invite_post(&$a) {
continue;
}
- $res = mail($recip, sprintf(t('Please join my network on %s'), $a->config['sitename']),
+ $res = mail($recip, sprintf( t('Please join my network on %s'), $a->config['sitename']),
$message,
"From: " . $a->user['email'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
diff --git a/mod/item.php b/mod/item.php
index 15dca3750..1a7acadf3 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -462,6 +462,7 @@ function item_post(&$a) {
// Send a notification email to the conversation owner, unless the owner is me and I wrote this item
if(($user['notify-flags'] & NOTIFY_COMMENT) && ($contact_record != $author)) {
+ push_lang($user['language']);
require_once('bbcode.php');
$from = $author['name'];
@@ -517,6 +518,8 @@ function item_post(&$a) {
$email_html_body_tpl,
$email_text_body_tpl
);
+
+ pop_lang();
}
}
else {
@@ -525,6 +528,7 @@ function item_post(&$a) {
// let me know if somebody did a wall-to-wall post on my profile
if(($user['notify-flags'] & NOTIFY_WALL) && ($contact_record != $author)) {
+ push_lang($user['language']);
require_once('bbcode.php');
$from = $author['name'];
@@ -578,6 +582,7 @@ function item_post(&$a) {
$email_html_body_tpl,
$email_text_body_tpl
);
+ pop_lang();
}
}
diff --git a/mod/register.php b/mod/register.php
index 95bf60e32..78dc75f77 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -3,6 +3,8 @@
if(! function_exists('register_post')) {
function register_post(&$a) {
+ global $lang;
+
$verified = 0;
$blocked = 1;
@@ -350,12 +352,22 @@ function register_post(&$a) {
}
$hash = random_string();
- $r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password` ) VALUES ( '%s', '%s', %d, '%s' ) ",
+ $r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password`, `language` ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
dbesc($hash),
dbesc(datetime_convert()),
intval($newuid),
- dbesc($new_password)
+ dbesc($new_password),
+ dbesc($lang)
+ );
+
+ $r = q("SELECT `language` FROM `user` WHERE `email` = '%s' LIMIT 1",
+ dbesc($a->config['admin_email'])
);
+ if(count($r))
+ push_lang($r[0]['language']);
+ else
+ push_lang('en');
+
$email_tpl = get_intltext_template("register_verify_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
@@ -373,6 +385,9 @@ function register_post(&$a) {
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
+
+ pop_lang();
+
if($res) {
info( t('Your registration is pending approval by the site owner.') . EOL ) ;
goaway($a->get_baseurl());
diff --git a/mod/regmod.php b/mod/regmod.php
index 2563a58d1..9873f1094 100644
--- a/mod/regmod.php
+++ b/mod/regmod.php
@@ -4,6 +4,8 @@
function regmod_content(&$a) {
+ global $lang;
+
$_SESSION['return_url'] = $a->cmd;
if(! local_user()) {
@@ -79,6 +81,8 @@ function regmod_content(&$a) {
proc_run('php',"include/directory.php","$url");
}
+ push_lang($register[0]['language']);
+
$email_tpl = get_intltext_template("register_open_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
@@ -95,6 +99,8 @@ function regmod_content(&$a) {
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
+ pop_lang();
+
if($res) {
info( t('Account approved.') . EOL );
return;
diff --git a/update.php b/update.php
index 541d59946..488648791 100644
--- a/update.php
+++ b/update.php
@@ -480,3 +480,6 @@ function update_1053() {
q("ALTER TABLE `item` ADD `extid` CHAR( 255 ) NOT NULL AFTER `parent-uri` , ADD INDEX ( `extid` ) ");
}
+function update_1054() {
+ q("ALTER TABLE `register` ADD `language` CHAR( 16 ) NOT NULL AFTER `password` ");
+}