|
|
|
@ -179,6 +179,7 @@ define('TABLE_QUIZ_QUESTION', 'quiz_question'); |
|
|
|
|
define('TABLE_QUIZ_TEST', 'quiz'); |
|
|
|
|
define('TABLE_QUIZ_ANSWER', 'quiz_answer'); |
|
|
|
|
define('TABLE_QUIZ_TEST_QUESTION', 'quiz_rel_question'); |
|
|
|
|
define('TABLE_QUIZ_QUESTION_OPTION','quiz_question_option'); |
|
|
|
|
|
|
|
|
|
// Linked resource table |
|
|
|
|
define('TABLE_LINKED_RESOURCES', 'resource'); |
|
|
|
@ -1297,50 +1298,114 @@ class Database { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
DEPRECATED METHODS |
|
|
|
|
New useful DB functions |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @deprecated Use api_get_language_isocode($language) instead. |
|
|
|
|
*/ |
|
|
|
|
public static function get_language_isocode($language) { |
|
|
|
|
return api_get_language_isocode($language); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @deprecated Use Database::insert_id() instead. |
|
|
|
|
*/ |
|
|
|
|
public static function get_last_insert_id() { |
|
|
|
|
return mysql_insert_id(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Experimental useful database insert |
|
|
|
|
* @todo lot of stuff to do here |
|
|
|
|
*/ |
|
|
|
|
public static function insert_query($table_name, $attributes) { |
|
|
|
|
public static function insert($table_name, $attributes) { |
|
|
|
|
if (empty($attributes) || empty($table_name)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$filtred_attributes = array(); |
|
|
|
|
foreach($attributes as $key => $value) { |
|
|
|
|
$filtred_attributes[$key] = self::escape_string($value); |
|
|
|
|
$filtred_attributes[$key] = "'".self::escape_string($value)."'"; |
|
|
|
|
} |
|
|
|
|
$params = array_keys($filtred_attributes); //@todo check if the field exists in the table we should use a describe of that table |
|
|
|
|
$values = array_values($filtred_attributes); |
|
|
|
|
if (!empty($params) && !empty($values)) { |
|
|
|
|
$sql = 'INSERT INTO '.$table_name.' ('.implode(',',array_keys($params)).') VALUES ('.implode(',',$values).')'; |
|
|
|
|
$sql = 'INSERT INTO '.$table_name.' ('.implode(',',$params).') VALUES ('.implode(',',$values).')'; |
|
|
|
|
$result = self::query($sql); |
|
|
|
|
return $result; |
|
|
|
|
return self::get_last_insert_id(); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Experimental useful database finder |
|
|
|
|
* @todo lot of stuff to do here |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
public static function find($table_name, $columns = '*' , $where_conditions = array(), $option = 'ASSOC') { |
|
|
|
|
$where_return = self::parse_where_conditions($where_conditions); |
|
|
|
|
$columns_filtred = ''; |
|
|
|
|
if (is_array($columns)) { |
|
|
|
|
$columns_filtred = implode(',', $columns); |
|
|
|
|
} else { |
|
|
|
|
if ($columns == '*') { |
|
|
|
|
$columns_filtred = '*'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$sql = "SELECT $columns_filtred FROM $table_name $where_return "; |
|
|
|
|
$result = self::query($sql); |
|
|
|
|
|
|
|
|
|
$array = array(); |
|
|
|
|
if ($result !== false) { // For isolation from database engine's behaviour. |
|
|
|
|
while ($row = self::fetch_array($result, $option)) { |
|
|
|
|
if (isset($row['id'])) { |
|
|
|
|
$array[$row['id']] = $row; |
|
|
|
|
} else { |
|
|
|
|
$array[] = $row; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $array; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Parses where conditionsof this form: array('id = ?' =>'4') |
|
|
|
|
* @todo lot of stuff to do here |
|
|
|
|
*/ |
|
|
|
|
private function parse_where_conditions($conditions) { |
|
|
|
|
if (empty($conditions)) { |
|
|
|
|
return ''; |
|
|
|
|
} |
|
|
|
|
$where_return = ''; |
|
|
|
|
foreach ($conditions as $condition => $value_array) { |
|
|
|
|
if (is_array($value_array)) { |
|
|
|
|
$clean_values = array(); |
|
|
|
|
foreach($value_array as $item) { |
|
|
|
|
$item = Database::escape_string($item); |
|
|
|
|
$clean_values[]= "'$item'"; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$value_array = Database::escape_string($value_array); |
|
|
|
|
$clean_values = "'$value_array'"; |
|
|
|
|
} |
|
|
|
|
if (!empty($condition) && !empty($clean_values)) { |
|
|
|
|
$condition = str_replace('?','%s', $condition); //we treat everything as string |
|
|
|
|
$condition = vsprintf($condition, $clean_values); |
|
|
|
|
$where_return .= $condition; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($where_return)) { |
|
|
|
|
$where_return = " WHERE $where_return "; |
|
|
|
|
} |
|
|
|
|
return $where_return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Experimental useful database update |
|
|
|
|
* @todo lot of stuff to do here |
|
|
|
|
*/ |
|
|
|
|
public static function delete($table_name, $where_conditions) { |
|
|
|
|
$result = false; |
|
|
|
|
$where_return = self::parse_where_conditions($where_conditions); |
|
|
|
|
$sql = "DELETE FROM $table_name $where_return "; |
|
|
|
|
$result = self::query($sql); |
|
|
|
|
//@todo should return affected_rows for |
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Experimental useful database update |
|
|
|
|
* @todo lot of stuff to do here |
|
|
|
|
*/ |
|
|
|
|
public static function update_query($table_name, $attributes, $where = array()) { |
|
|
|
|
public static function update_query($table_name, $attributes, $where_conditions = array()) { |
|
|
|
|
|
|
|
|
|
if (!empty($table_name) && !empty($attributes)) { |
|
|
|
|
$update_sql = ''; |
|
|
|
@ -1349,31 +1414,9 @@ class Database { |
|
|
|
|
$value = self::escape_string($value); |
|
|
|
|
$update_sql .= "$key = '$value' "; |
|
|
|
|
} |
|
|
|
|
if (!empty($update_sql)) { |
|
|
|
|
if (!empty($where)) { |
|
|
|
|
//Parsing and cleaning the where conditions |
|
|
|
|
$where_return =''; |
|
|
|
|
foreach ($where as $condition => $value_array) { |
|
|
|
|
if (is_array($value_array)) { |
|
|
|
|
$clean_values = array(); |
|
|
|
|
foreach($value_array as $item) { |
|
|
|
|
$item = Database::escape_string($item); |
|
|
|
|
$clean_values[]= "'$item'"; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$value_array = Database::escape_string($value_array); |
|
|
|
|
$clean_values = "'$value_array'"; |
|
|
|
|
} |
|
|
|
|
if (!empty($condition) && !empty($clean_values)) { |
|
|
|
|
$condition = str_replace('?','%s', $condition); //we treat everything as string |
|
|
|
|
$condition = vsprintf($condition, $clean_values); |
|
|
|
|
$where_return .= $condition; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!empty($clean_values)) { |
|
|
|
|
$where_return =" WHERE $where_return "; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!empty($update_sql)) { |
|
|
|
|
//Parsing and cleaning the where conditions |
|
|
|
|
$where_return = self::parse_where_conditions($where_conditions); |
|
|
|
|
$sql = "UPDATE $table_name SET $update_sql $where_return "; |
|
|
|
|
$result = self::query($sql); |
|
|
|
|
return $result; |
|
|
|
@ -1381,5 +1424,24 @@ class Database { |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
DEPRECATED METHODS |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @deprecated Use api_get_language_isocode($language) instead. |
|
|
|
|
*/ |
|
|
|
|
public static function get_language_isocode($language) { |
|
|
|
|
return api_get_language_isocode($language); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @deprecated Use Database::insert_id() instead. |
|
|
|
|
*/ |
|
|
|
|
public static function get_last_insert_id() { |
|
|
|
|
return mysql_insert_id(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
//end class Database |