-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathscript.php
More file actions
124 lines (98 loc) · 2.43 KB
/
script.php
File metadata and controls
124 lines (98 loc) · 2.43 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
defined('_JEXEC') or die;
use Joomla\CMS\Application\AdministratorApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Installer\InstallerScriptInterface;
use Joomla\Database\DatabaseDriver;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Filesystem\Folder;
use Joomla\Filesystem\Path;
return new class () implements ServiceProviderInterface {
public function register(Container $container)
{
$container->set(InstallerScriptInterface::class, new class ($container->get(AdministratorApplication::class)) implements InstallerScriptInterface {
protected AdministratorApplication $app;
protected DatabaseDriver $db;
public function __construct(AdministratorApplication $app)
{
$this->app = $app;
$this->db = Factory::getContainer()->get('DatabaseDriver');
}
public function install(InstallerAdapter $adapter): bool
{
$this->copyMedia();
return true;
}
public function update(InstallerAdapter $adapter): bool
{
$this->copyMedia();
return true;
}
public function uninstall(InstallerAdapter $adapter): bool
{
$this->deleteMedia();
return true;
}
public function preflight(string $type, InstallerAdapter $adapter): bool
{
return true;
}
public function postflight(string $type, InstallerAdapter $adapter): bool
{
return true;
}
protected function copyMedia()
{
$dest = JPATH_ROOT . '/media/lib_fields';
$path = Path::clean(JPATH_ROOT . '/libraries/lib_fields/fields');
if (!file_exists($path))
{
return;
}
$folders = Folder::folders($path);
$copyFiles = [];
if (!file_exists($dest))
{
Folder::create($dest);
}
foreach ($folders as $folder)
{
$path_current = $path . '/' . $folder . '/media';
if (file_exists($path_current))
{
$copyFiles[] = [
'src' => $path_current,
'dest' => $dest . '/' . strtolower($folder),
'type' => 'folder'
];
}
}
foreach ($copyFiles as $copy)
{
if ($copy['type'] == 'folder')
{
Folder::copy($copy['src'], $copy['dest']);
}
}
}
protected function deleteMedia()
{
$dest = JPATH_ROOT . '/media/lib_fields';
if (file_exists($dest))
{
try
{
return Folder::delete($dest);
}
catch (Exception $e)
{
return false;
}
}
return true;
}
});
}
};