-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpkg_script.php
More file actions
88 lines (76 loc) · 3.1 KB
/
pkg_script.php
File metadata and controls
88 lines (76 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
use Joomla\CMS\Application\AdministratorApplication;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Installer\InstallerScriptInterface;
use Joomla\CMS\Language\Text;
use Joomla\Database\DatabaseInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Exception\FilesystemException;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
return new class () implements ServiceProviderInterface {
public function register(Container $container)
{
$container->set(
InstallerScriptInterface::class,
new class ($container->get(AdministratorApplication::class), $container->get(DatabaseInterface::class)) implements InstallerScriptInterface {
private AdministratorApplication $app;
private DatabaseInterface $db;
public function __construct(AdministratorApplication $app, DatabaseInterface $db)
{
$this->app = $app;
$this->db = $db;
}
public function install(InstallerAdapter $parent): bool
{
$this->app->enqueueMessage('Successful installed.');
$src = JPATH_LIBRARIES . '/lib_flexqueue/src/Cli/QueueDaemon.php';
$dest = JPATH_CLI . '/QueueDaemon.php';
if (file_exists($src) && !file_exists($dest)) {
try {
\Joomla\Filesystem\File::move($src, $dest);
} catch (\Exception $e) {
$this->app->enqueueMessage('Move failed: ' . $e->getMessage(), 'error');
}
}
return true;
}
public function update(InstallerAdapter $parent): bool
{
$this->app->enqueueMessage('Successful updated.');
return true;
}
public function uninstall(InstallerAdapter $parent): bool
{
$this->app->enqueueMessage('Successful uninstalled.');
try {
$this->db->dropTable('#__flexqueue_jobs');
$this->db->dropTable('#__flexqueue_job_errors');
} catch (\Exception $e) {
$this->app->enqueueMessage('DB cleanup failed: ' . $e->getMessage(), 'error');
}
$file = JPATH_CLI . '/QueueDaemon.php';
if (file_exists($file)) {
try {
\Joomla\Filesystem\File::delete($file);
} catch (\Exception $e) {
$this->app->enqueueMessage('Delete failed: ' . $e->getMessage(), 'error');
}
}
return true;
}
public function preflight(string $type, InstallerAdapter $parent): bool
{
return true;
}
public function postflight(string $type, InstallerAdapter $parent): bool
{
return true;
}
}
);
}
};