|
@@ -196,6 +196,10 @@ class MFCompiler
|
|
|
// Push the other module files
|
|
|
SetupUtils::copydir($sModuleRootDir, $sTempTargetDir.'/'.$sRelativeDir, $bUseSymbolicLinks);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $sRelativeDir = '';
|
|
|
+ }
|
|
|
|
|
|
$sCompiledCode = '';
|
|
|
|
|
@@ -361,33 +365,36 @@ EOF;
|
|
|
//
|
|
|
if (strlen($sCompiledCode) > 0)
|
|
|
{
|
|
|
- // We have compiled something: write the result file
|
|
|
+ // We have compiled something: write the code somewhere
|
|
|
//
|
|
|
- $sResultFile = $sTempTargetDir.'/'.$sRelativeDir.'/model.'.$sModuleName.'.php';
|
|
|
- if (is_file($sResultFile))
|
|
|
- {
|
|
|
- $this->Log("Updating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
|
|
|
- }
|
|
|
- else
|
|
|
+ if (strlen($sRelativeDir) > 0)
|
|
|
{
|
|
|
- $sResultDir = dirname($sResultFile);
|
|
|
- if (!is_dir($sResultDir))
|
|
|
+ // Write the code into the given module as model.<module>.php
|
|
|
+ //
|
|
|
+ $sResultFile = $sTempTargetDir.'/'.$sRelativeDir.'/model.'.$sModuleName.'.php';
|
|
|
+ if (is_file($sResultFile))
|
|
|
{
|
|
|
- $this->Log("Creating directory $sResultDir");
|
|
|
- mkdir($sResultDir, 0777, true);
|
|
|
+ $this->Log("Updating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
|
|
|
+ } else
|
|
|
+ {
|
|
|
+ $sResultDir = dirname($sResultFile);
|
|
|
+ if (!is_dir($sResultDir))
|
|
|
+ {
|
|
|
+ $this->Log("Creating directory $sResultDir");
|
|
|
+ mkdir($sResultDir, 0777, true);
|
|
|
+ }
|
|
|
+ $this->Log("Creating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
|
|
|
}
|
|
|
- $this->Log("Creating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
|
|
|
- }
|
|
|
|
|
|
- // Compile the module into a single file
|
|
|
- //
|
|
|
- $sId = $sModuleName;
|
|
|
- $sCurrDate = date(DATE_ISO8601);
|
|
|
- $sAuthor = 'iTop compiler';
|
|
|
- $sLicence = 'http://opensource.org/licenses/AGPL-3.0';
|
|
|
- $sFileHeader =
|
|
|
-<<<EOF
|
|
|
-<?php
|
|
|
+ // Compile the module into a single file
|
|
|
+ //
|
|
|
+ $sId = $sModuleName;
|
|
|
+ $sCurrDate = date(DATE_ISO8601);
|
|
|
+ $sAuthor = 'iTop compiler';
|
|
|
+ $sLicence = 'http://opensource.org/licenses/AGPL-3.0';
|
|
|
+ $sFileHeader =
|
|
|
+ <<<EOF
|
|
|
+ <?php
|
|
|
//
|
|
|
// File generated by ... on the $sCurrDate
|
|
|
// Please do not edit manually
|
|
@@ -401,13 +408,27 @@ EOF;
|
|
|
*/
|
|
|
|
|
|
EOF;
|
|
|
- $ret = file_put_contents($sResultFile, $sFileHeader.$sCompiledCode);
|
|
|
- if ($ret === false)
|
|
|
+ $ret = file_put_contents($sResultFile, $sFileHeader.$sCompiledCode);
|
|
|
+ if ($ret === false)
|
|
|
+ {
|
|
|
+ $iLen = strlen($sFileHeader.$sCompiledCode);
|
|
|
+ $fFree = @disk_free_space(dirname($sResultFile));
|
|
|
+ $aErr = error_get_last();
|
|
|
+ throw new Exception("Failed to write '$sResultFile'. Last error: '{$aErr['message']}', content to write: $iLen bytes, available free space on disk: $fFree.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- $iLen = strlen($sFileHeader.$sCompiledCode);
|
|
|
- $fFree = @disk_free_space(dirname($sResultFile));
|
|
|
- $aErr = error_get_last();
|
|
|
- throw new Exception("Failed to write '$sResultFile'. Last error: '{$aErr['message']}', content to write: $iLen bytes, available free space on disk: $fFree.");
|
|
|
+ // Write the code into core/main.php
|
|
|
+ //
|
|
|
+ $this->sMainPHPCode .=
|
|
|
+ <<<EOF
|
|
|
+/**
|
|
|
+ * Data model from the delta file
|
|
|
+ */
|
|
|
+
|
|
|
+EOF;
|
|
|
+ $this->sMainPHPCode .= $sCompiledCode;
|
|
|
}
|
|
|
}
|
|
|
else
|