forked from lowfill/elgg_default_plugin_order
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.php
More file actions
86 lines (78 loc) · 2.19 KB
/
start.php
File metadata and controls
86 lines (78 loc) · 2.19 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
<?php
elgg_register_event_handler('init', 'system', 'plugin_order_init');
function plugin_order_init() {
elgg_register_action(
'admin/plugin_loader/import',
dirname(__FILE__) . '/actions/import.php',
'admin'
);
elgg_register_action(
'admin/plugin_loader/export',
dirname(__FILE__) . '/actions/export.php',
'admin'
);
elgg_register_admin_menu_item(
'configure',
'plugin_order',
'configure_utilities'
);
}
function plugin_loader_export_config() {
$plugins = elgg_get_plugins('all');
$config_file = elgg_get_config('path')."plugin_config.ini";
$data = "# Plugin order generated ".date('Y-m-d H:m:s')."\n";
foreach ($plugins as $plugin) {
$enabled = (is_plugin_enabled($plugin->title)) ? 'enabled' : 'disabled';
$data .= "{$plugin->title}={$enabled}\n";
}
return file_put_contents($config_file, $data);
}
function plugin_loader_load_config(){
$config_settings = array();
$config_file = elgg_get_config('path')."plugin_config.ini";
if(file_exists($config_file)){
$config_settings = parse_ini_file($config_file);
}
$config_hash = md5(serialize($config_settings));
$old_config = get_plugin_setting('config','plugin_loader');
if($old_config != $config_hash){
set_plugin_setting('config',$config_hash,'plugin_loader');
return $config_settings;
}
return $config_settings;
}
function plugin_loader_reorder(){
$final_order = array();
$sequence = 10;
$config_settings = plugin_loader_load_config();
if(!empty($config_settings)){
foreach($config_settings as $plugin => $status){
$final_order[$sequence] = $plugin;
$sequence+=10;
}
regenerate_plugin_list($final_order);
elgg_filepath_cache_reset();
}
}
function plugin_loader_set_status(){
$config_settings = plugin_loader_load_config();
if(!empty($config_settings)){
foreach($config_settings as $plugin => $status){
switch($status){
case 'enabled':
if(!is_plugin_enabled($plugin)){
enable_plugin($plugin);
}
break;
case 'disabled':
if(is_plugin_enabled($plugin)){
disable_plugin($plugin);
}
break;
}
}
elgg_filepath_cache_reset();
}
}
register_elgg_event_handler('init','system','plugin_loader');
?>