start.php ➔ group_tools_pagesetup()   C
last analyzed

Complexity

Conditions 14
Paths 126

Size

Total Lines 77

Duplication

Lines 30
Ratio 38.96 %

Importance

Changes 0
Metric Value
cc 14
nc 126
nop 0
dl 30
loc 77
rs 5.3418
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/**
4
* Group Tools
5
*
6
* Start file for this plugin
7
* 
8
* @author ColdTrick IT Solutions
9
*/	
10
11
// define for default group access
12
define("GROUP_TOOLS_GROUP_ACCESS_DEFAULT", -10);
13
14
require_once(dirname(__FILE__) . "/lib/functions.php");
15
require_once(dirname(__FILE__) . "/lib/events.php");
16
require_once(dirname(__FILE__) . "/lib/hooks.php");
17
require_once(dirname(__FILE__) . "/lib/page_handlers.php");
18
19
// default elgg event handlers
20
elgg_register_event_handler("init", "system", "group_tools_init");
21
elgg_register_event_handler("ready", "system", "group_tools_ready");
22
elgg_register_event_handler("pagesetup", "system", "group_tools_pagesetup", 550);
23
24
/**
25
 * called when the Elgg system get initialized
26
 *
27
 * @return void
28
 */
29
function group_tools_init() {
30
	
31
	// extend css & js
32
	elgg_extend_view("css/elgg", "css/group_tools/site");
33
	elgg_extend_view("css/admin", "css/group_tools/admin");
34
	elgg_extend_view("js/elgg", "js/group_tools/site");
35
	elgg_extend_view("js/admin", "js/group_tools/admin");
36
	
37
	// extend page handlers
38
	elgg_register_plugin_hook_handler("route", "groups", "group_tools_route_groups_handler");
39
	elgg_register_plugin_hook_handler("route", "livesearch", "group_tools_route_livesearch_handler");
40
	
41
	elgg_register_page_handler("groupicon", "group_tools_groupicon_page_handler");
42
	elgg_register_plugin_hook_handler("entity:icon:url", "group", "groups_tools_group_icon_url_handler");
43
	
44
	// hook on title menu
45
	elgg_register_plugin_hook_handler("register", "menu:title", "group_tools_menu_title_handler");
46
	elgg_register_plugin_hook_handler("register", "menu:user_hover", "group_tools_menu_user_hover_handler");
47
	elgg_register_plugin_hook_handler("register", "menu:entity", "group_tools_menu_entity_handler");
48
	elgg_register_plugin_hook_handler("register", "menu:filter", "group_tools_menu_filter_handler");
49
	
50
	if (group_tools_multiple_admin_enabled()) {
51
		// add group tool option
52
		add_group_tool_option("group_multiple_admin_allow", elgg_echo("group_tools:multiple_admin:group_tool_option"), false);
53
		
54
		// register permissions check hook
55
		elgg_register_plugin_hook_handler("permissions_check", "group", "group_tools_multiple_admin_can_edit_hook");
56
		
57
		// register on group leave
58
		elgg_register_event_handler("leave", "group", "group_tools_multiple_admin_group_leave");
59
		
60
		//notify admin on membership request
61
		elgg_register_event_handler("create", "membership_request", "group_tools_membership_request");
62
	}
63
		
64
	// register group activity widget
65
	// 2012-05-03: restored limited functionality of group activity widget, will be fully restored if Elgg fixes widget settings
66
	elgg_register_widget_type("group_river_widget", elgg_echo("widgets:group_river_widget:title"), elgg_echo("widgets:group_river_widget:description"), array("dashboard", "profile", "index", "groups"), true);
67
	
68
	// register group members widget
69
	elgg_register_widget_type("group_members", elgg_echo("widgets:group_members:title"), elgg_echo("widgets:group_members:description"), array("groups"), false);
70
	
71
	// register groups invitations widget
72
	elgg_register_widget_type("group_invitations", elgg_echo("widgets:group_invitations:title"), elgg_echo("widgets:group_invitations:description"), array("index", "dashboard"), false);
73
	
74
	// register featured groups widget
75
	elgg_register_widget_type("featured_groups", elgg_echo("groups:featured"), elgg_echo("widgets:featured_groups:description"), array("index"));
76
	
77
	// register index groups widget
78
	elgg_register_widget_type("index_groups", elgg_echo("groups"), elgg_echo("widgets:index_groups:description"), array("index"), true);
79
	
80
	// quick start discussion
81
	elgg_register_widget_type("start_discussion", elgg_echo("group_tools:widgets:start_discussion:title"), elgg_echo("group_tools:widgets:start_discussion:description"), array("index", "dashboard", "groups"));
82
	
83
	// group invitation
84
	elgg_register_action("groups/invite", dirname(__FILE__) . "/actions/groups/invite.php");
85
	
86
	// manage auto join for groups
87
	elgg_extend_view("groups/edit", "group_tools/forms/special_states", 350);
88
	elgg_register_event_handler("create", "member_of_site", "group_tools_join_site_handler");
89
	
90
	// show group edit as tabbed
91
	elgg_extend_view("groups/edit", "group_tools/group_edit_tabbed", 1);
92
	elgg_extend_view("groups/edit", "group_tools/group_edit_tabbed_js", 999999999);
93
	
94
	// show group profile widgets - edit form
95
	elgg_extend_view("groups/edit", "group_tools/forms/profile_widgets", 400);
96
	
97
	// cleanup group side menu
98
	elgg_extend_view("groups/edit", "group_tools/forms/cleanup", 450);
99
	
100
	// group notifications
101
	elgg_extend_view("groups/edit", "group_tools/forms/notifications", 375);
102
	
103
	// allow group members to invite new members
104
	elgg_extend_view("groups/edit", "group_tools/forms/invite_members", 475);
105
	
106
	// configure a group welcome message
107
	elgg_extend_view("groups/edit", "group_tools/forms/welcome_message");
108
	
109
	// configure domain based group join
110
	elgg_extend_view("groups/edit", "group_tools/forms/domain_based");
111
	
112
	// show group status in owner block
113
	elgg_extend_view("page/elements/owner_block/extend", "group_tools/owner_block");
114
	// show group status in stats (on group profile)
115
	elgg_extend_view("groups/profile/summary", "group_tools/group_stats");
116
	
117
	if (elgg_is_active_plugin("blog")) {
118
		elgg_register_widget_type("group_news", elgg_echo("widgets:group_news:title"), elgg_echo("widgets:group_news:description"), array("profile", "index", "dashboard"), true);
119
		elgg_extend_view("css/elgg", "widgets/group_news/css");
120
	}
121
	
122
	// related groups
123
	add_group_tool_option("related_groups", elgg_echo("groups_tools:related_groups:tool_option"), false);
124
	elgg_extend_view("groups/tool_latest", "group_tools/modules/related_groups");
125
	elgg_register_widget_type("group_related", elgg_echo("groups_tools:related_groups:widget:title"), elgg_echo("groups_tools:related_groups:widget:description"), array("groups"));
126
	
127
	// registration
128
	elgg_extend_view("register/extend", "group_tools/register_extend");
129
	
130
	// theme sandbox
131
	elgg_extend_view("theme_sandbox/forms", "group_tools/theme_sandbox/grouppicker");
132
	
133
	// register index widget to show latest discussions
134
	elgg_register_widget_type("discussion", elgg_echo("discussion:latest"), elgg_echo("widgets:discussion:description"), array("index", "dashboard"), true);
135
	elgg_register_widget_type("group_forum_topics", elgg_echo("discussion:group"), elgg_echo("widgets:group_forum_topics:description"), array("groups"));
136
	
137
	// register events
138
	elgg_register_event_handler("join", "group", "group_tools_join_group_event");
139
	elgg_register_event_handler("delete", "relationship", array('ColdTrick\GroupTools\Membership', 'deleteRequest'));
0 ignored issues
show
Documentation introduced by
array('ColdTrick\\GroupT...ship', 'deleteRequest') is of type array<integer,string,{"0":"string","1":"string"}>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
140
	
141
	// register plugin hooks
142
	elgg_register_plugin_hook_handler("entity:url", "object", "group_tools_widget_url_handler");
143
	elgg_register_plugin_hook_handler("default", "access", "group_tools_access_default_handler");
144
	elgg_register_plugin_hook_handler("access:collections:write", "user", "group_tools_access_write_handler");
145
	elgg_register_plugin_hook_handler("action", "groups/join", "group_tools_join_group_action_handler");
146
	elgg_register_plugin_hook_handler("register", "menu:owner_block", "group_tools_register_owner_block_menu_handler");
147
	elgg_register_plugin_hook_handler("route", "register", "group_tools_route_register_handler");
148
	elgg_register_plugin_hook_handler("action", "register", "group_tools_action_register_handler");
149
	elgg_register_plugin_hook_handler("group_tool_widgets", "widget_manager", "group_tools_tool_widgets_handler");
150
	
151
	// actions
152
	elgg_register_action("group_tools/toggle_admin", dirname(__FILE__) . "/actions/toggle_admin.php");
153
	elgg_register_action("group_tools/mail", dirname(__FILE__) . "/actions/mail.php");
154
	elgg_register_action("group_tools/profile_widgets", dirname(__FILE__) . "/actions/profile_widgets.php");
155
	elgg_register_action("group_tools/cleanup", dirname(__FILE__) . "/actions/cleanup.php");
156
	elgg_register_action("group_tools/invite_members", dirname(__FILE__) . "/actions/invite_members.php");
157
	elgg_register_action("group_tools/welcome_message", dirname(__FILE__) . "/actions/welcome_message.php");
158
	elgg_register_action("group_tools/domain_based", dirname(__FILE__) . "/actions/domain_based.php");
159
	elgg_register_action("group_tools/related_groups", dirname(__FILE__) . "/actions/related_groups.php");
160
	elgg_register_action("group_tools/remove_related_groups", dirname(__FILE__) . "/actions/remove_related_groups.php");
161
	elgg_register_action("group_tools/member_export", dirname(__FILE__) . "/actions/member_export.php");
162
	
163
	elgg_register_action("group_tools/toggle_special_state", dirname(__FILE__) . "/actions/admin/toggle_special_state.php", "admin");
164
	elgg_register_action("group_tools/fix_auto_join", dirname(__FILE__) . "/actions/admin/fix_auto_join.php", "admin");
165
	elgg_register_action("group_tools/notifications", dirname(__FILE__) . "/actions/admin/notifications.php", "admin");
166
	elgg_register_action("group_tools/fix_acl", dirname(__FILE__) . "/actions/admin/fix_acl.php", "admin");
167
	elgg_register_action("group_tools/group_tool_presets", dirname(__FILE__) . "/actions/admin/group_tool_presets.php", "admin");
168
	elgg_register_action("group_tools/admin/bulk_delete", dirname(__FILE__) . "/actions/admin/bulk_delete.php", "admin");
169
	
170
	elgg_register_action("groups/email_invitation", dirname(__FILE__) . "/actions/groups/email_invitation.php");
171
	elgg_register_action("groups/decline_email_invitation", dirname(__FILE__) . "/actions/groups/decline_email_invitation.php");
172
	elgg_register_action("group_tools/revoke_email_invitation", dirname(__FILE__) . "/actions/groups/revoke_email_invitation.php");
173
	elgg_register_action("groups/edit", dirname(__FILE__) . "/actions/groups/edit.php");
174
175
	elgg_register_action("group_tools/order_groups", dirname(__FILE__) . "/actions/order_groups.php", "admin");
176
	
177
	elgg_register_action("discussion/toggle_status", dirname(__FILE__) . "/actions/discussion/toggle_status.php");
178
}
179
180
/**
181
 * called when the system is ready
182
 *
183
 * @return void
184
 */
