-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAdminCustomFilesUpgrade.php
More file actions
113 lines (98 loc) · 2.62 KB
/
Copy pathAdminCustomFilesUpgrade.php
File metadata and controls
113 lines (98 loc) · 2.62 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
<?php namespace ProcessWire;
/**
* Admin Custom Files (ProcessWire 3.x)
*
* This module enables you to add custom scripts and files to the admin.
*
* Admin Custom Files
* Copyright (C) 2016|2017 by Martijn Geerts
* Licensed under GNU/GPL v2, see LICENSE.TXT
*
*/
class AdminCustomFilesUpgrade extends AdminCustomFiles {
/**
* Construct
*
* @param AdminCustomFiles $acf
*/
public function __construct(AdminCustomFiles $acf) {
$this->set('acf', $acf);
}
/**
* Returns processes array
*
* @param array $processes
* @return void
*/
private function getProcesses($processes) {
if (is_array($processes)) return $processes;
return array();
}
/**
* Converts old string dependency to array based
*
* @param string
* @return array
*/
private function convertDependencies($string, $filesFolder) {
$array = array();
if (is_array($string)) {
$this->set('uptodate', true);
return $string;
} else if (is_array(json_decode($string))) {
$this->set('uptodate', true);
return json_decode($string);
} else if (is_string($string) && empty($string)) {
return $array;
}
$lines = array_map('trim', explode(PHP_EOL, $string));
$baseFolder = $this->wire('config')->urls->templates;
foreach($lines as $line) {
list($process, $file) = strpos($line, " ") !== false
? explode(" ", $line)
: array("", $line);
if (strpos($file, $filesFolder) !== false) {
$file = $baseFolder . $file;
}
$array[] = array(
"process" => $process,
"file" => $file,
);
}
return $array;
}
/**
* Undocumented function
*
* @return void
*/
public function execute() {
/** @var Modules */
$modules = $this->wire('modules');
/** @var Modules */
$config = $this->wire('config');
/** @var array */
$modConfig = $modules->getConfig($this->acf);
$message = $this->_("Config already up-to-date.");
if (!isset($modConfig['files_folder'])) {
$this->message($message);
return false;
}
if (isset($modConfig['files'])) {
$this->message($message);
return false;
}
$folder = trim($modConfig['files_folder'], '/') . '/';
$dependencies = $this->convertDependencies($modConfig['dependencies'], $folder);
$newConfig = array(
"folder" => $folder,
"processes" => $this->getProcesses($modConfig['process_filter']),
"theme" => isset($modConfig['theme_files']) ? $modConfig['theme_files'] : "",
"js_config" => isset($modConfig['js_config']) ? $modConfig['js_config'] : "",
"js_config_class" => "AcfConfigLegacy",
"dependencies" => $dependencies,
);
$modules->saveConfig($this->acf, array()); // Clear all
$modules->saveConfig($this->acf, $newConfig);
}
}