aboutsummaryrefslogtreecommitdiff
path: root/mod/members
diff options
context:
space:
mode:
Diffstat (limited to 'mod/members')
-rw-r--r--mod/members/index.php84
-rw-r--r--mod/members/languages/en.php25
-rw-r--r--mod/members/manifest.xml24
-rw-r--r--mod/members/pages/members/index.php36
-rw-r--r--mod/members/pages/members/search.php55
-rw-r--r--mod/members/start.php48
-rw-r--r--mod/members/views/default/members/css.php28
-rw-r--r--mod/members/views/default/members/members_navigation.php23
-rw-r--r--mod/members/views/default/members/nav.php24
-rw-r--r--mod/members/views/default/members/search.php30
-rw-r--r--mod/members/views/default/members/sidebar.php25
11 files changed, 197 insertions, 205 deletions
diff --git a/mod/members/index.php b/mod/members/index.php
deleted file mode 100644
index f6a04a216..000000000
--- a/mod/members/index.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Elgg members index page
- *
- * @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 the current page's owner
-$page_owner = page_owner_entity();
-if ($page_owner === false || is_null($page_owner)) {
- $page_owner = $_SESSION['user'];
- //set_page_owner($page_owner->getGUID());
-}
-
-// get filter parameters
-$limit = get_input('limit', 10);
-$offset = get_input('offset', 0);
-$filter = get_input("filter", "newest");
-
-// search options
-$tag = get_input('tag');
-
-// friends links
-$area1 = "<ul class='submenu page_navigation'><li><a href=\"" . $CONFIG->wwwroot."pg/friends/" . page_owner_entity()->username . "\">". elgg_echo('friends') . "</a></li>";
-$area1 .= "<li><a href=\"" . $CONFIG->wwwroot."pg/friendsof/" . page_owner_entity()->username . "\">". elgg_echo('friends:of') . "</a></li>";
-$area1 .= "<li class='selected'><a href=\"" . $CONFIG->wwwroot."mod/members/index.php\">". elgg_echo('members:browse') . "</a></li>";
-$area1 .= "</ul>";
-
-//search members
-$area1 .= elgg_view("members/search");
-
-// count members
-$members = get_number_users();
-
-// title
-$pagetitle = elgg_echo("members:members")." ({$members})";
-$area2 = elgg_view_title($pagetitle);
-
-//get the correct view based on filter
-switch($filter){
- case "newest":
- $filter_content = elgg_list_entities(array('type' => 'user', 'offset' => $offset, 'full_view' => FALSE));
- break;
- case "pop":
- $filter_content = list_entities_by_relationship_count('friend', true, '', '', 0, 10, false);
- break;
- case "active":
- $filter_content = get_online_users();
- break;
- // search based on name
- case "search":
- set_context('search');
- $filter_content = list_user_search($tag);
- break;
- // search based on tags
- case "search_tags":
- $options = array();
- $options['query'] = $tag;
- $options['type'] = "user";
- $options['offset'] = $offset;
- $options['limit'] = $limit;
- $results = trigger_plugin_hook('search', 'tags', $options, array());
- $count = $results['count'];
- $users = $results['entities'];
- $filter_content = elgg_view_entity_list($users, $count, $offset, $limit, false, false, true);
- break;
- case 'default':
- $filter_content = elgg_list_entities(array('type' => 'user', 'offset' => $offset, 'full_view' => FALSE));
- break;
-}
-
-$area2 .= elgg_view('page_elements/elgg_content', array('body' => elgg_view("members/members_navigation", array("count" => $members, "filter" => $filter)) . "<div class='members_list'>".$filter_content."</div>", 'subclass' => 'members'));
-
-//select the correct canvas area
-$body = elgg_view_layout("one_column_with_sidebar", $area2, $area1);
-
-// Display page
-page_draw(sprintf(elgg_echo('members:members'), $page_owner->name), $body); \ No newline at end of file
diff --git a/mod/members/languages/en.php b/mod/members/languages/en.php
index fd99aa670..73783143e 100644
--- a/mod/members/languages/en.php
+++ b/mod/members/languages/en.php
@@ -1,25 +1,16 @@
<?php
/**
- * Elgg members language
- *
- * @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/
+ * Members English language file
*/
$english = array(
- 'members:members' => "Site members",
- 'members:online' => "Members active now",
- 'members:browse' => "Browse members",
- 'members:active' => "site members",
- 'members:searchtag' => "Member search via tag",
- 'members:searchname' => "Member search via name",
-
'members:label:newest' => 'Newest',
'members:label:popular' => 'Popular',
- 'members:label:active' => 'Active',
+ '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',
);
-
-add_translation('en', $english); \ No newline at end of file
+
+add_translation('en', $english);
diff --git a/mod/members/manifest.xml b/mod/members/manifest.xml
index 37959b66e..8b18c9f91 100644
--- a/mod/members/manifest.xml
+++ b/mod/members/manifest.xml
@@ -1,12 +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" />
- <field key="elgg_install_state" value="enabled" />
- <field key="admin_interface" value="simple" />
+<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 0a66cacbf..54787cd16 100644
--- a/mod/members/start.php
+++ b/mod/members/start.php
@@ -1,19 +1,41 @@
<?php
/**
- * Elgg members plugin
- *
- * @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/
+ * Members plugin intialization
+ */
+
+elgg_register_event_handler('init', 'system', 'members_init');
+
+/**
+ * Initialize page handler and site menu item
*/
-
function members_init() {
- global $CONFIG;
- elgg_extend_view('css','members/css');
+ 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');
-register_elgg_event_handler('init','system','members_init'); \ No newline at end of file
+/**
+ * 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];
+
+ 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 d66c97bed..000000000
--- a/mod/members/views/default/members/css.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Elgg Members Css
- *
- * @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/
- */
-?>
-.members .group_count {
- font-weight: bold;
- color: #666666;
- margin:0 0 5px 4px;
-}
-#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:196px;
-} \ No newline at end of file
diff --git a/mod/members/views/default/members/members_navigation.php b/mod/members/views/default/members/members_navigation.php
deleted file mode 100644
index 1a79c3cfd..000000000
--- a/mod/members/views/default/members/members_navigation.php
+++ /dev/null
@@ -1,23 +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 class="elgg_horizontal_tabbed_nav margin_top">
-<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> \ 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/search.php b/mod/members/views/default/members/search.php
deleted file mode 100644
index 44930ef53..000000000
--- a/mod/members/views/default/members/search.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Elgg Members search
- *
- * @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/
- */
-?>
-<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="Member tags" onclick="if (this.value=='Member tags') { this.value='' }" class="search_input" />
- <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="Members name" onclick="if (this.value=='Members name') { 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