// Norm + improve ObjectModel
This commit is contained in:
+22
-37
@@ -142,8 +142,9 @@ abstract class ObjectModelCore
|
|||||||
/**
|
/**
|
||||||
* Build object
|
* Build object
|
||||||
*
|
*
|
||||||
* @param integer $id Existing object id in order to load object (optional)
|
* @param int $id Existing object id in order to load object (optional)
|
||||||
* @param integer $id_lang Required if object is multilingual (optional)
|
* @param int $id_lang Required if object is multilingual (optional)
|
||||||
|
* @param int $id_shop ID shop for objects with multishop on langs
|
||||||
*/
|
*/
|
||||||
public function __construct($id = null, $id_lang = null, $id_shop = null)
|
public function __construct($id = null, $id_lang = null, $id_shop = null)
|
||||||
{
|
{
|
||||||
@@ -171,11 +172,15 @@ abstract class ObjectModelCore
|
|||||||
$cache_id = 'objectmodel_'.$this->def['table'].'_'.(int)$id.'_'.(int)$id_shop.'_'.(int)$id_lang;
|
$cache_id = 'objectmodel_'.$this->def['table'].'_'.(int)$id.'_'.(int)$id_shop.'_'.(int)$id_lang;
|
||||||
if (!Cache::isStored($cache_id))
|
if (!Cache::isStored($cache_id))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT *
|
$sql = new DbQuery();
|
||||||
FROM `'._DB_PREFIX_.$this->def['table'].'` a '.
|
$sql->from($this->def['table'].' a');
|
||||||
($id_lang ? ('LEFT JOIN `'.pSQL(_DB_PREFIX_.$this->def['table']).'_lang` b ON (a.`'.$this->def['primary'].'` = b.`'.$this->def['primary']).'` AND `id_lang` = '.(int)($id_lang).')' : '')
|
$sql->where('a.'.$this->def['primary'].' = '.(int)$id);
|
||||||
.' WHERE 1 AND a.`'.$this->def['primary'].'` = '.(int)$id.
|
if ($id_lang)
|
||||||
(($this->id_shop AND $id_lang) ? ' AND b.id_shop = '.$this->id_shop : '');
|
{
|
||||||
|
$sql->leftJoin($this->def['table'].'_lang b ON a.'.$this->def['primary'].' = b.'.$this->def['primary'].' AND b.id_lang = '.(int)$id_lang);
|
||||||
|
if ($this->id_shop)
|
||||||
|
$sql->where('b.id_shop = '.$this->id_shop);
|
||||||
|
}
|
||||||
Cache::store($cache_id, Db::getInstance()->getRow($sql));
|
Cache::store($cache_id, Db::getInstance()->getRow($sql));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1086,17 +1091,19 @@ abstract class ObjectModelCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify if an ObjectModel is already in database
|
* Specify if an ObjectModel is already in database
|
||||||
*
|
*
|
||||||
* @param $id_entity entity id
|
* @param int $id_entity
|
||||||
* @return boolean
|
* @param string $table
|
||||||
*/
|
* @return boolean
|
||||||
|
*/
|
||||||
public static function existsInDatabase($id_entity, $table)
|
public static function existsInDatabase($id_entity, $table)
|
||||||
{
|
{
|
||||||
$row = Db::getInstance()->getRow('
|
$row = Db::getInstance()->getRow('
|
||||||
SELECT `id_'.$table.'` as id
|
SELECT `id_'.$table.'` as id
|
||||||
FROM `'._DB_PREFIX_.$table.'` e
|
FROM `'._DB_PREFIX_.$table.'` e
|
||||||
WHERE e.`id_'.$table.'` = '.(int)($id_entity));
|
WHERE e.`id_'.$table.'` = '.(int)$id_entity
|
||||||
|
);
|
||||||
|
|
||||||
return isset($row['id']);
|
return isset($row['id']);
|
||||||
}
|
}
|
||||||
@@ -1118,28 +1125,6 @@ abstract class ObjectModelCore
|
|||||||
return (bool)Db::getInstance()->getValue($query);
|
return (bool)Db::getInstance()->getValue($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get object identifier name
|
|
||||||
*
|
|
||||||
* @since 1.5.0
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getIdentifier()
|
|
||||||
{
|
|
||||||
return $this->def['primary'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get list of fields related to language to validate
|
|
||||||
*
|
|
||||||
* @since 1.5.0
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getFieldsValidateLang()
|
|
||||||
{
|
|
||||||
return $this->fieldsValidateLang;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill an object with given data. Data must be an array with this syntax: array(objProperty => value, objProperty2 => value, etc.)
|
* Fill an object with given data. Data must be an array with this syntax: array(objProperty => value, objProperty2 => value, etc.)
|
||||||
*
|
*
|
||||||
|
|||||||
+19
-20
@@ -114,6 +114,8 @@ abstract class DbCore
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get number of rows in a result
|
* Get number of rows in a result
|
||||||
|
*
|
||||||
|
* @param mixed $result
|
||||||
*/
|
*/
|
||||||
abstract protected function _numRows($result);
|
abstract protected function _numRows($result);
|
||||||
|
|
||||||
@@ -129,6 +131,8 @@ abstract class DbCore
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get next row for a query which doesn't return an array
|
* Get next row for a query which doesn't return an array
|
||||||
|
*
|
||||||
|
* @param mixed $result
|
||||||
*/
|
*/
|
||||||
abstract public function nextRow($result = false);
|
abstract public function nextRow($result = false);
|
||||||
|
|
||||||
@@ -248,11 +252,12 @@ abstract class DbCore
|
|||||||
* @param string $data Data to insert/update
|
* @param string $data Data to insert/update
|
||||||
* @param string $type INSERT or INSERT IGNORE or UPDATE
|
* @param string $type INSERT or INSERT IGNORE or UPDATE
|
||||||
* @param string $where WHERE clause, only for UPDATE (optional)
|
* @param string $where WHERE clause, only for UPDATE (optional)
|
||||||
* @param string $limit LIMIT clause (optional)
|
* @param int $limit LIMIT clause (optional)
|
||||||
|
* @param bool $use_cache
|
||||||
* @param bool $use_null If true, replace empty strings and NULL by a NULL value
|
* @param bool $use_null If true, replace empty strings and NULL by a NULL value
|
||||||
* @return mixed|boolean SQL query result
|
* @return mixed|boolean SQL query result
|
||||||
*/
|
*/
|
||||||
public function autoExecute($table, $data, $type, $where = false, $limit = false, $use_cache = 1, $use_null = false)
|
public function autoExecute($table, $data, $type, $where = '', $limit = 0, $use_cache = true, $use_null = false)
|
||||||
{
|
{
|
||||||
if (!$data)
|
if (!$data)
|
||||||
return true;
|
return true;
|
||||||
@@ -330,10 +335,10 @@ abstract class DbCore
|
|||||||
* @param string $values Data to insert/update
|
* @param string $values Data to insert/update
|
||||||
* @param string $type INSERT or UPDATE
|
* @param string $type INSERT or UPDATE
|
||||||
* @param string $where WHERE clause, only for UPDATE (optional)
|
* @param string $where WHERE clause, only for UPDATE (optional)
|
||||||
* @param string $limit LIMIT clause (optional)
|
* @param int $limit LIMIT clause (optional)
|
||||||
* @return mixed|boolean SQL query result
|
* @return mixed|boolean SQL query result
|
||||||
*/
|
*/
|
||||||
public function autoExecuteWithNullValues($table, $values, $type, $where = false, $limit = false)
|
public function autoExecuteWithNullValues($table, $values, $type, $where = '', $limit = 0)
|
||||||
{
|
{
|
||||||
return $this->autoExecute($table, $values, $type, $where, $limit, 0, true);
|
return $this->autoExecute($table, $values, $type, $where, $limit, 0, true);
|
||||||
}
|
}
|
||||||
@@ -364,7 +369,7 @@ abstract class DbCore
|
|||||||
* @param bool $use_cache Use cache or not
|
* @param bool $use_cache Use cache or not
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function delete($table, $where = false, $limit = false, $use_cache = true)
|
public function delete($table, $where = '', $limit = 0, $use_cache = true)
|
||||||
{
|
{
|
||||||
$this->result = false;
|
$this->result = false;
|
||||||
$sql = 'DELETE FROM `'.bqSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)$limit : '');
|
$sql = 'DELETE FROM `'.bqSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)$limit : '');
|
||||||
@@ -397,7 +402,7 @@ abstract class DbCore
|
|||||||
*
|
*
|
||||||
* @param string $sql query to execute
|
* @param string $sql query to execute
|
||||||
* @param boolean $array return an array instead of a mysql_result object (deprecated since 1.5.0, use query method instead)
|
* @param boolean $array return an array instead of a mysql_result object (deprecated since 1.5.0, use query method instead)
|
||||||
* @param int $use_cache if query has been already executed, use its result
|
* @param bool $use_cache if query has been already executed, use its result
|
||||||
* @return array or result object
|
* @return array or result object
|
||||||
*/
|
*/
|
||||||
public function executeS($sql, $array = true, $use_cache = true)
|
public function executeS($sql, $array = true, $use_cache = true)
|
||||||
@@ -443,7 +448,7 @@ abstract class DbCore
|
|||||||
* This function automatically add "limit 1" to the query
|
* This function automatically add "limit 1" to the query
|
||||||
*
|
*
|
||||||
* @param mixed $sql the select query (without "LIMIT 1")
|
* @param mixed $sql the select query (without "LIMIT 1")
|
||||||
* @param int $use_cache find it in cache first
|
* @param bool $use_cache find it in cache first
|
||||||
* @return array associative array of (field=>value)
|
* @return array associative array of (field=>value)
|
||||||
*/
|
*/
|
||||||
public function getRow($sql, $use_cache = true)
|
public function getRow($sql, $use_cache = true)
|
||||||
@@ -475,8 +480,8 @@ abstract class DbCore
|
|||||||
* getValue return the first item of a select query.
|
* getValue return the first item of a select query.
|
||||||
*
|
*
|
||||||
* @param mixed $sql
|
* @param mixed $sql
|
||||||
* @param int $use_cache
|
* @param bool $use_cache
|
||||||
* @return void
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function getValue($sql, $use_cache = true)
|
public function getValue($sql, $use_cache = true)
|
||||||
{
|
{
|
||||||
@@ -512,11 +517,10 @@ abstract class DbCore
|
|||||||
*
|
*
|
||||||
* @param string $sql
|
* @param string $sql
|
||||||
* @param bool $use_cache
|
* @param bool $use_cache
|
||||||
|
* @return mixed $result
|
||||||
*/
|
*/
|
||||||
protected function q($sql, $use_cache = true)
|
protected function q($sql, $use_cache = true)
|
||||||
{
|
{
|
||||||
global $webservice_call;
|
|
||||||
|
|
||||||
if ($sql instanceof DbQuery)
|
if ($sql instanceof DbQuery)
|
||||||
$sql = $sql->build();
|
$sql = $sql->build();
|
||||||
|
|
||||||
@@ -530,7 +534,7 @@ abstract class DbCore
|
|||||||
/**
|
/**
|
||||||
* Display last SQL error
|
* Display last SQL error
|
||||||
*
|
*
|
||||||
* @param unknown_type $sql
|
* @param bool $sql
|
||||||
*/
|
*/
|
||||||
public function displayError($sql = false)
|
public function displayError($sql = false)
|
||||||
{
|
{
|
||||||
@@ -575,7 +579,8 @@ abstract class DbCore
|
|||||||
* @param string $user Login for database connection
|
* @param string $user Login for database connection
|
||||||
* @param string $pwd Password for database connection
|
* @param string $pwd Password for database connection
|
||||||
* @param string $db Database name
|
* @param string $db Database name
|
||||||
* @param bool $newDbLink
|
* @param bool $new_db_link
|
||||||
|
* @param bool $engine
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public static function checkConnection($server, $user, $pwd, $db, $new_db_link = true, $engine = null)
|
public static function checkConnection($server, $user, $pwd, $db, $new_db_link = true, $engine = null)
|
||||||
@@ -596,13 +601,7 @@ abstract class DbCore
|
|||||||
return call_user_func_array(array(Db::getClass(), 'tryUTF8'), array($server, $user, $pwd));
|
return call_user_func_array(array(Db::getClass(), 'tryUTF8'), array($server, $user, $pwd));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static function s($sql, $use_cache = true)
|
||||||
* Alias of Db::getInstance()->ExecuteS
|
|
||||||
*
|
|
||||||
* @acces string query The query to execute
|
|
||||||
* @return array Array of line returned by MySQL
|
|
||||||
*/
|
|
||||||
public static function s($sql, $use_cache = 1)
|
|
||||||
{
|
{
|
||||||
return Db::getInstance()->executeS($sql, true, $use_cache);
|
return Db::getInstance()->executeS($sql, true, $use_cache);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user