70 lines
2.2 KiB
PHP
70 lines
2.2 KiB
PHP
<?php
|
|
|
|
use fox\modules;
|
|
use fox\config;
|
|
use fox\moduleInfo;
|
|
|
|
include(__DIR__."/../Autoloader.php");
|
|
|
|
if (strtolower(config::get("Environment"))=="development") {
|
|
print "Development mode. Package installation skipped.\n";
|
|
exit;
|
|
}
|
|
|
|
print "Packages installer started\n";
|
|
foreach (scandir(modules::packagesDir) as $file) {
|
|
|
|
if (!preg_match("/\.zip$/", $file)) {
|
|
continue;
|
|
}
|
|
if (! is_file(modules::packagesDir . "/" . $file)) {
|
|
continue;
|
|
}
|
|
|
|
// read config
|
|
$newModInfo=json_decode(file_get_contents("zip://".modules::packagesDir . "/" . $file."#module.json"));
|
|
|
|
// check if module present
|
|
$modInstalled=false;
|
|
$needUpdate=false;
|
|
if (file_exists(modules::modulesDir."/".$newModInfo->name) && file_exists(modules::modulesDir."/".$newModInfo->name."/module.json")) {
|
|
$exModInfo=json_decode(file_get_contents(modules::modulesDir."/".$newModInfo->name."/module.json"));
|
|
if (!empty($exModInfo)) {
|
|
$modInstalled=true;
|
|
$needUpdate=(property_exists($exModInfo, "hash") && $exModInfo->hash!=$newModInfo->hash);
|
|
|
|
}
|
|
}
|
|
print "Module ".$newModInfo->name.": ".($modInstalled?"Installed, ".($needUpdate?"Outdated":"Actual"):"Not installed").".\n";
|
|
if ($modInstalled && $needUpdate) {
|
|
system("rm -rf \"".modules::modulesDir."/".$newModInfo->name."\"");
|
|
}
|
|
|
|
if (!$modInstalled || $needUpdate) {
|
|
print "Install...";
|
|
$zip = new \ZipArchive();
|
|
$zip->open(modules::packagesDir . "/" . $file);
|
|
mkdir (modules::modulesDir."/".$newModInfo->name);
|
|
$zip->extractTo(modules::modulesDir."/".$newModInfo->name);
|
|
|
|
if (file_exists(modules::modulesDir."/".$newModInfo->name."/fox-start.d")) {
|
|
system("chmod a+x \"".modules::modulesDir."/".$newModInfo->name."/fox-start.d/\"*");
|
|
}
|
|
|
|
$mods = moduleInfo::getAll();
|
|
|
|
foreach($mods as $mod) {
|
|
if ($newModInfo->name==$mod->instanceOf) {
|
|
$mod->modVersion=$newModInfo->version;
|
|
$mod->modBuild=$newModInfo->build;
|
|
$mod->save();
|
|
}
|
|
}
|
|
|
|
|
|
print "OK\n";
|
|
}
|
|
}
|
|
|
|
print "Packages installer completed\n";
|