You are here

function answers_best_answer_flag in Answers 7.4

Implements hook_flag().

Flag API 2

File

answers_best_answer/answers_best_answer.module, line 176
Support selection of 'Best Answers' for the 'Answers' module.

Code

function answers_best_answer_flag($op, $flag, $content_id, $account, $fcid) {
  if ($flag->name == "best_answer") {
    $flagged_answer = entity_metadata_wrapper('node', $content_id);
    $question = answers_answer_question($content_id);
    $answers = answers_question_answers($question);
    if ($op == 'flag') {

      // Unflag a prior best answer if one exists.
      $old_answer = NULL;
      foreach ($answers as $answer) {
        if ($answer->nid != $content_id && $flag
          ->is_flagged($answer->nid)) {
          $flag
            ->flag('unflag', $answer->nid);
          $old_answer = $answer;
          answers_question_lock_unset($old_answer, 'answers_best_answer');
          module_invoke_all('answers_best_answer_unset', $question, $old_answer);
        }
      }
      answers_question_lock_set($question, 'answers_best_answer');
      module_invoke_all('answers_best_answer_set', $question, $flagged_answer
        ->value(), $old_answer);
    }
    elseif ($op == 'unflag' && !answers_best_answer_question_best_answer($question)) {
      answers_question_lock_unset($question, 'answers_best_answer');
      module_invoke_all('answers_best_answer_unset', $question, $flagged_answer
        ->value());
    }
  }
}