Ticket #1376: patch_to_make_work.txt

File patch_to_make_work.txt, 2.7 kB (added by sci2tech, 5 months ago)

This is the patch that supose to make it work. I tested admin operation and client sql operation and works. Test it please. Hope not to break lenny (ill test tonight when ill finish reinstalling my box)

Line 
1 diff -ur gui_/include/class.database.php /var/www/ispcp/gui/include/class.database.php
2 --- gui_/include/class.database.php     2008-07-02 23:12:12.000000000 +0300
3 +++ /var/www/ispcp/gui/include/class.database.php       2008-07-03 13:30:04.000000000 +0300
4 @@ -35,6 +35,14 @@
5                 return $this->_db->errorInfo();
6         }
7        
8 +       public function MyQuery($sql) {
9 +               if(preg_match("/((ALTER )|(CREATE )|(DROP )|(GRANT )|(REVOKE )|(FLUSH ))/i", $sql, $matches) > 0) $this->_db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, true);
10 +               else $this->_db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, false);
11 +               $ret = $this->_db->query($sql);
12 +               if ($ret instanceof PDOStatement) return new DatabaseResult($ret);
13 +               return $ret;
14 +       }
15 +       
16         public function Execute($sql, $param = null) {
17                 if ($sql instanceof PDOStatement) {
18                         if (is_array($param))
19 Only in /var/www/ispcp/gui/include/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/HTML: 3.1.1,730b6e78af390b2943b70942a5354214,1.ser
20 diff -ur gui_/include/sql.php /var/www/ispcp/gui/include/sql.php
21 --- gui_/include/sql.php        2008-07-02 23:12:12.000000000 +0300
22 +++ /var/www/ispcp/gui/include/sql.php  2008-07-03 13:53:18.000000000 +0300
23 @@ -39,26 +39,52 @@
24  Config::set('DB_USER', null);
25  Config::set('DB_PASS', null);
26  
27 +function _pseudo_Prepare($query){
28 +               if(!is_array($query)||!isset($query[0])||!isset($query[1])){
29 +                       throw new Exception('Invalid query');
30 +                       return false;
31 +               }
32 +               $params=$query[1];
33 +               if (is_string($params) || is_int($params))
34 +                       $params = array($params);
35 +               $params[]='';
36 +               $query=explode('?',$query[0]);
37 +               if(count($params)!=count($query)){
38 +                       throw new Exception('Invalid query');
39 +                       return false;
40 +               }
41 +               $fquery='';
42 +               foreach($query as $key=>$value)
43 +                       $fquery.=$value.'\''.addslashes($params[$key]).'\'';
44 +               return substr($fquery,0,-2);
45 +}
46 +
47  function execute_query (&$sql, $query) {
48 -       $rs = $sql->Execute($query);
49 +       if(version_compare(PHP_VERSION,'5.2.5','<')){
50 +                       $query=_pseudo_Prepare(array($query,array()));
51 +                       $rs = $sql->MyQuery($query);
52 +       } else {
53 +               $rs = $sql->Execute($query);
54 +       }
55         if (!$rs) system_message($sql->ErrorMsg());
56         return $rs;
57  }
58  
59  function exec_query(&$sql, $query, $data = array(), $failDie = true) {
60 -       $query = $sql->Prepare($query);
61 -       $rs = $sql->Execute($query, $data);
62 -
63 +       if(version_compare(PHP_VERSION,'5.2.5','<')){
64 +                       $query=_pseudo_Prepare(array($query,$data));
65 +                       $rs = $sql->MyQuery($query);
66 +       } else {
67 +               $query = $sql->Prepare($query);
68 +               $rs = $sql->Execute($query, $data);
69 +       }
70         if (!$rs && $failDie) {
71 -//             var_dump($query);
72 -//             var_dump($data);
73                 if($query instanceof PDOStatement)
74                         $msg = $query->errorInfo();
75                 else
76                         $msg = $sql->errorInfo();
77                 system_message(isset($msg[2]) ? $msg[2] : $msg);
78         }
79 -
80         return $rs;
81  }
82