function _user_relationships_ui_actions_between in User Relationships 6
Same name and namespace in other branches
- 5.3 user_relationships_ui/user_relationships_ui.module \_user_relationships_ui_actions_between()
List of possible relationship actions with between two users
Parameters
$viewer - user object for the visitor:
$viewed - user object for the user being looked at:
action_types - associative array of kinds of links to show (all by default). Only the existence of specific array keys is needed:: add, remove, requested, received
2 calls to _user_relationships_ui_actions_between()
- template_preprocess_user_relationships_actions_block in user_relationship_blocks/
user_relationship_blocks.module - Template pre processor for the relationship actions block
- user_relationships_ui_user in user_relationships_ui/
user_relationships_ui.module - Implementation of hook_user().
File
- user_relationships_ui/
user_relationships_ui.module, line 200 - UI components of user_relationships @author Jeff Smick (creator) @author Alex Karshakevich (maintainer) http://drupal.org/user/183217 @author Darren Ferguson (contributor) http://drupal.org/user/70179
Code
function _user_relationships_ui_actions_between(&$viewer, &$viewed, $action_types = array(
'add' => 1,
'remove' => 1,
'requested' => 1,
'received' => 1,
)) {
if (!user_access('can have relationships') || $viewer->uid == $viewed->uid) {
return;
}
$list = array();
if (isset($action_types['requested'])) {
$relationships = user_relationships_load(array(
'requester_id' => $viewer->uid,
'requestee_id' => $viewed->uid,
'approved' => FALSE,
));
foreach ($relationships as $relationship) {
$list[] = t('You have sent a new %relationship_name request to this user. (!pending_requests)', array(
'%relationship_name' => ur_tt("user_relationships:rtid:{$relationship->rtid}:name", $relationship->name),
'!pending_requests' => l(t('pending requests'), "relationships/requests"),
));
}
}
if (isset($action_types['received'])) {
$relationships = user_relationships_load(array(
'requester_id' => $viewed->uid,
'requestee_id' => $viewer->uid,
'approved' => FALSE,
));
foreach ($relationships as $relationship) {
$list[] = t('This user has requested to be your %relationship_name. (!pending_requests)', array(
'%relationship_name' => ur_tt("user_relationships:rtid:{$relationship->rtid}:name", $relationship->name),
'!pending_requests' => l(t('pending requests'), "user/{$viewer->uid}/relationships/requests"),
));
}
}
if (isset($action_types['add'])) {
// Compute if any more relationships can be created
$types_count = (int) db_result(db_query("SELECT COUNT(*) FROM {user_relationship_types}"));
$existing_relationships = user_relationships_load(array(
'between' => array(
$viewer->uid,
$viewed->uid,
),
), array(
'sort' => 'rtid',
));
$all_relationships = user_relationships_types_load();
$relationships_count = 0;
// Unset the relationships which already exist
foreach ($existing_relationships as $rtid => $relationship_type) {
foreach ($relationship_type as $relationship) {
if (!$relationship->is_oneway || !$relationship->is_reciprocal || $relationship->requester_id == $viewer->uid) {
unset($all_relationships[$rtid]);
$relationships_count++;
}
}
}
if (!$relationships_count || variable_get('user_relationships_allow_multiple', TRUE) && $relationships_count < $types_count) {
//if configured, create direct links
if (variable_get('user_relationships_show_direct_links', 1)) {
//draw a single link, or one for each relationship type
foreach ($all_relationships as $rtid => $relationship) {
//check this type can be requested
if (!user_relationships_api_can_request($viewer, $relationship) || !user_relationships_api_can_receive($viewed, $relationship)) {
continue;
}
$list[] = theme('user_relationships_request_relationship_direct_link', $viewed, $relationship);
}
}
else {
$list[] = theme('user_relationships_request_relationship_link', $viewed);
}
}
}
if (isset($action_types['remove'])) {
$relationships = user_relationships_load(array(
'between' => array(
$viewer->uid,
$viewed->uid,
),
));
foreach ($relationships as $relationship) {
if ($relationship->approved && !isset($list[$relationship->rid])) {
$list[$relationship->rid] = t('%relationship_name (!remove_link)', array(
'%relationship_name' => ur_tt("user_relationships:rtid:{$relationship->rtid}:name", $relationship->name) . ($relationship->is_oneway ? $relationship->requester_id == $viewer->uid ? t(' (You to Them)') : t(' (Them to You)') : NULL),
'!remove_link' => theme('user_relationships_remove_link', $viewer->uid, $relationship->rid),
));
}
}
}
return $list;
}