You are here

function flag_clear_handler_field_unflag::render in Flag clear 7

Render the field.

Parameters

array $values: The values retrieved from the database.

Overrides views_handler_field::render

File

includes/views/flag_clear_handler_field_unflag.inc, line 144
Contains the flag clearing field handler.

Class

flag_clear_handler_field_unflag
Views field handler for the Flag clearing links.

Code

function render($values) {
  if (!($flag = $this
    ->get_flag())) {
    return t('Missing flag');

    // get_flag() itself will print a more detailed message.
  }
  $types = array(
    'cid' => 'comment',
    'nid' => 'node',
    'uid' => 'user',
  );
  $entity_id = $values->{$this->aliases['entity_id']};
  $is_flagged = $values->{$this->aliases['is_flagged']};
  if (empty($this->flag_applies[$entity_id])) {

    // Flag does not apply to this content.
    return;
  }
  if (isset($values->users_flagging_uid)) {
    $unflag_user = $values->users_flagging_uid;
  }
  elseif (isset($values->flagging_node_uid)) {
    $unflag_user = $values->flagging_node_uid;
  }
  elseif (isset($values->flagging_comment_uid)) {
    $unflag_user = $values->flagging_comment_uid;
  }
  elseif (isset($values->flagging_user_uid)) {
    $unflag_user = $values->flagging_user_uid;
  }
  else {
    return t('Unflag link requires username or uid field in view output.');
  }
  $token_key = 'flag_clear:' . $entity_id;
  $token = drupal_get_token($token_key);
  $current_path = current_path();
  $unflag_text = $this->options['link_text'];
  $unflag_query = array(
    'destination' => $current_path,
  );
  $unflag_link = l($unflag_text, 'unflag/user/' . $flag->name . '/' . $entity_id . '/' . $unflag_user . '/' . $token, array(
    'query' => $unflag_query,
  ));
  return $unflag_link;
}