You are here

function user_relationships_panels_visibility_ctools_access_check in User Relationships 7

Same name and namespace in other branches
  1. 6 user_relationships_panels_visibility/plugins/access/ur_relationship.inc \user_relationships_panels_visibility_ctools_access_check()

Check for access based on relationship.

1 string reference to 'user_relationships_panels_visibility_ctools_access_check'
ur_relationship.inc in user_relationships_panels_visibility/plugins/access/ur_relationship.inc

File

user_relationships_panels_visibility/plugins/access/ur_relationship.inc, line 51

Code

function user_relationships_panels_visibility_ctools_access_check($conf, $context) {
  if (empty($context) || count($context) != 2 || empty($context[0]->data) || empty($context[1]->data)) {
    return FALSE;
  }
  $account1 = $context[0]->data;
  $account2 = $context[1]->data;

  // If you are viewing something which is your own (like your profile) return TRUE.
  if ($conf['ur_self']['1'] == 1 && $account1->uid == $account2->uid) {
    return TRUE;
  }
  $relationships = user_relationships_load(array(
    "between" => array(
      $account1->uid,
      $account2->uid,
    ),
  ));
  foreach ($relationships as $relationship) {

    // If this relationship is in the conf file
    if (!empty($conf['ur_relationship'][$relationship->rtid])) {

      // If no approval required, or approval has been granted
      if (!$relationship->requires_approval || $relationship->requires_approval && $relationship->approved) {

        // If not a oneway, or else it is a oneway requested by this user
        if (!$relationship->is_oneway || $relationship->requester_id == $account1->uid) {
          return TRUE;
        }
      }
    }
  }
  return FALSE;
}