diff -urN birthdays/birthdays.install birthdays_pgsql_fixed/birthdays.install --- birthdays/birthdays.install 2007-04-03 23:39:20.000000000 +0100 +++ birthdays_pgsql_fixed/birthdays.install 2007-04-20 15:40:05.752375000 +0100 @@ -1,38 +1,42 @@ -= 0), + birthday date NOT NULL default '0000-01-01', + PRIMARY KEY (uid) + );"); + break; + } +} + +function birthdays_uninstall() { + db_query('DROP TABLE {dob}'); + variable_del('birthdays_last_cron'); + variable_del('birthdays_list_number'); + variable_del('birthdays_days_number'); + variable_del('birthdays_remind'); + variable_del('birthdays_send_user'); + variable_del('birthdays_send_user_message'); + variable_del('birthdays_send_user_subject'); + variable_del('birthdays_use_starsign'); + variable_del('birthdays_starsign_link'); + variable_del('birthdays_date_format'); + variable_del('birthdays_required'); + variable_del('birthdays_profile_category'); +} + diff -urN birthdays/birthdays.module birthdays_pgsql_fixed/birthdays.module --- birthdays/birthdays.module 2007-04-03 23:39:20.000000000 +0100 +++ birthdays_pgsql_fixed/birthdays.module 2007-04-20 16:35:37.699625000 +0100 @@ -272,18 +272,42 @@ if (db_num_rows($result) == 0) { db_query("INSERT INTO {dob} (uid, birthday) VALUES ('%s', '%s-%s-%s');", $user->uid,$year,$month,$day); } else { - - db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s' LIMIT 1", $year,$month,$day,$user->uid); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s' LIMIT 1", $year,$month,$day,$user->uid); + break; + case 'pgsql': + db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s';", $year,$month,$day,$user->uid); + break; + } } break; - case 'view': - $queryResult = db_query("SELECT day(birthday) as d, - month(birthday) as m, - year(birthday) as y, - DATE_FORMAT( NOW( ) , '%%Y' ) - DATE_FORMAT( birthday, '%%Y' ) - - ( DATE_FORMAT( NOW( ) , '%%m%%d' ) < DATE_FORMAT( birthday, '%%m%%d' ) ) AS age - FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + case 'view': + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $queryResult = db_query("SELECT day(birthday) as d, + month(birthday) as m, + year(birthday) as y, + DATE_FORMAT( NOW( ) , '%%Y' ) - DATE_FORMAT( birthday, '%%Y' ) - + ( DATE_FORMAT( NOW( ) , '%%m%%d' ) < DATE_FORMAT( birthday, '%%m%%d' ) ) AS age + FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + break; + case 'pgsql': + $queryResult = db_query("SELECT extract (day from birthday) as d, + extract (month from birthday) as m, + extract (year from birthday) as y, + extract (year from CURRENT_DATE ) - extract (year from birthday) - + (CASE WHEN ((extract (month from CURRENT_DATE ) < extract (month from birthday )) OR ( + (extract (month from CURRENT_DATE ) = extract (month from birthday )) AND + (extract (day from CURRENT_DATE ) < extract (day from birthday) ))) THEN 1 ELSE 0 end + ) AS age + FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + break; + } + if (db_num_rows($queryResult)>0) { @@ -305,11 +329,21 @@ break; } if (user_access('edit DOB') || user_access('administer users')) - { - $queryResult = db_query("SELECT day(birthday) as d, - month(birthday) as m, - year(birthday) as y - FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + { + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $queryResult = db_query("SELECT day(birthday) as d, + month(birthday) as m, + year(birthday) as y + FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + case 'pgsql': + $queryResult = db_query("SELECT extract (day from birthday) as d, + extract (month from birthday) as m, + extract (year from birthday) as y + FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid); + break; + } $birthday = db_fetch_object($queryResult); $dob = array('day' => $birthday->d, 'month' => $birthday->m,