summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/action.php3
-rw-r--r--lib/apiauth.php2
-rw-r--r--lib/util.php43
3 files changed, 41 insertions, 7 deletions
diff --git a/lib/action.php b/lib/action.php
index 10394c789..491d7d481 100644
--- a/lib/action.php
+++ b/lib/action.php
@@ -798,11 +798,14 @@ class Action extends HTMLOutputter // lawsuit
{
$this->element('dt', array('id' => 'site_statusnet_license'), _('StatusNet software license'));
$this->elementStart('dd', null);
+ // @fixme drop the final spaces in the messages when at good spot
+ // to let translations get updated.
if (common_config('site', 'broughtby')) {
$instr = _('**%%site.name%%** is a microblogging service brought to you by [%%site.broughtby%%](%%site.broughtbyurl%%). ');
} else {
$instr = _('**%%site.name%%** is a microblogging service. ');
}
+ $instr .= ' ';
$instr .= sprintf(_('It runs the [StatusNet](http://status.net/) microblogging software, version %s, available under the [GNU Affero General Public License](http://www.fsf.org/licensing/licenses/agpl-3.0.html).'), STATUSNET_VERSION);
$output = common_markup_to_html($instr);
$this->raw($output);
diff --git a/lib/apiauth.php b/lib/apiauth.php
index f63c84d8f..32502399f 100644
--- a/lib/apiauth.php
+++ b/lib/apiauth.php
@@ -241,7 +241,7 @@ class ApiAuthAction extends ApiAction
$realm = common_config('site', 'name') . ' API';
}
- if (!isset($this->auth_user_nickname) && $required) {
+ if (empty($this->auth_user_nickname) && $required) {
header('WWW-Authenticate: Basic realm="' . $realm . '"');
// show error if the user clicks 'cancel'
diff --git a/lib/util.php b/lib/util.php
index c5dacb699..a30d69100 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -52,17 +52,43 @@ function common_init_language()
{
mb_internal_encoding('UTF-8');
- // gettext seems very picky... We first need to setlocale()
- // to a locale which _does_ exist on the system, and _then_
- // we can set in another locale that may not be set up
- // (say, ga_ES for Galego/Galician) it seems to take it.
- common_init_locale("en_US");
-
// Note that this setlocale() call may "fail" but this is harmless;
// gettext will still select the right language.
$language = common_language();
$locale_set = common_init_locale($language);
+ if (!$locale_set) {
+ // The requested locale doesn't exist on the system.
+ //
+ // gettext seems very picky... We first need to setlocale()
+ // to a locale which _does_ exist on the system, and _then_
+ // we can set in another locale that may not be set up
+ // (say, ga_ES for Galego/Galician) it seems to take it.
+ //
+ // For some reason C and POSIX which are guaranteed to work
+ // don't do the job. en_US.UTF-8 should be there most of the
+ // time, but not guaranteed.
+ $ok = common_init_locale("en_US");
+ if (!$ok) {
+ // Try to find a complete, working locale...
+ // @fixme shelling out feels awfully inefficient
+ // but I don't think there's a more standard way.
+ $all = `locale -a`;
+ foreach (explode("\n", $all) as $locale) {
+ if (preg_match('/\.utf[-_]?8$/i', $locale)) {
+ $ok = setlocale(LC_ALL, $locale);
+ if ($ok) {
+ break;
+ }
+ }
+ }
+ if (!$ok) {
+ common_log(LOG_ERR, "Unable to find a UTF-8 locale on this system; UI translations may not work.");
+ }
+ }
+ $locale_set = 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');
@@ -133,6 +159,11 @@ function common_munge_password($password, $id)
function common_check_user($nickname, $password)
{
+ // empty nickname always unacceptable
+ if (empty($nickname)) {
+ return false;
+ }
+
$authenticatedUser = false;
if (Event::handle('StartCheckPassword', array($nickname, $password, &$authenticatedUser))) {