// Class for sending emails
require_once(__DIR__.'/authutils.php-class');
-bindtextdomain('kairo_auth', 'en'); // XXX: Should negotiate locale.
-bind_textdomain_codeset('kairo_auth', 'utf-8');
-
// Connect to our MySQL DB
$db = new PDO($dbdata['dsn'], $dbdata['username'], $dbdata['password']);
// Instantiate auth utils.
$utils = new AuthUtils($settings, $db);
+$textdomain = 'kairo_auth';
+$textlocale = $utils->negotiateLocale(array('en', 'de'));
+putenv('LC_ALL='.$textlocale);
+bindtextdomain($textdomain, '../locale');
+bind_textdomain_codeset($textdomain, 'utf-8');
+textdomain($textdomain);
+
/* Creating the DB tables:
CREATE TABLE `auth_sessions` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
// function pwdNeedsRehash($user)
// Return true if the pwdhash field of the user uses an outdated standard and needs to be rehashed.
//
+ // function negotiateLocale($supportedLanguages)
+ // Return the language to use out of the given array of supported locales, via netotiation based on the HTTP Accept-Language header.
+ //
// function getGroupedEmails($group_id, [$exclude_email])
// Return all emails grouped in the specified group ID, optionally exclude a specific email (e.g. because you only want non-current entries)
//
}
}
+ function negotiateLocale($supportedLanguages) {
+ $nlocale = $supportedLanguages[0];
+ $headers = getAllHeaders();
+ $accLcomp = explode(',', $headers['Accept-Language']);
+ $accLang = array();
+ foreach ($accLcomp as $lcomp) {
+ if (strlen($lcomp)) {
+ $ldef = explode(';', $lcomp);
+ $accLang[$ldef[0]] = (float)((strpos(@$ldef[1],'q=')===0)?substr($ldef[1],2):1);
+ }
+ }
+ if (count($accLang)) {
+ $pLang = ''; $pLang_q = 0;
+ foreach ($supportedLanguages as $wantedLang) {
+ if (isset($accLang[$wantedLang]) && ($accLang[$wantedLang] > $pLang_q)) {
+ $pLang = $wantedLang;
+ $pLang_q = $accLang[$wantedLang];
+ }
+ }
+ if (strlen($pLang)) { $nlocale = $pLang; }
+ }
+ return $nlocale;
+ }
+
function getGroupedEmails($group_id, $exclude_email = '') {
$emails = array();
if (intval($group_id)) {