[geeklog-cvs] geeklog: fixed non abstraction layer sql

geeklog-cvs at lists.geeklog.net geeklog-cvs at lists.geeklog.net
Tue Jan 26 15:53:58 EST 2010


changeset 7651:6de3bcbeb530
url:  http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/6de3bcbeb530
user: stan <yankees26an at gmail.com>
date: Sat Aug 29 12:44:59 2009 -0400
description:
fixed non abstraction layer sql

diffstat:

 system/classes/story.class.php |  42 +++++++++++++++++++++++++++++++-----------
 1 files changed, 31 insertions(+), 11 deletions(-)

diffs (75 lines):

diff -r 4dc8e95d1943 -r 6de3bcbeb530 system/classes/story.class.php
--- a/system/classes/story.class.php	Wed Aug 19 11:09:19 2009 -0400
+++ b/system/classes/story.class.php	Sat Aug 29 12:44:59 2009 -0400
@@ -581,7 +581,7 @@
      */
     function saveToDatabase()
     {
-        global $_TABLES;
+        global $_TABLES,$_DB_dbms;
 
         if (DB_getItem($_TABLES['topics'], 'tid', "archive_flag=1") == $this->_tid) {
             $this->_featured = 0;
@@ -665,9 +665,9 @@
 
         // Get the related URLs
         $this->_related = implode("\n", STORY_extractLinks("{$this->_introtext} {$this->_bodytext}"));
-        $sql = 'REPLACE INTO ' . $_TABLES['stories'] . ' (';
-        $values = ' VALUES (';
-        reset($this->_dbFields);
+        $fields='';
+        $values = '';
+        reset($this->_dbFields); 
 
         /* This uses the database field array to generate a SQL Statement. This
          * means that when adding new fields to save and load, all we need to do
@@ -675,22 +675,42 @@
          */
         while (list($fieldname, $save) = each($this->_dbFields)) {
             if ($save === 1) {
-                $varname = '_' . $fieldname;
-                $sql .= $fieldname . ', ';
+               $varname = '_' . $fieldname;
+                $fields .= $fieldname . ', ';
                 if (($fieldname == 'date') || ($fieldname == 'expire') || ($fieldname == 'comment_expire')) {
                     // let the DB server do this conversion (cf. timezone hack)
-                    $values .= 'FROM_UNIXTIME(' . $this->{$varname} . '), ';
+                    if($_DB_dbms=='mysql')
+                    {
+                        $values .= 'FROM_UNIXTIME(' . $this->{$varname} . '), ';
+                    }
+                    else
+                    {
+                       $values.= '('.$this->{$varname}.'::ABSTIME::TIMESTAMP), ';   
+                    }
                 } else {
-                    $values .= '\'' . addslashes($this->{$varname}) . '\', ';
+                    if($this->{$varname}=='')
+                    {
+                        $values.="0, ";
+                    }
+                    else
+                    {
+                        if(is_numeric($this->{$varname}))
+                        {              
+                            $values .= addslashes($this->{$varname}).', ';
+                        }
+                        else
+                        {
+                            $values .= '\''.addslashes($this->{$varname}) . '\', ';     
+                        }
+                    }
                 }
             }
         }
 
-        $sql = substr($sql, 0, strlen($sql) - 2);
+        $fields = substr($fields, 0, strlen($fields) - 2);
         $values = substr($values, 0, strlen($values) - 2);
-        $sql .= ') ' . $values . ')';
 
-        DB_query($sql);
+        DB_save($_TABLES['stories'],$fields,$values);
 
         /* Clean up the old story */
         if ($oldArticleExists) {



More information about the geeklog-cvs mailing list