mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-02-24 18:48:16 -05:00
Implement extension deletion
See https://github.com/FreshRSS/FreshRSS/issues/252
This commit is contained in:
@@ -172,6 +172,26 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
|
||||
}
|
||||
|
||||
$url_redirect = array('c' => 'extension', 'a' => 'index');
|
||||
Minz_Request::bad('not implemented yet!', $url_redirect);
|
||||
|
||||
if (Minz_Request::isPost()) {
|
||||
$ext_name = urldecode(Minz_Request::param('e'));
|
||||
$ext = Minz_ExtensionManager::find_extension($ext_name);
|
||||
|
||||
if (is_null($ext)) {
|
||||
Minz_Request::bad(_t('feedback.extensions.not_found', $ext_name),
|
||||
$url_redirect);
|
||||
}
|
||||
|
||||
$res = recursive_unlink($ext->getPath());
|
||||
if ($res) {
|
||||
Minz_Request::good(_t('feedback.extensions.removed', $ext_name),
|
||||
$url_redirect);
|
||||
} else {
|
||||
Minz_Request::bad(_t('feedback.extensions.cannot_delete', $ext_name),
|
||||
$url_redirect);
|
||||
}
|
||||
}
|
||||
|
||||
Minz_Request::forward($url_redirect, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,3 +319,29 @@ function check_install_database() {
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a directory recursively.
|
||||
*
|
||||
* From http://php.net/rmdir#110489
|
||||
*
|
||||
* @param $dir the directory to remove
|
||||
*/
|
||||
function recursive_unlink($dir) {
|
||||
if (!is_dir($dir)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$files = array_diff(scandir($dir), array('.', '..'));
|
||||
foreach ($files as $filename) {
|
||||
$filename = $dir . '/' . $filename;
|
||||
if (is_dir($filename)) {
|
||||
@chmod($filename, 0777);
|
||||
recursive_unlink($filename);
|
||||
} else {
|
||||
unlink($filename);
|
||||
}
|
||||
}
|
||||
|
||||
return rmdir($dir);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user