Same name and namespace in other branches
  1. 4.7.x modules/filter.module \check_markup()
  2. 6.x modules/filter/filter.module \check_markup()
  3. 7.x modules/filter/filter.module \check_markup()
  4. 8.9.x core/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.

3 calls to check_markup()
node_prepare in modules/node/node.module
Apply filters and build the node's standard elements.
theme_comment_view in modules/comment/comment.module
_comment_form_submit in modules/comment/comment.module

File

modules/filter/filter.module, line 762
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 = $format . ':' . md5($text);
    if ($cached = cache_get($id, 'cache_filter')) {
      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, 'cache_filter', $text, time() + 60 * 60 * 24);
    }
  }
  else {
    $text = t('n/a');
  }
  return $text;
}