[pLog-CVS] plog/class/security pipeline.class.php,1.5,1.6 pipelinefilter.class.php,1.2,1.3 pipeliner
Brought to you by:
jondaley
From: Oscar R. <phu...@us...> - 2004-04-17 21:34:36
|
Update of /cvsroot/plog/plog/class/security In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20761/class/security Modified Files: pipeline.class.php pipelinefilter.class.php pipelineresult.class.php Log Message: merged the PLOG_1_0_DEVEL_TEST experimental branch that was created some time ago to start working on the new version with HEAD. Index: pipeline.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/security/pipeline.class.php,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** pipeline.class.php 20 Jan 2004 18:44:07 -0000 1.5 --- pipeline.class.php 17 Apr 2004 21:33:53 -0000 1.6 *************** *** 3,9 **** include_once( PLOG_CLASS_PATH."class/object/object.class.php" ); include_once( PLOG_CLASS_PATH."class/dao/bloginfo.class.php" ); - include_once( PLOG_CLASS_PATH."class/config/config.class.php" ); - include_once( PLOG_CLASS_PATH."class/security/nullpipelinefilter.class.php" ); include_once( PLOG_CLASS_PATH."class/security/hostsblacklist.class.php" ); --- 3,7 ---- *************** *** 11,14 **** --- 9,19 ---- include_once( PLOG_CLASS_PATH."class/security/commentfilter.class.php" ); include_once( PLOG_CLASS_PATH."class/security/bayesianfilter.class.php" ); + + /** + * global array used to hold the list of filters that we're going to use in the pipeline. + * Now again, more than ever, wish that PHP4 had support for static attributes at the class + * level... + */ + $_pLogPipelineRegisteredFilters; /** *************** *** 19,23 **** * request will be blocked */ ! class Pipeline extends Object { /** --- 24,29 ---- * request will be blocked */ ! class Pipeline extends Object ! { /** *************** *** 32,52 **** */ var $_blogInfo; ! ! /** ! * Array with the name of the classes that implement filters ! */ ! var $_pipelineFilters = Array ( ! "NullPipelineFilter", ! "HostsBlacklist", ! "ContentFilter", ! "CommentFilter", ! "BayesianFilter", ! ); ! /** ! * Array of objects that implement the PipelineFilter interface */ - var $_filters = Array(); - var $_result; --- 38,45 ---- */ var $_blogInfo; ! /** ! * variable to hold the final result of executing the pipeline */ var $_result; *************** *** 64,72 **** $this->_httpRequest = $httpRequest; $this->_blogInfo = $blogInfo; ! $this->_addFilters(); $this->_result; } /** --- 57,105 ---- $this->_httpRequest = $httpRequest; $this->_blogInfo = $blogInfo; + + //global $_pLogPipelineRegisteredFilters; + //$_pLogPipelineRegisteredFilters = Array(); ! $this->_registerDefaultFilters(); $this->_result; } + + /** + * Method that takes care of registering the default filters used in the pipeline. + * + * More can be added anytime by using the registerFilter() method. + * @static + * @return Always true + */ + function _registerDefaultFilters() + { + $this->registerFilter( "NullPipelineFilter" ); + $this->registerFilter( "HostsBlacklist" ); + $this->registerFilter( "ContentFilter" ); + $this->registerFilter( "CommentFilter" ); + $this->registerFilter( "BayesianFilter" ); + + return true; + } + + /** + * Static method that registers a filter externally + * + * @param filterClass A class that implements the PipelineFilter interface + * @static + * @return Always returns true. + */ + function registerFilter( $filterClass ) + { + global $_pLogPipelineRegisteredFilters; + + _debug( "Registering filter - $filterClass" ); + + if( !is_array($_pLogPipelineRegisteredFilters)) // make sure that we have an array... + $_pLogPipelineRegisteredFilters = Array(); + + $_pLogPipelineRegisteredFilters["$filterClass"] = $filterClass; + } /** *************** *** 74,87 **** * @private */ ! function _addFilters() { $pipelineRequest = new PipelineRequest( $this->_httpRequest, $this->_blogInfo ); ! foreach( $this->_pipelineFilters as $filterClass ) { array_push( $this->_filters, new $filterClass( $pipelineRequest )); } return true; ! } /** --- 107,122 ---- * @private */ ! /*function _addFilters() { + global $_pLogPipelineRegisteredFilters; + $pipelineRequest = new PipelineRequest( $this->_httpRequest, $this->_blogInfo ); ! foreach( $_pLogPipelineRegisteredFilters as $filterClass ) { array_push( $this->_filters, new $filterClass( $pipelineRequest )); } return true; ! }*/ /** *************** *** 91,94 **** --- 126,131 ---- function process() { + global $_pLogPipelineRegisteredFilters; + // check if the pipeline is enabled $config =& Config::getConfig(); *************** *** 99,103 **** // if enabled, then check all the filters ! foreach( $this->_filters as $filter ) { $result = $filter->filter(); // if there was an error, we better say so now --- 136,145 ---- // if enabled, then check all the filters ! foreach( $_pLogPipelineRegisteredFilters as $filterClass ) { ! // create an instance of the filter ! $pipelineRequest = new PipelineRequest( $this->_httpRequest, $this->_blogInfo ); ! _debug( "EXECUTING FILTER $filterClass" ); ! $filter = new $filterClass( $pipelineRequest ); ! // and execute it... $result = $filter->filter(); // if there was an error, we better say so now *************** *** 114,116 **** } } ! ?> --- 156,158 ---- } } ! ?> \ No newline at end of file Index: pipelineresult.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/security/pipelineresult.class.php,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** pipelineresult.class.php 20 Jan 2004 18:44:07 -0000 1.2 --- pipelineresult.class.php 17 Apr 2004 21:33:54 -0000 1.3 *************** *** 8,12 **** * was */ ! class PipelineResult extends Object { function PipelineResult( $valid = true, $errorCode = 0, $errorMessage = "" ) --- 8,13 ---- * was */ ! class PipelineResult extends Object ! { function PipelineResult( $valid = true, $errorCode = 0, $errorMessage = "" ) *************** *** 26,29 **** --- 27,40 ---- return $this->_valid; } + + /** + * Sets whether this is a valid result, or if processing will be stopped here + */ + function setValid( $valid ) + { + $this->_valid = $valid; + + return true; + } /** *************** *** 37,40 **** --- 48,61 ---- return $this->_errorCode; } + + /** + * Sets the extended error code. + */ + function setErrorCode( $errorCode ) + { + $this->_errorCode = $errorCode; + + return true; + } /** *************** *** 47,50 **** return $this->_errorMessage; } } ! ?> --- 68,81 ---- return $this->_errorMessage; } + + /** + * Sets the error message. + */ + function setErrorMessage( $errorMessage ) + { + $this->_errorMessage = $errorMessage; + + return true; + } } ! ?> \ No newline at end of file Index: pipelinefilter.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/security/pipelinefilter.class.php,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** pipelinefilter.class.php 20 Jan 2004 18:44:07 -0000 1.2 --- pipelinefilter.class.php 17 Apr 2004 21:33:54 -0000 1.3 *************** *** 21,24 **** --- 21,29 ---- $this->_pipelineRequest = $pipelineRequest; } + + function getPipelineRequest() + { + return $this->_pipelineRequest; + } function filter() |