/** * 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); } } }