public function setUp() { parent::setUp(); Piece_Right_Filter_Factory::clearInstances(); Piece_Right_Validator_Factory::clearInstances(); $this->exclusiveDirectory = dirname(__FILE__) . '/' . basename(__FILE__, '.php'); }
/** * Filters field values. * * @since Method available since Release 0.3.0 */ function _filter() { foreach ($this->_config->getFieldNames() as $fieldName) { $value = call_user_func($this->_fieldValuesCallback, $fieldName); $filters = $this->_config->getFilters($fieldName); foreach ($filters as $filterName) { if (!function_exists($filterName)) { $filter =& Piece_Right_Filter_Factory::factory($filterName); if (Piece_Right_Error::hasErrors()) { return; } $this->_currentFilter = array(&$filter, 'filter'); if (method_exists($filter, 'isArrayable')) { $this->_currentFilterIsArrayable = $filter->isArrayable(); } else { $this->_currentFilterIsArrayable = false; } $value = $this->_invokeFilter($value); } else { $this->_currentFilter = $filterName; $this->_currentFilterIsArrayable = false; $value = $this->_invokeFilter($value); } } $this->_results->setFieldValue($fieldName, $value); } }
/** * Creates a filter object from the filter directories. * * @param string $filterName * @return mixed * @throws PIECE_RIGHT_ERROR_NOT_FOUND * @throws PIECE_RIGHT_ERROR_CANNOT_READ */ function &factory($filterName) { if (!array_key_exists($filterName, $GLOBALS['PIECE_RIGHT_Filter_Instances'])) { $found = false; foreach ($GLOBALS['PIECE_RIGHT_Filter_Prefixes'] as $prefixAlias) { $filterClass = Piece_Right_Filter_Factory::_getFilterClass($filterName, $prefixAlias); if (Piece_Right_ClassLoader::loaded($filterClass)) { $found = true; break; } } if (!$found) { foreach ($GLOBALS['PIECE_RIGHT_Filter_Directories'] as $filterDirectory) { foreach ($GLOBALS['PIECE_RIGHT_Filter_Prefixes'] as $prefixAlias) { $filterClass = Piece_Right_Filter_Factory::_getFilterClass($filterName, $prefixAlias); Piece_Right_Error::disableCallback(); Piece_Right_ClassLoader::load($filterClass, $filterDirectory); Piece_Right_Error::enableCallback(); if (Piece_Right_Error::hasErrors()) { $error = Piece_Right_Error::pop(); if ($error['code'] == PIECE_RIGHT_ERROR_NOT_FOUND) { continue; } Piece_Right_Error::push(PIECE_RIGHT_ERROR_CANNOT_READ, "Failed to read the filter [ {$filterName} ] for any reasons.", 'exception', array(), $error); $return = null; return $return; } if (Piece_Right_ClassLoader::loaded($filterClass)) { $found = true; break 2; } } } if (!$found) { Piece_Right_Error::push(PIECE_RIGHT_ERROR_NOT_FOUND, "The filter [ {$filterName} ] is not found in the following directories:\n" . implode("\n", $GLOBALS['PIECE_RIGHT_Filter_Directories'])); $return = null; return $return; } } $GLOBALS['PIECE_RIGHT_Filter_Instances'][$filterName] =& new $filterClass(); } return $GLOBALS['PIECE_RIGHT_Filter_Instances'][$filterName]; }
/** * Adds a prefix for a filter. * * @param string $filterPrefix */ function addFilterPrefix($filterPrefix) { Piece_Right_Filter_Factory::addFilterPrefix($filterPrefix); }
function testFilterPrefixes() { $oldFilterPrefixes = $GLOBALS['PIECE_RIGHT_Filter_Prefixes']; $oldFilterDirectories = $GLOBALS['PIECE_RIGHT_Filter_Directories']; $config =& new Piece_Unity_Config(); $config->setConfiguration('KernelConfigurator', 'validationFilterPrefixes', array('KernelConfiguratorTestCaseAlias')); $config->setConfiguration('KernelConfigurator', 'validationFilterDirectories', array(dirname(__FILE__) . '/KernelConfiguratorTestCase')); $context =& Piece_Unity_Context::singleton(); $context->setConfiguration($config); $configurator =& new Piece_Unity_Plugin_KernelConfigurator(); $configurator->invoke(); $foo =& Piece_Right_Filter_Factory::factory('FooFilter'); $this->assertTrue(is_object($foo)); $this->assertTrue(is_a($foo, 'KernelConfiguratorTestCaseAlias_FooFilter')); Piece_Right_Filter_Factory::clearInstances(); $GLOBALS['PIECE_RIGHT_Filter_Directories'] = $oldFilterDirectories; $GLOBALS['PIECE_RIGHT_Filter_Prefixes'] = $oldFilterPrefixes; }
function tearDown() { foreach (array_keys($_POST) as $field) { unset($_POST[$field]); } unset($_SERVER['REQUEST_METHOD']); Piece_Right_Validator_Factory::clearInstances(); $GLOBALS['PIECE_RIGHT_Validator_Directories'] = $this->_oldValidatorDirectories; Piece_Right_Filter_Factory::clearInstances(); $GLOBALS['PIECE_RIGHT_Filter_Directories'] = $this->_oldFilterDirectories; $cache =& new Cache_Lite_File(array('cacheDir' => "{$this->_cacheDirectory}/", 'masterFile' => '', 'automaticSerialization' => true, 'errorHandlingAPIBreak' => true)); $cache->clean(); Piece_Right_Error::clearErrors(); Piece_Right_Error::popCallback(); }