System update (for Ivo)
This commit is contained in:
parent
24cae9b0d4
commit
ae38c5749b
1 changed files with 60 additions and 4 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Reference in a new issue