Passed
Push — remove_member_tabs ( b9b0ff )
by
unknown
08:32
created

start.php ➔ members_nav_newest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 4
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Members plugin initialization
4
 *
5
 * To adding a list page, handle the hook (members:list, <page_name>) and return the HTML for the list.
6
 *
7
 * To alter the navigation tabs, use the hook (members:config, tabs) which receives the array used to build them.
8
 */
9
10
elgg_register_event_handler('init', 'system', 'members_init');
11
12
/**
13
 * Initialize page handler and site menu item
14
 */
15
function members_init() {
16
	elgg_register_page_handler('members', 'members_page_handler');
17
18
	$item = new ElggMenuItem('members', elgg_echo('members'), 'members');
19
	elgg_register_menu_item('site', $item);
20
21
	$list_types = array('newest', 'popular', 'online');
22
23
	foreach ($list_types as $type) {
24
		elgg_register_plugin_hook_handler('members:list', $type, "members_list_$type");
25
		elgg_register_plugin_hook_handler('members:config', 'tabs', "members_nav_$type");
26
	}
27
}
28
29
/**
30
 * Returns content for the "popular" page
31
 *
32
 * @param string      $hook        "members:list"
33
 * @param string      $type        "popular"
34
 * @param string|null $returnvalue list content (null if not set)
35
 * @param array       $params      array with key "options"
36
 * @return string
37
 */
38
function members_list_popular($hook, $type, $returnvalue, $params) {
39
	if ($returnvalue !== null) {
40
		return;
41
	}
42
43
	$options = $params['options'];
44
	$options['relationship'] = 'friend';
45
	$options['inverse_relationship'] = false;
46
	return elgg_list_entities_from_relationship_count($options);
47
}
48
49
/**
50
 * Returns content for the "newest" page
51
 *
52
 * @param string      $hook        "members:list"
53
 * @param string      $type        "newest"
54
 * @param string|null $returnvalue list content (null if not set)
55
 * @param array       $params      array with key "options"
56
 * @return string
57
 */
58
function members_list_newest($hook, $type, $returnvalue, $params) {
59
	if ($returnvalue !== null) {
60
		return;
61
	}
62
	return elgg_list_entities($params['options']);
63
}
64
65
/**
66
 * Returns content for the "online" page
67
 *
68
 * @param string      $hook        "members:list"
69
 * @param string      $type        "online"
70
 * @param string|null $returnvalue list content (null if not set)
71
 * @param array       $params      array with key "options"
72
 * @return string
73
 */
74
function members_list_online($hook, $type, $returnvalue, $params) {
75
	if ($returnvalue !== null) {
76
		return;
77
	}
78
	return get_online_users();
79
}
80
81
/**
82
 * Appends "popular" tab to the navigation
83
 *
84
 * @param string $hook        "members:config"
85
 * @param string $type        "tabs"
86
 * @param array  $returnvalue array that build navigation tabs
87
 * @param array  $params      unused
88
 * @return array
89
 */
90
function members_nav_popular($hook, $type, $returnvalue, $params) {
91
	$returnvalue['popular'] = array(
92
		'title' => elgg_echo('sort:popular'),
93
		'url' => "members/popular",
94
	);
95
	return $returnvalue;
96
}
97
98
/**
99
 * Appends "newest" tab to the navigation
100
 *
101
 * @param string $hook        "members:config"
102
 * @param string $type        "tabs"
103
 * @param array  $returnvalue array that build navigation tabs
104
 * @param array  $params      unused
105
 * @return array
106
 */
107
// function members_nav_newest($hook, $type, $returnvalue, $params) {
108
// 	$returnvalue['newest'] = array(
109
// 		'title' => elgg_echo('sort:newest'),
110
// 		'url' => "members/newest",
111
// 	);
112
// 	return $returnvalue;
113
// }
114
115
/**
116
 * Appends "online" tab to the navigation
117
 *
118
 * @param string $hook        "members:config"
119
 * @param string $type        "tabs"
120
 * @param array  $returnvalue array that build navigation tabs
121
 * @param array  $params      unused
122
 * @return array
123
 */
124
// function members_nav_online($hook, $type, $returnvalue, $params) {
125
// 	$returnvalue['online'] = array(
126
// 		'title' => elgg_echo('members:label:online'),
127
// 		'url' => "members/online",
128
// 	);
129
// 	return $returnvalue;
130
// }
131
132
133
/**
134
 * Members page handler
135
 *
136
 * @param array $page url segments
137
 * @return bool
138
 */
139
function members_page_handler($page) {
140
	$base = elgg_get_plugins_path() . 'members/pages/members';
141
142
	if (empty($page[0])) {
143
		$page[0] = 'newest';
144
	}
145
146
	$vars = array();
147
	$vars['page'] = $page[0];
148
149
	if ($page[0] == 'search') {
150
		require_once "$base/search.php";
151
	} else {
152
		require_once "$base/index.php";
153
	}
154
	return true;
155
}
156