diff --git a/_define.php b/_define.php index 691c246..974ae41 100644 --- a/_define.php +++ b/_define.php @@ -24,10 +24,10 @@ $this->registerModule( 'permissions' => null, 'type' => 'plugin', 'settings' => [ - 'self'=> false, + 'self' => false, ], - 'support' => 'https://github.com/JcDenis/' . basename(__DIR__), - 'details' => 'https://plugins.dotaddict.org/dc2/details/' . basename(__DIR__), - 'repository' => 'https://raw.githubusercontent.com/JcDenis/' . basename(__DIR__) . '/master/dcstore.xml', + 'support' => 'https://github.com/JcDenis/' . basename(__DIR__), + 'details' => 'https://plugins.dotaddict.org/dc2/details/' . basename(__DIR__), + 'repository' => 'https://raw.githubusercontent.com/JcDenis/' . basename(__DIR__) . '/master/dcstore.xml', ] ); diff --git a/src/Backend.php b/src/Backend.php index b747884..1dd3804 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -43,12 +43,12 @@ class Backend extends dcNsProcess return empty(Uninstaller::instance()->loadModules([$define])->getUserActions($define->getId())) ? '' : sprintf( ' ' . __('Uninstall') . '', - dcCore::app()->adminurl->get('admin.plugin.' . My::id(), ['type' => $define->get('type'), 'id' => $define->getId()]) + dcCore::app()->adminurl?->get('admin.plugin.' . My::id(), ['type' => $define->get('type'), 'id' => $define->getId()]) ); }, // perform direct action on module deletion 'pluginBeforeDeleteV2' => function (dcModuleDefine $define): void { - if (dcCore::app()->blog->settings->get('system')->get('no_uninstall_direct')) { + if (dcCore::app()->blog?->settings->get('system')->get('no_uninstall_direct')) { return; } @@ -71,9 +71,9 @@ class Backend extends dcNsProcess array_unshift($done, __('Plugin has been successfully uninstalled.')); dcPage::addSuccessNotice(implode('
', $done)); if ($define->get('type') == 'theme') { - dcCore::app()->adminurl->redirect('blog.themes', [], '#themes'); + dcCore::app()->adminurl?->redirect('admin.blog.theme', [], '#themes'); } else { - dcCore::app()->adminurl->redirect('admin.plugins', [], '#plugins'); + dcCore::app()->adminurl?->redirect('admin.plugins', [], '#plugins'); } } } catch (Exception $e) { diff --git a/src/Cleaner/Settings.php b/src/Cleaner/Settings.php index 7b026b0..3b38d2d 100644 --- a/src/Cleaner/Settings.php +++ b/src/Cleaner/Settings.php @@ -113,7 +113,7 @@ class Settings extends AbstractCleaner if ($action == 'delete_local') { dcCore::app()->con->execute( 'DELETE FROM ' . dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME . ' ' . - "WHERE blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog->id) . "' " . + "WHERE blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' " . "AND setting_ns = '" . dcCore::app()->con->escapeStr((string) $ns) . "' " ); diff --git a/src/Cleaner/Themes.php b/src/Cleaner/Themes.php index 45de3b5..a426e96 100644 --- a/src/Cleaner/Themes.php +++ b/src/Cleaner/Themes.php @@ -53,7 +53,11 @@ class Themes extends AbstractCleaner public function values(): array { - $res = self::getDirs(dcCore::app()->blog->themes_path); + if (($path = dcCore::app()->blog?->themes_path) === null) { + return []; + } + + $res = self::getDirs($path); sort($res); return $res; @@ -61,12 +65,12 @@ class Themes extends AbstractCleaner public function execute(string $action, string $ns): bool { - if ($action == 'delete') { - self::delDir(dcCore::app()->blog->themes_path, $ns, true); - - return true; + if ($action != 'delete' || ($path = dcCore::app()->blog?->themes_path) === null) { + return false; } - return false; + self::delDir($path, $ns, true); + + return true; } } diff --git a/src/Install.php b/src/Install.php index a0907db..f105041 100644 --- a/src/Install.php +++ b/src/Install.php @@ -36,7 +36,7 @@ class Install extends dcNsProcess } try { - dcCore::app()->blog->settings->get('system')->put( + dcCore::app()->blog?->settings->get('system')->put( 'no_direct_uninstall', false, 'boolean', diff --git a/src/Manage.php b/src/Manage.php index 3207a9c..fbb7b24 100644 --- a/src/Manage.php +++ b/src/Manage.php @@ -48,28 +48,28 @@ class Manage extends dcNsProcess } $type = ($_REQUEST['type'] ?? 'theme') == 'theme' ? 'themes' : 'plugins'; - $redir = $type == 'themes' ? ['blog.themes', [], '#themes'] : ['admin.plugins', [], '#plugins']; + $redir = $type == 'themes' ? ['admin.blog.theme', [], '#themes'] : ['admin.plugins', [], '#plugins']; if (empty($_REQUEST['id'])) { - dcCore::app()->adminurl->redirect($redir[0], $redir[1], $redir[2]); + dcCore::app()->adminurl?->redirect($redir[0], $redir[1], $redir[2]); } if ($type == 'themes' && !is_a(dcCore::app()->themes, 'dcThemes')) { dcCore::app()->themes = new dcThemes(); - dcCore::app()->themes->loadModules(dcCore::app()->blog->themes_path, null); + dcCore::app()->themes->loadModules((string) dcCore::app()->blog?->themes_path, null); } $define = dcCore::app()->{$type}->getDefine($_REQUEST['id']); if (!$define->isDefined()) { dcCore::app()->error->add(__('Unknown module id to uninstall')); - dcCore::app()->adminurl->redirect($redir[0], $redir[1], $redir[2]); + dcCore::app()->adminurl?->redirect($redir[0], $redir[1], $redir[2]); } $uninstaller = Uninstaller::instance()->loadModules([$define]); $actions = $uninstaller->getUserActions($define->getId()); if (empty($actions)) { dcCore::app()->error->add(__('There are no uninstall actions for this module')); - dcCore::app()->adminurl->redirect($redir[0], $redir[1], $redir[2]); + dcCore::app()->adminurl?->redirect($redir[0], $redir[1], $redir[2]); } if (empty($_POST)) { @@ -95,7 +95,7 @@ class Manage extends dcNsProcess } else { dcPage::addWarningNotice(__('No uninstall action done')); } - dcCore::app()->adminurl->redirect($redir[0], $redir[1], $redir[2]); + dcCore::app()->adminurl?->redirect($redir[0], $redir[1], $redir[2]); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } @@ -152,14 +152,14 @@ class Manage extends dcNsProcess (new Hidden(['type'], $type)), (new Hidden(['id'], $define->getId())), (new Submit(['do']))->value(__('Perform selected actions'))->class('delete'), - (new Text('', ' ' . __('Cancel') . '')), + (new Text('', ' ' . __('Cancel') . '')), ]); // display form echo (new Div())->items([ (new Text('h3', sprintf(($type == 'themes' ? __('Uninstall theme "%s"') : __('Uninstall plugin "%s"')), __($define->get('name'))))), (new Text('p', sprintf(__('The module "%s %s" offers advanced unsintall process:'), $define->getId(), $define->get('version')))), - (new Form('uninstall-form'))->method('post')->action(dcCore::app()->adminurl->get('admin.plugin.' . My::id()))->fields($fields), + (new Form('uninstall-form'))->method('post')->action(dcCore::app()->adminurl?->get('admin.plugin.' . My::id()))->fields($fields), ])->render(); dcPage::closeModule(); diff --git a/src/Prepend.php b/src/Prepend.php index a214dbe..3aa86ac 100644 --- a/src/Prepend.php +++ b/src/Prepend.php @@ -23,7 +23,7 @@ class Prepend extends dcNsProcess { static::$init = defined('DC_CONTEXT_ADMIN') && My::phpCompliant() - && dcCore::app()->auth->isSuperAdmin(); + && dcCore::app()->auth?->isSuperAdmin(); return static::$init; } diff --git a/src/Uninstaller.php b/src/Uninstaller.php index 44f1df3..8051fea 100644 --- a/src/Uninstaller.php +++ b/src/Uninstaller.php @@ -224,7 +224,7 @@ class Uninstaller { $output = ''; if ($this->hasRender($id)) { - $class = $this->getModule($id)->get('namespace') . '\\Uninstall'; + $class = $this->getModule($id)?->get('namespace') . '\\Uninstall'; ob_start();