From 9f24618740e2e64cfd27cabd5b984b20a3fd9db3 Mon Sep 17 00:00:00 2001 From: ucorina Date: Thu, 20 Oct 2011 15:28:34 +0000 Subject: [PATCH] Issue 581: Can not login after r9685 git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9702 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/xml/xmlquery/queryargument/DefaultValue.class.php | 8 +++++++- .../xml/xmlquery/tags/column/UpdateColumnTag.class.php | 3 +++ test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/classes/xml/xmlquery/queryargument/DefaultValue.class.php b/classes/xml/xmlquery/queryargument/DefaultValue.class.php index 607af32e4..10836e98c 100644 --- a/classes/xml/xmlquery/queryargument/DefaultValue.class.php +++ b/classes/xml/xmlquery/queryargument/DefaultValue.class.php @@ -7,7 +7,8 @@ var $is_operation = false; var $operation = ''; - var $_is_string = false; + var $_is_string = false; ///< Checks if value is plain string or name of XE function (ipaddress, plus, etc). + var $_is_string_from_function = false; //< Checks if value is string resulted from evaluating a piece of PHP code (see $_SERVER[REMOTE_ADDR]) function DefaultValue($column_name, $value){ $dbParser = &DB::getParser(); @@ -23,6 +24,10 @@ return false; } + function isStringFromFunction(){ + return $this->_is_string_from_function; + } + function isSequence(){ return $this->is_sequence; } @@ -58,6 +63,7 @@ switch($func_name) { case 'ipaddress' : $val = '$_SERVER[\'REMOTE_ADDR\']'; + $this->_is_string_from_function = true; break; case 'unixtime' : $val = 'time()'; diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php index 610aa9036..3ba648727 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php @@ -29,6 +29,9 @@ //else $this->default_value = $dbParser->parseColumnName($column->attrs->default); else { $this->default_value = $default_value->toString(); + if($default_value->isStringFromFunction()){ + $this->default_value = '"\'".' . $this->default_value . '."\'"'; + } if($default_value->isString()){ $this->default_value = '"' . $this->default_value . '"'; } diff --git a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php index 5401dff42..57578741c 100644 --- a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php +++ b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php @@ -68,8 +68,9 @@ $argsString = '$args->session_key = 339321; $args->val = "yuhuu";'; $expected = 'update `xe_session` as `session` set `member_srl` = 0, `val` = \'yuhuu\' + , `ipaddress` = \''. $_SERVER['REMOTE_ADDR'] .'\' , `last_update` = ' . date("YmdHis") . ' - where `session_key` = \'339321\''; + where `session_key` = \'339321\''; $this->_test($xml_file, $argsString, $expected); } } \ No newline at end of file