1 | <?php |
||||||||||
2 | /** |
||||||||||
3 | * Elgg garbage collector. |
||||||||||
4 | * |
||||||||||
5 | * @package ElggGarbageCollector |
||||||||||
6 | */ |
||||||||||
7 | |||||||||||
8 | /** |
||||||||||
9 | * Garbage collection init |
||||||||||
10 | * |
||||||||||
11 | * @return void |
||||||||||
12 | */ |
||||||||||
13 | function garbagecollector_init() { |
||||||||||
14 | 31 | $period = elgg_get_plugin_setting('period', 'garbagecollector'); |
|||||||||
15 | 31 | switch ($period) { |
|||||||||
16 | 31 | case 'weekly': |
|||||||||
17 | 31 | case 'monthly': |
|||||||||
18 | 31 | case 'yearly': |
|||||||||
19 | break; |
||||||||||
20 | default: |
||||||||||
21 | 31 | $period = 'monthly'; |
|||||||||
22 | } |
||||||||||
23 | |||||||||||
24 | // Register cron hook |
||||||||||
25 | 31 | elgg_register_plugin_hook_handler('cron', $period, 'garbagecollector_cron'); |
|||||||||
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||||||||
26 | 31 | } |
|||||||||
27 | |||||||||||
28 | /** |
||||||||||
29 | * Cron job |
||||||||||
30 | * |
||||||||||
31 | * @param string $hook 'cron' |
||||||||||
32 | * @param string $type interval |
||||||||||
33 | * @param mixed $returnvalue current return value |
||||||||||
34 | * @param array $params supplied params |
||||||||||
35 | * |
||||||||||
36 | * @return void |
||||||||||
37 | */ |
||||||||||
38 | function garbagecollector_cron($hook, $type, $returnvalue, $params) { |
||||||||||
3 ignored issues
–
show
The parameter
$hook is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
The parameter
$params is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
The parameter
$type is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
The parameter
$returnvalue is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
|
|||||||||||
39 | |||||||||||
40 | echo elgg_echo('garbagecollector') . "\n"; |
||||||||||
41 | |||||||||||
42 | // Now, because we are nice, trigger a plugin hook to let other plugins do some GC |
||||||||||
43 | $rv = true; |
||||||||||
0 ignored issues
–
show
|
|||||||||||
44 | $period = elgg_get_plugin_setting('period', 'garbagecollector'); |
||||||||||
45 | elgg_trigger_plugin_hook('gc', 'system', ['period' => $period]); |
||||||||||
46 | |||||||||||
47 | // Now we optimize all tables |
||||||||||
48 | $tables = garbagecollector_get_tables(); |
||||||||||
49 | foreach ($tables as $table) { |
||||||||||
50 | echo elgg_echo('garbagecollector:optimize', [$table]); |
||||||||||
51 | |||||||||||
52 | if (garbagecollector_optimize_table($table) !== false) { |
||||||||||
53 | echo elgg_echo('ok'); |
||||||||||
54 | } else { |
||||||||||
55 | echo elgg_echo('error'); |
||||||||||
56 | } |
||||||||||
57 | |||||||||||
58 | echo "\n"; |
||||||||||
59 | } |
||||||||||
60 | |||||||||||
61 | echo elgg_echo('garbagecollector:done'); |
||||||||||
62 | } |
||||||||||
63 | |||||||||||
64 | /** |
||||||||||
65 | * Get array of table names |
||||||||||
66 | * |
||||||||||
67 | * @return array |
||||||||||
68 | */ |
||||||||||
69 | function garbagecollector_get_tables() { |
||||||||||
70 | static $tables; |
||||||||||
71 | |||||||||||
72 | if (isset($tables)) { |
||||||||||
73 | return $tables; |
||||||||||
74 | } |
||||||||||
75 | |||||||||||
76 | $table_prefix = elgg_get_config('dbprefix'); |
||||||||||
77 | $result = get_data("SHOW TABLES LIKE '$table_prefix%'"); |
||||||||||
78 | |||||||||||
79 | $tables = []; |
||||||||||
80 | if (is_array($result) && !empty($result)) { |
||||||||||
81 | foreach ($result as $row) { |
||||||||||
82 | $row = (array) $row; |
||||||||||
83 | if (is_array($row) && !empty($row)) { |
||||||||||
84 | foreach ($row as $element) { |
||||||||||
85 | $tables[] = $element; |
||||||||||
86 | } |
||||||||||
87 | } |
||||||||||
88 | } |
||||||||||
89 | } |
||||||||||
90 | |||||||||||
91 | return $tables; |
||||||||||
92 | } |
||||||||||
93 | |||||||||||
94 | /** |
||||||||||
95 | * Optimize a table |
||||||||||
96 | * |
||||||||||
97 | * @param string $table Database table name |
||||||||||
98 | * @return bool |
||||||||||
99 | */ |
||||||||||
100 | function garbagecollector_optimize_table($table) { |
||||||||||
101 | $table = sanitise_string($table); |
||||||||||
0 ignored issues
–
show
The function
sanitise_string() has been deprecated: Use query parameters where possible
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This function has been deprecated. The supplier of the function has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.
Loading history...
|
|||||||||||
102 | return update_data("OPTIMIZE TABLE $table"); |
||||||||||
103 | } |
||||||||||
104 | |||||||||||
105 | return function() { |
||||||||||
106 | 18 | elgg_register_event_handler('init', 'system', 'garbagecollector_init'); |
|||||||||
107 | }; |
||||||||||
108 |