You are here

function check_markup in Drupal 4

Same name and namespace in other branches
  1. 8 core/modules/filter/filter.module \check_markup()
  2. 5 modules/filter/filter.module \check_markup()
  3. 6 modules/filter/filter.module \check_markup()
  4. 7 modules/filter/filter.module \check_markup()
  5. 9 core/modules/filter/filter.module \check_markup()

Run all the enabled filters on a piece of text.

Parameters

$text: The text to be filtered.

$format: The format of the text to be filtered. Specify FILTER_FORMAT_DEFAULT for the default format.

$check: Whether to check the $format with filter_access() first. Defaults to TRUE. Note that this will check the permissions of the current user, so you should specify $check = FALSE when viewing other people's content. When showing content that is not (yet) stored in the database (eg. upon preview), set to TRUE so the user's permissions are checked.

6 calls to check_markup()
block_block in modules/block.module
Implementation of hook_block().
comment_nodeapi in modules/comment.module
Implementation of hook_nodeapi().
node_prepare in modules/node.module
Apply filters to a node in preparation for theming.
profile_view_field in modules/profile.module
theme_comment_view in modules/comment.module

... See full list

File

modules/filter.module, line 739
Framework for handling filtering of content.

Code

function check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE) {

  // When $check = true, do an access check on $format.
  if (isset($text) && (!$check || filter_access($format))) {
    $format = filter_resolve_format($format);

    // Check for a cached version of this piece of text.
    $id = 'filter:' . $format . ':' . md5($text);
    if ($cached = cache_get($id)) {
      return $cached->data;
    }

    // See if caching is allowed for this format.
    $cache = filter_format_allowcache($format);

    // Convert all Windows and Mac newlines to a single newline,
    // so filters only need to deal with one possibility.
    $text = str_replace(array(
      "\r\n",
      "\r",
    ), "\n", $text);

    // Get a complete list of filters, ordered properly.
    $filters = filter_list_format($format);

    // Give filters the chance to escape HTML-like data such as code or formulas.
    foreach ($filters as $filter) {
      $text = module_invoke($filter->module, 'filter', 'prepare', $filter->delta, $format, $text);
    }

    // Perform filtering.
    foreach ($filters as $filter) {
      $text = module_invoke($filter->module, 'filter', 'process', $filter->delta, $format, $text);
    }

    // Store in cache with a minimum expiration time of 1 day.
    if ($cache) {
      cache_set($id, $text, time() + 60 * 60 * 24);
    }
  }
  else {
    $text = message_na();
  }
  return $text;
}