You are here

block_subtitle.module in Block Subtitle 7

Same filename and directory in other branches
  1. 8 block_subtitle.module
  2. 6 block_subtitle.module

This module allows subtitles to be added to blocks

File

block_subtitle.module
View source
<?php

/**
 * @file
 * This module allows subtitles to be added to blocks
 */

/**
 * Implements hook_form_alter().
 */
function block_subtitle_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'block_add_block_form' || $form_id == 'block_admin_configure') {
    $block = new StdClass();
    $block->module = $form['module']['#value'];
    $block->delta = $form['delta']['#value'];

    // Get the subtitle.
    $subtitle = _block_subtitle_get_subtitle($block);
    $form['settings']['block_subtitle'] = array(
      '#type' => 'textfield',
      '#title' => t('Subtitle'),
      '#default_value' => $subtitle,
      '#description' => t('Subtitle for the block. Leave blank if you do not need a subtitle.'),
      '#weight' => -17,
    );
    $form['#submit'][] = 'block_subtitle_submit';
  }
}

/**
 * Custom submit handler for block_subtitle.
 */
function block_subtitle_submit($form, &$form_state) {
  $module = $form_state['values']['module'];
  $delta = $form_state['values']['delta'] ? $form_state['values']['delta'] : block_subtitle_get_delta($module);
  $subtitle = $form_state['values']['block_subtitle'];

  // Save the suubtitle.
  if ($module && ($delta || $delta == 0)) {
    $block_name = $module . '_' . $delta;

    // Delete subtitle if blank.
    if (strlen($subtitle) == 0 || $subtitle == '') {
      _block_subtitle_delete($block_name);
    }
    else {
      _block_subtitle_save($block_name, $subtitle);
    }
  }
}

/**
 * Function to get the subtitle of a block.
 *
 * @param object $block.
 *  The block name.
 *
 * @return string
 *  the block subtitle
 */
function _block_subtitle_get_subtitle($block) {
  if (!isset($block->module) && !isset($block->delta)) {
    return FALSE;
  }
  $varname = 'block_subtitle_' . $block->module . '_' . $block->delta;
  return variable_get($varname, NULL);
}

/**
 * Function to save a subtitle.
 */
function _block_subtitle_save($block_name, $value) {
  variable_set('block_subtitle_' . $block_name, $value);
}

/**
 * Function to delete a subtitle.
 */
function _block_subtitle_delete($block_name) {
  variable_set('block_subtitle_' . $block_name, '');
}

/**
 * Implements hook_preprocess_block().
 */
function block_subtitle_preprocess_block(&$vars) {
  $vars['block']->subtitle = _block_subtitle_get_subtitle($vars['block']);
}

/**
 * Gets the delta for custom blocks.
 */
function block_subtitle_get_delta($module) {

  // The blocks table changed to block in block_update_7002()
  $table = db_table_exists('blocks') ? 'blocks' : 'block';

  //get last delta
  $delta = db_select($table, 'b')
    ->fields('b', array(
    'delta',
  ))
    ->condition('module', $module)
    ->orderBy('bid', 'DESC')
    ->range(0, 1)
    ->execute()
    ->fetchField();
  return $delta;
}

Functions

Namesort descending Description
block_subtitle_form_alter Implements hook_form_alter().
block_subtitle_get_delta Gets the delta for custom blocks.
block_subtitle_preprocess_block Implements hook_preprocess_block().
block_subtitle_submit Custom submit handler for block_subtitle.
_block_subtitle_delete Function to delete a subtitle.
_block_subtitle_get_subtitle Function to get the subtitle of a block.
_block_subtitle_save Function to save a subtitle.