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'); |
|
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) { |
||
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; |
||
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
|
|||
102 | return update_data("OPTIMIZE TABLE $table"); |
||
103 | } |
||
104 | |||
105 | return function() { |
||
106 | 18 | elgg_register_event_handler('init', 'system', 'garbagecollector_init'); |
|
107 | }; |
||
108 |
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.