You are here

opigno_forum_app.module in Opigno Forum App 7

Module file. Defines module hooks.

File

opigno_forum_app.module
View source
<?php

/**
 * @file
 * Module file. Defines module hooks.
 */
function opigno_forum_app_views_api() {
  return array(
    'api' => '3.0',
  );
}

/**
 * Implements hook_opigno_breadcrumbs().
 */
function opigno_forum_app_opigno_breadcrumbs($gid) {
  $breadcrumbs = array();
  $node = menu_get_object();

  // Must we handle this page request for the breadcrumb ?
  if (isset($node->type) && $node->type == 'forum' || preg_match('/^comment\\/reply\\/[0-9]+/', current_path())) {

    // Add the Forums link.
    $forum_id = opigno_forum_app_get_course_forum_id($gid);
    $breadcrumbs[] = l(t("Forum"), "forum/{$forum_id}");

    // If we're replying, add the topic link as well.
    if (preg_match('/^comment\\/reply\\/[0-9]+/', current_path())) {
      $parts = explode('/', current_path());

      // Replying to a comment ? Remove comment ID.
      if (preg_match('/^comment\\/reply\\/[0-9]+\\/[0-9]+/', current_path())) {
        array_pop($parts);
      }
      $topic_id = array_pop($parts);
      $topic = node_load($topic_id);
      $breadcrumbs[] = l($topic->title, "node/{$topic_id}");
    }
  }
  if (!empty($breadcrumbs)) {
    return $breadcrumbs;
  }
}
function opigno_forum_app_opigno_tool($node = NULL) {
  $give = isset($node->nid) ? opigno_forum_app_get_course_forum_id($node->nid) : NULL;
  return array(
    'forum' => array(
      'name' => t("Forum"),
      'path' => isset($give) ? "forum/" . $give : '',
      'description' => t("Forums allow teachers and students to communicate."),
    ),
  );
}

/**
 * Helper function to the forum ID for the passed course ID.
 *
 * @param int $gid
 *
 * @return int|null
 */
function opigno_forum_app_get_course_forum_id($gid) {
  $subquery1 = db_select('taxonomy_term_data', 'tt');
  $subquery1
    ->addField('tt', 'tid', 'tid');
  $subquery1
    ->addField('tt', 'vid', 'vid');
  $subquery2 = db_select('taxonomy_vocabulary', 'tv');
  $subquery2
    ->addField('tv', 'vid', 'vid');
  $subquery2
    ->addField('tv', 'machine_name', 'machine_name');
  $subquery2
    ->condition('tv.machine_name', 'forums', '=');
  $query = db_select('og_membership', 'og_m');
  $query
    ->fields('og_m', array(
    'etid',
    'entity_type',
    'gid',
  ));
  $query
    ->join($subquery1, 'tt', 'og_m.etid=tt.tid');
  $query
    ->join($subquery2, 'tv', 'tt.vid=tv.vid');
  $query
    ->condition('og_m.entity_type', 'taxonomy_term', '=');
  $query
    ->condition('og_m.gid', $gid, '=');
  $query
    ->orderBy('og_m.etid', 'ASC');
  $result1 = $query
    ->execute();
  foreach ($result1 as $record) {
    return $record->etid;
  }
  return NULL;
}

/*
 * Implements hook_node_delete()
 */
function opigno_forum_app_node_delete($node) {
  if (og_is_group("node", $node)) {
    $forum_tid = opigno_forum_app_get_course_forum_id($node->nid);
    if (isset($forum_tid)) {
      cache_clear_all('field:taxonomy_term:' . $forum_tid, 'cache_field', TRUE);
    }
  }
}

Functions

Namesort descending Description
opigno_forum_app_get_course_forum_id Helper function to the forum ID for the passed course ID.
opigno_forum_app_node_delete
opigno_forum_app_opigno_breadcrumbs Implements hook_opigno_breadcrumbs().
opigno_forum_app_opigno_tool
opigno_forum_app_views_api @file Module file. Defines module hooks.