diff --git a/setup/ModuleInstallationRepository.php b/setup/ModuleInstallationRepository.php index 63bd984d4..1eeaa73fc 100644 --- a/setup/ModuleInstallationRepository.php +++ b/setup/ModuleInstallationRepository.php @@ -140,7 +140,8 @@ SQL; } SetupLog::Info(__METHOD__, null, ["product_name" => $aResult['product_name'], "product_version" => $aResult['product_version']]); - return empty($aResult) ? false : $aResult; + + return count($aResult) == 0 ? false : $aResult; } private function ComputeInstalledModules(array $aSelectInstall): array diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php index 38a86d45c..edbc37214 100644 --- a/setup/compiler.class.inc.php +++ b/setup/compiler.class.inc.php @@ -21,8 +21,8 @@ use Combodo\iTop\Application\Branding; use Combodo\iTop\Application\WebPage\iTopWebPage; use Combodo\iTop\Application\WebPage\Page; -use Combodo\iTop\DesignElement; use Combodo\iTop\DesignDocument; +use Combodo\iTop\DesignElement; require_once(APPROOT.'setup/setuputils.class.inc.php'); require_once(APPROOT.'setup/modelfactory.class.inc.php'); @@ -3359,6 +3359,8 @@ EOF; $bDataXmlPrecompiledFileExists = false; clearstatcache(); + + $iDataXmlFileLastModified = 0; if (!empty($sPrecompiledFileUri)) { $sDataXmlProvidedPrecompiledFile = $sTempTargetDir.DIRECTORY_SEPARATOR.$sPrecompiledFileUri; $bDataXmlPrecompiledFileExists = file_exists($sDataXmlProvidedPrecompiledFile) ; diff --git a/setup/moduleinstaller.class.inc.php b/setup/moduleinstaller.class.inc.php index 0815fd4ba..a560141b3 100644 --- a/setup/moduleinstaller.class.inc.php +++ b/setup/moduleinstaller.class.inc.php @@ -130,6 +130,7 @@ abstract class ModuleInstallerAPI if (in_array($sTo, $aNewValues)) { $sEnumCol = $oAttDef->Get("sql"); $aFields = CMDBSource::QueryToArray("SHOW COLUMNS FROM `$sTableName` WHERE Field = '$sEnumCol'"); + $aCurrentValues = []; if (isset($aFields[0]['Type'])) { $sColType = $aFields[0]['Type']; // Note: the parsing should rely on str_getcsv (requires PHP 5.3) to cope with escaped string diff --git a/setup/parameters.class.inc.php b/setup/parameters.class.inc.php index bb22e2889..3426341c8 100644 --- a/setup/parameters.class.inc.php +++ b/setup/parameters.class.inc.php @@ -107,7 +107,9 @@ class PHPParameters extends Parameters { if ($this->aData == null) { require_once($sParametersFile); - $this->aData = $ITOP_PARAMS; // Defined in the file loaded just above + if (isset($ITOP_PARAMS)) { + $this->aData = $ITOP_PARAMS; // Defined in the file loaded just above + } } } } diff --git a/setup/runtimeenv.class.inc.php b/setup/runtimeenv.class.inc.php index 6147a64f7..7cb5ae692 100644 --- a/setup/runtimeenv.class.inc.php +++ b/setup/runtimeenv.class.inc.php @@ -347,6 +347,7 @@ class RunTimeEnvironment // $oFactory = new ModelFactory($sSourceDirFull); $aModulesToCompile = $this->GetMFModulesToCompile($sSourceEnv, $sSourceDir); + $oModule = null; foreach ($aModulesToCompile as $oModule) { if ($oModule instanceof MFDeltaModule) { // Just before loading the delta, let's save an image of the datamodel @@ -356,7 +357,7 @@ class RunTimeEnvironment $oFactory->LoadModule($oModule); } - if ($oModule instanceof MFDeltaModule) { + if (!is_null($oModule) && ($oModule instanceof MFDeltaModule)) { // A delta was loaded, let's save a second copy of the datamodel $oFactory->SaveToFile(utils::GetDataPath().'datamodel-'.$this->sTargetEnv.'-with-delta.xml'); } else { @@ -667,7 +668,8 @@ class RunTimeEnvironment $aResult['datamodel_version'] = $aResult['product_version']; } $this->log_info("GetApplicationVersion returns: product_name: ".$aResult['product_name'].', product_version: '.$aResult['product_version']); - return empty($aResult) ? false : $aResult; + + return count($aResult) == 0 ? false : $aResult; } public static function MakeDirSafe($sDir) @@ -963,7 +965,7 @@ class RunTimeEnvironment foreach ($aPreviouslyLoadedFiles as $sFileRelativePath) { $sFileName = APPROOT.$sFileRelativePath; SetupLog::Info("Loading file: $sFileName (just to get the keys mapping)"); - if (empty($sFileName) || !file_exists($sFileName)) { + if (!file_exists($sFileName)) { throw(new Exception("File $sFileName does not exist")); } @@ -975,7 +977,7 @@ class RunTimeEnvironment foreach ($aFiles as $sFileRelativePath) { $sFileName = APPROOT.$sFileRelativePath; SetupLog::Info("Loading file: $sFileName"); - if (empty($sFileName) || !file_exists($sFileName)) { + if (!file_exists($sFileName)) { throw(new Exception("File $sFileName does not exist")); } diff --git a/setup/setuputils.class.inc.php b/setup/setuputils.class.inc.php index 3706d3bca..6bce7ba82 100644 --- a/setup/setuputils.class.inc.php +++ b/setup/setuputils.class.inc.php @@ -254,32 +254,23 @@ class SetupUtils if (!utils::IsModeCLI()) { $sUploadTmpDir = self::GetUploadTmpDir(); - if (empty($sUploadTmpDir)) { - $sUploadTmpDir = '/tmp'; - $aResult[] = new CheckResult( - CheckResult::WARNING, - "Temporary directory for files upload is not defined (upload_tmp_dir), assuming that $sUploadTmpDir is used." - ); - } // check that the upload directory is indeed writable from PHP - if (!empty($sUploadTmpDir)) { - if (!file_exists($sUploadTmpDir)) { + if (!file_exists($sUploadTmpDir)) { + $aResult[] = new CheckResult( + CheckResult::ERROR, + "Temporary directory for files upload ($sUploadTmpDir) does not exist or cannot be read by PHP." + ); + } else { + if (!is_writable($sUploadTmpDir)) { $aResult[] = new CheckResult( CheckResult::ERROR, - "Temporary directory for files upload ($sUploadTmpDir) does not exist or cannot be read by PHP." + "Temporary directory for files upload ($sUploadTmpDir) is not writable." ); } else { - if (!is_writable($sUploadTmpDir)) { - $aResult[] = new CheckResult( - CheckResult::ERROR, - "Temporary directory for files upload ($sUploadTmpDir) is not writable." - ); - } else { - $aResult[] = new CheckResult( - CheckResult::TRACE, - "Info - Temporary directory for files upload ($sUploadTmpDir) is writable." - ); - } + $aResult[] = new CheckResult( + CheckResult::TRACE, + "Info - Temporary directory for files upload ($sUploadTmpDir) is writable." + ); } } } diff --git a/setup/xmldataloader.class.inc.php b/setup/xmldataloader.class.inc.php index 01085a30e..fb53e2e76 100644 --- a/setup/xmldataloader.class.inc.php +++ b/setup/xmldataloader.class.inc.php @@ -353,6 +353,7 @@ class XMLDataLoader foreach ($oObjList as $oTargetObj) { $bChanged = false; $sClass = get_class($oTargetObj); + $iExtKey = -1; foreach (MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef) { if (($oAttDef->IsExternalKey()) && ($oTargetObj->Get($sAttCode) < 0)) { // Convention unresolved key = negative $sTargetClass = $oAttDef->GetTargetClass();