diff -r -C 2 signit.orig/signit.install signit/signit.install *** signit.orig/signit.install Thu Aug 23 20:24:08 2007 --- signit/signit.install Mon Sep 10 21:11:37 2007 *************** *** 42,45 **** --- 42,82 ---- "); break; + case 'pgsql': + db_query(" + CREATE TABLE {signit} ( + nid int NOT NULL default '0', + status int NOT NULL default '0', + data text NOT NULL, + PRIMARY KEY( nid ) + ) + "); + db_query(" + CREATE TABLE {signit_targets} ( + tid serial, + nid int NOT NULL default '0', + email varchar(225) NOT NULL default '0', + name varchar(225) NOT NULL, + PRIMARY KEY ( tid ) + ) + "); + db_query(" + CREATE TABLE {signit_signatures} ( + sid serial, + nid int NOT NULL default '0', + uid int NOT NULL default '0', + firstname varchar(255) NOT NULL, + lastname varchar(255) NOT NULL, + email varchar(255) NOT NULL, + created int NOT NULL default '0', + message text NOT NULL, + personal_message text NOT NULL, + personal_comment text NOT NULL, + targets text NOT NULL, + subject varchar(225) NOT NULL, + sent int NOT NULL + ) + "); + db_query("CREATE INDEX {signit_signatures}_nid_idx ON {signit_signatures} (nid)"); + break; } } *************** *** 49,52 **** --- 86,92 ---- db_query("DROP table {signit_signatures}"); db_query("DROP table {signit_targets}"); + if($GLOBALS['db_type'] == 'pgsql' ) { + db_query("DROP index {signit_signatures}_nid_idx"); + } } diff -r -C 2 signit.orig/signit.module signit/signit.module *** signit.orig/signit.module Fri Sep 7 23:44:57 2007 --- signit/signit.module Mon Sep 10 22:31:14 2007 *************** *** 972,976 **** /* **************************************************** */ ! --- 972,1007 ---- /* **************************************************** */ ! /** ! * Save a signit ! */ ! function signit_save_signit($node) { ! // deal with targets ! // delete any existing email targets ! db_query("DELETE FROM {signit_targets} WHERE nid = %d", $node->nid); ! ! $targets = explode("\n", $node->signit_targets_email_to); ! foreach ($targets as $target){ ! $data = explode(",", $target); ! if (valid_email_address($data[0])) { ! db_query("INSERT INTO {signit_targets} (nid, email, name) VALUES (%d, '%s', '%s')", $node->nid, $data[0], $data[1]); ! } ! } ! ! // remove the target info from the rest of the data ! unset($node->signit_targets_email_to); ! // get serialized signit data ! // maybe in the future this should be broken into actual db cols, but for now, ! // this makes it easy to add additional functionality. ! $data = signit_serialize_data($node); ! ! // check and see if this already exists ! $result = db_query("SELECT nid FROM {signit} WHERE nid = %d", $node->nid); ! if ($result = db_result($result)) { ! db_query("UPDATE {signit} SET status = %d, data = '%s' WHERE nid = %d", $node->signit_status, $data, $node->nid); ! } ! else { ! db_query("INSERT INTO {signit} (nid, status, data) VALUES (%d, %d, '%s')", $node->nid, $node->signit_status, $data); ! } ! } *************** *** 1471,1476 **** $rows = array(); $headers = array('Week Starting', 'Signatures', 'Trend'); ! $results = db_query('SELECT COUNT(uid) AS signups, MAKEDATE(YEAR(NOW()), (WEEK(FROM_UNIXTIME(created)) * 7)-6) AS week_starting FROM {signit_signatures} WHERE nid = %d GROUP BY week_starting', $nid); ! $old_val = 0; while ($result = db_fetch_object($results)) { --- 1502,1510 ---- $rows = array(); $headers = array('Week Starting', 'Signatures', 'Trend'); ! if($GLOBALS['db_type'] == 'pgsql' ) { ! $results = db_query("SELECT COUNT(uid) AS signups, date_trunc('week', created::ABSTIME) as week_starting FROM {signit_signatures} WHERE nid = %d GROUP BY week_starting", $nid); ! } else { ! $results = db_query('SELECT COUNT(uid) AS signups, MAKEDATE(YEAR(NOW()), (WEEK(FROM_UNIXTIME(created)) * 7)-6) AS week_starting FROM {signit_signatures} WHERE nid = %d GROUP BY week_starting', $nid); ! } $old_val = 0; while ($result = db_fetch_object($results)) { *************** *** 2136,2138 **** $output .= '">'. $data .''; return $output; ! } \ No newline at end of file --- 2170,2172 ---- $output .= '">'. $data .''; return $output; ! }