aboutsummaryrefslogtreecommitdiff
path: root/mod/members
diff options
context:
space:
mode:
Diffstat (limited to 'mod/members')
-rw-r--r--mod/members/index.php64
-rw-r--r--mod/members/languages/en.php31
-rw-r--r--mod/members/manifest.xml22
-rw-r--r--mod/members/pages/members/index.php36
-rw-r--r--mod/members/pages/members/search.php55
-rw-r--r--mod/members/start.php56
-rw-r--r--mod/members/views/default/members/css.php64
-rw-r--r--mod/members/views/default/members/members_sort_menu.php29
-rw-r--r--mod/members/views/default/members/nav.php24
-rw-r--r--mod/members/views/default/members/online.php11
-rw-r--r--mod/members/views/default/members/search.php32
-rw-r--r--mod/members/views/default/members/sidebar.php25
12 files changed, 200 insertions, 249 deletions
diff --git a/mod/members/index.php b/mod/members/index.php
deleted file mode 100644
index ecfcabb1c..000000000
--- a/mod/members/index.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * Elgg members index page - called from filter or search
- *
- * @package ElggMembers
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-// get filter parameters
-$limit = get_input('limit', 10);
-$offset = get_input('offset', 0);
-$filter = get_input("filter", "newest");
-
-// search options
-$tag = get_input('tag');
-
-
-//search members
-$sidebar = elgg_view("members/search");
-
-// get the correct content based on filter/search
-switch ($filter) {
- case "pop":
- $filter_content = list_entities_by_relationship_count('friend', true, '', '', 0, 10, false);
- break;
- case "active":
- $filter_content = elgg_view("members/online");
- break;
- // search based on name
- case "search":
- set_context('search');
- $filter_content = list_user_search($tag);
- break;
- // search based on tags
- case "search_tags":
- $filter_content = trigger_plugin_hook('search','',$tag,"");
- $filter_content .= list_entities_from_metadata("", $tag, "user", "", "", 10, false, false);
- break;
- case "newest":
- case 'default':
- $filter_content = elgg_list_entities(array('type' => 'user', 'offset' => $offset, 'full_view' => FALSE));
- break;
-}
-
-// create the members navigation/filtering
-$members = get_number_users();
-$members_nav = elgg_view("members/members_sort_menu", array("count" => $members, "filter" => $filter));
-
-$content = $members_nav . $filter_content;
-
-// title
-$main_content = elgg_view_title(elgg_echo("members:members"));
-
-$main_content .= elgg_view('page_elements/contentwrapper', array('body' => $content, 'subclass' => 'members'));
-
-$body = elgg_view_layout("sidebar_boxes", $sidebar, $main_content);
-
-page_draw(elgg_echo('members:members'), $body);
diff --git a/mod/members/languages/en.php b/mod/members/languages/en.php
index a6c4d0079..73783143e 100644
--- a/mod/members/languages/en.php
+++ b/mod/members/languages/en.php
@@ -1,21 +1,16 @@
<?php
+/**
+ * Members English language file
+ */
- $english = array(
-
- 'members:members' => "Members",
- 'members:online' => "Users active now",
- 'members:active' => "site users",
- 'members:searchtag' => "User search via tag",
- 'members:searchname' => "User search via name",
-
- 'members:label:newest' => 'Newest',
- 'members:label:popular' => 'Popular',
- 'members:label:active' => 'Active',
- 'members:search:name' => 'Users name',
- 'members:search:tags' => 'Tags',
-
- );
-
- add_translation("en",$english);
+$english = array(
+ 'members:label:newest' => 'Newest',
+ 'members:label:popular' => 'Popular',
+ 'members:label:online' => 'Online',
+ 'members:searchname' => 'Search members by name',
+ 'members:searchtag' => 'Search members by tag',
+ 'members:title:searchname' => 'Member search for %s',
+ 'members:title:searchtag' => 'Members tagged with %s',
+);
-?> \ No newline at end of file
+add_translation('en', $english);
diff --git a/mod/members/manifest.xml b/mod/members/manifest.xml
index 2248f8853..8b18c9f91 100644
--- a/mod/members/manifest.xml
+++ b/mod/members/manifest.xml
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
-<plugin_manifest>
- <field key="author" value="Curverider" />
- <field key="version" value="1.7" />
- <field key="description" value="A simple plugin to let users browser other members." />
- <field key="website" value="http://www.elgg.org/" />
- <field key="copyright" value="(C) Curverider 2008-2010" />
- <field key="licence" value="GNU Public License version 2" />
- <field key="elgg_version" value="2010030101" />
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Members</name>
+ <author>Core developers</author>
+ <version>1.8</version>
+ <category>bundled</category>
+ <description>Lists the members of your site</description>
+ <website>http://www.elgg.org/</website>
+ <copyright>See COPYRIGHT.txt</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <activate_on_install>true</activate_on_install>
</plugin_manifest>
diff --git a/mod/members/pages/members/index.php b/mod/members/pages/members/index.php
new file mode 100644
index 000000000..330ef66bf
--- /dev/null
+++ b/mod/members/pages/members/index.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Members index
+ *
+ */
+
+$num_members = get_number_users();
+
+$title = elgg_echo('members');
+
+$options = array('type' => 'user', 'full_view' => false);
+switch ($vars['page']) {
+ case 'popular':
+ $options['relationship'] = 'friend';
+ $options['inverse_relationship'] = false;
+ $content = elgg_list_entities_from_relationship_count($options);
+ break;
+ case 'online':
+ $content = get_online_users();
+ break;
+ case 'newest':
+ default:
+ $content = elgg_list_entities($options);
+ break;
+}
+
+$params = array(
+ 'content' => $content,
+ 'sidebar' => elgg_view('members/sidebar'),
+ 'title' => $title . " ($num_members)",
+ 'filter_override' => elgg_view('members/nav', array('selected' => $vars['page'])),
+);
+
+$body = elgg_view_layout('content', $params);
+
+echo elgg_view_page($title, $body);
diff --git a/mod/members/pages/members/search.php b/mod/members/pages/members/search.php
new file mode 100644
index 000000000..5466a8246
--- /dev/null
+++ b/mod/members/pages/members/search.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Members search page
+ *
+ */
+
+if ($vars['search_type'] == 'tag') {
+ $tag = get_input('tag');
+
+ $display_query = _elgg_get_display_query($tag);
+
+ $title = elgg_echo('members:title:searchtag', array($display_query));
+
+ $options = array();
+ $options['query'] = $tag;
+ $options['type'] = "user";
+ $options['offset'] = $offset;
+ $options['limit'] = $limit;
+ $results = elgg_trigger_plugin_hook('search', 'tags', $options, array());
+ $count = $results['count'];
+ $users = $results['entities'];
+ $content = elgg_view_entity_list($users, array(
+ 'count' => $count,
+ 'offset' => $offset,
+ 'limit' => $limit,
+ 'full_view' => false,
+ 'list_type_toggle' => false,
+ 'pagination' => true,
+ ));
+} else {
+ $name = sanitize_string(get_input('name'));
+
+ $display_query = _elgg_get_display_query($name);
+
+ $title = elgg_echo('members:title:searchname', array($display_query));
+
+ $db_prefix = elgg_get_config('dbprefix');
+ $params = array(
+ 'type' => 'user',
+ 'full_view' => false,
+ 'joins' => array("JOIN {$db_prefix}users_entity u ON e.guid=u.guid"),
+ 'wheres' => array("(u.name LIKE \"%{$name}%\" OR u.username LIKE \"%{$name}%\")"),
+ );
+ $content .= elgg_list_entities($params);
+}
+
+$params = array(
+ 'title' => $title,
+ 'content' => $content,
+ 'sidebar' => elgg_view('members/sidebar'),
+);
+
+$body = elgg_view_layout('one_sidebar', $params);
+
+echo elgg_view_page($title, $body);
diff --git a/mod/members/start.php b/mod/members/start.php
index fa6810157..54787cd16 100644
--- a/mod/members/start.php
+++ b/mod/members/start.php
@@ -1,31 +1,41 @@
<?php
+/**
+ * Members plugin intialization
+ */
+
+elgg_register_event_handler('init', 'system', 'members_init');
/**
- * Elgg members plugin
- * This plugin has some interesting options for users; see who is online, site members,
- *
- * @package Elggmembers
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
+ * Initialize page handler and site menu item
*/
-
function members_init() {
-
- global $CONFIG;
-
- elgg_extend_view('css','members/css');
-
-
- // Set up menu for logged in users
- if (isloggedin()) {
- add_menu(elgg_echo('members:members'), $CONFIG->wwwroot . "mod/members/index.php");
- }
-
+ elgg_register_page_handler('members', 'members_page_handler');
+
+ $item = new ElggMenuItem('members', elgg_echo('members'), 'members');
+ elgg_register_menu_item('site', $item);
}
-// @todo - use page handler for members index
-register_elgg_event_handler('pagesetup','system','members_pagesetup');
+/**
+ * Members page handler
+ *
+ * @param array $page url segments
+ * @return bool
+ */
+function members_page_handler($page) {
+ $base = elgg_get_plugins_path() . 'members/pages/members';
+
+ if (!isset($page[0])) {
+ $page[0] = 'newest';
+ }
+
+ $vars = array();
+ $vars['page'] = $page[0];
-register_elgg_event_handler('init','system','members_init');
+ if ($page[0] == 'search') {
+ $vars['search_type'] = $page[1];
+ require_once "$base/search.php";
+ } else {
+ require_once "$base/index.php";
+ }
+ return true;
+}
diff --git a/mod/members/views/default/members/css.php b/mod/members/views/default/members/css.php
deleted file mode 100644
index 048d71bad..000000000
--- a/mod/members/views/default/members/css.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
- /**
- * Elgg Members
- *
- * @package Members
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-?>
-
-/* new members page */
-.members .search_listing {
- border:2px solid #cccccc;
- margin:0 0 5px 0;
-}
-.members .search_listing:hover {
- background:#dedede;
-}
-.members .group_count {
- font-weight: bold;
- color: #666666;
- margin:0 0 5px 4px;
-}
-.members .search_listing_info {
- color:#666666;
-}
-
-.members .profile_status {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- background:#bbdaf7;
- line-height:1.2em;
- padding:2px 4px;
-}
-.members .profile_status span {
- font-size:90%;
- color:#666666;
-}
-.members p.owner_timestamp {
- padding-left:3px;
-}
-.members .pagination {
- border:2px solid #cccccc;
- margin:5px 0 5px 0;
-}
-
-
-#memberssearchform {
- border-bottom: 1px solid #cccccc;
- margin-bottom: 10px;
-}
-#memberssearchform input[type="submit"] {
- padding:2px;
- height:auto;
- margin:4px 0 5px 0;
-}
-#memberssearchform .search_input {
- width:176px;
-}
-
diff --git a/mod/members/views/default/members/members_sort_menu.php b/mod/members/views/default/members/members_sort_menu.php
deleted file mode 100644
index e9ad96039..000000000
--- a/mod/members/views/default/members/members_sort_menu.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
- /**
- * A simple view to provide the user with group filters and the number of group on the site
- **/
-
- $members = $vars['count'];
- if(!$num_groups)
- $num_groups = 0;
-
- $filter = $vars['filter'];
-
- //url
- $url = $vars['url'] . "mod/members/index.php";
-
-?>
-<div id="elgg_horizontal_tabbed_nav">
-<ul>
- <li <?php if($filter == "newest") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=newest"><?php echo elgg_echo('members:label:newest'); ?></a></li>
- <li <?php if($filter == "pop") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=pop"><?php echo elgg_echo('members:label:popular'); ?></a></li>
- <li <?php if($filter == "active") echo "class='selected'"; ?>><a href="<?php echo $url; ?>?filter=active"><?php echo elgg_echo('members:label:active'); ?></a></li>
-</ul>
-</div>
-
-<div class="group_count">
- <?php
- echo $members . " " . elgg_echo("members:active");
- ?>
-</div> \ No newline at end of file
diff --git a/mod/members/views/default/members/nav.php b/mod/members/views/default/members/nav.php
new file mode 100644
index 000000000..510d1849b
--- /dev/null
+++ b/mod/members/views/default/members/nav.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Members navigation
+ */
+
+$tabs = array(
+ 'newest' => array(
+ 'title' => elgg_echo('members:label:newest'),
+ 'url' => "members/newest",
+ 'selected' => $vars['selected'] == 'newest',
+ ),
+ 'popular' => array(
+ 'title' => elgg_echo('members:label:popular'),
+ 'url' => "members/popular",
+ 'selected' => $vars['selected'] == 'popular',
+ ),
+ 'online' => array(
+ 'title' => elgg_echo('members:label:online'),
+ 'url' => "members/online",
+ 'selected' => $vars['selected'] == 'online',
+ ),
+);
+
+echo elgg_view('navigation/tabs', array('tabs' => $tabs));
diff --git a/mod/members/views/default/members/online.php b/mod/members/views/default/members/online.php
deleted file mode 100644
index cfbe062b4..000000000
--- a/mod/members/views/default/members/online.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
- /**
- * Show members online
- **/
-
- echo "<div class=\"members_online\">";
- echo get_online_users();
- echo "</div>";
-
-?> \ No newline at end of file
diff --git a/mod/members/views/default/members/search.php b/mod/members/views/default/members/search.php
deleted file mode 100644
index 69d8c06bf..000000000
--- a/mod/members/views/default/members/search.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
- /**
- * Simple member search
- **/
-
-$tag_string = elgg_echo('members:search:tags');
-$name_string = elgg_echo('members:search:name');
-
-?>
-
-<div class="sidebarBox">
-
-<h3><?php echo elgg_echo('members:searchtag'); ?></h3>
-<form id="memberssearchform" action="<?php echo $vars['url']; ?>mod/members/index.php?" method="get">
- <input type="text" name="tag" value="<?php echo $tag_string; ?>" onclick="if (this.value=='<?php echo $tag_string; ?>') { this.value='' }" class="search_input" />
- <input type="hidden" name="subtype" value="" />
- <input type="hidden" name="object" value="user" />
- <input type="hidden" name="filter" value="search_tags" />
- <input type="submit" value="<?php echo elgg_echo('go'); ?>" />
-</form>
-
-<h3><?php echo elgg_echo('members:searchname'); ?></h3>
-<form id="memberssearchform" action="<?php echo $vars['url']; ?>mod/members/index.php?" method="get">
- <input type="text" name="tag" value="<?php echo $name_string; ?>" onclick="if (this.value=='<?php echo $name_string; ?>') { this.value='' }" class="search_input" />
- <input type="hidden" name="subtype" value="" />
- <input type="hidden" name="object" value="user" />
- <input type="hidden" name="filter" value="search" />
- <input type="submit" value="<?php echo elgg_echo('go'); ?>" />
-</form>
-
-</div> \ No newline at end of file
diff --git a/mod/members/views/default/members/sidebar.php b/mod/members/views/default/members/sidebar.php
new file mode 100644
index 000000000..8fa0fe02b
--- /dev/null
+++ b/mod/members/views/default/members/sidebar.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Members sidebar
+ */
+
+// Tag search
+$params = array(
+ 'method' => 'get',
+ 'action' => elgg_get_site_url() . 'members/search/tag',
+ 'disable_security' => true,
+);
+
+$body = elgg_view_form('members/tag_search', $params);
+
+echo elgg_view_module('aside', elgg_echo('members:searchtag'), $body);
+
+// name search
+$params = array(
+ 'method' => 'get',
+ 'action' => elgg_get_site_url() . 'members/search/name',
+ 'disable_security' => true,
+);
+$body = elgg_view_form('members/name_search', $params);
+
+echo elgg_view_module('aside', elgg_echo('members:searchname'), $body); \ No newline at end of file