System update (for Ivo)

This commit is contained in:
markseu 2017-02-17 00:26:39 +01:00
parent 24cae9b0d4
commit ae38c5749b

View file

@ -5,7 +5,7 @@
// Update plugin
class YellowUpdate
{
const VERSION = "0.6.12";
const VERSION = "0.6.13";
var $yellow; //access to API
// Handle initialisation
@ -191,7 +191,8 @@ class YellowUpdate
}
}
$zip->close();
if($statusCode==200) $statusCode = $this->updateStartupNotification($software);
if($statusCode==200) $statusCode = $this->updateSoftwareNew($software);
if($statusCode==200) $statusCode = $this->updateSoftwareNotification($software);
}
if(!$this->yellow->toolbox->deleteFile($path))
{
@ -250,9 +251,64 @@ class YellowUpdate
}
return $statusCode;
}
// Update new software
function updateSoftwareNew($software)
{
$statusCode = 200;
if(!$this->isSoftwareExisting($software) && $this->yellow->config->get("multiLanguageMode"))
{
$pathsSource = $pathsTarget = array();
$pathBase = $this->yellow->config->get("contentDir");
$pathRoot = $this->yellow->config->get("contentRootDir");
$fileExtension = $this->yellow->config->get("contentExtension");
$fileRegex = "/^.*\\".$fileExtension."$/";
foreach($this->yellow->toolbox->getDirectoryEntries($pathBase, "/.*/", true, true, false) as $entry)
{
if($this->yellow->lookup->normaliseName($entry)."/"==$pathRoot) continue;
if(count($this->yellow->toolbox->getDirectoryEntries($pathBase.$entry, $fileRegex, true, false)))
{
array_push($pathsSource, $pathBase.$entry."/");
} else {
array_push($pathsTarget, $pathBase.$entry."/");
}
}
if(count($pathsSource) && count($pathsTarget))
{
foreach($pathsSource as $pathSource)
{
foreach($pathsTarget as $pathTarget)
{
$fileNames = $this->yellow->toolbox->getDirectoryEntriesRecursive($pathSource, "/.*/", false, false);
foreach($fileNames as $fileName)
{
$modified = $this->yellow->toolbox->getFileModified($fileName);
$fileNameTarget = $pathTarget.substru($fileName, strlenu($pathBase));
if(!is_file($fileNameTarget))
{
if(!$this->yellow->toolbox->copyFile($fileName, $fileNameTarget, true) ||
!$this->yellow->toolbox->modifyFile($fileNameTarget, $modified))
{
$statusCode = 500;
$this->yellow->page->error(500, "Can't write file '$fileNameTarget'!");
}
}
if(defined("DEBUG") && DEBUG>=2) echo "YellowUpdate::updateSoftwareNew file:$fileNameTarget<br/>\n";
}
}
if(!$this->yellow->toolbox->deleteDirectory($pathSource))
{
$statusCode = 500;
$this->yellow->page->error(500, "Can't delete path '$pathSource'!");
}
}
}
}
return $statusCode;
}
// Update startup notification
function updateStartupNotification($software)
// Update software notification for next startup
function updateSoftwareNotification($software)
{
$statusCode = 200;
$updateNotification = $this->yellow->config->get("updateNotification");