diff --git a/boot.php b/boot.php index 12fd96e777..f72f4dd7fc 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', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index c15a9ad9cb..fdc08b7c83 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 37e09b54da..47242f7ba9 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 4e2a70e048..7c11b78d59 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 30e95be210..65fd29eb3c 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 b34bb7d74e..b52aa19f61 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 15dca37509..1a7acadf3a 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 95bf60e324..78dc75f77d 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,13 +352,23 @@ 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( '$sitename' => $a->config['sitename'], @@ -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 2563a58d14..9873f1094c 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 541d599461..4886487912 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` "); +}