|  |  | 
 |  |  | <?php | 
 |  |  | if(!extension_loaded('mysql')) { | 
 |  |  |    error::add('Brak rozszerzenia MySQL. Skrypt nie będzie działał.'); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | class sql { | 
 |  |  |    static $db; | 
 |  |  |    static $queries = 0; | 
 |  |  |     | 
 |  |  |    static $PDO; | 
 |  |  | 	 | 
 |  |  |    static function connect() { | 
 |  |  |       self::$db = @mysql_connect(config::$db_host, config::$db_user, config::$db_pass); | 
 |  |  |       if(!self::$db) { | 
 |  |  |          error::add(mysql_error()); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       self::query('SET CHARACTER SET \'UTF8\''); | 
 |  |  |       self::query('SET NAMES \'UTF8\''); | 
 |  |  | 		 | 
 |  |  |       self::$queries = 0; | 
 |  |  | 		 | 
 |  |  |       if(!@mysql_select_db(config::$db_base)) { | 
 |  |  |          error::add(mysql_error()); | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function query($q) { | 
 |  |  |       if(!self::$db) { | 
 |  |  |          self::connect(); | 
 |  |  |       if(!self::$PDO) { | 
 |  |  |          self::$PDO = PDOO::Singleton(); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if(!@mysql_ping(self::$db)) { | 
 |  |  |          self::connect(); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       $r = @mysql_query($q, self::$db); | 
 |  |  |        | 
 |  |  |       self::$queries++; | 
 |  |  |        | 
 |  |  |       if($r===FALSE) { | 
 |  |  |          error::add(mysql_error().' '.$q); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return $r; | 
 |  |  |       return self::$PDO->query($q); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function fetchonea($q) { | 
 |  |  |       return mysql_fetch_assoc($q); | 
 |  |  |       return $q->fetch(PDO::FETCH_ASSOC); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function fetchone($q) { | 
 |  |  |       return mysql_fetch_array($q); | 
 |  |  |       return $q->fetch(PDO::FETCH_ASSOC); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function fetch($q) { | 
 |  |  |       while ($entry = mysql_fetch_array($q)) { | 
 |  |  |          $r[] = $entry; | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if(!$r) { | 
 |  |  |          $r = array(); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return $r; | 
 |  |  |       return $q->fetchAll(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function increment_id() { | 
 |  |  |       return mysql_insert_id(self::$db); | 
 |  |  |       if(!self::$PDO) { | 
 |  |  |          self::$PDO = PDOO::Singleton(); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return self::$PDO->lastInsertId(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function affected() { | 
 |  |  |       return mysql_affected_rows(self::$db); | 
 |  |  |    static function affected($q = NULL) { | 
 |  |  |       if($q === NULL) { | 
 |  |  |          return 'nieznana'; | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return $q->rowCount(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function escape($q) { | 
 |  |  |       if(!self::$db) { | 
 |  |  |          self::connect(); | 
 |  |  |       if(!self::$PDO) { | 
 |  |  |          self::$PDO = PDOO::Singleton(); | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       if(!@mysql_ping(self::$db)) { | 
 |  |  |          self::connect(); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return mysql_real_escape_string($q, self::$db); | 
 |  |  |       return self::$PDO->quote($q); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function close() { | 
 |  |  | 
 |  |  |             continue; | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $a[] = '`'.sql::escape($key).'`'; | 
 |  |  |          $b[] = '\''.sql::escape($value).'\''; | 
 |  |  |          $a[] = '`'.$key.'`'; | 
 |  |  |          $b[] = sql::escape($value); | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       return '('.implode(', ', $a).') VALUES ('.implode(', ', $b).')'; | 
 |  |  | 
 |  |  |             $value = NULL; | 
 |  |  |          } | 
 |  |  |          if(is_null($value)) { | 
 |  |  |             $a[] = '`'.sql::escape($key).'`=NULL'; | 
 |  |  |             $a[] = '`'.$key.'`=NULL'; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             $a[] = '`'.sql::escape($key).'`=\''.sql::escape($value).'\''; | 
 |  |  |             $a[] = '`'.$key.'`='.sql::escape($value); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |        | 
 |  |  | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                $a[] = self::__combine_keyn($key).'=\''.sql::escape($value).'\''; | 
 |  |  |                $a[] = self::__combine_keyn($key).'='.sql::escape($value); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  | 
 |  |  |                   $a[] = self::__combine_keyn($key).' IS NULL'; | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -1)=='!') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'!=\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'!='.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                elseif($key=='^') { | 
 |  |  |                   $a[] = 'MAX('.self::__combine_keyn($value).')'; | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -2)=='~~') { | 
 |  |  |                   $temp = 'MATCH ('.self::__combine_keyn(substr($key, 0, -2)).') AGAINST (\''.sql::escape($value).'\')'; | 
 |  |  |                   $temp = 'MATCH ('.self::__combine_keyn(substr($key, 0, -2)).') AGAINST ('.sql::escape($value).')'; | 
 |  |  |                   if($revelance) { | 
 |  |  |                      self::$revelance = $temp.' AS `revelance`'; | 
 |  |  |                   } | 
 |  |  | 
 |  |  |                   $a[] = $temp; | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -1)=='~') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).' LIKE \''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).' LIKE '.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -2)=='>=') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -2)).'>=\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -2)).'>='.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -2)=='<=') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -2)).'<=\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -2)).'<='.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -1)=='>') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'>\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'>'.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                elseif(substr($key, -1)=='<') { | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'<\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn(substr($key, 0, -1)).'<'.sql::escape($value); | 
 |  |  |                } | 
 |  |  |                else | 
 |  |  |                { | 
 |  |  |                   $a[] = self::__combine_keyn($key).'=\''.sql::escape($value).'\''; | 
 |  |  |                   $a[] = self::__combine_keyn($key).'='.sql::escape($value); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  | 
 |  |  |          $as = $value; | 
 |  |  |          $value = $key; | 
 |  |  |       } | 
 |  |  |       return '`'.sql::escape($value).'`'.($as ? ' AS `'.sql::escape($as).'`' : ''); | 
 |  |  |       return '`'.$value.'`'.($as ? ' AS `'.$as.'`' : ''); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function __combine_keyn($key) { | 
 |  |  |       if(!self::$SAFE_MODE_KEY AND strpos($key, '.')!==FALSE) { | 
 |  |  |          $key = explode('.', $key, 2); | 
 |  |  |          return '`'.sql::escape($key[0]).'`.`'.sql::escape($key[1]).'`'; | 
 |  |  |          return '`'.$key[0].'`.`'.$key[1].'`'; | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       return '`'.sql::escape($key).'`'; | 
 |  |  |       return '`'.$key.'`'; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function __combine_table($table) { | 
 |  |  |       if(!is_array($table) OR self::$SAFE_MODE_TABLE) { | 
 |  |  |          return '`'.sql::escape($table).'` '; | 
 |  |  |          return '`'.$table.'` '; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function add($table, $keys) { | 
 |  |  |       sql::query('INSERT INTO `'.sql::escape($table).'` '.self::__combine_insert($keys)); | 
 |  |  |       sql::query('INSERT INTO `'.$table.'` '.self::__combine_insert($keys)); | 
 |  |  |       return sql::affected(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function edit($table, $keys, $where=NULL, $order=NULL, $limit=NULL, $stop=NULL) { | 
 |  |  |       sql::query('UPDATE `'.sql::escape($table).'` SET '.self::__combine_update($keys).self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop)); | 
 |  |  |       sql::query('UPDATE `'.$table.'` SET '.self::__combine_update($keys).self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop)); | 
 |  |  |       return sql::affected(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    static function del($table, $where=NULL, $order=NULL, $limit=NULL, $stop=NULL) { | 
 |  |  |       sql::query('DELETE FROM `'.sql::escape($table).'`'.self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop)); | 
 |  |  |       sql::query('DELETE FROM `'.$table.'`'.self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop)); | 
 |  |  |       return sql::affected(); | 
 |  |  |    } | 
 |  |  |     |