Subversion Repositories My Stuff

Rev

Blame | Last modification | View Log | RSS feed

<?php


  /***
   * GeSHi highlighting
   * -------------------------------------------------------------
   * File:     block.geshi.php
   * Type:     block
   * Name:     geshi
   * Purpose:  highlight a block of text using GeSHi
   * Author:   Robert Campbell
   * -------------------------------------------------------------
   */

  function smarty_cms_block_geshi($params, $content, &$smarty)
  {
    // look for geshi in lib/geshi
    global $gCms;
    $config =& $gCms->GetConfig();
    $dn = $config['root_path'].'/lib/geshi';
    if( isset($config['geshi_path']) )
      {
         // allow an optional config var to override that
         $dn = $config['geshi_path'];
      }
    include_once($dn.'/geshi.php');

    // defaults
    $lang = 'html';
    $line_numbers = GESHI_NO_LINE_NUMBERS;
    $use_class = false;
    $class = 'geshi';
    $strict = 'false';

    // handle params
    if( isset($params['lang']) )
      {
        $lang = trim($params['lang']);
      }
    if( isset($params['linenumbers']) )
      {
        $line_numbers = GESHI_NORMAL_LINE_NUMBERS;
      }
    if( isset($params['class']) )
      {
        $class = trim($params['class']);
        $use_class = true;
      }
    if( isset($params['strict']) )
      {
        $strict = true;
      }

    if (isset($content)) {
      $geshi = new GeSHI($content, $lang);
      $geshi->enable_classes($use_class);
      $geshi->set_overall_class($class);
      $geshi->enable_line_numbers($line_numbers);
      $geshi->enable_strict_mode($strict);
      return $geshi->parse_code();
    }
  }
  ?>