update cleaners with descriptor and related contents
parent
37f4310517
commit
3d404671e8
|
@ -17,7 +17,8 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir
|
TraitCleanerDir,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Caches extends AbstractCleaner
|
class Caches extends AbstractCleaner
|
||||||
|
@ -60,7 +61,16 @@ class Caches extends AbstractCleaner
|
||||||
|
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
return self::getDirs(DC_TPL_CACHE);
|
$res = [];
|
||||||
|
foreach(self::getDirs(DC_TPL_CACHE) as $dir) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$dir['key'],
|
||||||
|
'',
|
||||||
|
(int) $dir['value']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -22,7 +22,8 @@ use Dotclear\Database\Statement\{
|
||||||
};
|
};
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor
|
ActionDescriptor,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Logs extends AbstractCleaner
|
class Logs extends AbstractCleaner
|
||||||
|
@ -61,31 +62,28 @@ class Logs extends AbstractCleaner
|
||||||
{
|
{
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcLog::LOG_TABLE_NAME)
|
$sql->from(dcCore::app()->prefix . dcLog::LOG_TABLE_NAME)
|
||||||
->columns(['log_table'])
|
->columns([
|
||||||
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
|
'log_table',
|
||||||
|
])
|
||||||
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
||||||
->group('log_table');
|
->group('log_table');
|
||||||
|
|
||||||
$res = $sql->select();
|
$rs = $sql->select();
|
||||||
if ($res == null || $res->isEmpty()) {
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$rs = [];
|
$res = [];
|
||||||
$i = 0;
|
while ($rs->fetch()) {
|
||||||
while ($res->fetch()) {
|
$res[] = new ValueDescriptor(
|
||||||
$sql = new SelectStatement();
|
$rs->f('log_table'),
|
||||||
$sql->from(dcCore::app()->prefix . dcLog::LOG_TABLE_NAME)
|
'',
|
||||||
->fields([$sql->count('*')])
|
(int) $rs->f('counter')
|
||||||
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
);
|
||||||
->and('log_table = ' . $sql->quote($res->f('log_table')))
|
|
||||||
->group('log_table');
|
|
||||||
|
|
||||||
$rs[$i]['key'] = $res->f('log_table');
|
|
||||||
$rs[$i]['value'] = (int) $sql->select()?->f(0);
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rs;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -17,7 +17,8 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir
|
TraitCleanerDir,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Plugins extends AbstractCleaner
|
class Plugins extends AbstractCleaner
|
||||||
|
@ -53,8 +54,17 @@ class Plugins extends AbstractCleaner
|
||||||
|
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
$res = self::getDirs(explode(PATH_SEPARATOR, DC_PLUGINS_ROOT));
|
$dirs = self::getDirs(explode(PATH_SEPARATOR, DC_PLUGINS_ROOT));
|
||||||
sort($res);
|
sort($dirs);
|
||||||
|
|
||||||
|
$res = [];
|
||||||
|
foreach($dirs as $dir) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$dir['key'],
|
||||||
|
'',
|
||||||
|
(int) $dir['value']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,8 @@ use Dotclear\Database\Statement\{
|
||||||
};
|
};
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor
|
ActionDescriptor,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,31 +94,57 @@ class Preferences extends AbstractCleaner
|
||||||
{
|
{
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcWorkspace::WS_TABLE_NAME)
|
$sql->from(dcCore::app()->prefix . dcWorkspace::WS_TABLE_NAME)
|
||||||
->columns(['pref_ws'])
|
->columns([
|
||||||
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
|
'pref_ws'
|
||||||
|
])
|
||||||
->where($sql->orGroup(['user_id IS NULL', 'user_id IS NOT NULL']))
|
->where($sql->orGroup(['user_id IS NULL', 'user_id IS NOT NULL']))
|
||||||
->group('pref_ws');
|
->group('pref_ws');
|
||||||
|
|
||||||
$res = $sql->select();
|
$rs = $sql->select();
|
||||||
if ($res == null || $res->isEmpty()) {
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$rs = [];
|
$res = [];
|
||||||
$i = 0;
|
while ($rs->fetch()) {
|
||||||
while ($res->fetch()) {
|
$res[] = new ValueDescriptor(
|
||||||
$sql = new SelectStatement();
|
$rs->f('pref_ws'),
|
||||||
$sql->from(dcCore::app()->prefix . dcWorkspace::WS_TABLE_NAME)
|
'',
|
||||||
->fields([$sql->count('*')])
|
(int) $rs->f('counter')
|
||||||
->where($sql->orGroup(['user_id IS NULL', 'user_id IS NOT NULL']))
|
);
|
||||||
->and('pref_ws = ' . $sql->quote($res->f('pref_ws')))
|
|
||||||
->group('pref_ws');
|
|
||||||
|
|
||||||
$rs[$i]['key'] = $res->f('pref_ws');
|
|
||||||
$rs[$i]['value'] = (int) $sql->select()?->f(0);
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rs;
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function related(string $ns): array
|
||||||
|
{
|
||||||
|
$sql = new SelectStatement();
|
||||||
|
$sql->from(dcCore::app()->prefix . dcWorkspace::WS_TABLE_NAME)
|
||||||
|
->columns([
|
||||||
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
|
'pref_id'
|
||||||
|
])
|
||||||
|
->where($sql->orGroup(['user_id IS NULL', 'user_id IS NOT NULL']))
|
||||||
|
->and('pref_ws = ' . $sql->quote($ns))
|
||||||
|
->group('pref_id');
|
||||||
|
|
||||||
|
$rs = $sql->select();
|
||||||
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = [];
|
||||||
|
while ($rs->fetch()) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$rs->f('pref_ws'),
|
||||||
|
$rs->f('pref_id'),
|
||||||
|
(int) $rs->f('counter')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -22,7 +22,8 @@ use Dotclear\Database\Statement\{
|
||||||
};
|
};
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor
|
ActionDescriptor,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,31 +98,57 @@ class Settings extends AbstractCleaner
|
||||||
{
|
{
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
$sql->from(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
||||||
->columns(['setting_ns'])
|
->columns([
|
||||||
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
|
'setting_ns'
|
||||||
|
])
|
||||||
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
||||||
->group('setting_ns');
|
->group('setting_ns');
|
||||||
|
|
||||||
$res = $sql->select();
|
$rs = $sql->select();
|
||||||
if ($res == null || $res->isEmpty()) {
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$rs = [];
|
$res = [];
|
||||||
$i = 0;
|
while ($rs->fetch()) {
|
||||||
while ($res->fetch()) {
|
$res[] = new ValueDescriptor(
|
||||||
$sql = new SelectStatement();
|
$rs->f('setting_ns'),
|
||||||
$sql->from(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
'',
|
||||||
->fields([$sql->count('*')])
|
(int) $rs->f('counter')
|
||||||
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
);
|
||||||
->and('setting_ns = ' . $sql->quote($res->f('setting_ns')))
|
|
||||||
->group('setting_ns');
|
|
||||||
|
|
||||||
$rs[$i]['key'] = $res->f('setting_ns');
|
|
||||||
$rs[$i]['value'] = (int) $sql->select()?->f(0);
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rs;
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function related(string $ns): array
|
||||||
|
{
|
||||||
|
$sql = new SelectStatement();
|
||||||
|
$sql->from(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
||||||
|
->columns([
|
||||||
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
|
'setting_id'
|
||||||
|
])
|
||||||
|
->where($sql->orGroup(['blog_id IS NULL', 'blog_id IS NOT NULL']))
|
||||||
|
->and('setting_ns = ' . $sql->quote($ns))
|
||||||
|
->group('setting_id');
|
||||||
|
|
||||||
|
$rs = $sql->select();
|
||||||
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = [];
|
||||||
|
while ($rs->fetch()) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$ns,
|
||||||
|
$rs->f('setting_id'),
|
||||||
|
(int) $rs->f('counter')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -26,7 +26,8 @@ use Dotclear\Database\Statement\{
|
||||||
};
|
};
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor
|
ActionDescriptor,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Tables extends AbstractCleaner
|
class Tables extends AbstractCleaner
|
||||||
|
@ -86,11 +87,10 @@ class Tables extends AbstractCleaner
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
$object = AbstractSchema::init(dcCore::app()->con);
|
$object = AbstractSchema::init(dcCore::app()->con);
|
||||||
$res = $object->getTables();
|
$tables = $object->getTables();
|
||||||
|
|
||||||
$rs = [];
|
$res = [];
|
||||||
$i = 0;
|
foreach ($tables as $k => $v) {
|
||||||
foreach ($res as $k => $v) {
|
|
||||||
// get only tables with dotclear prefix
|
// get only tables with dotclear prefix
|
||||||
if ('' != dcCore::app()->prefix) {
|
if ('' != dcCore::app()->prefix) {
|
||||||
if (!preg_match('/^' . preg_quote(dcCore::app()->prefix) . '(.*?)$/', $v, $m)) {
|
if (!preg_match('/^' . preg_quote(dcCore::app()->prefix) . '(.*?)$/', $v, $m)) {
|
||||||
|
@ -100,16 +100,15 @@ class Tables extends AbstractCleaner
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$sql->from($res[$k])
|
|
||||||
->fields([$sql->count('*')]);
|
|
||||||
|
|
||||||
$rs[$i]['key'] = $v;
|
$res[] = new ValueDescriptor(
|
||||||
$rs[$i]['value'] = (int) $sql->select()?->f(0);
|
$v,
|
||||||
;
|
'',
|
||||||
$i++;
|
(int) $sql->from($tables[$k])->fields([$sql->count('*')])->select()?->f(0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rs;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -18,7 +18,8 @@ use dcCore;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir
|
TraitCleanerDir,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Themes extends AbstractCleaner
|
class Themes extends AbstractCleaner
|
||||||
|
@ -58,8 +59,17 @@ class Themes extends AbstractCleaner
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = self::getDirs($path);
|
$dirs = self::getDirs($path);
|
||||||
sort($res);
|
sort($dirs);
|
||||||
|
|
||||||
|
$res = [];
|
||||||
|
foreach($dirs as $dir) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$dir['key'],
|
||||||
|
'',
|
||||||
|
(int) $dir['value']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,8 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir
|
TraitCleanerDir,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Vars extends AbstractCleaner
|
class Vars extends AbstractCleaner
|
||||||
|
@ -53,7 +54,16 @@ class Vars extends AbstractCleaner
|
||||||
|
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
return self::getDirs(DC_VAR);
|
$res = [];
|
||||||
|
foreach(self::getDirs(DC_VAR) as $dir) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$dir['key'],
|
||||||
|
'',
|
||||||
|
(int) $dir['value']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
|
@ -15,9 +15,11 @@ declare(strict_types=1);
|
||||||
namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
|
|
||||||
use dcCore;
|
use dcCore;
|
||||||
|
use Dotclear\Database\Statement\SelectStatement;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor
|
ActionDescriptor,
|
||||||
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
class Versions extends AbstractCleaner
|
class Versions extends AbstractCleaner
|
||||||
|
@ -63,17 +65,26 @@ class Versions extends AbstractCleaner
|
||||||
|
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
$res = dcCore::app()->con->select('SELECT * FROM ' . dcCore::app()->prefix . dcCore::VERSION_TABLE_NAME);
|
$sql = new SelectStatement();
|
||||||
|
$rs = $sql
|
||||||
|
->from(dcCore::app()->prefix . dcCore::VERSION_TABLE_NAME)
|
||||||
|
->columns(['module', 'version'])
|
||||||
|
->select();
|
||||||
|
|
||||||
$rs = [];
|
if (is_null($rs) || $rs->isEmpty()) {
|
||||||
$i = 0;
|
return [];
|
||||||
while ($res->fetch()) {
|
|
||||||
$rs[$i]['key'] = $res->f('module');
|
|
||||||
$rs[$i]['value'] = $res->f('version');
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rs;
|
$res = [];
|
||||||
|
while ($rs->fetch()) {
|
||||||
|
$res[] = new ValueDescriptor(
|
||||||
|
$rs->f('module'),
|
||||||
|
$rs->f('version'),
|
||||||
|
1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(string $action, string $ns): bool
|
public function execute(string $action, string $ns): bool
|
||||||
|
|
Loading…
Reference in New Issue