185
function group_tools_ready() {
186
	// unregister dashboard widget group_activity
187
	elgg_unregister_widget_type("group_activity");
188
}
189
190
/**
191
 * called just before a page starts with output
192
 *
193
 * @return void
194
 */
195
function group_tools_pagesetup() {
196
	
197
	$user = elgg_get_logged_in_user_entity();
198
	$page_owner = elgg_get_page_owner_entity();
199
	
200
	// admin menu item
201
	elgg_register_admin_menu_item("configure", "group_tool_presets", "appearance");
202
	elgg_register_admin_menu_item("administer", "group_bulk_delete", "administer_utilities");
203
	
204
	if (elgg_in_context("groups") && ($page_owner instanceof ElggGroup)) {
205
		if ($page_owner->forum_enable == "no") {
206
			// unset if not enabled for this plugin
207
			elgg_unregister_widget_type("group_forum_topics");
208
		}
209
		
210
		if (!empty($user)) {
211
			// check multiple admin
212
			if (elgg_get_plugin_setting("multiple_admin", "group_tools") == "yes") {
213
				// extend group members sidebar list
214
				elgg_extend_view("groups/sidebar/members", "group_tools/group_admins", 400);
215
				
216
				// remove group tool options for group admins
217
				if (($page_owner->getOwnerGUID() != $user->getGUID()) && !$user->isAdmin()) {
218
					remove_group_tool_option("group_multiple_admin_allow");
219
				}
220
			}
221
			
222
			// invitation management
223 View Code Duplication
			if ($page_owner->canEdit()) {
224
				$request_options = array(
225
					"type" => "user",
226
					"relationship" => "membership_request",
227
					"relationship_guid" => $page_owner->getGUID(),
228
					"inverse_relationship" => true,
229
					"count" => true
230
				);
231
				
232
				$requests = elgg_get_entities_from_relationship($request_options);
233
				
234
				$postfix = "";
235
				if (!empty($requests)) {
236
					$postfix = " [" . $requests . "]";
237
				}
238
				
239
				if (!$page_owner->isPublicMembership()) {
240
					elgg_register_menu_item("page", array(
241
						"name" => "membership_requests",
242
						"text" => elgg_echo("groups:membershiprequests") . $postfix,
243
						"href" => "groups/requests/" . $page_owner->getGUID(),
244
					));
245
				} else {
246
					elgg_register_menu_item("page", array(
247
						"name" => "membership_requests",
248
						"text" => elgg_echo("group_tools:menu:invitations") . $postfix,
249
						"href" => "groups/requests/" . $page_owner->getGUID(),
250
					));
251
				}
252
			}
253
			
254
			// group mail options
255
			if ($page_owner->canEdit() && (elgg_get_plugin_setting("mail", "group_tools") == "yes")) {
256
				elgg_register_menu_item("page", array(
257
					"name" => "mail",
258
					"text" => elgg_echo("group_tools:menu:mail"),
259
					"href" => "groups/mail/" . $page_owner->getGUID(),
260
				));
261
			}
262
		}
263
	}
264
	
265
	// cyu - index closed group too
266
	if ($page_owner instanceof ElggGroup) {
267
		
268
		// cleanup sidebar
269
		elgg_extend_view("page/elements/sidebar", "group_tools/sidebar/cleanup");
270
	}
271
}
272