| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | <?php/** * Members plugin initialization * * To adding a list page, handle the hook (members:list, <page_name>) and return the HTML for the list. * * To alter the navigation tabs, use the hook (members:config, tabs) which receives the array used to build them. */elgg_register_event_handler('init', 'system', 'members_init');/** * Initialize page handler and site menu item */function members_init() {	elgg_register_page_handler('members', 'members_page_handler');	$item = new ElggMenuItem('members', elgg_echo('members'), 'members');	elgg_register_menu_item('site', $item);	/*$list_types = array('newest', 'popular', 'online');	foreach ($list_types as $type) {		elgg_register_plugin_hook_handler('members:list', $type, "members_list_$type");		elgg_register_plugin_hook_handler('members:config', 'tabs', "members_nav_$type");	}*/}/** * Returns content for the "popular" page * * @param string      $hook        "members:list" * @param string      $type        "popular" * @param string|null $returnvalue list content (null if not set) * @param array       $params      array with key "options" * @return string */function members_list_popular($hook, $type, $returnvalue, $params) {	if ($returnvalue !== null) {		return;	}	$options = $params['options'];	$options['relationship'] = 'friend';	$options['inverse_relationship'] = false;	return elgg_list_entities_from_relationship_count($options);}/** * Returns content for the "newest" page * * @param string      $hook        "members:list" * @param string      $type        "newest" * @param string|null $returnvalue list content (null if not set) * @param array       $params      array with key "options" * @return string */function members_list_newest($hook, $type, $returnvalue, $params) {	if ($returnvalue !== null) {		return;	}	return elgg_list_entities($params['options']);}/** * Returns content for the "online" page * * @param string      $hook        "members:list" * @param string      $type        "online" * @param string|null $returnvalue list content (null if not set) * @param array       $params      array with key "options" * @return string */function members_list_online($hook, $type, $returnvalue, $params) {	if ($returnvalue !== null) {		return;	}	return get_online_users();}/** * Appends "popular" tab to the navigation * * @param string $hook        "members:config" * @param string $type        "tabs" * @param array  $returnvalue array that build navigation tabs * @param array  $params      unused * @return array */function members_nav_popular($hook, $type, $returnvalue, $params) {	$returnvalue['popular'] = array(		'title' => elgg_echo('sort:popular'),		'url' => "members/popular",	);	return $returnvalue;}/** * Appends "newest" tab to the navigation * * @param string $hook        "members:config" * @param string $type        "tabs" * @param array  $returnvalue array that build navigation tabs * @param array  $params      unused * @return array */function members_nav_newest($hook, $type, $returnvalue, $params) {	$returnvalue['newest'] = array(		'title' => elgg_echo('sort:newest'),		'url' => "members",	);	return $returnvalue;}/** * Appends "online" tab to the navigation * * @param string $hook        "members:config" * @param string $type        "tabs" * @param array  $returnvalue array that build navigation tabs * @param array  $params      unused * @return array */function members_nav_online($hook, $type, $returnvalue, $params) {	$returnvalue['online'] = array(		'title' => elgg_echo('members:label:online'),		'url' => "members/online",	);	return $returnvalue;}/*** Appends "suggested friends" tab to the navigation*/function members_nav_suggested($hook, $type, $returnvalue, $params) {        $returnvalue['suggested'] = array(                'title' => elgg_echo('members:label:suggested'),                'url' => "suggested_friends",        );        return $returnvalue;}/** * Members page handler * * @param array $page url segments * @return bool */function members_page_handler($page) {	$base = elgg_get_plugins_path() . 'members/pages/members';	if (empty($page[0])) {		$page[0] = 'newest';	}	$vars = array();	$vars['page'] = $page[0];	if ($page[0] == 'search') {                $vars['search_type'] = $page[1];		require_once "$base/search.php";	} else {		require_once "$base/index.php";	}	return true;}
 |