dic = $dic; } public function check( $slug, $params = array() ) { $return = TRUE; list( $handler, $args ) = $this->getHandlerArgs( $slug ); list( $handler, $method ) = is_array($handler) ? $handler : array( $handler, 'check' ); if( $handler ){ $handler = $this->dic ->make( $handler ) ; if( $params ){ $args[] = $params; } $checkResult = call_user_func_array( array($handler, $method), $args ); if( $checkResult === FALSE ){ if( defined('HC3_DEV_INSTALL') ){ // echo "ACL NOT ALLOWING: " . $handler->_getClass() . '->' . $method . '()' . '
'; } $return = FALSE; } } return $return; } public function register( $slug, $handler ) { $this->handlers[$slug] = $handler; return $this; } public function getHandlerArgs( $slug ) { // echo "GETTING FOR '$slug'

"; // print_r( array_keys($this->handlers) ); list( $handler, $args ) = $this->_findHandlerArgs( $slug, $this->handlers ); $return = array( $handler, $args ); return $return; } protected function _findHandlerArgs( $slug, $array ) { $handler = NULL; $args = array(); // exact match if( isset($array[$slug]) ){ $handler = $array[$slug]; } // wildcards else { // if we have wildcards $config_keys = array_keys($array); if( strpos($slug, ':') !== FALSE ){ $slug = str_replace(':', '/', $slug); } $sluga = explode('/', $slug); $count_sluga = count($sluga); // echo "SLUG: '$slug'
"; // _print_r( $sluga ); $parametered_keys = array(); foreach( $config_keys as $k ){ if( strpos($k, '{') === FALSE ){ continue; } $parametered_keys[] = $k; } reset( $parametered_keys ); foreach( $parametered_keys as $k ){ $kk = $k; if( strpos($kk, ':') !== FALSE ){ $kk = str_replace(':', '/', $kk); } $ka = explode('/', $kk); // check if this one matches if( count($ka) != $count_sluga ){ continue; } $match = TRUE; $parametered_args = array(); for( $ii = 0; $ii < $count_sluga; $ii++ ){ if( strpos($ka[$ii], '{') !== FALSE ){ $parametered_args[] = $sluga[$ii]; } else { if( $ka[$ii] != $sluga[$ii] ){ $match = FALSE; } } } if( $match ){ $handler = $array[$k]; foreach( $parametered_args as $parametered_arg ){ $args[] = $parametered_arg; } break; } } } $return = array( $handler, $args ); return $return; } }