diff --git a/gulliver/system/class.database_mssql.php b/gulliver/system/class.database_mssql.php index 3d4e69d18..fa12d898e 100755 --- a/gulliver/system/class.database_mssql.php +++ b/gulliver/system/class.database_mssql.php @@ -42,6 +42,7 @@ class database extends database_base { $this->sDataBase = $sDataBase; $this->oConnection = @mssql_connect($sServer, $sUser, $sPass) || null; $this->sQuoteCharacter = ' '; + $this->nullString = 'NULL'; $this->sQuoteCharacterBegin = '['; $this->sQuoteCharacterEnd = ']'; } @@ -427,15 +428,20 @@ class database extends database_base { $values = array(); foreach ($data as $field) { $fields[] = $field['field']; - switch ($field['type']) { - case 'text': - case 'date': - $values[] = "'" . addslashes($field['value']) . "'"; - break; - case 'int': - default: - $values[] = addslashes($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $values[] = "'" . addslashes($field['value']) . "'"; + break; + case 'int': + default: + $values[] = addslashes($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } $fields = array_map(array($this, 'putQuotes'), $fields); @@ -447,15 +453,20 @@ class database extends database_base { $fields = array(); $where = array(); foreach ($data as $field) { - switch ($field['type']) { - case 'text': - case 'date': - $fields[] = $this->putQuotes($field['field']) . " = '" . addslashes($field['value']) . "'"; - break; - case 'int': - default: - $fields[] = $this->putQuotes($field['field']) . " = " . addslashes($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $fields[] = $this->putQuotes($field['field']) . " = '" . addslashes($field['value']) . "'"; + break; + case 'int': + default: + $fields[] = $this->putQuotes($field['field']) . " = " . addslashes($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } if (in_array($field['field'], $keys)) { $where[] = $fields[count($fields) - 1]; @@ -470,15 +481,20 @@ class database extends database_base { $where = array(); foreach ($data as $field) { if (in_array($field['field'], $keys)) { - switch ($field['type']) { - case 'text': - case 'date': - $where[] = $this->putQuotes($field['field']) . " = '" . addslashes($field['value']) . "'"; - break; - case 'int': - default: - $where[] = $this->putQuotes($field['field']) . " = " . addslashes($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $where[] = $this->putQuotes($field['field']) . " = '" . addslashes($field['value']) . "'"; + break; + case 'int': + default: + $where[] = $this->putQuotes($field['field']) . " = " . addslashes($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } } @@ -491,15 +507,20 @@ class database extends database_base { $where = array(); foreach ($data as $field) { if (in_array($field['field'], $keys)) { - switch ($field['type']) { - case 'text': - case 'date': - $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; - break; - case 'int': - default: - $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; + break; + case 'int': + default: + $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } } diff --git a/gulliver/system/class.database_mysql.php b/gulliver/system/class.database_mysql.php index 6b3d149fa..683d8b477 100755 --- a/gulliver/system/class.database_mysql.php +++ b/gulliver/system/class.database_mysql.php @@ -50,6 +50,7 @@ class database extends database_base { $this->sDataBase = $sDataBase; $this->oConnection = @mysql_connect($sServer, $sUser, $sPass) || null; $this->sQuoteCharacter = '`'; + $this->nullString = 'null'; } /** @@ -453,15 +454,20 @@ class database extends database_base { $values = array(); foreach ($data as $field) { $fields[] = $field['field']; - switch ($field['type']) { - case 'text': - case 'date': - $values[] = "'" . mysql_real_escape_string($field['value']) . "'"; - break; - case 'int': - default: - $values[] = mysql_real_escape_string($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $values[] = "'" . mysql_real_escape_string($field['value']) . "'"; + break; + case 'int': + default: + $values[] = mysql_real_escape_string($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } $fields = array_map(array($this, 'putQuotes'), $fields); @@ -473,15 +479,20 @@ class database extends database_base { $fields = array(); $where = array(); foreach ($data as $field) { - switch ($field['type']) { - case 'text': - case 'date': - $fields[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; - break; - case 'int': - default: - $fields[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $fields[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; + break; + case 'int': + default: + $fields[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } if (in_array($field['field'], $keys)) { $where[] = $fields[count($fields) - 1]; @@ -496,15 +507,20 @@ class database extends database_base { $where = array(); foreach ($data as $field) { if (in_array($field['field'], $keys)) { - switch ($field['type']) { - case 'text': - case 'date': - $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; - break; - case 'int': - default: - $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; + break; + case 'int': + default: + $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } } @@ -517,15 +533,20 @@ class database extends database_base { $where = array(); foreach ($data as $field) { if (in_array($field['field'], $keys)) { - switch ($field['type']) { - case 'text': - case 'date': - $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; - break; - case 'int': - default: - $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); - break; + if (!is_null($field['value'])) { + switch ($field['type']) { + case 'text': + case 'date': + $where[] = $this->putQuotes($field['field']) . " = '" . mysql_real_escape_string($field['value']) . "'"; + break; + case 'int': + default: + $where[] = $this->putQuotes($field['field']) . " = " . mysql_real_escape_string($field['value']); + break; + } + } + else { + $values[] = $this->nullString; } } } diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index cde4b6249..354768c56 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -563,7 +563,7 @@ class workspaceTools { public function upgradeData() { if (file_exists(PATH_CORE . 'data' . PATH_SEP . 'check.data')) { - $checkData = @unserialize(file_get_contents(PATH_CORE . 'data' . PATH_SEP . 'check.data')); + $checkData = unserialize(file_get_contents(PATH_CORE . 'data' . PATH_SEP . 'check.data')); if (is_array($checkData)) { foreach ($checkData as $checkThis) { $this->updateThisRegistry($checkThis); @@ -590,8 +590,8 @@ class workspaceTools { break; case 4: $sql = $dataBase->generateSelectSQL($data['table'], $data['keys'], $data['data']); - $result = $dataBase->executeQuery($sql); - if (!$result) { + $dataset = $dataBase->executeQuery($sql); + if (!$dataBase->getRegistry($dataset)) { $sql = $dataBase->generateInsertSQL($data['table'], $data['data']); $message = "-> Row updated in {$data['table']}\n"; } diff --git a/workflow/engine/data/check.data b/workflow/engine/data/check.data index 83697e4e1..8ebee072b 100644 --- a/workflow/engine/data/check.data +++ b/workflow/engine/data/check.data @@ -1 +1 @@ -a:1:{i:0;a:5:{s:2:"db";s:2:"wf";s:5:"table";s:7:"DASHLET";s:4:"keys";a:1:{i:0;s:7:"DAS_UID";}s:4:"data";a:8:{i:0;a:3:{s:5:"field";s:7:"DAS_UID";s:4:"type";s:4:"text";s:5:"value";s:32:"00000000000000000000000000000001";}i:1;a:3:{s:5:"field";s:9:"DAS_CLASS";s:4:"type";s:4:"text";s:5:"value";s:22:"dashletOpenVSCompleted";}i:2;a:3:{s:5:"field";s:9:"DAS_TITLE";s:4:"type";s:4:"text";s:5:"value";s:29:"Open Cases VS Completed Cases";}i:3;a:3:{s:5:"field";s:15:"DAS_DESCRIPTION";s:4:"type";s:4:"text";s:5:"value";s:29:"Open Cases VS Completed Cases";}i:4;a:3:{s:5:"field";s:11:"DAS_VERSION";s:4:"type";s:4:"text";s:5:"value";s:3:"1.0";}i:5;a:3:{s:5:"field";s:15:"DAS_CREATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:20:" 2011-10-28 00:00:00";}i:6;a:3:{s:5:"field";s:15:"DAS_UPDATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:20:" 2011-10-28 00:00:00";}i:7;a:3:{s:5:"field";s:10:"DAS_STATUS";s:4:"type";s:3:"int";s:5:"value";i:1;}}s:6:"action";i:4;}} \ No newline at end of file +a:2:{i:0;a:5:{s:2:"db";s:2:"wf";s:5:"table";s:7:"DASHLET";s:4:"keys";a:1:{i:0;s:7:"DAS_UID";}s:4:"data";a:8:{i:0;a:3:{s:5:"field";s:7:"DAS_UID";s:4:"type";s:4:"text";s:5:"value";s:32:"00000000000000000000000000000001";}i:1;a:3:{s:5:"field";s:9:"DAS_CLASS";s:4:"type";s:4:"text";s:5:"value";s:22:"dashletOpenVSCompleted";}i:2;a:3:{s:5:"field";s:9:"DAS_TITLE";s:4:"type";s:4:"text";s:5:"value";s:29:"Open Cases VS Completed Cases";}i:3;a:3:{s:5:"field";s:15:"DAS_DESCRIPTION";s:4:"type";s:4:"text";s:5:"value";s:29:"Open Cases VS Completed Cases";}i:4;a:3:{s:5:"field";s:11:"DAS_VERSION";s:4:"type";s:4:"text";s:5:"value";s:3:"1.0";}i:5;a:3:{s:5:"field";s:15:"DAS_CREATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:20:" 2011-10-28 00:00:00";}i:6;a:3:{s:5:"field";s:15:"DAS_UPDATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:20:" 2011-10-28 00:00:00";}i:7;a:3:{s:5:"field";s:10:"DAS_STATUS";s:4:"type";s:3:"int";s:5:"value";i:1;}}s:6:"action";i:4;}i:1;a:5:{s:2:"db";s:2:"wf";s:5:"table";s:16:"DASHLET_INSTANCE";s:4:"keys";a:1:{i:0;s:11:"DAS_INS_UID";}s:4:"data";a:14:{i:0;a:3:{s:5:"field";s:11:"DAS_INS_UID";s:4:"type";s:4:"text";s:5:"value";s:32:"00000000000000000000000000000001";}i:1;a:3:{s:5:"field";s:7:"DAS_UID";s:4:"type";s:4:"text";s:5:"value";s:32:"00000000000000000000000000000001";}i:2;a:3:{s:5:"field";s:12:"DAS_INS_TYPE";s:4:"type";s:4:"text";s:5:"value";s:10:"OPEN_CASES";}i:3;a:3:{s:5:"field";s:20:"DAS_INS_CONTEXT_TIME";s:4:"type";s:4:"text";s:5:"value";s:9:"THIS_YEAR";}i:4;a:3:{s:5:"field";s:18:"DAS_INS_START_DATE";s:4:"type";s:4:"text";s:5:"value";N;}i:5;a:3:{s:5:"field";s:16:"DAS_INS_END_DATE";s:4:"type";s:4:"text";s:5:"value";N;}i:6;a:3:{s:5:"field";s:18:"DAS_INS_OWNER_TYPE";s:4:"type";s:4:"text";s:5:"value";s:4:"USER";}i:7;a:3:{s:5:"field";s:17:"DAS_INS_OWNER_UID";s:4:"type";s:4:"text";s:5:"value";s:32:"00000000000000000000000000000001";}i:8;a:3:{s:5:"field";s:17:"DAS_INS_PROCESSES";s:4:"type";s:4:"text";s:5:"value";N;}i:9;a:3:{s:5:"field";s:13:"DAS_INS_TASKS";s:4:"type";s:4:"text";s:5:"value";N;}i:10;a:3:{s:5:"field";s:29:"DAS_INS_ADDITIONAL_PROPERTIES";s:4:"type";s:4:"text";s:5:"value";N;}i:11;a:3:{s:5:"field";s:19:"DAS_INS_CREATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:19:"2011-11-09 00:00:00";}i:12;a:3:{s:5:"field";s:19:"DAS_INS_UPDATE_DATE";s:4:"type";s:4:"date";s:5:"value";s:19:"2011-11-09 00:00:00";}i:13;a:3:{s:5:"field";s:14:"DAS_INS_STATUS";s:4:"type";s:3:"int";s:5:"value";i:1;}}s:6:"action";i:4;}} \ No newline at end of file