bugfix for db::expression: As the function has a variable number of arguments, you CAN NOT add further parameters !!!

This commit is contained in:
Ralf Becker 2006-04-30 18:23:17 +00:00
parent 9adfc41c1e
commit dca9b4194d

View File

@ -1550,18 +1550,21 @@
* The function has a variable number of arguments, from which the expession gets constructed
* eg. db::expression('my_table','(',array('name'=>"test'ed",'lang'=>'en'),') OR ',array('owner'=>array('',4,10)))
* gives "(name='test\'ed' AND lang='en') OR 'owner' IN (0,4,5,6,10)" if name,lang are strings and owner is an integer
* @param string $table name of the table
*
* @param string/array $table_def table-name or definition array
* @param mixed $args variable number of arguments of the following types:
* string: get's as is into the result
* array: column-name / value pairs: the value gets quoted according to the type of the column and prefixed
* with column-name=, multiple pairs are AND'ed together, see db::column_data_implode
* bool: If False or is_null($arg): the next 2 (!) arguments gets ignored
* @param array/bool $table_def use this table definition. If False, the table definition will be read from tables_baseline
*
* Please note: As the function has a variable number of arguments, you CAN NOT add further parameters !!!
*
* @return string the expression generated from the arguments
*/
function expression($table,$args,$table_def=False)
function expression($table_def,$args)
{
if (!$table_def) $table_def = $this->get_table_definitions('',$table);
if (!is_array($table_def)) $table_def = $this->get_table_definitions('',$table_def);
$sql = '';
$ignore_next = 0;
foreach(func_get_args() as $n => $arg)