0) { // They have installed at LEAST to version 1.6.0. Just pull the version number OR migration number $migrationNumberSql = hesk_dbQuery("SELECT `Value` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` WHERE `Key` = 'migrationNumber'"); if ($migrationRow = hesk_dbFetchAssoc($migrationNumberSql)) { $startingValidationNumber = intval($migrationRow['Value']); } else { $versionSql = hesk_dbQuery("SELECT `Value` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` WHERE `Key` = 'modsForHeskVersion'"); $versionRow = hesk_dbFetchAssoc($versionSql); $migration_map = array( // Pre-1.4.0 to 1.5.0 did not have a settings table '1.6.0' => 22, '1.6.1' => 23, '1.7.0' => 27, '2.0.0' => 37, '2.0.1' => 38, '2.1.0' => 39, '2.1.1' => 42, '2.2.0' => 47, '2.2.1' => 48, '2.3.0' => 68, '2.3.1' => 69, '2.3.2' => 70, '2.4.0' => 86, '2.4.1' => 87, '2.4.2' => 88, '2.5.0' => 98, '2.5.1' => 99, '2.5.2' => 100, '2.5.3' => 101, '2.5.4' => 102, '2.5.5' => 103, '2.6.0' => 121, '2.6.1' => 122, '2.6.2' => 125, '2.6.3' => 126, '2.6.4' => 127, '3.0.0 beta 1' => 130, '3.0.0 RC 1' => 131, '3.0.0' => 132, '3.0.1' => 133, '3.0.2' => 135, '3.0.3' => 136, '3.0.4' => 137, '3.0.5' => 138, '3.0.6' => 139, '3.0.7' => 140, '3.1.0' => 153, '3.1.1' => 154 ); $startingValidationNumber = $migration_map[$versionRow['Value']]; } } else { // migration # => sql for checking $versionChecks = array( // 1.5.0 -> users.active 14 => "SHOW COLUMNS FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` LIKE 'active'", // 1.4.1 -> denied_emails 11 => "SHOW TABLES LIKE '" . hesk_dbEscape($hesk_settings['db_pfix']) . "denied_emails'", // 1.4.0 -> denied ips 9 => "SHOW TABLES LIKE '" . hesk_dbEscape($hesk_settings['db_pfix']) . "denied_ips'", // Pre-1.4.0 but still something -> statuses 7 => "SHOW TABLES LIKE '" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses'" ); foreach ($versionChecks as $migrationNumber => $sql) { $rs = hesk_dbQuery($sql); if (hesk_dbNumRows($rs) > 0) { $startingValidationNumber = $migrationNumber; break; } } } ?> Mods For HESK Database Validation
Mods for HESK Database Validation

Results

$('#all-good').show()"; } elseif ($failed) { echo ""; } if ($skipped) { echo ""; } ?>
Database Change Status
0 ? 'PASS' : 'FAIL'; } output_result('Setting Exists: ' . $setting_name, $checks); return $checks; } function run_table_check($table_name, $minimumValidationNumber) { return run_column_check($table_name, '1', $minimumValidationNumber); } function run_column_check($table_name, $column_name, $minimumValidationNumber) { global $hesk_settings, $startingValidationNumber; if ($column_name == '1') { if ($startingValidationNumber < $minimumValidationNumber) { $checks = 'SKIPPED'; } else { $checks = run_check('SELECT ' . $column_name . ' FROM `' . $hesk_settings['db_pfix'] . $table_name . '` LIMIT 1'); } output_result('Table Exists: ' . $table_name, $checks); } else { if ($startingValidationNumber < $minimumValidationNumber) { $checks = 'SKIPPED'; } else { $checks = run_check('SELECT `' . $column_name . '` FROM `' . $hesk_settings['db_pfix'] . $table_name . '` LIMIT 1'); } output_result('Column Exists: ' . $table_name . '.' . $column_name, $checks); } return $checks; } function run_check($sql, $returnString = true) { global $hesk_last_query; global $hesk_db_link; if (function_exists('mysqli_connect')) { if (!$hesk_db_link && !hesk_dbConnect()) { return false; } $hesk_last_query = $sql; if ($returnString) { return @mysqli_query($hesk_db_link, $sql) ? 'PASS' : 'FAIL'; } else { return @mysqli_query($hesk_db_link, $sql); } } else { if (!$hesk_db_link && !hesk_dbConnect()) { return false; } $hesk_last_query = $sql; if ($returnString) { return $res = @mysql_query($sql, $hesk_db_link) ? 'PASS' : 'FAIL'; } else { return $res = @mysql_query($sql, $hesk_db_link); } } } function output_result($change_title, $status) { switch ($status) { case 'PASS': $css_color = 'success'; $text = ' Success'; break; case 'FAIL': $css_color = 'danger'; $text = ' Failure'; break; case 'SKIPPED': $css_color = 'default'; $text = ' Skipped'; break; default: $css_color = 'danger'; $text = 'WTF?! ' . $status; } $formatted_text = sprintf('%s%s', $change_title, $css_color, $text); echo $formatted_text; } function output_header_row($text) { echo ' ' . $text . ''; }