1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 21:57:51 +02:00

Refactored away duplicate code in db_verify

Hopefully Code Climate likes this one better
This commit is contained in:
Nick Liu
2018-01-23 10:19:37 -06:00
parent c959610f7d
commit 3e2cdd5c9e

View File

@@ -136,7 +136,7 @@ class db_verify
/** /**
* Permissive field validation * Permissive field validation
*/ */
private function diffFieldPermissive($expected, $actual) private function diffStructurePermissive($expected, $actual)
{ {
// Permit actual text types that default to null even when // Permit actual text types that default to null even when
// expected does not explicitly default to null // expected does not explicitly default to null
@@ -316,11 +316,11 @@ class db_verify
// echo "<h4>PARSED</h4>"; // echo "<h4>PARSED</h4>";
// print_a($sqlDataArr); // print_a($sqlDataArr);
$fileFieldData = $this->getFields($this->sqlFileTables[$selection]['data'][$key]); $fileData['field'] = $this->getFields($this->sqlFileTables[$selection]['data'][$key]);
$sqlFieldData = $this->getFields($sqlDataArr['data'][0]); $sqlData['field'] = $this->getFields($sqlDataArr['data'][0]);
$fileIndexData = $this->getIndex($this->sqlFileTables[$selection]['data'][$key]); $fileData['index'] = $this->getIndex($this->sqlFileTables[$selection]['data'][$key]);
$sqlIndexData = $this->getIndex($sqlDataArr['data'][0]); $sqlData['index'] = $this->getIndex($sqlDataArr['data'][0]);
/* /*
$debugA = print_r($fileFieldData,TRUE); // Extracted Field Arrays $debugA = print_r($fileFieldData,TRUE); // Extracted Field Arrays
$debugA .= "<h2>Index</h2>"; $debugA .= "<h2>Index</h2>";
@@ -353,74 +353,40 @@ class db_verify
$tbl = "lan_".$language."_".$tbl; $tbl = "lan_".$language."_".$tbl;
} }
// Check field and index data
// Check Field Data. foreach(['field', 'index'] as $type)
foreach($fileFieldData as $field => $info )
{ {
foreach($fileData[$type] as $key => $value)
$this->results[$tbl][$field]['_status'] = 'ok';
if(!is_array($sqlFieldData[$field]))
{ {
// echo "<h2>".$field."</h2><table><tr><td><pre>".print_r($info,TRUE)."</pre></td> $this->results[$tbl][$key]['_status'] = 'ok';
// <td style='border:1px solid silver'><pre> - ".print_r($sqlFieldData[$field],TRUE)."</pre></td></tr></table>";
$this->errors[$tbl]['_status'] = 'error'; // table status //print("EXPECTED");
$this->results[$tbl][$field]['_status'] = 'missing_field'; // field status //print_a($value);
$this->results[$tbl][$field]['_valid'] = $info; //print("ACTUAL");
$this->results[$tbl][$field]['_file'] = $selection; //print_a($sqlData[$type][$key]);
if(!is_array($sqlData[$type][$key]))
{
$this->errors[$tbl]['_status'] = 'error'; // table status
$this->results[$tbl][$key]['_status'] = "missing_$type"; // type status
$this->results[$tbl][$key]['_valid'] = $value;
$this->results[$tbl][$key]['_file'] = $selection;
}
elseif(count($diff = $this->diffStructurePermissive($value, $sqlData[$type][$key])))
{
$this->errors[$tbl]['_status'] = "mismatch_$type";
$this->results[$tbl][$key]['_status'] = 'mismatch';
$this->results[$tbl][$key]['_diff'] = $diff;
$this->results[$tbl][$key]['_valid'] = $value;
$this->results[$tbl][$key]['_invalid'] = $sqlData[$type][$key];
$this->results[$tbl][$key]['_file'] = $selection;
}
// TODO Check for additional fields in SQL that should be removed.
// TODO Add support for MYSQL 5 table layout .eg. journal_id INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
} }
elseif(count($diff = $this->diffFieldPermissive($info, $sqlFieldData[$field])))
{
$this->errors[$tbl]['_status'] = 'mismatch';
$this->results[$tbl][$field]['_status'] = 'mismatch';
$this->results[$tbl][$field]['_diff'] = $diff;
$this->results[$tbl][$field]['_valid'] = $info;
$this->results[$tbl][$field]['_invalid'] = $sqlFieldData[$field];
$this->results[$tbl][$field]['_file'] = $selection;
}
} }
// print_a($fileIndexData);
// print_a($sqlIndexData);
// Check Index data
foreach($fileIndexData as $field => $info )
{
if(!is_array($sqlIndexData[$field])) // missing index.
{
// print_a($info);
// print_a($sqlIndexData[$field]);
$this->errors[$tbl]['_status'] = 'error'; // table status
$this->indices[$tbl][$field]['_status'] = 'missing_index'; // index status
$this->indices[$tbl][$field]['_valid'] = $info;
$this->indices[$tbl][$field]['_file'] = $selection;
}
elseif(count($diff = $this->diffFieldPermissive($info, $sqlIndexData[$field]))) // mismatched data
{
// print_a($info);
// print_a($sqlIndexData[$field]);
$this->errors[$tbl]['_status'] = 'mismatch_index';
$this->indices[$tbl][$field]['_status'] = 'mismatch';
$this->indices[$tbl][$field]['_diff'] = $diff;
$this->indices[$tbl][$field]['_valid'] = $info;
$this->indices[$tbl][$field]['_invalid'] = $sqlIndexData[$field];
$this->indices[$tbl][$field]['_file'] = $selection;
}
// TODO Check for additional fields in SQL that should be removed.
// TODO Add support for MYSQL 5 table layout .eg. journal_id INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
}
unset($data); unset($data);
} }