You are here

function xbbcode_highlighter_xbbcode in Extensible BBCode 6

Same name and namespace in other branches
  1. 5 xbbcode_highlighter/xbbcode_highlighter.module \xbbcode_highlighter_xbbcode()

File

xbbcode_highlighter/xbbcode_highlighter.module, line 3

Code

function xbbcode_highlighter_xbbcode($op = 'list', $delta = '', $tag = NULL) {
  static $languages;
  if (!isset($languages)) {
    $languages = array();
    $res = db_query("SELECT id, name, description, sample, file FROM {highlighter}");
    while ($row = db_fetch_array($res)) {
      if (!$row['name']) {
        $row['name'] = strtoupper($row['id']);
      }
      $languages[strtolower($row['id'])] = $row;
    }
  }
  switch ($op) {
    case 'list':
      return array_keys($languages);
    case 'info':
      return isset($languages[$delta]) ? xbbcode_highlighter_info($languages[$delta]) : NULL;
    case 'render':
      $tag->content = html_entity_decode($tag->content);
      $settings = array(
        'language' => $delta,
        'tabsize' => 2,
        'numbers' => $tag->option == 'ln',
        'file' => $languages[$delta]['file'],
      );
      if (!HIGHLIGHTER_OKAY) {
        return $text;
      }
      require_once drupal_get_path('module', 'highlighter') . '/highlighter.filter.inc';
      return highlighter_highlight($settings, $tag->content);
  }
}