Now is possible upgrade the data in the tables, DASHLET is the first
This commit is contained in:
@@ -422,7 +422,73 @@ class database extends database_base {
|
||||
@mssql_close($this->oConnection);
|
||||
}
|
||||
|
||||
public function generateInsertSQL($table, $data) {
|
||||
$fields = array();
|
||||
$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;
|
||||
}
|
||||
}
|
||||
$fields = array_map(array($this, 'putQuotes'), $fields);
|
||||
$sql = sprintf("INSERT INTO %s (%s) VALUES (%s)", $this->putQuotes($table), implode(', ', $fields), implode(', ', $values));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function generateUpdateSQL($table, $keys, $data) {
|
||||
$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 (in_array($field['field'], $keys)) {
|
||||
$where[] = $fields[count($fields) - 1];
|
||||
}
|
||||
}
|
||||
$sql = sprintf("UPDATE %s SET %s WHERE %s", $this->putQuotes($table), implode(', ', $fields), implode(', ', $where));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function generateDeleteSQL($table, $keys, $data) {
|
||||
$fields = array();
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
$sql = sprintf("DELETE FROM %s WHERE %s", $this->putQuotes($table), implode(', ', $where));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
private function putQuotes($element) {
|
||||
return $this->sQuoteCharacterBegin . $element . $this->sQuoteCharacterEnd;
|
||||
}
|
||||
|
||||
/*=================================================================================================*/
|
||||
/**
|
||||
|
||||
@@ -448,6 +448,94 @@ class database extends database_base {
|
||||
@mysql_close($this->oConnection);
|
||||
}
|
||||
|
||||
public function generateInsertSQL($table, $data) {
|
||||
$fields = array();
|
||||
$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;
|
||||
}
|
||||
}
|
||||
$fields = array_map(array($this, 'putQuotes'), $fields);
|
||||
$sql = sprintf("INSERT INTO %s (%s) VALUES (%s)", $this->putQuotes($table), implode(', ', $fields), implode(', ', $values));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function generateUpdateSQL($table, $keys, $data) {
|
||||
$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 (in_array($field['field'], $keys)) {
|
||||
$where[] = $fields[count($fields) - 1];
|
||||
}
|
||||
}
|
||||
$sql = sprintf("UPDATE %s SET %s WHERE %s", $this->putQuotes($table), implode(', ', $fields), implode(', ', $where));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function generateDeleteSQL($table, $keys, $data) {
|
||||
$fields = array();
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
$sql = sprintf("DELETE FROM %s WHERE %s", $this->putQuotes($table), implode(', ', $where));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function generateSelectSQL($table, $keys, $data) {
|
||||
$fields = array();
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
$sql = sprintf("SELECT * FROM %s WHERE %s", $this->putQuotes($table), implode(', ', $where));
|
||||
return $sql;
|
||||
}
|
||||
|
||||
private function putQuotes($element) {
|
||||
return $this->sQuoteCharacter . $element . $this->sQuoteCharacter;
|
||||
}
|
||||
|
||||
/*=================================================================================================*/
|
||||
/**
|
||||
|
||||
@@ -257,7 +257,7 @@ function database_upgrade($command, $args) {
|
||||
echo "- Indexes (add = " . count($changes['tablesWithNewIndex'])."";
|
||||
echo ", alter = " . count($changes['tablesToAlterIndex']).")\n";
|
||||
} else {
|
||||
echo "> Schema fixed\n";
|
||||
echo "-> Schema fixed\n";
|
||||
}
|
||||
} else {
|
||||
echo "> OK\n";
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -470,6 +470,7 @@ class workspaceTools {
|
||||
public function upgradeDatabase($checkOnly = false) {
|
||||
$systemSchema = System::getSystemSchema();
|
||||
$this->upgradeSchema($systemSchema);
|
||||
$this->upgradeData();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -499,7 +500,7 @@ class workspaceTools {
|
||||
if ($changed) {
|
||||
return $changes;
|
||||
} else {
|
||||
CLI::logging("-> Nothing to change\n");
|
||||
CLI::logging("-> Nothing to change in the data base structure\n");
|
||||
return $changed;
|
||||
}
|
||||
}
|
||||
@@ -560,6 +561,51 @@ class workspaceTools {
|
||||
return true;
|
||||
}
|
||||
|
||||
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'));
|
||||
if (is_array($checkData)) {
|
||||
foreach ($checkData as $checkThis) {
|
||||
$this->updateThisRegistry($checkThis);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function updateThisRegistry($data) {
|
||||
$dataBase = $this->getDatabase();
|
||||
$sql = '';
|
||||
switch ($data['action']) {
|
||||
case 1:
|
||||
$sql = $dataBase->generateInsertSQL($data['table'], $data['data']);
|
||||
$message = "-> Row added in {$data['table']}\n";
|
||||
break;
|
||||
case 2:
|
||||
$sql = $dataBase->generateUpdateSQL($data['table'], $data['keys'], $data['data']);
|
||||
$message = "-> Row updated in {$data['table']}\n";
|
||||
break;
|
||||
case 3:
|
||||
$sql = $dataBase->generateDeleteSQL($data['table'], $data['keys'], $data['data']);
|
||||
$message = "-> Row deleted in {$data['table']}\n";
|
||||
break;
|
||||
case 4:
|
||||
$sql = $dataBase->generateSelectSQL($data['table'], $data['keys'], $data['data']);
|
||||
$result = $dataBase->executeQuery($sql);
|
||||
if (!$result) {
|
||||
$sql = $dataBase->generateInsertSQL($data['table'], $data['data']);
|
||||
$message = "-> Row updated in {$data['table']}\n";
|
||||
}
|
||||
else {
|
||||
$sql = '';
|
||||
}
|
||||
break;
|
||||
}
|
||||
if ($sql != '') {
|
||||
$dataBase->executeQuery($sql);
|
||||
CLI::logging($message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get metadata from this workspace
|
||||
*
|
||||
|
||||
1
workflow/engine/data/check.data
Normal file
1
workflow/engine/data/check.data
Normal file
@@ -0,0 +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;}}
|
||||
Reference in New Issue
Block a user