Delete Plugin
This commit is contained in:
parent
87167b7770
commit
47393b4da9
@ -34,8 +34,7 @@ if (file_exists($cache) && time() - filemtime($cache) < (24 * 60 * 60)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
|
case 'delete':
|
||||||
case 'install':
|
|
||||||
if (!is_writeable($CACHE_PATH)) {
|
if (!is_writeable($CACHE_PATH)) {
|
||||||
r2(U . "pluginmanager", 'e', 'Folder cache/ is not writable');
|
r2(U . "pluginmanager", 'e', 'Folder cache/ is not writable');
|
||||||
}
|
}
|
||||||
@ -45,7 +44,53 @@ switch ($action) {
|
|||||||
set_time_limit(-1);
|
set_time_limit(-1);
|
||||||
$tipe = $routes['2'];
|
$tipe = $routes['2'];
|
||||||
$plugin = $routes['3'];
|
$plugin = $routes['3'];
|
||||||
$file = $CACHE_PATH . File::pathFixer('/') . $plugin . '.zip';
|
$file = $CACHE_PATH . DIRECTORY_SEPARATOR . $plugin . '.zip';
|
||||||
|
if (file_exists($file)) unlink($file);
|
||||||
|
if ($tipe == 'plugin') {
|
||||||
|
foreach ($json['plugins'] as $plg) {
|
||||||
|
if ($plg['id'] == $plugin) {
|
||||||
|
$fp = fopen($file, 'w+');
|
||||||
|
$ch = curl_init($plg['github'] . '/archive/refs/heads/master.zip');
|
||||||
|
curl_setopt($ch, CURLOPT_POST, 0);
|
||||||
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
|
||||||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||||
|
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||||
|
curl_exec($ch);
|
||||||
|
curl_close($ch);
|
||||||
|
fclose($fp);
|
||||||
|
|
||||||
|
$zip = new ZipArchive();
|
||||||
|
$zip->open($file);
|
||||||
|
$zip->extractTo($CACHE_PATH);
|
||||||
|
$zip->close();
|
||||||
|
$folder = $CACHE_PATH . File::pathFixer('/' . $plugin . '-main/');
|
||||||
|
if (!file_exists($folder)) {
|
||||||
|
$folder = $CACHE_PATH . File::pathFixer('/' . $plugin . '-master/');
|
||||||
|
}
|
||||||
|
if (!file_exists($folder)) {
|
||||||
|
r2(U . "pluginmanager", 'e', 'Extracted Folder is unknown');
|
||||||
|
}
|
||||||
|
scanAndRemovePath($folder, $PLUGIN_PATH . DIRECTORY_SEPARATOR);
|
||||||
|
File::deleteFolder($folder);
|
||||||
|
unlink($file);
|
||||||
|
r2(U . "pluginmanager", 's', 'Plugin ' . $plugin . ' has been deleted');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'install':
|
||||||
|
if (!is_writeable($CACHE_PATH)) {
|
||||||
|
r2(U . "pluginmanager", 'e', 'Folder cache/ is not writable');
|
||||||
|
}
|
||||||
|
if (!is_writeable($PLUGIN_PATH)) {
|
||||||
|
r2(U . "pluginmanager", 'e', 'Folder plugin/ is not writable');
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = $CACHE_PATH . DIRECTORY_SEPARATOR . $plugin . '.zip';
|
||||||
if (file_exists($file)) unlink($file);
|
if (file_exists($file)) unlink($file);
|
||||||
if ($tipe == 'plugin') {
|
if ($tipe == 'plugin') {
|
||||||
foreach ($json['plugins'] as $plg) {
|
foreach ($json['plugins'] as $plg) {
|
||||||
@ -76,7 +121,7 @@ switch ($action) {
|
|||||||
File::copyFolder($folder, $PLUGIN_PATH . DIRECTORY_SEPARATOR, ['README.md', 'LICENSE']);
|
File::copyFolder($folder, $PLUGIN_PATH . DIRECTORY_SEPARATOR, ['README.md', 'LICENSE']);
|
||||||
File::deleteFolder($folder);
|
File::deleteFolder($folder);
|
||||||
unlink($file);
|
unlink($file);
|
||||||
r2(U . "pluginmanager", 's', 'Plugin ' . $plugin . ' has been installed');
|
r2(U . "pluginmanager", 's', 'Plugin ' . $plugin . ' has been deleted');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,3 +172,24 @@ switch ($action) {
|
|||||||
$ui->assign('pgs', $json['payment_gateway']);
|
$ui->assign('pgs', $json['payment_gateway']);
|
||||||
$ui->display('plugin-manager.tpl');
|
$ui->display('plugin-manager.tpl');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function scanAndRemovePath($source, $target)
|
||||||
|
{
|
||||||
|
$files = scandir($source);
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if (is_file($source . $file)) {
|
||||||
|
if(file_exists($target.$file)){
|
||||||
|
unlink($target . $file);
|
||||||
|
}
|
||||||
|
} else if (is_dir($source . $file) && !in_array($file, ['.', '..'])) {
|
||||||
|
scanAndRemovePath($source. $file. DIRECTORY_SEPARATOR, $target. $file. DIRECTORY_SEPARATOR);
|
||||||
|
if(file_exists($target.$file)){
|
||||||
|
rmdir($target . $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(file_exists($target)){
|
||||||
|
rmdir($target);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user