Now is possible upgrade the data in the tables, DASHLET is the first

This commit is contained in:
Julio Cesar Laura
2011-11-08 17:37:47 -04:00
parent 9b3921665f
commit 152ab8be7b
6 changed files with 2280 additions and 2206 deletions

View File

@@ -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;
}
/*=================================================================================================*/
/**

View File

@@ -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;
}
/*=================================================================================================*/
/**

View File

@@ -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

View File

@@ -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
*

View 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;}}