r2038 + introduce getUserAccounts_local() to enable upgrades for older installations
authorDenis Ovsienko <infrastation@yandex.ru>
Sun, 6 Jul 2008 22:28:06 +0000 (22:28 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sun, 6 Jul 2008 22:28:06 +0000 (22:28 +0000)
upgrade.php

index e02940310e50f3bae260efb8724fa23d52028c2f..4ce59081db926fa539f0479046a5bb42319ddd73 100644 (file)
@@ -1424,8 +1424,24 @@ catch (PDOException $e)
 // will have to dig into the DB for the user accounts.
 require_once 'inc/auth.php';
 
-// This will not fail sanely, because getUserAccounts() depends on showError()
-$accounts = getUserAccounts();
+// 1. This didn't fail sanely, because getUserAccounts() depended on showError()
+// 2. getUserAccounts() doesn't work for old DBs since 0.16.0. Let's have own
+// copy until it breaks too.
+
+function getUserAccounts_local ()
+{
+       global $dbxlink;
+       $query = 'select user_id, user_name, user_password_hash from UserAccount order by user_name';
+       if (($result = $dbxlink->query ($query)) == NULL)
+               die ('SQL query failed in ' . __FUNCTION__);
+       $ret = array();
+       while ($row = $result->fetch (PDO::FETCH_ASSOC))
+               foreach (array ('user_id', 'user_name', 'user_password_hash') as $cname)
+                       $ret[$row['user_name']][$cname] = $row[$cname];
+       return $ret;
+}
+
+$accounts = getUserAccounts_local();
 
 // Only administrator is always authenticated locally, so reject others
 // for authenticate() to succeed.