You are here

block_exclude_pages.module in Block Exclude Pages 7

Same filename and directory in other branches
  1. 8 block_exclude_pages.module
  2. 2.x block_exclude_pages.module

File

block_exclude_pages.module
View source
<?php

/**
 * Doc function returns the help markup.
 */
function block_exclude_pages_blockhelptext() {
  $description = "<ul>";
  $description .= "<li>" . t("Specify pages by using their paths. Enter one path per line. Using") . "<em class='placeholder'>node/[nid]</em> " . t("is recommended as pages aliases can change on page editing.") . "</li>";
  $description .= "<li>" . t("The '*' character is a wildcard. Example paths are user for the current user's page and user/* for every user page.") . "</li>";
  $description .= "<li>" . t("To exclude Specific pages, prefix the path with a '!', Example excluded path") . "<em class='placeholder'>!user/jc</em></li>";
  $description .= "</ul>";
  $description = $description;
  return $description;
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function block_exclude_pages_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  $description = block_exclude_pages_blockhelptext();
  $form['visibility']['path']['pages']['#description'] = t($description);
}

/**
 * Implements hook_block_view_alter().
 */
function block_exclude_pages_block_view_alter(&$data, $block) {
  if ($block->visibility == 1) {
    $path = $_GET['q'];
    $path_alias = drupal_strtolower(drupal_get_path_alias($path));
    $pages = preg_split('/\\n|\\r\\n?/', $block->pages);
    $exclude_string = '';

    // Filter out all pages not starting with exclamation mark.
    foreach ($pages as $page) {
      if (substr($page, 0, 1) == "!") {
        $exclude_string .= drupal_strtolower(substr($page, 1)) . "\r\n";
      }
    }
    if (!empty($exclude_string)) {
      $page_match = drupal_match_path($path_alias, $exclude_string);
      if ($path_alias != $path) {
        $page_match = $page_match || drupal_match_path($path, $exclude_string);
      }
      if ($page_match) {
        $data['subject_array'] = NULL;
        $data['subject'] = NULL;
        $data['content'] = NULL;
      }
    }
  }
}