mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-20 00:58:48 +02:00
#1188 Advanced customizations: allow to define a new constant or a brand new class as part of a delta
SVN:trunk[4222]
This commit is contained in:
@@ -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))
|
||||
if (strlen($sRelativeDir) > 0)
|
||||
{
|
||||
$this->Log("Updating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
|
||||
}
|
||||
else
|
||||
{
|
||||
$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
|
||||
|
||||
Reference in New Issue
Block a user