You are here

function _autofloat in AutoFloat 6

Same name and namespace in other branches
  1. 6.2 autofloat.module \_autofloat()

Find a rejected 'div', a selected 'span', a link with image or an image.

1 call to _autofloat()
autofloat_filter in ./autofloat.module
Implements hook_filter_info().

File

./autofloat.module, line 85
Autofloat module: A filter that floats images left and right automatically.

Code

function _autofloat($text, $format) {
  $selector = variable_get('autofloat_span', 'caption');

  // Divide the variable into two selectors if a comma is found.
  $selector = explode(',', $selector);

  // Make sure both array keys exist, if not the regex breaks.
  if (isset($selector[0]) == FALSE) {
    $selector[0] = '';
  }
  if (isset($selector[1]) == FALSE) {
    $selector[1] = '';
  }
  $rejector = variable_get('autofloat_div', 'flickr-photoset');

  // Divide the variable into two rejectors if a comma is found.
  $rejector = explode(',', $rejector);

  // Make sure both array keys exist, if not the regex breaks.
  if (isset($rejector[0]) == FALSE) {
    $rejector[0] = '';
  }
  if (isset($rejector[1]) == FALSE) {
    $rejector[1] = '';
  }

  // Regex in four parts (divided by '|') matching a rejected 'div', a
  // selected 'span', a link with image or an image. A pattern inside an
  // already found pattern gets ignored, to avoid floats inside floats.
  $text = preg_replace_callback('@<(
  div ([^>]*)(class\\s*=\\s*["\'](nofloat|' . trim($rejector[0]) . '|' . trim($rejector[1]) . ')["\'])([^>]*)>(.*?)</div| # find a rejected div
  span([^>]*)(class\\s*=\\s*["\'](float|' . trim($selector[0]) . '|' . trim($selector[1]) . ')["\'])([^>]*)>(.*?)</span| # find a selected span
  (a[^>]*)(href=)([^>]*)(><img[^>]*>(.*?)(</img>)?</a)| # find a link with image
  img (.+?) # find an image
  )>@isx', 'autofloat_filter_callback', $text);
  return $text;
}