File: pg_compatibility-List_pm.patch

package info (click to toggle)
sympa 2.6.1-3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,940 kB
  • ctags: 1,069
  • sloc: perl: 8,446; makefile: 237; sh: 191; ansic: 172; lisp: 32
file content (54 lines) | stat: -rw-r--r-- 3,979 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
--- /nnx/sympa/inst/sympa-2.2.7/src/List.pm	Mon Jun 21 17:57:13 1999
+++ bin/List.pm	Tue Aug 17 15:52:23 1999
@@ -199,6 +199,10 @@
 	return undef;
     }
 
+    if ($Conf{'db_type'} eq 'Pg') { # Configure Postgres to use ISO format dates
+       $dbh->do ("SET DATESTYLE TO 'ISO';");
+    }
+
     do_log('debug','Connected to Database %s',$Conf{'db_name'});
 
     return 1;
@@ -942,7 +947,8 @@
 	    return undef unless db_connect();
 	}
 
-	unless ($statement = sprintf "SELECT email_user as email, gecos_user as gecos, reception_subscriber as reception, visibility_subscriber as visibility, cookie_delay_user as cookie_delay, lang_user as lang, UNIX_TIMESTAMP(date_subscriber) as date, substring_index(email_user,'.',-1) AS top, substring_index(replace(email_user,'\@','.'),'.',-2) AS dom FROM user,subscriber WHERE (list_subscriber = %s AND email_user = user_subscriber) ORDER BY top, dom",$dbh->quote($name)) {
+	unless ($statement = sprintf "SELECT email_user AS email, gecos_user AS gecos, reception_subscriber AS reception, visibility_subscriber AS visibility, cookie_delay_user AS cookie_delay, lang_user AS lang, date_subscriber AS date, SUBSTRING(user_subscriber FROM position('\@' IN user_subscriber) FOR 50) AS dom FROM user,subscriber WHERE (list_subscriber = %s AND email_user = user_subscriber) ORDER BY dom",$dbh->quote($name)) {
+#	unless ($statement = sprintf "SELECT email_user as email, gecos_user as gecos, reception_subscriber as reception, visibility_subscriber as visibility, cookie_delay_user as cookie_delay, lang_user as lang, UNIX_TIMESTAMP(date_subscriber) as date, substring_index(email_user,'.',-1) AS top, substring_index(replace(email_user,'\@','.'),'.',-2) AS dom FROM user,subscriber WHERE (list_subscriber = %s AND email_user = user_subscriber) ORDER BY top, dom",$dbh->quote($name)) {
 
 	    do_log('debug','Unable to define SQL statement : %s', $dbh->errstr);
 	    return undef;
@@ -960,6 +966,10 @@
 	
 	my $user = $sth->fetchrow_hashref;
 
+	my $formatted_date = $user->{'date'};
+	$formatted_date =~ /^(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/;
+	$user->{'date'} = POSIX::mktime ($6, $5, $4, $3, $2, $1);
+
 	$self->{'total'} = 1 if $user;
 
 	return $user;
@@ -1114,7 +1124,8 @@
 	       next unless ($map_field{$field} and $map_table{$field});
 	       if ($map_table{$field} eq $table) {
 		   if ($field eq 'date') {
-		       $value = "FROM_UNIXTIME($value)";
+#		       $value = "FROM_UNIXTIME($value)";
+			$value = $dbh->quote(POSIX::strftime ("%Y-%m-%d %H:%M:%S", localtime ($value)));
 		   }else {
 		       $value = $dbh->quote($value);
 		   }
@@ -1290,7 +1301,8 @@
        }
 
        ## Update Subscriber Table
-       unless ( $statement = sprintf "REPLACE INTO subscriber (user_subscriber, list_subscriber, date_subscriber, reception_subscriber, visibility_subscriber) VALUES (%s, %s, FROM_UNIXTIME(%s), %s, %s)",$dbh->quote($who), $dbh->quote($name), $dbh->quote($values->{'date'}), $dbh->quote($values->{'reception'}), $dbh->quote($values->{'visibility'}) ) {
+#       unless ( $statement = sprintf "REPLACE INTO subscriber (user_subscriber, list_subscriber, date_subscriber, reception_subscriber, visibility_subscriber) VALUES (%s, %s, FROM_UNIXTIME(%s), %s, %s)",$dbh->quote($who), $dbh->quote($name), $dbh->quote($values->{'date'}), $dbh->quote($values->{'reception'}), $dbh->quote($values->{'visibility'}) ) {
+       unless ( $statement = sprintf "DELETE FROM subscriber WHERE (user_subscriber=%s) AND (list_subscriber=%s); INSERT INTO subscriber (user_subscriber, list_subscriber, date_subscriber, reception_subscriber, visibility_subscriber) VALUES (%s, %s, %s, %s, %s)", $dbh->quote($who), $dbh->quote($name), $dbh->quote($who), $dbh->quote($name), $dbh->quote(POSIX::strftime ("%Y-%m-%d %H:%M:%S", localtime($values->{'date'}))), $dbh->quote($values->{'reception'}), $dbh->quote($values->{'visibility'}) ) {
 	   do_log('debug','Unable to define SQL statement : %s', $dbh->errstr);
 	   return undef;
        }