commit ae38c5749bdfd9cdf7a549dc270f2ea3855904ec
parent 24cae9b0d467533f7cf32db424cb881cbdb0e710
Author: markseu <mark2011@mayberg.se>
Date: Fri, 17 Feb 2017 00:26:39 +0100
System update (for Ivo)
Diffstat:
1 file changed, 60 insertions(+), 4 deletions(-)
diff --git a/system/plugins/update.php b/system/plugins/update.php
@@ -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");