You are here

function user_relationship_service_approve in User Relationships 7

Same name and namespace in other branches
  1. 5.2 plugins/user_relationship_service/user_relationship_service.module \user_relationship_service_approve()
  2. 6 user_relationship_service/user_relationship_service.inc \user_relationship_service_approve()

Approve a relationship.

Parameters

$data: An object containing the relationship items. The $data object should contain: -rid (relationship id to approve. [GET] {endpoint}/relationships/ or @see user_relationships_load())

Return value

The relationship object of the newly created relationship.

See also

user_relationships_save_relationship()

1 string reference to 'user_relationship_service_approve'
_user_relationship_service_definition in user_relationship_service/user_relationship_service.module

File

user_relationship_service/user_relationship_service.inc, line 84
Link general user relationship functionalities to services module.

Code

function user_relationship_service_approve($data) {
  if (!$data['rid']) {
    return services_error(t('Missing required field "rid".'), 404);
  }

  // Maintain compability with original code.
  $rid = $data['rid'];

  // Start of Darren Ferguson's code.
  try {
    global $user;
    $rels = user_relationships_load(array(
      'rid' => $rid,
      'requestee_id' => $user->uid,
      'approved' => 0,
    ));
    if (!$rels || !is_array($rels) || count($rels) != 1) {
      throw new Exception("User relationship load failed");
    }
    $rel = array_shift($rels);
    if ($rel->requestee_id != $user->uid) {
      throw new Exception("Access denied");
    }
    user_relationships_save_relationship($rel, 'approve');
    return $rel;
  } catch (Exception $ex) {
    return services_error(t('Error approving relationship: @msg', array(
      '@msg' => $ex
        ->getMessage(),
    )));
  }
}