rebuild namespace (ns playground)

master
Jean-Christian Paul Denis 2022-12-21 15:41:27 +01:00
parent c928eca287
commit bdd295d5ce
Signed by: JcDenis
GPG Key ID: 1B5B8C5B90B6C951
23 changed files with 360 additions and 333 deletions

View File

@ -12,11 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/* dotclear */ /* dotclear */
use dcAdmin; use dcAdmin;
@ -33,58 +29,52 @@ use files;
* *
* Add menu and dashboard icons, load Improve action modules. * Add menu and dashboard icons, load Improve action modules.
*/ */
class admin class Admin
{ {
public static function process(): void private static $init = false;
public static function init(): bool
{ {
self::addSettingsNamespace(); if (defined('DC_CONTEXT_ADMIN')) {
self::addAdminBehaviors(); dcCore::app()->blog->settings->addNamespace(Core::id());
self::addAdminMenu(); self::$init = true;
self::addImproveActions(); }
return self::$init;
} }
private static function addSettingsNamespace(): void public static function process()
{ {
dcCore::app()->blog->settings->addNamespace('improve'); if (!self::$init) {
} return false;
}
private static function addAdminBehaviors(): void
{
dcCore::app()->addBehavior('adminDashboardFavoritesV2', function (dcFavorites $favs): void { dcCore::app()->addBehavior('adminDashboardFavoritesV2', function (dcFavorites $favs): void {
$favs->register( $favs->register(
'improve', 'improve',
[ [
'title' => __('improve'), 'title' => __('improve'),
'url' => dcCore::app()->adminurl->get('admin.plugin.improve'), 'url' => dcCore::app()->adminurl->get('admin.plugin.' . Core::id()),
'small-icon' => dcPage::getPF('improve/icon.svg'), 'small-icon' => dcPage::getPF(Core::id() . '/icon.svg'),
'large-icon' => dcPage::getPF('improve/icon.svg'), 'large-icon' => dcPage::getPF(Core::id() . '/icon.svg'),
//'permissions' => null, //'permissions' => null,
] ]
); );
}); });
}
private static function addAdminMenu(): void
{
dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem( dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem(
__('improve'), __('improve'),
dcCore::app()->adminurl->get('admin.plugin.improve'), dcCore::app()->adminurl->get('admin.plugin.' . Core::id()),
dcPage::getPF('improve/icon.svg'), dcPage::getPF(Core::id() . '/icon.svg'),
preg_match('/' . preg_quote(dcCore::app()->adminurl->get('admin.plugin.improve')) . '(&.*)?$/', $_SERVER['REQUEST_URI']), preg_match('/' . preg_quote(dcCore::app()->adminurl->get('admin.plugin.' . Core::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']),
dcCore::app()->auth->isSuperAdmin() dcCore::app()->auth->isSuperAdmin()
); );
}
private static function addImproveActions(): void foreach (files::scandir(Prepend::getActionsDir()) as $file) {
{ if (is_file(Prepend::getActionsDir() . $file) && '.php' == substr($file, -4)) {
foreach (files::scandir(prepend::getActionsDir()) as $file) { Clearbricks::lib()->autoload([Prepend::getActionsNS() . substr($file, 0, -4) => Prepend::getActionsDir() . $file]);
if (is_file(prepend::getActionsDir() . $file) && '.php' == substr($file, -4)) { dcCore::app()->addBehavior('improveAddAction', [Prepend::getActionsNS() . substr($file, 0, -4), 'create']); /* @phpstan-ignore-line */
Clearbricks::lib()->autoload([prepend::getActionsNS() . substr($file, 0, -4) => prepend::getActionsDir() . $file]);
dcCore::app()->addBehavior('improveAddAction', [prepend::getActionsNS() . substr($file, 0, -4), 'create']); /* @phpstan-ignore-line */
} }
} }
} }
} }
/* process */
admin::process();

View File

@ -12,11 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -33,34 +29,28 @@ use Exception;
* *
* Set preference for this plugin. * Set preference for this plugin.
*/ */
class config class Config
{ {
/** @var improve $improve improve core instance */ private static $init = false;
private $improve = null;
public function __construct() public static function init(): bool
{ {
dcPage::checkSuper(); if (defined('DC_CONTEXT_ADMIN')) {
dcPage::checkSuper();
$this->improve = new improve(); dcCore::app()->blog->settings->addNamespace(Core::id());
self::$init = true;
$this->saveConfig();
$this->displayConfig();
}
private function getModules(): array
{
$modules = [];
foreach ($this->improve->modules() as $action) {
$modules[$action->name()] = $action->id();
} }
$modules = array_merge($modules, array_flip($this->improve->disabled()));
return $modules; return self::$init;
} }
private function saveConfig(): void public static function process(): void
{ {
if (!self::$init) {
return;
}
if (empty($_POST['save'])) { if (empty($_POST['save'])) {
return; return;
} }
@ -70,8 +60,8 @@ class config
if (!empty($_POST['disabled']) && is_array($_POST['disabled'])) { if (!empty($_POST['disabled']) && is_array($_POST['disabled'])) {
$pdisabled = implode(';', $_POST['disabled']); $pdisabled = implode(';', $_POST['disabled']);
} }
dcCore::app()->blog->settings->improve->put('disabled', $pdisabled); dcCore::app()->blog->settings->get(Core::id())->put('disabled', $pdisabled);
dcCore::app()->blog->settings->improve->put('nodetails', !empty($_POST['nodetails'])); dcCore::app()->blog->settings->get(Core::id())->put('nodetails', !empty($_POST['nodetails']));
dcPage::addSuccessNotice(__('Configuration successfully updated')); dcPage::addSuccessNotice(__('Configuration successfully updated'));
@ -84,24 +74,33 @@ class config
} }
} }
private function displayConfig(): void public static function render()
{ {
if (!self::$init) {
return;
}
$improve = new Core();
$modules = [];
foreach ($improve->modules() as $action) {
$modules[$action->name()] = $action->id();
}
$modules = array_merge($modules, array_flip($improve->disabled()));
echo '<div class="fieldset"><h4>' . __('List of disabled actions:') . '</h4>'; echo '<div class="fieldset"><h4>' . __('List of disabled actions:') . '</h4>';
foreach ($this->getModules() as $name => $id) { foreach ($modules as $name => $id) {
echo echo
'<p><label class="classic" title="' . $id . '">' . '<p><label class="classic" title="' . $id . '">' .
form::checkbox(['disabled[]'], $id, ['checked' => array_key_exists($id, $this->improve->disabled())]) . form::checkbox(['disabled[]'], $id, ['checked' => array_key_exists($id, $improve->disabled())]) .
__($name) . '</label></p>'; __($name) . '</label></p>';
} }
echo echo
'</div><div class="fieldset"><h4>' . __('Options') . '</h4>' . '</div><div class="fieldset"><h4>' . __('Options') . '</h4>' .
'<p><label class="classic">' . '<p><label class="classic">' .
form::checkbox('nodetails', '1', ['checked' => dcCore::app()->blog->settings->improve->nodetails]) . form::checkbox('nodetails', '1', ['checked' => dcCore::app()->blog->settings->get(Core::id())->get('nodetails')]) .
__('Hide details of rendered actions') . '</label></p>' . __('Hide details of rendered actions') . '</label></p>' .
'</div>'; '</div>';
} }
} }
/* process */
new config();

View File

@ -12,15 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
use dcUtils;
/* php */ /* php */
use Exception; use Exception;
@ -31,7 +26,7 @@ use Exception;
* Set default settings and version * Set default settings and version
* and manage changes on updates. * and manage changes on updates.
*/ */
class install class Install
{ {
/** @var array Improve default settings */ /** @var array Improve default settings */
private static $default_settings = [[ private static $default_settings = [[
@ -41,26 +36,37 @@ class install
'string', 'string',
]]; ]];
// Nothing to change below
private static $init = false;
public static function init(): bool
{
self::$init = defined('DC_CONTEXT_ADMIN') && dcCore::app()->newVersion(Core::id(), dcCore::app()->plugins->moduleInfo(Core::id(), 'version'));
return self::$init;
}
public static function process(): ?bool public static function process(): ?bool
{ {
if (!dcCore::app()->newVersion( if (!self::$init) {
basename(__DIR__), return false;
dcCore::app()->plugins->moduleInfo(basename(__DIR__), 'version')
)) {
return null;
} }
dcCore::app()->blog->settings->addNamespace(basename(__DIR__)); try {
self::update_0_8_0(); self::update_0_8_0();
self::putSettings(); self::putSettings();
return true;
} catch (Exception $e) {
dcCore::app()->error->add($e->getMessage());
return true; return false;
}
} }
private static function putSettings(): void private static function putSettings(): void
{ {
foreach (self::$default_settings as $v) { foreach (self::$default_settings as $v) {
dcCore::app()->blog->settings->__get(basename(__DIR__))->put( dcCore::app()->blog->settings->get(Core::id())->put(
$v[0], $v[0],
$v[2], $v[2],
$v[3], $v[3],
@ -74,22 +80,13 @@ class install
/** Update improve < 0.8 : action modules settings name */ /** Update improve < 0.8 : action modules settings name */
private static function update_0_8_0(): void private static function update_0_8_0(): void
{ {
if (version_compare(dcCore::app()->getVersion(basename(__DIR__)) ?? '0', '0.8', '<')) { if (version_compare(dcCore::app()->getVersion(Core::id()) ?? '0', '0.8', '<')) {
foreach (dcCore::app()->blog->settings->__get(basename(__DIR__))->dumpGlobalSettings() as $id => $values) { foreach (dcCore::app()->blog->settings->get(Core::id())->dumpGlobalSettings() as $id => $values) {
$newId = str_replace('ImproveAction', '', $id); $newId = str_replace('ImproveAction', '', $id);
if ($id != $newId) { if ($id != $newId) {
dcCore::app()->blog->settings->__get(basename(__DIR__))->rename($id, strtolower($newId)); dcCore::app()->blog->settings->get(Core::id())->rename($id, strtolower($newId));
} }
} }
} }
} }
} }
/* process */
try {
return install::process();
} catch (Exception $e) {
dcCore::app()->error->add($e->getMessage());
return false;
}

View File

@ -12,11 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
if (!defined('DC_CONTEXT_ADMIN')) {
return;
}
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -38,59 +34,63 @@ use Exception;
* Display page and configure modules * Display page and configure modules
* and launch action. * and launch action.
*/ */
class index class Manage
{ {
/** @var improve $improve improve core instance */ /** @var improve $improve improve core instance */
private $improve = null; private static $improve = null;
/** @var string $type Current module(s) type */ /** @var string $type Current module(s) type */
private $type = 'plugin'; private static $type = 'plugin';
/** @var string $module Current module id */ /** @var string $module Current module id */
private $module = '-'; private static $module = '-';
/** @var action|null $action Current action module */ /** @var action|null $action Current action module */
private $action = null; private static $action = null;
public function __construct() private static $init = false;
public static function init(): bool
{ {
dcPage::checkSuper(); if (defined('DC_CONTEXT_ADMIN')) {
dcPage::checkSuper();
$this->improve = new improve(); self::$improve = new Core();
$this->type = $this->getType(); self::$type = self::getType();
$this->module = $this->getModule(); self::$module = self::getModule();
$this->action = $this->getAction(); self::$action = self::getAction();
self::$init = true;
}
$this->doAction(); return self::$init;
$this->displayPage();
} }
private function getType(): string private static function getType(): string
{ {
return $_REQUEST['type'] ?? 'plugin'; return $_REQUEST['type'] ?? 'plugin';
} }
private function getModule(): string private static function getModule(): string
{ {
$module = $_REQUEST['module'] ?? ''; $module = $_REQUEST['module'] ?? '';
if (!in_array($module, $this->comboModules())) { if (!in_array($module, self::comboModules())) {
$module = '-'; $module = '-';
} }
return $module; return $module;
} }
private function getAction(): ?action private static function getAction(): ?action
{ {
return empty($_REQUEST['config']) ? null : $this->improve->module($_REQUEST['config']); return empty($_REQUEST['config']) ? null : self::$improve->module($_REQUEST['config']);
} }
private function getPreference(): array private static function getPreference(): array
{ {
try { try {
if (!empty($this->type)) { if (!empty(self::$type)) {
$preferences = dcCore::app()->blog->settings->improve->preferences; $preferences = dcCore::app()->blog->settings->get(Core::id())->get('preferences');
if (is_string($preferences)) { if (is_string($preferences)) {
$preferences = unserialize($preferences); $preferences = unserialize($preferences);
if (is_array($preferences)) { if (is_array($preferences)) {
return array_key_exists($this->type, $preferences) ? $preferences[$this->type] : []; return array_key_exists(self::$type, $preferences) ? $preferences[self::$type] : [];
} }
} }
} }
@ -100,18 +100,18 @@ class index
return []; return [];
} }
private function setPreferences(): bool private static function setPreferences(): bool
{ {
if (!empty($_POST['save_preferences'])) { if (!empty($_POST['save_preferences'])) {
$preferences[$this->type] = []; $preferences[self::$type] = [];
if (!empty($_POST['actions'])) { if (!empty($_POST['actions'])) {
foreach ($this->improve->modules() as $action) { foreach (self::$improve->modules() as $action) {
if (in_array($this->type, $action->types()) && in_array($action->id(), $_POST['actions'])) { if (in_array(self::$type, $action->types()) && in_array($action->id(), $_POST['actions'])) {
$preferences[$this->type][] = $action->id(); $preferences[self::$type][] = $action->id();
} }
} }
} }
dcCore::app()->blog->settings->improve->put('preferences', serialize($preferences), 'string', null, true, true); dcCore::app()->blog->settings->get(Core::id())->put('preferences', serialize($preferences), 'string', null, true, true);
dcAdminNotices::addSuccessNotice(__('Configuration successfully updated')); dcAdminNotices::addSuccessNotice(__('Configuration successfully updated'));
return true; return true;
@ -120,9 +120,9 @@ class index
return false; return false;
} }
private function comboModules(): array private static function comboModules(): array
{ {
$allow_distrib = (bool) dcCore::app()->blog->settings->improve->allow_distrib; $allow_distrib = (bool) dcCore::app()->blog->settings->get(Core::id())->get('allow_distrib');
$official = [ $official = [
'plugin' => explode(',', DC_DISTRIB_PLUGINS), 'plugin' => explode(',', DC_DISTRIB_PLUGINS),
'theme' => explode(',', DC_DISTRIB_THEMES), 'theme' => explode(',', DC_DISTRIB_THEMES),
@ -134,9 +134,9 @@ class index
} }
$combo_modules = []; $combo_modules = [];
$modules = self::getModules($this->type == 'plugin' ? 'plugins' : 'themes'); $modules = self::getModules(self::$type == 'plugin' ? 'plugins' : 'themes');
foreach ($modules as $id => $m) { foreach ($modules as $id => $m) {
if (!$m['root_writable'] || !$allow_distrib && in_array($id, $official[$this->type])) { if (!$m['root_writable'] || !$allow_distrib && in_array($id, $official[self::$type])) {
continue; continue;
} }
$combo_modules[sprintf(__('%s (%s)'), __($m['name']), $id)] = $id; $combo_modules[sprintf(__('%s (%s)'), __($m['name']), $id)] = $id;
@ -161,37 +161,41 @@ class index
return null; return null;
} }
private function doAction(): void public static function process(): void
{ {
if (!self::$init) {
return;
}
$log_id = ''; $log_id = '';
$done = $this->setPreferences(); $done = self::setPreferences();
if (!empty($_POST['fix'])) { if (!empty($_POST['fix'])) {
if (empty($_POST['actions'])) { if (empty($_POST['actions'])) {
dcAdminNotices::addWarningNotice(__('No action selected')); dcAdminNotices::addWarningNotice(__('No action selected'));
} elseif ($this->module == '-') { } elseif (self::$module == '-') {
dcAdminNotices::addWarningNotice(__('No module selected')); dcAdminNotices::addWarningNotice(__('No module selected'));
} else { } else {
try { try {
$time = $this->improve->fixModule( $time = self::$improve->fixModule(
$this->type, self::$type,
$this->module, self::$module,
self::getModules($this->type == 'plugin' ? 'plugins' : 'themes', $this->module), self::getModules(self::$type == 'plugin' ? 'plugins' : 'themes', self::$module),
$_POST['actions'] $_POST['actions']
); );
$log_id = $this->improve->writeLogs(); $log_id = self::$improve->writeLogs();
dcCore::app()->blog->triggerBlog(); dcCore::app()->blog->triggerBlog();
if ($this->improve->hasLog('error')) { if (self::$improve->hasLog('error')) {
$notice = ['type' => dcAdminNotices::NOTICE_ERROR, 'msg' => __('Fix of "%s" complete in %s secondes with errors')]; $notice = ['type' => dcAdminNotices::NOTICE_ERROR, 'msg' => __('Fix of "%s" complete in %s secondes with errors')];
} elseif ($this->improve->hasLog('warning')) { } elseif (self::$improve->hasLog('warning')) {
$notice = ['type' => dcAdminNotices::NOTICE_WARNING, 'msg' => __('Fix of "%s" complete in %s secondes with warnings')]; $notice = ['type' => dcAdminNotices::NOTICE_WARNING, 'msg' => __('Fix of "%s" complete in %s secondes with warnings')];
} elseif ($this->improve->hasLog('success')) { } elseif (self::$improve->hasLog('success')) {
$notice = ['type' => dcAdminNotices::NOTICE_SUCCESS, 'msg' => __('Fix of "%s" complete in %s secondes')]; $notice = ['type' => dcAdminNotices::NOTICE_SUCCESS, 'msg' => __('Fix of "%s" complete in %s secondes')];
} else { } else {
$notice = ['type' => dcAdminNotices::NOTICE_SUCCESS, 'msg' => __('Fix of "%s" complete in %s secondes without messages')]; $notice = ['type' => dcAdminNotices::NOTICE_SUCCESS, 'msg' => __('Fix of "%s" complete in %s secondes without messages')];
} }
dcAdminNotices::addNotice($notice['type'], sprintf($notice['msg'], $this->module, $time)); dcAdminNotices::addNotice($notice['type'], sprintf($notice['msg'], self::$module, $time));
$done = true; $done = true;
} catch (Exception $e) { } catch (Exception $e) {
@ -202,19 +206,23 @@ class index
} }
if ($done) { if ($done) {
dcCore::app()->adminurl->redirect('admin.plugin.improve', ['type' => $this->type, 'module' => $this->module, 'upd' => $log_id]); dcCore::app()->adminurl->redirect('admin.plugin.' . Core::id(), ['type' => self::$type, 'module' => self::$module, 'upd' => $log_id]);
} }
} }
private function displayPage(): void public static function render(): void
{ {
if (!self::$init) {
return;
}
$bc = empty($_REQUEST['config']) ? $bc = empty($_REQUEST['config']) ?
($this->type == 'theme' ? __('Themes actions') : __('Plugins actions')) : (self::$type == 'theme' ? __('Themes actions') : __('Plugins actions')) :
__('Configure module'); __('Configure module');
echo '<html><head><title>' . __('improve') . '</title>' . echo '<html><head><title>' . __('improve') . '</title>' .
dcPage::jsLoad(dcPage::getPF('improve/js/index.js')) . dcPage::jsModuleLoad(Core::id() . '/js/index.js') .
($this->action === null ? '' : $this->action->header()) . (self::$action === null ? '' : self::$action->header()) .
'</head><body>' . '</head><body>' .
dcPage::notices() . dcPage::notices() .
dcPage::breadcrumb([ dcPage::breadcrumb([
@ -224,64 +232,64 @@ class index
]); ]);
if (empty($_REQUEST['config'])) { if (empty($_REQUEST['config'])) {
$this->displayActions(); self::displayActions();
} else { } else {
$this->displayConfigurator(); self::displayConfigurator();
} }
echo '</body></html>'; echo '</body></html>';
} }
private function displayConfigurator(): void private static function displayConfigurator(): void
{ {
$back_url = $_REQUEST['redir'] ?? dcCore::app()->adminurl->get('admin.plugin.improve', ['type' => $this->type]); $back_url = $_REQUEST['redir'] ?? dcCore::app()->adminurl->get('admin.plugin.' . Core::id(), ['type' => self::$type]);
if (null === $this->action) { if (null === self::$action) {
echo ' echo '
<p class="warning">' . __('Unknow module') . '</p> <p class="warning">' . __('Unknow module') . '</p>
<p><a class="back" href="' . $back_url . '">' . __('Back') . '</a></p>'; <p><a class="back" href="' . $back_url . '">' . __('Back') . '</a></p>';
} else { } else {
$redir = $_REQUEST['redir'] ?? dcCore::app()->adminurl->get('admin.plugin.improve', ['type' => $this->type, 'config' => $this->action->id()]); $redir = $_REQUEST['redir'] ?? dcCore::app()->adminurl->get('admin.plugin.' . Core::id(), ['type' => self::$type, 'config' => self::$action->id()]);
$res = $this->action->configure($redir); $res = self::$action->configure($redir);
echo ' echo '
<h3>' . sprintf(__('Configure module "%s"'), $this->action->name()) . '</h3> <h3>' . sprintf(__('Configure module "%s"'), self::$action->name()) . '</h3>
<p><a class="back" href="' . $back_url . '">' . __('Back') . '</a></p> <p><a class="back" href="' . $back_url . '">' . __('Back') . '</a></p>
<p class="info">' . html::escapeHTML($this->action->description()) . '</p> <p class="info">' . html::escapeHTML(self::$action->description()) . '</p>
<form action="' . dcCore::app()->adminurl->get('admin.plugin.improve') . '" method="post" id="form-actions">' . <form action="' . dcCore::app()->adminurl->get('admin.plugin.' . Core::id()) . '" method="post" id="form-actions">' .
(empty($res) ? '<p class="message">' . __('Nothing to configure') . '</p>' : $res) . ' (empty($res) ? '<p class="message">' . __('Nothing to configure') . '</p>' : $res) . '
<p class="clear"><input type="submit" name="save" value="' . __('Save') . '" />' . <p class="clear"><input type="submit" name="save" value="' . __('Save') . '" />' .
form::hidden('type', $this->type) . form::hidden('type', self::$type) .
form::hidden('config', $this->action->id()) . form::hidden('config', self::$action->id()) .
form::hidden('redir', $redir) . form::hidden('redir', $redir) .
dcCore::app()->formNonce() . '</p>' . dcCore::app()->formNonce() . '</p>' .
'</form>'; '</form>';
} }
} }
private function displayActions(): void private static function displayActions(): void
{ {
echo echo
'<form method="get" action="' . dcCore::app()->adminurl->get('admin.plugin.improve') . '" id="improve_menu">' . '<form method="get" action="' . dcCore::app()->adminurl->get('admin.plugin.' . Core::id()) . '" id="improve_menu">' .
'<p class="anchor-nav"><label for="type" class="classic">' . __('Goto:') . ' </label>' . '<p class="anchor-nav"><label for="type" class="classic">' . __('Goto:') . ' </label>' .
form::combo('type', [__('Plugins') => 'plugin', __('Themes') => 'theme'], $this->type) . ' ' . form::combo('type', [__('Plugins') => 'plugin', __('Themes') => 'theme'], self::$type) . ' ' .
'<input type="submit" value="' . __('Ok') . '" />' . '<input type="submit" value="' . __('Ok') . '" />' .
form::hidden('p', 'improve') . '</p>' . form::hidden('p', 'improve') . '</p>' .
'</form>'; '</form>';
$combo_modules = $this->comboModules(); $combo_modules = self::comboModules();
if (count($combo_modules) == 1) { if (count($combo_modules) == 1) {
echo '<p class="message">' . __('No module to manage') . '</p>'; echo '<p class="message">' . __('No module to manage') . '</p>';
} else { } else {
echo '<form action="' . dcCore::app()->adminurl->get('admin.plugin.improve') . '" method="post" id="form-actions">' . echo '<form action="' . dcCore::app()->adminurl->get('admin.plugin.' . Core::id()) . '" method="post" id="form-actions">' .
'<table><caption class="hidden">' . __('Actions') . '</caption><thead><tr>' . '<table><caption class="hidden">' . __('Actions') . '</caption><thead><tr>' .
'<th colspan="2" class="first">' . __('Action') . '</td>' . '<th colspan="2" class="first">' . __('Action') . '</td>' .
'<th scope="col">' . __('Description') . '</td>' . '<th scope="col">' . __('Description') . '</td>' .
'<th scope="col">' . __('Configuration') . '</td>' . '<th scope="col">' . __('Configuration') . '</td>' .
(DC_DEBUG ? '<th scope="col">' . __('Priority') . '</td>' : '') . /* @phpstan-ignore-line */ (DC_DEBUG ? '<th scope="col">' . __('Priority') . '</td>' : '') . /* @phpstan-ignore-line */
'</tr></thead><tbody>'; '</tr></thead><tbody>';
foreach ($this->improve->modules() as $action) { foreach (self::$improve->modules() as $action) {
if (!in_array($this->type, $action->types())) { if (!in_array(self::$type, $action->types())) {
continue; continue;
} }
echo echo
@ -290,7 +298,7 @@ class index
['actions[]', ['actions[]',
'action_' . $action->id(), ], 'action_' . $action->id(), ],
$action->id(), $action->id(),
in_array($action->id(), $this->getPreference()) && $action->isConfigured(), in_array($action->id(), self::getPreference()) && $action->isConfigured(),
'', '',
'', '',
!$action->isConfigured() !$action->isConfigured()
@ -301,7 +309,7 @@ class index
'<td class="maximal">' . $action->description() . '</td>' . '<td class="maximal">' . $action->description() . '</td>' .
'<td class="minimal nowrap modules">' . ( '<td class="minimal nowrap modules">' . (
false === $action->configurator() ? '' : false === $action->configurator() ? '' :
'<a class="module-config" href="' . dcCore::app()->adminurl->get('admin.plugin.improve', ['type' => $this->type, 'config' => $action->id()]) . '<a class="module-config" href="' . dcCore::app()->adminurl->get('admin.plugin.' . Core::id(), ['type' => self::$type, 'config' => $action->id()]) .
'" title="' . sprintf(__("Configure action '%s'"), $action->name()) . '">' . __('Configure') . '</a>' '" title="' . sprintf(__("Configure action '%s'"), $action->name()) . '">' . __('Configure') . '</a>'
) . '</td>' . ) . '</td>' .
(DC_DEBUG ? '<td class="minimal"><span class="debug">' . $action->priority() . '</span></td>' : '') . /* @phpstan-ignore-line */ (DC_DEBUG ? '<td class="minimal"><span class="debug">' . $action->priority() . '</span></td>' : '') . /* @phpstan-ignore-line */
@ -314,17 +322,17 @@ class index
form::checkbox('save_preferences', 1, !empty($_POST['save_preferences'])) . form::checkbox('save_preferences', 1, !empty($_POST['save_preferences'])) .
__('Save fields selection as preference') . '</label></p> __('Save fields selection as preference') . '</label></p>
<p class="col right"><label for="module" class="classic">' . __('Select a module:') . ' </label>' . <p class="col right"><label for="module" class="classic">' . __('Select a module:') . ' </label>' .
form::combo('module', $combo_modules, $this->module) . form::combo('module', $combo_modules, self::$module) .
' <input type="submit" name="fix" value="' . __('Fix it') . '" />' . ' <input type="submit" name="fix" value="' . __('Fix it') . '" />' .
form::hidden(['type'], $this->type) . form::hidden(['type'], self::$type) .
dcCore::app()->formNonce() . ' dcCore::app()->formNonce() . '
</p> </p>
</div> </div>
<br class="clear" /> <br class="clear" />
</form>'; </form>';
if (!empty($_REQUEST['upd']) && !dcCore::app()->blog->settings->improve->nodetails) { if (!empty($_REQUEST['upd']) && !dcCore::app()->blog->settings->get(Core::id())->get('nodetails')) {
$logs = $this->improve->parseLogs((int) $_REQUEST['upd']); $logs = self::$improve->parseLogs((int) $_REQUEST['upd']);
if (!empty($logs)) { if (!empty($logs)) {
echo '<div class="fieldset"><h4>' . __('Details') . '</h4>'; echo '<div class="fieldset"><h4>' . __('Details') . '</h4>';
@ -333,7 +341,7 @@ class index
foreach ($types as $type => $tools) { foreach ($types as $type => $tools) {
echo '<div class="' . $type . '"><ul>'; echo '<div class="' . $type . '"><ul>';
foreach ($tools as $tool => $msgs) { foreach ($tools as $tool => $msgs) {
$a = $this->improve->module($tool); $a = self::$improve->module($tool);
if (null !== $a) { if (null !== $a) {
echo '<li>' . $a->name() . '<ul>'; echo '<li>' . $a->name() . '<ul>';
foreach ($msgs as $msg) { foreach ($msgs as $msg) {
@ -352,6 +360,3 @@ class index
} }
} }
} }
/* process */
new index();

View File

@ -12,14 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
use Clearbricks; use Clearbricks;
if (!defined('DC_RC_PATH') || !defined('DC_CONTEXT_ADMIN')) {
return;
}
/** /**
* Improve prepend class * Improve prepend class
* *
@ -27,23 +23,39 @@ if (!defined('DC_RC_PATH') || !defined('DC_CONTEXT_ADMIN')) {
*/ */
class prepend class prepend
{ {
public static function process(): void private static $init = false;
public static function init(): bool
{ {
foreach (['improve', 'action', 'module'] as $class) { self::$init = defined('DC_RC_PATH') && defined('DC_CONTEXT_ADMIN');
Clearbricks::lib()->autoload(['plugins\\improve\\' . $class => __DIR__ . '/inc/core/' . $class . '.php']);
return self::$init;
}
public static function process()
{
if (!self::$init) {
return false;
}
// Core plugin class
foreach (['Core', 'Action', 'Module'] as $class) {
Clearbricks::lib()->autoload(['Dotclear\\Plugin\\improve\\' . $class => implode(DIRECTORY_SEPARATOR, [__DIR__, 'core', $class . '.php'])]);
}
// Dotclear plugin class
foreach (['Admin', 'Config', 'Install', 'Manage', 'Prepend', 'Uninstall'] as $class) {
Clearbricks::lib()->autoload(['Dotclear\\Plugin\\improve\\' . $class => implode(DIRECTORY_SEPARATOR, [__DIR__, $class . '.php'])]);
} }
} }
public static function getActionsDir(): string public static function getActionsDir(): string
{ {
return __DIR__ . '/inc/module/'; return __DIR__ . '/module/';
} }
public static function getActionsNS(): string public static function getActionsNS(): string
{ {
return 'plugins\\improve\\module\\'; return 'Dotclear\\Plugin\\improve\\Module\\';
} }
} }
/* process */
prepend::process();

View File

@ -10,74 +10,91 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { declare(strict_types=1);
return null;
namespace Dotclear\Plugin\improve;
class Uninstall
{
private static $init = false;
public static function init(): bool
{
self::$init = defined('DC_RC_PATH');
return self::$init;
}
public static function process($uninstaller)
{
if (!self::$init) {
return false;
}
$uninstaller->addUserAction(
/* type */
'settings',
/* action */
'delete_all',
/* ns */
Core::id(),
/* desc */
__('delete all settings')
);
$uninstaller->addUserAction(
/* type */
'plugins',
/* action */
'delete',
/* ns */
Core::id(),
/* desc */
__('delete plugin files')
);
$uninstaller->addUserAction(
/* type */
'versions',
/* action */
'delete',
/* ns */
Core::id(),
/* desc */
__('delete the version number')
);
$uninstaller->addDirectAction(
/* type */
'settings',
/* action */
'delete_all',
/* ns */
Core::id(),
/* desc */
sprintf(__('delete all %s settings'), Core::id())
);
$uninstaller->addDirectAction(
/* type */
'plugins',
/* action */
'delete',
/* ns */
Core::id(),
/* desc */
sprintf(__('delete %s plugin files'), Core::id())
);
$uninstaller->addDirectAction(
/* type */
'versions',
/* action */
'delete',
/* ns */
Core::id(),
/* desc */
sprintf(__('delete %s version number'), Core::id())
);
}
} }
$mod_id = 'improve';
$this->addUserAction(
/* type */
'settings',
/* action */
'delete_all',
/* ns */
$mod_id,
/* desc */
__('delete all settings')
);
$this->addUserAction(
/* type */
'plugins',
/* action */
'delete',
/* ns */
$mod_id,
/* desc */
__('delete plugin files')
);
$this->addUserAction(
/* type */
'versions',
/* action */
'delete',
/* ns */
$mod_id,
/* desc */
__('delete the version number')
);
$this->addDirectAction(
/* type */
'settings',
/* action */
'delete_all',
/* ns */
$mod_id,
/* desc */
sprintf(__('delete all %s settings'), $mod_id)
);
$this->addDirectAction(
/* type */
'plugins',
/* action */
'delete',
/* ns */
$mod_id,
/* desc */
sprintf(__('delete %s plugin files'), $mod_id)
);
$this->addDirectAction(
/* type */
'versions',
/* action */
'delete',
/* ns */
$mod_id,
/* desc */
sprintf(__('delete %s version number'), $mod_id)
);

View File

@ -12,7 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -22,7 +22,7 @@ use dcPage;
use http; use http;
/* php */ /* php */
use arrayObject; use ArrayObject;
/** /**
* Improve action class helper * Improve action class helper
@ -34,7 +34,7 @@ use arrayObject;
* then function init() of your class wil be called. * then function init() of your class wil be called.
* One class must manage only one action. * One class must manage only one action.
*/ */
abstract class action abstract class Action
{ {
/** @var array<string> Current module */ /** @var array<string> Current module */
protected $module = []; protected $module = [];
@ -83,9 +83,9 @@ abstract class action
*/ */
final public function __construct() final public function __construct()
{ {
$this->class_name = str_replace(prepend::getActionsNS(), '', get_called_class()); $this->class_name = str_replace(Prepend::getActionsNS(), '', get_called_class());
$settings = dcCore::app()->blog->settings->improve->get('settings_' . $this->class_name); $settings = dcCore::app()->blog->settings->get(Core::id())->get('settings_' . $this->class_name);
if (null != $settings) { if (null != $settings) {
$settings = unserialize($settings); $settings = unserialize($settings);
} }
@ -94,7 +94,7 @@ abstract class action
$this->init(); $this->init();
// can overload priority by settings // can overload priority by settings
if (1 < ($p = (int) dcCore::app()->blog->settings->improve->get('priority_' . $this->class_name))) { if (1 < ($p = (int) dcCore::app()->blog->settings->get(Core::id())->get('priority_' . $this->class_name))) {
$this->priority = $p; $this->priority = $p;
} }
} }
@ -104,7 +104,7 @@ abstract class action
* *
* @param ArrayObject $list ArrayObject of actions list * @param ArrayObject $list ArrayObject of actions list
*/ */
final public static function create(arrayObject $list): void final public static function create(ArrayObject $list): void
{ {
$child = static::class; $child = static::class;
$class = new $child(); $class = new $child();
@ -235,7 +235,7 @@ abstract class action
*/ */
final protected function redirect(string $url): bool final protected function redirect(string $url): bool
{ {
dcCore::app()->blog->settings->improve->put( dcCore::app()->blog->settings->get(Core::id())->put(
'settings_' . $this->class_name, 'settings_' . $this->class_name,
serialize($this->settings), serialize($this->settings),
'string', 'string',

View File

@ -12,7 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -29,7 +29,7 @@ use Exception;
/** /**
* Improve main class * Improve main class
*/ */
class improve class Core
{ {
/** @var array Allowed file extensions to open */ /** @var array Allowed file extensions to open */
private static $readfile_extensions = [ private static $readfile_extensions = [
@ -53,7 +53,7 @@ class improve
*/ */
public function __construct() public function __construct()
{ {
$disabled = explode(';', (string) dcCore::app()->blog->settings->improve->disabled); $disabled = explode(';', (string) dcCore::app()->blog->settings->get(self::id())->get('disabled'));
$list = new ArrayObject(); $list = new ArrayObject();
try { try {
@ -74,6 +74,11 @@ class improve
uasort($this->actions, [$this, 'sortModules']); uasort($this->actions, [$this, 'sortModules']);
} }
public static function id()
{
return basename(dirname(dirname(__DIR__)));
}
public function getLogs(): array public function getLogs(): array
{ {
return $this->logs; return $this->logs;
@ -183,7 +188,7 @@ class improve
public function fixModule(string $type, string $id, array $properties, array $actions): float public function fixModule(string $type, string $id, array $properties, array $actions): float
{ {
$time_start = microtime(true); $time_start = microtime(true);
$module = module::clean($type, $id, $properties); $module = Module::clean($type, $id, $properties);
$workers = []; $workers = [];
foreach ($actions as $action) { foreach ($actions as $action) {
@ -303,7 +308,7 @@ class improve
public function getURL(array $params = []): string public function getURL(array $params = []): string
{ {
return dcCore::app()->adminurl->get('admin.plugin.improve', $params, '&'); return dcCore::app()->adminurl->get('admin.plugin.' . self::id(), $params, '&');
} }
/** /**

View File

@ -12,7 +12,7 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve; namespace Dotclear\Plugin\improve;
/* clearbricks */ /* clearbricks */
use path; use path;
@ -23,7 +23,7 @@ use path;
* Help to load module configuration file (_define.php) * Help to load module configuration file (_define.php)
* and gather information about it. * and gather information about it.
*/ */
class module class Module
{ {
/** @var array Current module properties */ /** @var array Current module properties */
private $properties = []; private $properties = [];

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use files; use files;
@ -24,7 +24,7 @@ use path;
/** /**
* Improve action module Dotclear depreciated * Improve action module Dotclear depreciated
*/ */
class dcdeprecated extends action class dcdeprecated extends Action
{ {
/** @var array Deprecated functions [filetype [pattern, deprecated, replacement, version, help link]] */ /** @var array Deprecated functions [filetype [pattern, deprecated, replacement, version, help link]] */
private $deprecated = ['php' => [], 'js' => []]; private $deprecated = ['php' => [], 'js' => []];

View File

@ -44,7 +44,7 @@ return [
['three-cols', 'three-cols', 'three-boxes', '2.6', ''], ['three-cols', 'three-cols', 'three-boxes', '2.6', ''],
], ],
'js' => [ 'js' => [
['\sstoreLocalData', 'storeLocalData', 'dotclear.storeLocalData', '2.21', ''], ['\sstoreLocalData', 'storeLocalData', 'dotclear.storeLocalData', '2.21', ''],
['\sdropLocalData', 'dropLocalData', 'dotclear.dropLocalData', '2.21', ''], ['\sdropLocalData', 'dropLocalData', 'dotclear.dropLocalData', '2.21', ''],
['\sreadLocalData', 'readLocalData', 'dotclear.readLocalData', '2.21', ''], ['\sreadLocalData', 'readLocalData', 'dotclear.readLocalData', '2.21', ''],

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -30,7 +30,7 @@ use Exception;
/** /**
* Improve action module dcstore.xml * Improve action module dcstore.xml
*/ */
class dcstore extends action class dcstore extends Action
{ {
/** @var string Settings dcstore zip url pattern */ /** @var string Settings dcstore zip url pattern */
private $pattern = ''; private $pattern = '';

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -23,7 +23,7 @@ use form;
/** /**
* Improve action module end of file * Improve action module end of file
*/ */
class endoffile extends action class endoffile extends Action
{ {
protected function init(): bool protected function init(): bool
{ {

View File

@ -12,13 +12,13 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -26,7 +26,7 @@ use form;
/** /**
* Improve action module Github shields.io * Improve action module Github shields.io
*/ */
class gitshields extends action class gitshields extends Action
{ {
/** @var string Username of git repo */ /** @var string Username of git repo */
private $username = ''; private $username = '';

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -27,7 +27,7 @@ use Exception;
/** /**
* Improve action module license file * Improve action module license file
*/ */
class licensefile extends action class licensefile extends Action
{ {
/** @var array Possible license filenames */ /** @var array Possible license filenames */
protected static $license_filenames = [ protected static $license_filenames = [
@ -115,7 +115,7 @@ class licensefile extends action
private function writeFullLicense(): ?bool private function writeFullLicense(): ?bool
{ {
try { try {
$full = file_get_contents(dirname(__FILE__) . '/licensefile/' . $this->getSetting('action_version') . '.full.txt'); $full = file_get_contents(__DIR__ . '/licensefile/' . $this->getSetting('action_version') . '.full.txt');
if (empty($full)) { if (empty($full)) {
$this->setError(__('Failed to load license content')); $this->setError(__('Failed to load license content'));

View File

@ -12,11 +12,11 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
use plugins\improve\improve; use Dotclear\Plugin\improve\Core;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -24,7 +24,7 @@ use form;
/** /**
* Improve action module new line * Improve action module new line
*/ */
class newline extends action class newline extends Action
{ {
protected function init(): bool protected function init(): bool
{ {
@ -56,7 +56,7 @@ class newline extends action
if (!empty($_POST['save']) && !empty($_POST['newline_extensions'])) { if (!empty($_POST['save']) && !empty($_POST['newline_extensions'])) {
$this->setSettings( $this->setSettings(
'extensions', 'extensions',
improve::cleanExtensions($_POST['newline_extensions']) Core::cleanExtensions($_POST['newline_extensions'])
); );
$this->redirect($url); $this->redirect($url);
} }

View File

@ -12,10 +12,11 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
use Dotclear\Plugin\improve\Core;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -32,7 +33,7 @@ use Exception;
/** /**
* Improve action module PHP CS Fixer * Improve action module PHP CS Fixer
*/ */
class phpcsfixer extends action class phpcsfixer extends Action
{ {
/** @var array<int,string> Type of runtime errors */ /** @var array<int,string> Type of runtime errors */
protected static $errors = [ protected static $errors = [
@ -68,8 +69,8 @@ class phpcsfixer extends action
$this->getPhpPath(); $this->getPhpPath();
dcCore::app()->auth->user_prefs->addWorkspace('interface'); dcCore::app()->auth->user_prefs->addWorkspace('interface');
self::$user_ui_colorsyntax = dcCore::app()->auth->user_prefs->interface->colorsyntax; self::$user_ui_colorsyntax = dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax');
self::$user_ui_colorsyntax_theme = dcCore::app()->auth->user_prefs->interface->colorsyntax_theme; self::$user_ui_colorsyntax_theme = dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme');
return true; return true;
} }
@ -96,7 +97,7 @@ class phpcsfixer extends action
]); ]);
$this->redirect($url); $this->redirect($url);
} }
$content = (string) file_get_contents(dirname(__FILE__) . '/phpcsfixer/phpcsfixer.rules.php'); $content = (string) file_get_contents(__DIR__ . '/phpcsfixer/phpcsfixer.rules.php');
return return
'<p><label class="classic" for="phpexe_path">' . '<p><label class="classic" for="phpexe_path">' .
@ -115,7 +116,7 @@ class phpcsfixer extends action
]) . '</p>' . ]) . '</p>' .
( (
!self::$user_ui_colorsyntax ? '' : !self::$user_ui_colorsyntax ? '' :
dcPage::jsLoad(dcPage::getPF('improve/inc/module/phpcsfixer/phpcsfixer.improve.js')) . dcPage::jsModuleLoad(Core::id() . '/inc/module/phpcsfixer/phpcsfixer.improve.js') .
dcPage::jsRunCodeMirror('editor', 'file_content', 'dotclear', self::$user_ui_colorsyntax_theme) dcPage::jsRunCodeMirror('editor', 'file_content', 'dotclear', self::$user_ui_colorsyntax_theme)
); );
} }
@ -125,9 +126,9 @@ class phpcsfixer extends action
$command = sprintf( $command = sprintf(
'%sphp %s/phpcsfixer/libs/php-cs-fixer.phar fix %s --config=%s/phpcsfixer/phpcsfixer.rules.php --using-cache=no', '%sphp %s/phpcsfixer/libs/php-cs-fixer.phar fix %s --config=%s/phpcsfixer/phpcsfixer.rules.php --using-cache=no',
$this->phpexe_path, $this->phpexe_path,
dirname(__FILE__), __DIR__,
$this->module['sroot'], $this->module['sroot'],
dirname(__FILE__) __DIR__
); );
try { try {

View File

@ -23,10 +23,10 @@ $config = new PhpCsFixer\Config();
/* @phpstan-ignore-next-line */ /* @phpstan-ignore-next-line */
return $config return $config
->setRules([ ->setRules([
'@PSR12' => true, '@PSR12' => true,
'@PHP81Migration' => true, '@PHP81Migration' => true,
'array_indentation' => true, 'array_indentation' => true,
'binary_operator_spaces' => [ 'binary_operator_spaces' => [
'default' => 'align_single_space_minimal', 'default' => 'align_single_space_minimal',
'operators' => [ 'operators' => [
'=>' => 'align_single_space_minimal', '=>' => 'align_single_space_minimal',

View File

@ -12,13 +12,13 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;
@ -30,7 +30,7 @@ use Exception;
/** /**
* Improve action module php header * Improve action module php header
*/ */
class phpheader extends action class phpheader extends Action
{ {
/** @var string Exemple of header */ /** @var string Exemple of header */
private static $exemple = <<<EOF private static $exemple = <<<EOF

View File

@ -12,10 +12,11 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
use Dotclear\Plugin\improve\Core;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
@ -32,7 +33,7 @@ use Exception;
/** /**
* Improve action module PHPStan * Improve action module PHPStan
*/ */
class phpstan extends action class phpstan extends Action
{ {
/** @var boolean User pref to use colored synthax */ /** @var boolean User pref to use colored synthax */
protected static $user_ui_colorsyntax = false; protected static $user_ui_colorsyntax = false;
@ -69,8 +70,8 @@ class phpstan extends action
$this->ignored_vars = is_string($ignored_vars) ? $ignored_vars : ''; $this->ignored_vars = is_string($ignored_vars) ? $ignored_vars : '';
dcCore::app()->auth->user_prefs->addWorkspace('interface'); dcCore::app()->auth->user_prefs->addWorkspace('interface');
self::$user_ui_colorsyntax = dcCore::app()->auth->user_prefs->interface->colorsyntax; self::$user_ui_colorsyntax = dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax');
self::$user_ui_colorsyntax_theme = dcCore::app()->auth->user_prefs->interface->colorsyntax_theme; self::$user_ui_colorsyntax_theme = dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme');
return true; return true;
} }
@ -100,7 +101,7 @@ class phpstan extends action
]); ]);
$this->redirect($url); $this->redirect($url);
} }
$content = (string) file_get_contents(dirname(__FILE__) . '/phpstan/phpstan.rules.conf'); $content = (string) file_get_contents(__DIR__ . '/phpstan/phpstan.rules.conf');
return return
'<p class="info">' . __('You must enable improve details to view analyse results !') . '</p>' . '<p class="info">' . __('You must enable improve details to view analyse results !') . '</p>' .
@ -134,7 +135,7 @@ class phpstan extends action
]) . '</p>' . ]) . '</p>' .
( (
!self::$user_ui_colorsyntax ? '' : !self::$user_ui_colorsyntax ? '' :
dcPage::jsLoad(dcPage::getPF('improved/inc/module/phpstan/phpstan.improve.js')) . dcPage::jsModuleLoad(Core::id() . '/inc/module/phpstan/phpstan.improve.js') .
dcPage::jsRunCodeMirror('editor', 'file_content', 'dotclear', self::$user_ui_colorsyntax_theme) dcPage::jsRunCodeMirror('editor', 'file_content', 'dotclear', self::$user_ui_colorsyntax_theme)
); );
} }
@ -182,7 +183,7 @@ class phpstan extends action
$command = sprintf( $command = sprintf(
'%sphp %s/phpstan/libs/phpstan.phar analyse ' . $path . '--configuration=%s', '%sphp %s/phpstan/libs/phpstan.phar analyse ' . $path . '--configuration=%s',
$this->phpexe_path, $this->phpexe_path,
dirname(__FILE__), __DIR__,
DC_VAR . '/phpstan.neon' DC_VAR . '/phpstan.neon'
); );
@ -238,9 +239,9 @@ class phpstan extends action
$this->run_level, $this->run_level,
$this->module['sroot'], $this->module['sroot'],
DC_ROOT, DC_ROOT,
dirname(__FILE__) . '/phpstan', __DIR__ . '/phpstan',
], ],
(string) file_get_contents(dirname(__FILE__) . '/phpstan/phpstan.rules.conf') (string) file_get_contents(__DIR__ . '/phpstan/phpstan.rules.conf')
); );
$ignored = explode(';', $this->ignored_vars); $ignored = explode(';', $this->ignored_vars);

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use l10n; use l10n;
@ -25,7 +25,7 @@ use l10n;
/** /**
* Improve action module dcstore.xml * Improve action module dcstore.xml
*/ */
class po2php extends action class po2php extends Action
{ {
/** @var string License bloc */ /** @var string License bloc */
private $license = <<<EOF private $license = <<<EOF

View File

@ -12,10 +12,10 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/** /**
* Improve action module tab * Improve action module tab

View File

@ -12,13 +12,13 @@
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace plugins\improve\module; namespace Dotclear\Plugin\improve\Module;
/* dotclear */ /* dotclear */
use dcCore; use dcCore;
/* improve */ /* improve */
use plugins\improve\action; use Dotclear\Plugin\improve\Action;
/* clearbricks */ /* clearbricks */
use form; use form;