[horde] Setting date and time preferences
Jan Schneider
jan at horde.org
Thu Apr 23 18:15:04 UTC 2015
Zitat von Jens Wahnes <wahnes at uni-koeln.de>:
> On Thu, Apr 23 2015, at 15:09:57 +0200, Jens Wahnes wrote:
>
>> I tried to use
>>
>> $currentlocale = $scope_ob->get("language");
>>
>> but that doesn't seem to work (there isn't any value set).
>
> After a while, I found a way to work around this. Not a particular
> beautiful way to do it, but it works. In case anyone else is
> interested, here's the function I came up with to select the default
> "24 hour clock" setting based on the current language (or the preferred
> language, if set). Feel free to use it -- or better yet: improve it.
Use $GLOBALS['language'].
> public function prefs_init($pref, $value, $username, $scope_ob)
> {
> // This hook receives the preference name, preference value,
> username, and
> // the master scope object (Horde_Prefs_Scope) as parameters
> and uses the
> // return value from the hook as the new preference value.
> //
> // Username will be null if the user is not authenticated.
>
> $loglevel="DEBUG"; # available choices: ERR, DEBUG, NOTICE, INFO
>
>
> Horde::log("prefs_init was called with these parameters:
> \$pref=$pref, \$value=$value, \$username=$username,
> \$scope_ob=".print_r($scope_ob,true), $loglevel);
>
> if ( ($pref == 'twentyFour') && isset($username) ) {
>
> Horde::log("prefs_init: I'm gonna get you one way ...", $loglevel);
> $currentlocale = $scope_ob->get("language");
> if ( ! ($currentlocale) ) {
> Horde::log("prefs_init: ... or another", $loglevel);
> $currentlocale = setlocale(LC_TIME, 0); // with second
> argument '0', it's not setlocale but getlocale, actually
> }
> Horde::log("prefs_init: \$currentlocale=$currentlocale", $loglevel);
>
> if ( strlen($currentlocale) > 5 ) {
> // not in pure ll_CC format, so throw away the rest, e.g.
> shorten 'de_DE.UTF-8' to 'de_DE'
> $currentlocale = substr($currentlocale, 0, 5);
> Horde::log("prefs_init: shortened \$currentlocale to
> $currentlocale", $loglevel);
> }
>
>
> $twelveHourLocales = array("ar_OM", "ar_SY", "en_US",
> "en_CA", "el_GR");
>
> if (in_array($currentlocale, $twelveHourLocales)) {
> Horde::log("Setting default 24-hour-clock pref to false
> because of $currentlocale locale", $loglevel);
> return false;
> }
> else {
> Horde::log("Default 24-hour-clock pref will be set to true
> because of $currentlocale locale", $loglevel);
> return true;
> }
> }
>
> return $value; // just as a safeguard
> }
>
>
>
> Jens
--
Jan Schneider
The Horde Project
http://www.horde.org/
https://www.facebook.com/hordeproject
More information about the horde
mailing list