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