diff options
author | plegall <plg@piwigo.org> | 2010-05-23 23:43:43 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2010-05-23 23:43:43 +0000 |
commit | 3181dded77150a39ff0ea853c5e379171e0272b2 (patch) | |
tree | 5a4a51f3b357724e90012500bee8075a62f8d086 /include/functions_user.inc.php | |
parent | 9bef83abe8f266ac0f2e7e367a1cb218aa247407 (diff) |
merge r6312 from branch 2.1 to trunk
bug 1684 fixed: the test to check availability of the user_infos line was
wrong. I had changed the old db_num_rows > 0 because it was not working with
SQLite. As suggested by nicolas, let's use a simpler trick "count(1)" in the
query itself, this way it should work with any database engine.
I've also removed the while (true) (ugly infinite loop, with a condition for
exit) that was producing an infinite loop for Piwigo installations with 2.0
database model and 2.1 code (before launching upgrade.php)
git-svn-id: http://piwigo.org/svn/trunk@6315 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/functions_user.inc.php')
-rw-r--r-- | include/functions_user.inc.php | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php index b8922ffec..0c9412e38 100644 --- a/include/functions_user.inc.php +++ b/include/functions_user.inc.php @@ -267,6 +267,7 @@ function getuserdata($user_id, $use_cache) $userdata = array(); + // retrieve basic user data $query = ' SELECT '; $is_first = true; @@ -289,26 +290,29 @@ SELECT '; $row = pwg_db_fetch_assoc(pwg_query($query)); - while (true) - { - $query = ' -SELECT ui.*, uc.*, t.name AS theme_name + // retrieve additional user data + $query = ' +SELECT + COUNT(1) AS counter, + ui.*, + uc.*, + t.name AS theme_name FROM '.USER_INFOS_TABLE.' AS ui LEFT JOIN '.USER_CACHE_TABLE.' AS uc ON ui.user_id = uc.user_id LEFT JOIN '.THEMES_TABLE.' AS t ON t.id = ui.theme - WHERE ui.user_id = \''.$user_id.'\''; + WHERE ui.user_id = \''.$user_id.'\' +;'; + $result = pwg_query($query); + $user_infos_row = pwg_db_fetch_assoc($result); + if (0 == $user_infos_row['counter']) { + create_user_infos($user_id); + $result = pwg_query($query); - if ($result) - { - break; - } - else - { - create_user_infos($user_id); - } + $user_infos_row = pwg_db_fetch_assoc($result); } - $row = array_merge($row, pwg_db_fetch_assoc($result)); + // then merge basic + additional user data + $row = array_merge($row, $user_infos_row); foreach ($row as $key => $value) { |