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 $_;
}