From bd3b17ef7f4d66163a2fecde63705514d3f44175 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 31 Oct 2016 20:43:02 -0400 Subject: [PATCH 1/3] Fix SQL auto-install. Cleanup Setup Page in case of absent signatures.json file --- src/Include/LoadConfigs.php | 37 ++++++++++++++++++++--------------- src/Service/SystemService.php | 32 ++++++++++++++++++------------ 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/Include/LoadConfigs.php b/src/Include/LoadConfigs.php index ab3cf426f8..939e5a4cc8 100644 --- a/src/Include/LoadConfigs.php +++ b/src/Include/LoadConfigs.php @@ -72,22 +72,6 @@ function mysql_failure($message) mysql_select_db($sDATABASE) or mysql_failure("Could not connect to the MySQL database " . $sDATABASE . ". Please check the settings in Include/Config.php.
MySQL Error: " . mysql_error()); -$sql = "SHOW TABLES FROM `$sDATABASE`"; -$tablecheck = mysql_num_rows(mysql_query($sql)); - -if (!$tablecheck) { - $systemService = new SystemService(); - $setupQueries = dirname(__file__) . '/../mysql/install/Install.sql'; - $systemService->playbackSQLtoDatabase($setupQueries); - $configQueries = dirname(__file__) . '/../mysql/upgrade/update_config.sql'; - $systemService->playbackSQLtoDatabase($configQueries); - $version = new Version(); - $version->setVersion($systemService->getInstalledVersion()); - $version->setUpdateStart(new DateTime()); - $version->setUpdateEnd(new DateTime()); - $version->save(); -} - // Initialize the session session_name('CRM@' . $sRootPath); session_start(); @@ -131,6 +115,27 @@ function mysql_failure($message) $logger->pushHandler(new StreamHandler('/tmp/ChurchCRM.log')); $serviceContainer->setLogger('defaultLogger', $logger); +$connection = Propel::getConnection(); +$query = "SHOW TABLES FROM `$sDATABASE`"; +$statement = $connection->prepare($query); +$resultset = $statement->execute(); +$results = $statement->fetchAll(\PDO::FETCH_ASSOC); + +if (count($results) == 0) { + //echo "db not installed"; + //exit; + $systemService = new SystemService(); + $setupQueries = dirname(__file__) . '/../mysql/install/Install.sql'; + $systemService->playbackSQLtoDatabase($setupQueries); + $configQueries = dirname(__file__) . '/../mysql/upgrade/update_config.sql'; + $systemService->playbackSQLtoDatabase($configQueries); + $version = new Version(); + $version->setVersion($systemService->getInstalledVersion()); + $version->setUpdateStart(new DateTime()); + $version->setUpdateEnd(new DateTime()); + $version->save(); +} + // Read values from config table into local variables // ************************************************** diff --git a/src/Service/SystemService.php b/src/Service/SystemService.php index 71e773ddc4..114d74f648 100644 --- a/src/Service/SystemService.php +++ b/src/Service/SystemService.php @@ -457,30 +457,36 @@ function verifyApplicationIntegrity() { $CRMInstallRoot = dirname(__DIR__); $signatureFile = $CRMInstallRoot."/signatures.json"; - $signatureData = json_decode(file_get_contents($signatureFile)); $signatureFailures = array(); - - if (sha1(json_encode($signatureData->files)) == $signatureData->sha1) + if (file_exists($signatureFile)) { - foreach ($signatureData->files as $file) + $signatureData = json_decode(file_get_contents($signatureFile)); + if (sha1(json_encode($signatureData->files)) == $signatureData->sha1) { - if(file_exists($CRMInstallRoot."/".$file->filename)) + foreach ($signatureData->files as $file) { - $actualHash = sha1_file($CRMInstallRoot."/".$file->filename); - if ( $actualHash != $file->sha1 ) + if(file_exists($CRMInstallRoot."/".$file->filename)) { - array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"Hash Mismatch", "expectedhash"=>$file->sha1,"actualhash"=>$actualHash)); + $actualHash = sha1_file($CRMInstallRoot."/".$file->filename); + if ( $actualHash != $file->sha1 ) + { + array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"Hash Mismatch", "expectedhash"=>$file->sha1,"actualhash"=>$actualHash)); + } + } + else + { + array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"File Missing")); } } - else - { - array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"File Missing")); - } + } + else + { + return array("status"=>"failure","message"=>"Signature Definition file signature failed validation"); } } else { - return array("status"=>"failure","message"=>"Signature Definition file signature failed validation"); + return array("status"=>"failure","message"=>"Signature Definition File Missing"); } if(count($signatureFailures) > 0 ) From ea7cdd434b67e152ecbaa4da11df9df39573c2bd Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 31 Oct 2016 20:45:09 -0400 Subject: [PATCH 2/3] remove dead comments --- src/Include/LoadConfigs.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Include/LoadConfigs.php b/src/Include/LoadConfigs.php index 939e5a4cc8..001320fc22 100644 --- a/src/Include/LoadConfigs.php +++ b/src/Include/LoadConfigs.php @@ -122,8 +122,6 @@ function mysql_failure($message) $results = $statement->fetchAll(\PDO::FETCH_ASSOC); if (count($results) == 0) { - //echo "db not installed"; - //exit; $systemService = new SystemService(); $setupQueries = dirname(__file__) . '/../mysql/install/Install.sql'; $systemService->playbackSQLtoDatabase($setupQueries); From 00b27b61486e9550c70b9e1961d96c15198136a5 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 2 Nov 2016 18:35:49 -0400 Subject: [PATCH 3/3] address localization for integrity checking --- src/IntegrityCheck.php | 8 ++++---- src/Service/SystemService.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/IntegrityCheck.php b/src/IntegrityCheck.php index 0879fc3553..3ec2ade4b5 100644 --- a/src/IntegrityCheck.php +++ b/src/IntegrityCheck.php @@ -26,13 +26,13 @@ if(count($IntegrityCheckDetails->files) > 0 ) { ?> -

+

:

    files as $file) { ?> -
  • FileName: filename ?> +
  • : filename ?> status == "File Missing") { @@ -46,8 +46,8 @@ { ?>
      -
    • expectedhash ?>
    • -
    • actualhash ?>
    • +
    • : expectedhash ?>
    • +
    • : actualhash ?>
    "failure","message"=>"Signature Definition file signature failed validation"); + return array("status"=>"failure","message"=>gettext("Signature definition file signature failed validation")); } } else { - return array("status"=>"failure","message"=>"Signature Definition File Missing"); + return array("status"=>"failure","message"=>gettext("Signature definition File Missing")); } if(count($signatureFailures) > 0 ) { - return array("status"=>"failure","files"=>$signatureFailures); + return array("status"=>"failure","message"=>gettext("One or more files failed signature validation"),"files"=>$signatureFailures); } - else + else { return array("status"=>"success"); }