You are here

function _user_relationships_ui_get_requestable_rtypes in User Relationships 6

Get relationship types that a user can request TODO: factor out of .module into an include file

Parameters

$requester requester user or uid:

$requestee requestee user or uid:

Return value

array {rtid} => {relationship type name} that requester may send to requestee

1 call to _user_relationships_ui_get_requestable_rtypes()
user_relationships_ui_request_form in user_relationships_ui/user_relationships_ui.forms.inc
Request new user to user relationship

File

user_relationships_ui/user_relationships_ui.module, line 311
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_get_requestable_rtypes($requester, $requestee) {
  $current_relationships = user_relationships_load(array(
    'between' => array(
      $requester->uid,
      $requestee->uid,
    ),
  ), array(
    'sort' => 'rtid',
  ));
  $relationship_types = user_relationships_types_load();
  $relationships = array();
  foreach ($relationship_types as $rtype) {

    //exclude already established relationships
    if (!isset($current_relationships[$rtype->rtid])) {
      $relationships[$rtype->rtid] = ur_tt("user_relationships:rtid:{$rtype->rtid}:name", $rtype->name);
      continue;
    }
    $relationship = $current_relationships[$rtype->rtid];
    if (is_array($relationship) && count($relationship)) {
      $relationship = $relationship[0];
    }

    //skip two-way relationships, one-way non-reciprocal relationships, or reciprocal where this direction already exists
    if (isset($current_relationships[$rtype->rtid]) && (!$rtype->is_oneway || !$rtype->is_reciprocal || $relationship->requester_id == $requester->uid)) {
      continue;
    }

    //exclude types that are not allowed
    if (!user_relationships_api_can_request($requester, $rtype) || !user_relationships_api_can_receive($requestee, $rtype)) {
      continue;
    }
    $relationships[$rtype->rtid] = ur_tt("user_relationships:rtid:{$rtype->rtid}:name", $rtype->name);
  }
  return $relationships;
}