From 2b74ad2a779fc787644eb42ac4c0d072e3ae2c46 Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 24 Jul 2008 15:48:42 +0000 Subject: Introducing the (still issue-packed) friend picker. git-svn-id: https://code.elgg.org/elgg/trunk@1511 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/access.php | 20 +++++ engine/lib/relationships.php | 2 +- engine/schema/mysql.sql | 4 +- languages/en.php | 2 + views/default/friends/collection.php | 45 +++++++++++ views/default/friends/collections.php | 59 ++++++++++++++ views/default/friends/picker.php | 144 ++++++++++++++++++++++++++++++++++ 7 files changed, 272 insertions(+), 4 deletions(-) create mode 100644 views/default/friends/collection.php create mode 100644 views/default/friends/collections.php create mode 100644 views/default/friends/picker.php diff --git a/engine/lib/access.php b/engine/lib/access.php index 8600fc719..64d982e30 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -326,6 +326,26 @@ } + /** + * Displays a user's access collections, using the friends/collections view + * + * @param int $owner_guid The GUID of the owning user + * @return string A formatted rendition of the collections + */ + function elgg_view_access_collections($owner_guid) { + + if ($collections = get_user_access_collections($owner_guid)) { + + foreach($collections as $key => $collection) { + $collections[$key]->entities = get_members_of_access_collection($collection->id); + } + + } + + return elgg_view('friends/collections',array('collections' => $collections)); + + } + /** * Some useful constant definitions */ diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php index e3f2c2085..142861a97 100644 --- a/engine/lib/relationships.php +++ b/engine/lib/relationships.php @@ -480,7 +480,7 @@ if ($owner_guid != "") $where[] = "e.container_guid='$owner_guid'"; if ($site_guid > 0) - $where[] = "e.container_guid = {$site_guid}"; + $where[] = "e.site_guid = {$site_guid}"; // Select what we're joining based on the options $joinon = "e.guid = r.guid_one"; diff --git a/engine/schema/mysql.sql b/engine/schema/mysql.sql index b223984db..38fc60095 100644 --- a/engine/schema/mysql.sql +++ b/engine/schema/mysql.sql @@ -74,14 +74,12 @@ CREATE TABLE `prefix_entity_relationships` ( -- Table structure for table `access_collections` CREATE TABLE `prefix_access_collections` ( `id` int(11) NOT NULL auto_increment, - `name` varchar(16) NOT NULL, + `name` text NOT NULL, `owner_guid` bigint(20) unsigned NOT NULL, `site_guid` bigint(20) unsigned NOT NULL default '0', PRIMARY KEY (`id`), - KEY `name` (`name`) ) AUTO_INCREMENT=3; - -- Access containers CREATE TABLE `prefix_access_collection_membership` ( `user_guid` int(11) NOT NULL, diff --git a/languages/en.php b/languages/en.php index 1dc3858cc..e7fe65c51 100644 --- a/languages/en.php +++ b/languages/en.php @@ -195,6 +195,8 @@ 'friends:none' => "This user hasn't added anyone as a friend yet.", 'friends:none:you' => "You haven't added anyone as a friend! Search for your interests to begin finding people to follow.", + 'friends:none:found' => "No friends were found.", + 'friends:of:none' => "Nobody has added this user as a friend yet.", 'friends:of:none:you' => "Nobody has added you as a friend yet. Start adding content and fill in your profile to let people find you!", diff --git a/views/default/friends/collection.php b/views/default/friends/collection.php new file mode 100644 index 000000000..4d08e5b06 --- /dev/null +++ b/views/default/friends/collection.php @@ -0,0 +1,45 @@ +entities)) { + $count = sizeof($vars['collection']->entities); + } else { + $count = 0; + } + + echo "
  • "; + + //as collections are private, check that the logged in user is the owner + if($coll->owner_guid == $_SESSION['user']->getGUID()) + echo ""; + echo $coll->name; + echo " ({$count})

    "; + + // Ben - this is where the friends picker view needs to go + if($members = $vars['collection']->entities){ + echo elgg_view('friends/picker',array('entities' => $members)); + } + + // close friends_picker div and the accordian list item + echo "
  • "; + +?> \ No newline at end of file diff --git a/views/default/friends/collections.php b/views/default/friends/collections.php new file mode 100644 index 000000000..a98e80c3a --- /dev/null +++ b/views/default/friends/collections.php @@ -0,0 +1,59 @@ +

    expand all

    "; + echo ""; + + } else { + + echo elgg_echo("friends:nocollections"); + + } + +?> + + \ No newline at end of file diff --git a/views/default/friends/picker.php b/views/default/friends/picker.php new file mode 100644 index 000000000..d821aa268 --- /dev/null +++ b/views/default/friends/picker.php @@ -0,0 +1,144 @@ +name,0,1)); + if ($letter >= "0" && $letter <= "9") { + $letter = "0"; + } + if (!isset($users[$letter])) { + $users[$letter] = array(); + } + $users[$letter][$user->name] = $user; + + } + +?> + +
    +
    +
    + +
    +
    +

    + +"; + $col = 0; + + foreach($users[$letter] as $friend) { + if ($col == 0) echo ""; + + //echo "

    " . $user->name . "

    "; + $label = elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny')); + $options[$label] = $friend->getGUID(); + +?> + + + + + + + + + +
    + +
    + + +name; + +?> + +"; + } + if ($col < 3) echo ""; + + echo ""; + + } + +?> + +
    +
    + +
    +
    +
    + + + \ No newline at end of file -- cgit v1.2.3