You are here

forum.inc in Advanced Forum 6.2

Same filename in this branch
  1. 6.2 plugins/contexts/forum.inc
  2. 6.2 plugins/tasks/forum.inc
Same filename and directory in other branches
  1. 7.2 plugins/contexts/forum.inc

Plugin to provide a user context

File

plugins/contexts/forum.inc
View source
<?php

/**
 * @file
 *
 * Plugin to provide a user context
 */

/**
 * Implementation of specially named hook_advanced_forum_forum_contexts().
 */
function advanced_forum_forum_ctools_contexts() {
  return array(
    'title' => t("Forum"),
    'description' => t('A single forum object.'),
    'context' => 'advanced_forum_forum_context_create_forum',
    'settings form' => 'advanced_forum_forum_context_settings_form',
    'settings form validate' => 'advanced_forum_forum_context_settings_form_validate',
    'keyword' => 'forum',
    'context name' => 'forum',
    'convert list' => array(
      'tid' => t('Forum ID'),
      'name' => t('Forum name'),
    ),
    'convert' => 'advanced_forum_forum_context_convert',
    'defaults' => array(
      'tid' => 0,
    ),
  );
}

/**
 * It's important to remember that $conf is optional here, because contexts
 * are not always created from the UI.
 */
function advanced_forum_forum_context_create_forum($empty, $data = NULL, $conf = FALSE) {
  $context = new ctools_context(array(
    'forum',
    'term',
  ));
  $context->plugin = 'forum';
  if ($empty) {
    return $context;
  }
  if ($conf) {
    if ($data['tid']) {
      $data = taxonomy_get_term($data['tid']);
    }
    else {
      $data = taxonomy_vocabulary_load(variable_get('forum_nav_vocabulary', ''));
      $data->tid = 0;
    }
  }
  if (!empty($data)) {
    $data->container = !$data->tid || in_array($data->tid, variable_get('forum_containers', array()));
    $context->data = drupal_clone($data);
    $context->title = $data->name;
    $context->argument = $data->tid;
    $context->vid = variable_get('forum_nav_vocabulary', '');
    $context->vocabulary = taxonomy_vocabulary_load($context->vid);
    if ($data->tid) {
      $context->parents = taxonomy_get_parents_all($data->tid);
    }
    return $context;
  }
}
function advanced_forum_forum_context_settings_form($conf) {
  if (empty($conf)) {
    $conf = array(
      'tid' => 0,
    );
  }
  $form = array();
  $options = array();
  $vocabulary = taxonomy_vocabulary_load(variable_get('forum_nav_vocabulary', ''));
  $options[0] = $vocabulary->name;
  $tree = taxonomy_get_tree($vocabulary->vid);
  if ($tree) {
    foreach ($tree as $term) {
      $choice = new stdClass();
      $choice->option = array(
        $term->tid => str_repeat('-', $term->depth + 1) . $term->name,
      );
      $options[] = $choice;
    }
  }
  $form['tid'] = array(
    '#type' => 'select',
    '#title' => t('Forum'),
    '#default_value' => $conf['tid'],
    '#options' => $options,
  );
  return $form;
}

/**
 * Convert a context into a string.
 */
function advanced_forum_forum_context_convert($context, $type) {
  switch ($type) {
    case 'tid':
      return $context->data->tid;
    case 'name':
      return $context->data->name;
  }
}

Functions

Namesort descending Description
advanced_forum_forum_context_convert Convert a context into a string.
advanced_forum_forum_context_create_forum It's important to remember that $conf is optional here, because contexts are not always created from the UI.
advanced_forum_forum_context_settings_form
advanced_forum_forum_ctools_contexts Implementation of specially named hook_advanced_forum_forum_contexts().