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);
|
@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);
|
@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 "- Indexes (add = " . count($changes['tablesWithNewIndex'])."";
|
||||||
echo ", alter = " . count($changes['tablesToAlterIndex']).")\n";
|
echo ", alter = " . count($changes['tablesToAlterIndex']).")\n";
|
||||||
} else {
|
} else {
|
||||||
echo "> Schema fixed\n";
|
echo "-> Schema fixed\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
echo "> OK\n";
|
echo "> OK\n";
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -470,6 +470,7 @@ class workspaceTools {
|
|||||||
public function upgradeDatabase($checkOnly = false) {
|
public function upgradeDatabase($checkOnly = false) {
|
||||||
$systemSchema = System::getSystemSchema();
|
$systemSchema = System::getSystemSchema();
|
||||||
$this->upgradeSchema($systemSchema);
|
$this->upgradeSchema($systemSchema);
|
||||||
|
$this->upgradeData();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -499,7 +500,7 @@ class workspaceTools {
|
|||||||
if ($changed) {
|
if ($changed) {
|
||||||
return $changes;
|
return $changes;
|
||||||
} else {
|
} else {
|
||||||
CLI::logging("-> Nothing to change\n");
|
CLI::logging("-> Nothing to change in the data base structure\n");
|
||||||
return $changed;
|
return $changed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -560,6 +561,51 @@ class workspaceTools {
|
|||||||
return true;
|
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
|
* 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