This is the platform-independent base DB implementation class. This class will not be called directly. Rather, the adapter class for the specific database will extend and instantiate it.
Author: ExpressionEngine Dev Team
 /**
  * @return Bitstream
  */
 public function get_original_bitstream()
 {
     $sql = "select a.bitstream_id as original_id, count(b.bitstream_id) as converted_count " . "from bitstream as a left join bitstream as b on a.bitstream_id = b.original_id " . "group by a.bitstream_id " . "having converted_count = 0 " . "and a.deleted = 0 " . "and a.type = 'uploaded'" . "order by a.bitstream_id desc limit 0,1";
     $query = $this->db->query($sql);
     //echo $query->num_rows();
     if ($query->num_rows() == 0) {
         return NULL;
     }
     $result = $query->result_array();
     if (!isset($result[0])) {
         return NULL;
     }
     //print_r($result);
     $bitstream_id = $result[0]["original_id"];
     $bitstream = new Bitstream($bitstream_id);
     // 再檢查一下
     $path = $bitstream->get_path();
     if (is_file($path) === FALSE) {
         $this->puli_log->create_log($bitstream, "delete");
         $bitstream->delete();
         return $this->get_original_bitstream();
     }
     return $bitstream;
 }
Example #2
0
 /**
  * Determines if a query is a "write" type.
  *
  * @param	string	An SQL query string
  * @return	bool
  */
 public function is_write_type($sql)
 {
     if (preg_match('#^(INSERT|UPDATE).*RETURNING\\s.+(\\,\\s?.+)*$#is', $sql)) {
         return FALSE;
     }
     return parent::is_write_type($sql);
 }
Example #3
0
 public static function closures(\CI_DB_driver $db)
 {
     $_ = array();
     $lastquery = '';
     $_['__tostring'] = function () use($db, &$lastquery) {
         $errmsg = $db->_error_message();
         $error = $errmsg ? $db->_error_number() . ': ' . $errmsg : '';
         $res = '(Gaia\\DB\\CI object - ' . "\n" . '  [driver] => ' . $db->dbdriver . "\n" . '  [connection] => ' . $db->hostname . "\n" . '  [error] => ' . $error . "\n" . '  [lastquery] => ' . $lastquery . "\n" . ')';
         return $res;
     };
     $_['prep_args'] = $format_args = function ($query, array $args) use($db, &$lastquery) {
         if (!$args || count($args) < 1) {
             return $query;
         }
         return \Gaia\DB\Query::prepare($query, $args, function ($v) use($db) {
             return "'" . $db->escape_str($v) . "'";
         });
     };
     $_['execute'] = function ($query) use($db, &$lastquery) {
         $lastquery = $query;
         if (strlen($lastquery) > 500) {
             $lastquery = substr($lastquery, 0, 485) . ' ...[trucated]';
         }
         try {
             $res = $db->query($query);
             if (!$res) {
                 return FALSE;
             }
             $_ = array();
             if (is_object($res)) {
                 $_['fetch'] = function () use($res) {
                     return $res->_fetch_assoc();
                 };
                 $_['free'] = function () use($res) {
                     $res->free_result();
                 };
             }
             $_['affected'] = $db->affected_rows();
             if (preg_match('#^insert#i', $query)) {
                 $_['insertid'] = $db->insert_id();
             }
             return new Result($_);
         } catch (Exception $e) {
             return FALSE;
         }
     };
     $_['start'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->start($auth);
         }
         $db->trans_start();
         return TRUE;
     };
     $_['commit'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->commit($auth);
         }
         $db->trans_complete();
         return TRUE;
     };
     $_['rollback'] = function ($auth = NULL) use($db) {
         if ($db instanceof Iface) {
             return $db->rollback($auth);
         }
         $db->trans_rollback($auth);
         return TRUE;
     };
     $_['error'] = function () use($db) {
         return $db->_error_message();
     };
     $_['errorcode'] = function () use($db) {
         return $db->_error_number();
     };
     $_['isa'] = function ($name) use($db) {
         if ($db instanceof $name) {
             return TRUE;
         }
         if ($db->dbdriver == $name) {
             return TRUE;
         }
         return FALSE;
     };
     $_['hash'] = function () use($db) {
         if ($db instanceof Iface) {
             return $db->hash();
         }
         return spl_object_hash($db);
     };
     return $_;
 }