Skip to content

Commit 71d9b57

Browse files
crossan007DawoudIO
authored andcommitted
Fix SQL auto-install. (ChurchCRM#1252)
* Fix SQL auto-install. Cleanup Setup Page in case of absent signatures.json file * remove dead comments * address localization for integrity checking
1 parent afe2903 commit 71d9b57

File tree

3 files changed

+44
-35
lines changed

3 files changed

+44
-35
lines changed

src/Include/LoadConfigs.php

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,6 @@ function mysql_failure($message)
7272
mysql_select_db($sDATABASE)
7373
or mysql_failure("Could not connect to the MySQL database <strong>" . $sDATABASE . "</strong>. Please check the settings in <strong>Include/Config.php</strong>.<br/>MySQL Error: " . mysql_error());
7474

75-
$sql = "SHOW TABLES FROM `$sDATABASE`";
76-
$tablecheck = mysql_num_rows(mysql_query($sql));
77-
78-
if (!$tablecheck) {
79-
$systemService = new SystemService();
80-
$setupQueries = dirname(__file__) . '/../mysql/install/Install.sql';
81-
$systemService->playbackSQLtoDatabase($setupQueries);
82-
$configQueries = dirname(__file__) . '/../mysql/upgrade/update_config.sql';
83-
$systemService->playbackSQLtoDatabase($configQueries);
84-
$version = new Version();
85-
$version->setVersion($systemService->getInstalledVersion());
86-
$version->setUpdateStart(new DateTime());
87-
$version->setUpdateEnd(new DateTime());
88-
$version->save();
89-
}
90-
9175
// Initialize the session
9276
session_name('CRM@' . $sRootPath);
9377
session_start();
@@ -131,6 +115,25 @@ function mysql_failure($message)
131115
$logger->pushHandler(new StreamHandler('/tmp/ChurchCRM.log'));
132116
$serviceContainer->setLogger('defaultLogger', $logger);
133117

118+
$connection = Propel::getConnection();
119+
$query = "SHOW TABLES FROM `$sDATABASE`";
120+
$statement = $connection->prepare($query);
121+
$resultset = $statement->execute();
122+
$results = $statement->fetchAll(\PDO::FETCH_ASSOC);
123+
124+
if (count($results) == 0) {
125+
$systemService = new SystemService();
126+
$setupQueries = dirname(__file__) . '/../mysql/install/Install.sql';
127+
$systemService->playbackSQLtoDatabase($setupQueries);
128+
$configQueries = dirname(__file__) . '/../mysql/upgrade/update_config.sql';
129+
$systemService->playbackSQLtoDatabase($configQueries);
130+
$version = new Version();
131+
$version->setVersion($systemService->getInstalledVersion());
132+
$version->setUpdateStart(new DateTime());
133+
$version->setUpdateEnd(new DateTime());
134+
$version->save();
135+
}
136+
134137
// Read values from config table into local variables
135138
// **************************************************
136139

src/IntegrityCheck.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
if(count($IntegrityCheckDetails->files) > 0 )
2727
{
2828
?>
29-
<p><?= gettext("Files failing integrity check:") ?>
29+
<p><?= gettext("Files failing integrity check") ?>:
3030
<ul>
3131
<?php
3232
foreach ($IntegrityCheckDetails->files as $file)
3333
{
3434
?>
35-
<li>FileName: <?= $file->filename ?>
35+
<li><?= gettext("Filename")?>: <?= $file->filename ?>
3636
<?php
3737
if($file->status == "File Missing")
3838
{
@@ -46,8 +46,8 @@
4646
{
4747
?>
4848
<ul>
49-
<li><?= gettext("Expected Hash:")?> <?= $file->expectedhash ?></li>
50-
<li><?= gettext("Actual Hash:") ?> <?= $file->actualhash ?></li>
49+
<li><?= gettext("Expected Hash")?>: <?= $file->expectedhash ?></li>
50+
<li><?= gettext("Actual Hash") ?>: <?= $file->actualhash ?></li>
5151
</ul>
5252
<?php
5353
}

src/Service/SystemService.php

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -457,37 +457,43 @@ function verifyApplicationIntegrity()
457457
{
458458
$CRMInstallRoot = dirname(__DIR__);
459459
$signatureFile = $CRMInstallRoot."/signatures.json";
460-
$signatureData = json_decode(file_get_contents($signatureFile));
461460
$signatureFailures = array();
462-
463-
if (sha1(json_encode($signatureData->files)) == $signatureData->sha1)
461+
if (file_exists($signatureFile))
464462
{
465-
foreach ($signatureData->files as $file)
463+
$signatureData = json_decode(file_get_contents($signatureFile));
464+
if (sha1(json_encode($signatureData->files)) == $signatureData->sha1)
466465
{
467-
if(file_exists($CRMInstallRoot."/".$file->filename))
466+
foreach ($signatureData->files as $file)
468467
{
469-
$actualHash = sha1_file($CRMInstallRoot."/".$file->filename);
470-
if ( $actualHash != $file->sha1 )
468+
if(file_exists($CRMInstallRoot."/".$file->filename))
471469
{
472-
array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"Hash Mismatch", "expectedhash"=>$file->sha1,"actualhash"=>$actualHash));
470+
$actualHash = sha1_file($CRMInstallRoot."/".$file->filename);
471+
if ( $actualHash != $file->sha1 )
472+
{
473+
array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"Hash Mismatch", "expectedhash"=>$file->sha1,"actualhash"=>$actualHash));
474+
}
475+
}
476+
else
477+
{
478+
array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"File Missing"));
473479
}
474480
}
475-
else
476-
{
477-
array_push($signatureFailures, array("filename"=>$file->filename,"status"=>"File Missing"));
478-
}
481+
}
482+
else
483+
{
484+
return array("status"=>"failure","message"=>gettext("Signature definition file signature failed validation"));
479485
}
480486
}
481487
else
482488
{
483-
return array("status"=>"failure","message"=>"Signature Definition file signature failed validation");
489+
return array("status"=>"failure","message"=>gettext("Signature definition File Missing"));
484490
}
485491

486492
if(count($signatureFailures) > 0 )
487493
{
488-
return array("status"=>"failure","files"=>$signatureFailures);
494+
return array("status"=>"failure","message"=>gettext("One or more files failed signature validation"),"files"=>$signatureFailures);
489495
}
490-
else
496+
else
491497
{
492498
return array("status"=>"success");
493499
}

0 commit comments

Comments
 (0)