You are here

function answers_best_answer_views_default_views_alter in Answers 7.4

Implements hook_views_default_views_alter().

Adding:

  • question_answers: Set the first sort criteria to be the best answer
  • questions: Indicate whether best answer is flagged.

http://drupal.org/node/1014774 http://api.drupal.org/api/views/views.api.php/function/hook_views_defaul...

File

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

Code

function answers_best_answer_views_default_views_alter(&$views) {
  if (array_key_exists('question_answers', $views)) {
    $views['question_answers']->tag = ($views['question_answers']->tag == '' ? '' : $views['question_answers']->tag . ', ') . 'answers_best_answer';
    $handler =& $views['question_answers']->display['default']->handler;
    $handler->display->display_options['use_ajax'] = TRUE;

    /* Relationship: Flags: best_answer */
    $handler->display->display_options['relationships']['flag_content_rel']['id'] = 'flag_content_rel';
    $handler->display->display_options['relationships']['flag_content_rel']['table'] = 'node';
    $handler->display->display_options['relationships']['flag_content_rel']['field'] = 'flag_content_rel';
    $handler->display->display_options['relationships']['flag_content_rel']['label'] = 'flag_best_answer';
    $handler->display->display_options['relationships']['flag_content_rel']['required'] = 0;
    $handler->display->display_options['relationships']['flag_content_rel']['flag'] = 'best_answer';
    $handler->display->display_options['relationships']['flag_content_rel']['user_scope'] = 'any';

    /* Sort criterion: Flags: Flagged time */
    $best_answer_sort = array();
    $best_answer_sort['id'] = 'timestamp';
    $best_answer_sort['table'] = 'flag_content';
    $best_answer_sort['field'] = 'timestamp';
    $best_answer_sort['relationship'] = 'flag_content_rel';
    $best_answer_sort['order'] = 'DESC';

    /* Add the sort criteria as the first for the display */
    $handler->display->display_options['sorts'] = array_merge(array(
      'timestamp' => $best_answer_sort,
    ), isset($handler->display->display_options['sorts']) ? $handler->display->display_options['sorts'] : array());
  }
  if (array_key_exists('questions', $views)) {
    $views['questions']->tag = ($views['questions']->tag == '' ? '' : $views['questions']->tag . ', ') . 'answers_best_answer';
    $handler =& $views['questions']->display['default']->handler;

    /* Relationship: Flags: best_answer */
    $handler->display->display_options['relationships']['flag_content_rel']['id'] = 'flag_content_rel';
    $handler->display->display_options['relationships']['flag_content_rel']['table'] = 'node';
    $handler->display->display_options['relationships']['flag_content_rel']['field'] = 'flag_content_rel';
    $handler->display->display_options['relationships']['flag_content_rel']['relationship'] = 'reverse_answers_related_question_node';
    $handler->display->display_options['relationships']['flag_content_rel']['required'] = 0;
    $handler->display->display_options['relationships']['flag_content_rel']['flag'] = 'best_answer';
    $handler->display->display_options['relationships']['flag_content_rel']['user_scope'] = 'any';
    $old_fields = $handler->display->display_options['fields'];
    $handler->display->display_options['fields'] = array();

    /* Field: SUM(Flags: Flagged time) */
    $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
    $handler->display->display_options['fields']['timestamp']['table'] = 'flag_content';
    $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
    $handler->display->display_options['fields']['timestamp']['relationship'] = 'flag_content_rel';
    $handler->display->display_options['fields']['timestamp']['group_type'] = 'sum';
    $handler->display->display_options['fields']['timestamp']['label'] = t('Best !Answer', answers_translation());
    $handler->display->display_options['fields']['timestamp']['exclude'] = TRUE;
    $handler->display->display_options['fields']['timestamp']['alter']['alter_text'] = 1;
    $handler->display->display_options['fields']['timestamp']['alter']['text'] = '<img src="' . base_path() . 'misc/message-16-ok.png" />';
    $handler->display->display_options['fields']['timestamp']['alter']['make_link'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['absolute'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['external'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['replace_spaces'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['trim_whitespace'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['nl2br'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['word_boundary'] = 1;
    $handler->display->display_options['fields']['timestamp']['alter']['ellipsis'] = 1;
    $handler->display->display_options['fields']['timestamp']['alter']['more_link'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['strip_tags'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['trim'] = 0;
    $handler->display->display_options['fields']['timestamp']['alter']['html'] = 0;
    $handler->display->display_options['fields']['timestamp']['element_label_colon'] = 0;
    $handler->display->display_options['fields']['timestamp']['element_default_classes'] = 1;
    $handler->display->display_options['fields']['timestamp']['hide_empty'] = 0;
    $handler->display->display_options['fields']['timestamp']['empty_zero'] = 0;
    $handler->display->display_options['fields']['timestamp']['hide_alter_empty'] = 1;
    $handler->display->display_options['fields']['timestamp']['date_format'] = 'short';
    $handler->display->display_options['fields'] += $old_fields;

    /* Field: COUNT(Content: Nid) */
    $handler->display->display_options['fields']['nid_1']['alter']['alter_text'] = 1;
    $handler->display->display_options['fields']['nid_1']['alter']['text'] = '[nid_1] [timestamp]';

    /* Display: All */
    $views['questions']
      ->new_display('page', 'All', 'page_all');
    $handler =& $views['questions']->display['page_all']->handler;
    $handler->display->display_options['display_description'] = t('List of all !questions', answers_translation());
    $handler->display->display_options['path'] = 'questions/all';
    $handler->display->display_options['menu']['type'] = 'default tab';
    $handler->display->display_options['menu']['title'] = 'All';
    $handler->display->display_options['menu']['description'] = t('All !questions', answers_translation());
    $handler->display->display_options['menu']['weight'] = '1';
    $handler->display->display_options['menu']['context'] = 0;
    $handler->display->display_options['menu']['context_only_inline'] = 0;
    $handler->display->display_options['tab_options']['type'] = 'tab';
    $handler->display->display_options['tab_options']['title'] = t('All !Questions', answers_translation());
    $handler->display->display_options['tab_options']['description'] = t('List of all !questions', answers_translation());
    $handler->display->display_options['tab_options']['weight'] = '0';
    $handler->display->display_options['tab_options']['name'] = 'main-menu';

    /* Display: Page */
    $views['questions']
      ->new_display('page', 'Unanswered', 'page_unanswered');
    $handler =& $views['questions']->display['page_unanswered']->handler;
    $handler->display->display_options['defaults']['title'] = FALSE;
    $handler->display->display_options['title'] = t('!Unanswered !Questions', answers_translation());
    $handler->display->display_options['defaults']['filter_groups'] = FALSE;
    $handler->display->display_options['defaults']['filters'] = FALSE;

    /* Filter criterion: Content: Published */
    $handler->display->display_options['filters']['status']['id'] = 'status';
    $handler->display->display_options['filters']['status']['table'] = 'node';
    $handler->display->display_options['filters']['status']['field'] = 'status';
    $handler->display->display_options['filters']['status']['value'] = 1;
    $handler->display->display_options['filters']['status']['group'] = 1;
    $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;

    /* Filter criterion: Content: Type */
    $handler->display->display_options['filters']['type']['id'] = 'type';
    $handler->display->display_options['filters']['type']['table'] = 'node';
    $handler->display->display_options['filters']['type']['field'] = 'type';
    $handler->display->display_options['filters']['type']['value'] = array(
      'answers_question' => 'answers_question',
    );
    $handler->display->display_options['filters']['type']['group'] = 1;

    /* Filter criterion: COUNT(Flags: Flagged time) */
    $handler->display->display_options['filters']['timestamp']['id'] = 'timestamp';
    $handler->display->display_options['filters']['timestamp']['table'] = 'flagging';
    $handler->display->display_options['filters']['timestamp']['field'] = 'timestamp';
    $handler->display->display_options['filters']['timestamp']['relationship'] = 'flag_content_rel';
    $handler->display->display_options['filters']['timestamp']['group_type'] = 'count';
    $handler->display->display_options['filters']['timestamp']['value']['value'] = '0';
    $handler->display->display_options['path'] = 'questions/unanswered';
    $handler->display->display_options['menu']['type'] = 'tab';
    $handler->display->display_options['menu']['title'] = t('!Unanswered', answers_translation());
    $handler->display->display_options['menu']['description'] = t('!Questions without a "Best" !answer.', answers_translation());
    $handler->display->display_options['menu']['weight'] = '2';
    $handler->display->display_options['menu']['name'] = 'main-menu';
    $handler->display->display_options['menu']['context'] = 0;
    $handler->display->display_options['menu']['context_only_inline'] = 0;
    $handler->display->display_options['tab_options']['type'] = 'tab';
    $handler->display->display_options['tab_options']['title'] = t('All !Questions', answers_translation());
    $handler->display->display_options['tab_options']['description'] = t('List of all !questions', answers_translation());
    $handler->display->display_options['tab_options']['weight'] = '0';
    $handler->display->display_options['tab_options']['name'] = 'main-menu';

    /* Display: Page */
    $views['questions']
      ->new_display('page', 'Answered', 'page_answered');
    $handler =& $views['questions']->display['page_answered']->handler;
    $handler->display->display_options['defaults']['title'] = FALSE;
    $handler->display->display_options['title'] = t('!Answer_submitted !Questions', answers_translation());
    $handler->display->display_options['defaults']['filter_groups'] = FALSE;
    $handler->display->display_options['defaults']['filters'] = FALSE;

    /* Filter criterion: Content: Published */
    $handler->display->display_options['filters']['status']['id'] = 'status';
    $handler->display->display_options['filters']['status']['table'] = 'node';
    $handler->display->display_options['filters']['status']['field'] = 'status';
    $handler->display->display_options['filters']['status']['value'] = 1;
    $handler->display->display_options['filters']['status']['group'] = 1;
    $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;

    /* Filter criterion: Content: Type */
    $handler->display->display_options['filters']['type']['id'] = 'type';
    $handler->display->display_options['filters']['type']['table'] = 'node';
    $handler->display->display_options['filters']['type']['field'] = 'type';
    $handler->display->display_options['filters']['type']['value'] = array(
      'answers_question' => 'answers_question',
    );
    $handler->display->display_options['filters']['type']['group'] = 1;

    /* Filter criterion: COUNT(Flags: Flagged time) */
    $handler->display->display_options['filters']['timestamp']['id'] = 'timestamp';
    $handler->display->display_options['filters']['timestamp']['table'] = 'flagging';
    $handler->display->display_options['filters']['timestamp']['field'] = 'timestamp';
    $handler->display->display_options['filters']['timestamp']['relationship'] = 'flag_content_rel';
    $handler->display->display_options['filters']['timestamp']['group_type'] = 'count';
    $handler->display->display_options['filters']['timestamp']['value']['value'] = '1';
    $handler->display->display_options['path'] = 'questions/answered';
    $handler->display->display_options['menu']['type'] = 'tab';
    $handler->display->display_options['menu']['title'] = t('!Answer_submitted', answers_translation());
    $handler->display->display_options['menu']['description'] = t('!Questions with a "Best" !answer.', answers_translation());
    $handler->display->display_options['menu']['weight'] = '2';
    $handler->display->display_options['menu']['name'] = 'main-menu';
    $handler->display->display_options['menu']['context'] = 0;
    $handler->display->display_options['menu']['context_only_inline'] = 0;
  }
}