Example #1
0
 /**
  * Add form-wide filter rules
  */
 private function _add_filter_rules()
 {
     foreach ($this->_schema->filters as $config) {
         if (!class_exists($config['callback'])) {
             // Try autoload:
             if (array_key_exists('autoload_snippet', $config)) {
                 midcom_helper_misc::include_snippet_php($config['autoload_snippet']);
             }
             if (array_key_exists('autoload_file', $config)) {
                 require_once $config['autoload_file'];
             }
             if (!class_exists($config['callback'])) {
                 debug_add("Failed to register the callback {$config['callback']} for validation, the class is not defined.", MIDCOM_ERRCRIT);
                 continue;
             }
         }
         // Now create the instance
         if (array_key_exists('constructor_argument', $config)) {
             $arg = $config['constructor_argument'];
         } else {
             $arg = null;
         }
         $callback_object = new $config['callback']($this, $arg);
         $callback = array(&$callback_object, 'execute');
         // Compute the field list.
         if (array_key_exists('fields', $config)) {
             $fields = $config['fields'];
             if (is_string($fields)) {
                 $fields = array($fields);
             }
         } else {
             $fields = null;
         }
         if (!$fields) {
             $fields = $this->_schema->field_order;
         }
         // Now fire away.
         foreach ($fields as $name) {
             $callback_object->set_fieldname($name);
             $this->form->applyFilter($name, $callback);
         }
     }
 }