コード例 #1
0
ファイル: ValidationTest.php プロジェクト: piece/piece-unity
 public function setUp()
 {
     parent::setUp();
     Piece_Right_Filter_Factory::clearInstances();
     Piece_Right_Validator_Factory::clearInstances();
     $this->exclusiveDirectory = dirname(__FILE__) . '/' . basename(__FILE__, '.php');
 }
コード例 #2
0
ファイル: Right.php プロジェクト: nyarla/fluxflex-rep2ex
 /**
  * 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);
     }
 }
コード例 #3
0
ファイル: Factory.php プロジェクト: nyarla/fluxflex-rep2ex
 /**
  * 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];
 }
コード例 #4
0
ファイル: Validation.php プロジェクト: nyarla/fluxflex-rep2ex
 /**
  * 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;
 }
コード例 #6
0
ファイル: RightTestCase.php プロジェクト: piece/piece-right
 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();
 }