Permalink
Browse files

Fix bug 1722 : PosgtreSQL wants all fields in select to be in Group b…

…y clause

or agregate function
Fix issue for lambda function (incorrect number of params)

git-svn-id: http://piwigo.org/svn/trunk@6510 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information...
nikrou
nikrou committed Jun 9, 2010
1 parent 80f2c70 commit 175e9a110d89f452f39210d4536622afeddebe44
Showing with 30 additions and 12 deletions.
  1. +4 −0 include/config_default.inc.php
  2. +4 −4 include/dblayer/functions_pgsql.inc.php
  3. +22 −8 include/functions_user.inc.php
@@ -514,6 +514,10 @@
// piwigo_users table.
$conf['users_table'] = $prefixeTable.'users';
+// If you decide to use external authentication
+// change conf below by $conf['external_authentification'] = true;
+$conf['external_authentification'] = false;
+
// Other tables can be changed, if you define associated constants
// Example:
// define('USER_INFOS_TABLE', 'pwg_main'.'user_infos');
@@ -314,7 +314,7 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
pwg_query($query);
}
} // foreach update
- } // if mysql_ver or count<X
+ }
else
{
$all_fields = array_merge($dbfields['primary'], $dbfields['update']);
@@ -326,7 +326,7 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
pwg_query($query);
mass_inserts($temporary_tablename, $all_fields, $datas);
if ( $flags & MASS_UPDATES_SKIP_EMPTY )
- $func_set = create_function('$s, $t', 'return "$s = IFNULL(t2.$s, '.$tablename.'.$s)";');
+ $func_set = create_function('$s', 'return "$s = NULLIF(t2.$s, '.$tablename.'.$s)";');
else
$func_set = create_function('$s', 'return "$s = t2.$s";');
@@ -343,7 +343,7 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
implode(
"\n AND ",
array_map(
- create_function('$s, $t', 'return "'.$tablename.'.$s = t2.$s";'),
+ create_function('$s', 'return "'.$tablename.'.$s = t2.$s";'),
$dbfields['primary']
)
);
@@ -585,7 +585,7 @@ function pwg_db_get_weekday($date)
}
// my_error returns (or send to standard output) the message concerning the
-// error occured for the last mysql query.
+// error occured for the last pgsql query.
function my_error($header, $die)
{
$error = '[pgsql error]'.pg_last_error()."\n";
@@ -290,26 +290,40 @@ function getuserdata($user_id, $use_cache)
$row = pwg_db_fetch_assoc(pwg_query($query));
- // retrieve additional user data
+ // retrieve user info
$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.'\'
- GROUP BY ui.user_id
+ WHERE ui.user_id = '.$user_id.'
;';
+
$result = pwg_query($query);
$user_infos_row = pwg_db_fetch_assoc($result);
- if (!isset($user_infos_row['counter']) or 0 == $user_infos_row['counter']) {
- create_user_infos($user_id);
+
+ // retrieve additional user data ?
+ if ($conf['external_authentification'])
+ {
+ $query = '
+SELECT
+ COUNT(1) AS counter,
+ 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.'
+ GROUP BY ui.user_id
+;';
+ if (pwg_db_fetch_row(pwg_query($query))!=1)
+ {
+ create_user_infos($user_id);
- $result = pwg_query($query);
- $user_infos_row = pwg_db_fetch_assoc($result);
+ $result = pwg_query($user_info_query);
+ $user_infos_row = pwg_db_fetch_assoc($result);
+ }
}
// then merge basic + additional user data

0 comments on commit 175e9a1

Please sign in to comment.