[1;32mIndex: lib/weblib.php[0;0m
[1;32m===================================================================[0;0m
[1;32mRCS file: /cvsroot/moodle/moodle/lib/weblib.php,v[0;0m
[1;32mretrieving revision 1.1184[0;0m
[1;32mdiff -u -u -r1.1184 weblib.php[0;0m
[1;31m--- lib/weblib.php	9 Dec 2008 20:30:02 -0000	1.1184[0;0m
[1;34m+++ lib/weblib.php	11 Dec 2008 07:31:46 -0000[0;0m
[1;35m@@ -1,6 +1,5 @@[0;0m
[0;0m <?php // $Id: weblib.php,v 1.1184 2008/12/09 20:30:02 skodak Exp $[0;0m
[0;0m [0;0m
[1;31m-[0;0m
[0;0m ///////////////////////////////////////////////////////////////////////////[0;0m
[0;0m //                                                                       //[0;0m
[0;0m // NOTICE OF COPYRIGHT                                                   //[0;0m
[1;35m@@ -1347,6 +1346,8 @@[0;0m
[0;0m     global $CFG, $COURSE, $DB;[0;0m
[0;0m [0;0m
[0;0m     static $croncache = array();[0;0m
[1;34m+    [0;0m
[1;34m+    $hashstr = '';[0;0m
[0;0m [0;0m
[0;0m     if ($text === '') {[0;0m
[0;0m         return ''; // no need to do any filters and cleaning[0;0m
[1;35m@@ -1374,15 +1375,30 @@[0;0m
[0;0m     if (!isset($options->newlines)) {[0;0m
[0;0m         $options->newlines=true;[0;0m
[0;0m     }[0;0m
[1;31m-[0;0m
[0;0m     if (empty($courseid)) {[0;0m
[1;31m-        $courseid = $COURSE->id;[0;0m
[1;34m+        $couseid = $COURSE->id;[0;0m
[0;0m     }[0;0m
[0;0m [0;0m
[1;34m+    if (!empty($CFG->textfilters)) {[0;0m
[1;34m+        require_once($CFG->libdir.'/filterlib.php');[0;0m
[1;34m+        $textfilters = explode(',', $CFG->textfilters);[0;0m
[1;34m+        foreach ($textfilters as $textfilter) {[0;0m
[1;34m+            if (is_readable($CFG->dirroot .'/'. $textfilter .'/filter.php')) {[0;0m
[1;34m+                include_once($CFG->dirroot .'/'. $textfilter .'/filter.php');[0;0m
[1;34m+                $classname = basename($textfilter).'_filter';[0;0m
[1;34m+                $obj = new $classname($courseid, $format, $options);[0;0m
[1;34m+                filter_base::addfilter($classname, $obj);[0;0m
[1;34m+                $hashstr .= $obj->hash();[0;0m
[1;34m+            }[0;0m
[1;34m+        }[0;0m
[1;34m+    }[0;0m
[0;0m     if (!empty($CFG->cachetext) and empty($options->nocache)) {[0;0m
[1;31m-        $time = time() - $CFG->cachetext;[0;0m
[1;31m-        $md5key = md5($text.'-'.(int)$courseid.'-'.current_language().'-'.(int)$format.(int)$options->trusttext.(int)$options->noclean.(int)$options->smiley.(int)$options->filter.(int)$options->para.(int)$options->newlines);[0;0m
[1;34m+        $hashstr .= $text.'-'.(int)$courseid.'-'.current_language().'-'.(int)$format.(int)$options->trusttext.(int)$options->noclean.(int)$options->smiley.(int)$options->filter.(int)$options->para.(int)$options->newlines;[0;0m
[1;34m+        // for debug filtering system[0;0m
[1;34m+        // $hashstr .= time();[0;0m
[0;0m [0;0m
[1;34m+        $time = time() - $CFG->cachetext;[0;0m
[1;34m+        $md5key = md5($hashstr); [0;0m
[0;0m         if (defined('FULLME') and FULLME == 'cron') {[0;0m
[0;0m             if (isset($croncache[$md5key])) {[0;0m
[0;0m                 return $croncache[$md5key];[0;0m
[1;35m@@ -1433,7 +1449,7 @@[0;0m
[0;0m                 $text = clean_text($text, FORMAT_HTML);[0;0m
[0;0m             }[0;0m
[0;0m             if ($options->filter) {[0;0m
[1;31m-                $text = filter_text($text, $courseid);[0;0m
[1;34m+                $text = filter_base::filter($text);[0;0m
[0;0m             }[0;0m
[0;0m             break;[0;0m
[0;0m [0;0m
[1;35m@@ -1462,7 +1478,7 @@[0;0m
[0;0m             }[0;0m
[0;0m [0;0m
[0;0m             if ($options->filter) {[0;0m
[1;31m-                $text = filter_text($text, $courseid);[0;0m
[1;34m+                $text = filter_base::filter($text);[0;0m
[0;0m             }[0;0m
[0;0m             break;[0;0m
[0;0m [0;0m
[1;35m@@ -1473,7 +1489,7 @@[0;0m
[0;0m             }[0;0m
[0;0m [0;0m
[0;0m             if ($options->filter) {[0;0m
[1;31m-                $text = filter_text($text, $courseid);[0;0m
[1;34m+                $text = filter_base::filter($text);[0;0m
[0;0m             }[0;0m
[0;0m             break;[0;0m
[0;0m     }[0;0m
[1;32mIndex: lib/filterlib.php[0;0m
[1;32m===================================================================[0;0m
[1;32mRCS file: /cvsroot/moodle/moodle/lib/filterlib.php,v[0;0m
[1;32mretrieving revision 1.26[0;0m
[1;32mdiff -u -u -r1.26 filterlib.php[0;0m
[1;31m--- lib/filterlib.php	26 Jul 2008 22:13:39 -0000	1.26[0;0m
[1;34m+++ lib/filterlib.php	11 Dec 2008 07:31:46 -0000[0;0m
[1;35m@@ -1,6 +1,35 @@[0;0m
[1;31m-<?php // $Id: filterlib.php,v 1.26 2008/07/26 22:13:39 stronk7 Exp $[0;0m
[1;34m+<?php // $Id:$[0;0m
[0;0m       // Contains special functions that are particularly useful to filters[0;0m
[0;0m [0;0m
[1;34m+abstract class filter_base {[0;0m
[1;34m+    public static $filters = array();[0;0m
[1;34m+    protected $courseid;[0;0m
[1;34m+    protected $format;[0;0m
[1;34m+    protected $options;[0;0m
[1;34m+    public function __construct($courseid, $format, $options) {[0;0m
[1;34m+        $this->courseid = $courseid;[0;0m
[1;34m+        $this->format   = $format;[0;0m
[1;34m+        $this->options  = $options;[0;0m
[1;34m+    }[0;0m
[1;34m+    public static function addfilter($classname, $obj) {[0;0m
[1;34m+        if (empty(self::$filters[$classname])) {[0;0m
[1;34m+            self::$filters[$classname] = $obj;[0;0m
[1;34m+            return true;[0;0m
[1;34m+        } else {[0;0m
[1;34m+            return false;[0;0m
[1;34m+        }[0;0m
[1;34m+    }[0;0m
[1;34m+    public static function filter($text) {[0;0m
[1;34m+        foreach (self::$filters as $n=>$obj) {[0;0m
[1;34m+            $text = $obj->dofilter($text); [0;0m
[1;34m+        }[0;0m
[1;34m+        return $text;[0;0m
[1;34m+    }[0;0m
[1;34m+    public function hash() {[0;0m
[1;34m+        return __CLASS__;[0;0m
[1;34m+    }[0;0m
[1;34m+    abstract function dofilter($text);[0;0m
[1;34m+}[0;0m
[0;0m [0;0m
[0;0m /**[0;0m
[0;0m  * This is just a little object to define a phrase and some instructions [0;0m
