function user_relationshipsactivity_user_relationships in Activity 5.4
Same name and namespace in other branches
- 5.3 contrib/user_relationshipsactivity/user_relationshipsactivity.module \user_relationshipsactivity_user_relationships()
- 6 contrib/user_relationshipsactivity/user_relationshipsactivity.module \user_relationshipsactivity_user_relationships()
Implementation of hook_user_relationships().
Parameters
$op: The action taken on a user relationship or user relationship type
$relationship: The relationship object.
$category: An optional parameter that when added indicates the 'suboperation' of the operation in $op
The array of possible $op and $category parameters are:
$type | $category | Description ---------------------------------------------------------------------------------------- insert | type | before a new relationship type is created update | type | before a relationship type is updated delete | type | after a relationship type is deleted load | type | after a relationship type is loaded (so you can add data to it if you'd like) load | NULL | after a relationship is loaded pre-save | request|update|approve | before a new relationship is created or updated post-save | request|update|approve | after a new relationship is created or updated delete | remove | when a relationship is removed delete | cancel | when a relationship request is cancelled delete | disapprove | when a relationship request is disapprove
File
- contrib/
user_relationshipsactivity/ user_relationshipsactivity.module, line 137
Code
function user_relationshipsactivity_user_relationships($op, $relationship, $category = NULL) {
if ($category == 'type' || ($op == 'load' || $op == 'pre-save')) {
return;
}
$relationship = array_merge((array) $relationship, (array) user_relationships_type_load($relationship->rtid));
$type = preg_replace('/\\s/', '_', drupal_strtolower($relationship['name']));
switch ($op) {
case 'post-save':
if ($relationship['approved']) {
$operation = 'approved';
$target_users_roles[ACTIVITY_ALL] = 'all';
}
else {
$operation = 'requested';
}
break;
case 'delete':
switch ($category) {
case 'remove':
$operation = 'deleted';
$target_users_roles[ACTIVITY_ALL] = 'all';
break;
case 'cancel':
$operation = 'canceled';
break;
case 'disapprove':
$operation = 'denied';
break;
}
break;
}
// Check if both type and operation are
// enabled for activity. If not then stop here
if (!in_array($type, variable_get('user_relatinshipsactivity_token_types', array(
$type,
)), TRUE) || !in_array($operation, variable_get('user_relationshipsactivity_op_types', array(
$operation,
)), TRUE)) {
return FALSE;
}
$user = user_load(array(
'uid' => $relationship['requester_id'],
));
// Privacy setting check for user voting
if (activity_user_privacy_optout($user)) {
return FALSE;
}
// There is a quirk in user_relationships in that if the $op is
// delete and $category is remove, the user that is deleting
// the relationship is set as the requestee when they should be
// the requester. So let's swap the values in this case.
// See http://drupal.org/node/254446
/*
if ($op == 'delete' && $category == 'remove') {
$requestee = $relationship['requester_id'];
$relationship['requester_id'] = $relationship['requestee_id'];
$relationship['requestee_id'] = $requestee;
}
*/
$data = array(
'requestee-uid' => $relationship['requestee_id'],
'relationship-type-id' => $relationship['rtid'],
);
$target_users_roles[$relationship['requester_id']] = 'requester';
$target_users_roles[$relationship['requestee_id']] = 'requestee';
activity_insert($user->uid, 'user_relationshipsactivity', $type, $operation, $data, $target_users_roles);
}