diff --git a/classes/xml/xmlquery/queryargument/QueryArgument.class.php b/classes/xml/xmlquery/queryargument/QueryArgument.class.php index e66f6244b..e4082403f 100644 --- a/classes/xml/xmlquery/queryargument/QueryArgument.class.php +++ b/classes/xml/xmlquery/queryargument/QueryArgument.class.php @@ -7,7 +7,9 @@ var $column_name; var $operation; - function QueryArgument($tag){ + var $ignore_value; + + function QueryArgument($tag, $ignore_value = false){ static $number_of_arguments = 0; $this->argument_name = $tag->attrs->var; @@ -30,7 +32,7 @@ if($tag->attrs->operation) $this->operation = $tag->attrs->operation; $this->argument_validator = new QueryArgumentValidator($tag, $this); - + $this->ignore_value = $ignore_value; } function getArgumentName(){ @@ -77,7 +79,7 @@ $arg = sprintf("\n$%s_argument = new Argument('%s', %s);\n" , $this->argument_name , $this->variable_name - , '$args->'.$this->variable_name); + , $this->ignore_value ? 'null' : '$args->'.$this->variable_name); $arg .= $this->argument_validator->toString(); diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php index 2152007f6..ba2d05227 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php @@ -22,7 +22,7 @@ else { $default_value = new DefaultValue($this->name, $column->attrs->default); if($default_value->isOperation()) - $this->argument = new QueryArgument($column); + $this->argument = new QueryArgument($column, true); else $this->default_value = $dbParser->parseColumnName($column->attrs->default); } } diff --git a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php index 02b5d3447..9b40b17da 100644 --- a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php +++ b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php @@ -42,5 +42,14 @@ $this->_test($xml_file, $argsString, $expected); } - + function test_menu_updateMenuItemListorder(){ + $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/menu.updateMenuItemListorder.xml"; + $argsString = '$args->menu_srl = 10; $args->parent_srl = 11; $args->listorder = 12;'; + $expected = 'update `xe_menu_item` as `menu_item` + set `listorder` = `listorder` - 1 + where `menu_srl` = 10 + and `parent_srl` = 11 + and `listorder` <= 12'; + $this->_test($xml_file, $argsString, $expected); + } } \ No newline at end of file diff --git a/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml b/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml new file mode 100644 index 000000000..ced0e2640 --- /dev/null +++ b/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +