diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-12-15 09:21:44 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-12-15 09:21:44 +0000 |
commit | 4fe895a2c473cd22e4741552186fe2be48503167 (patch) | |
tree | 37ed17128d54142938f38f06b6e6708883ddfd06 /modules/forge/libraries/Forge.php | |
parent | 3b35e8b91ce94c292b46a296d034542ac5f0f6da (diff) |
Delete forge in preparation to refresh it from vendors/forge/modified
Diffstat (limited to 'modules/forge/libraries/Forge.php')
-rw-r--r-- | modules/forge/libraries/Forge.php | 319 |
1 files changed, 0 insertions, 319 deletions
diff --git a/modules/forge/libraries/Forge.php b/modules/forge/libraries/Forge.php deleted file mode 100644 index f6bca42b..00000000 --- a/modules/forge/libraries/Forge.php +++ /dev/null @@ -1,319 +0,0 @@ -<?php -/** - * FORGE (FORm GEneration) library. - * - * $Id$ - * - * @package Forge - * @author Kohana Team - * @copyright (c) 2007-2008 Kohana Team - * @license http://kohanaphp.com/license.html - */ -class Forge_Core { - - // Template variables - protected $template = array - ( - 'title' => '', - 'class' => '', - 'open' => '', - 'close' => '', - ); - - // Form attributes - protected $attr = array(); - - // Form inputs and hidden inputs - public $inputs = array(); - public $hidden = array(); - - // Error message format, only used with custom templates - public $error_format = '<p class="error">{message}</p>'; - public $newline_char = "\n"; - - /** - * Form constructor. Sets the form action, title, method, and attributes. - * - * @return void - */ - public function __construct($action = NULL, $title = '', $method = NULL, $attr = array()) - { - // Set form attributes - $this->attr['action'] = $action; - $this->attr['method'] = empty($method) ? 'post' : $method; - - // Set template variables - $this->template['title'] = $title; - - // Empty attributes sets the class to "form" - empty($attr) and $attr = array('class' => 'form'); - - // String attributes is the class name - is_string($attr) and $attr = array('class' => $attr); - - // Extend the template with the attributes - $this->attr += $attr; - } - - /** - * Magic __get method. Returns the specified form element. - * - * @param string unique input name - * @return object - */ - public function __get($key) - { - if (isset($this->inputs[$key])) - { - return $this->inputs[$key]; - } - elseif (isset($this->hidden[$key])) - { - return $this->hidden[$key]; - } - } - - /** - * Magic __call method. Creates a new form element object. - * - * @throws Kohana_Exception - * @param string input type - * @param string input name - * @return object - */ - public function __call($method, $args) - { - // Class name - $input = 'Form_'.ucfirst($method); - - // Create the input - switch (count($args)) - { - case 1: - $input = new $input($args[0]); - break; - case 2: - $input = new $input($args[0], $args[1]); - break; - default: - throw new Kohana_Exception('forge.invalid_input', $input); - } - - if ( ! ($input instanceof Form_Input) AND ! ($input instanceof Forge)) - throw new Kohana_Exception('forge.unknown_input', get_class($input)); - - $input->method = $this->attr['method']; - - if ($name = $input->name) - { - // Assign by name - if ($method == 'hidden') - { - $this->hidden[$name] = $input; - } - else - { - $this->inputs[$name] = $input; - } - } - else - { - // No name, these are unretrievable - $this->inputs[] = $input; - } - - return $input; - } - - /** - * Set a form attribute. This method is chainable. - * - * @param string|array attribute name, or an array of attributes - * @param string attribute value - * @return object - */ - public function set_attr($key, $val = NULL) - { - if (is_array($key)) - { - // Merge the new attributes with the old ones - $this->attr = array_merge($this->attr, $key); - } - else - { - // Set the new attribute - $this->attr[$key] = $val; - } - - return $this; - } - - /** - * Validates the form by running each inputs validation rules. - * - * @return bool - */ - public function validate() - { - $status = TRUE; - - $inputs = array_merge($this->hidden, $this->inputs); - - foreach ($inputs as $input) - { - if ($input->validate() == FALSE) - { - $status = FALSE; - } - } - - return $status; - } - - /** - * Returns the form as an array of input names and values. - * - * @return array - */ - public function as_array() - { - $data = array(); - foreach (array_merge($this->hidden, $this->inputs) as $input) - { - if (is_object($input->name)) // It's a Forge_Group object (hopefully) - { - foreach ($input->inputs as $group_input) - { - if ($name = $group_input->name) - { - $data[$name] = $group_input->value; - } - } - } - else if (is_array($input->inputs)) - { - foreach ($input->inputs as $group_input) - { - if ($name = $group_input->name) - { - $data[$name] = $group_input->value; - } - } - } - else if ($name = $input->name) // It's a normal input - { - // Return only named inputs - $data[$name] = $input->value; - } - } - return $data; - } - - /** - * Changes the error message format. Your message formatting must - * contain a {message} placeholder. - * - * @throws Kohana_Exception - * @param string new message format - * @return void - */ - public function error_format($string = '') - { - if (strpos((string) $string, '{message}') === FALSE) - throw new Kohana_Exception('validation.error_format'); - - $this->error_format = $string; - } - - /** - * Creates the form HTML - * - * @param string form view template name - * @param boolean use a custom view - * @return string - */ - public function render($template = 'forge_template', $custom = FALSE) - { - // Load template - $form = new View($template); - - if ($custom) - { - // Using a custom view - - $data = array(); - foreach (array_merge($this->hidden, $this->inputs) as $input) - { - $data[$input->name] = $input; - - // Groups will never have errors, so skip them - if ($input instanceof Form_Group) - continue; - - // Compile the error messages for this input - $messages = ''; - $errors = $input->error_messages(); - if (is_array($errors) AND ! empty($errors)) - { - foreach ($errors as $error) - { - // Replace the message with the error in the html error string - $messages .= str_replace('{message}', $error, $this->error_format).$this->newline_char; - } - } - - $data[$input->name.'_errors'] = $messages; - } - - $form->set($data); - } - else - { - // Using a template view - - $form->set($this->template); - $hidden = array(); - if ( ! empty($this->hidden)) - { - foreach ($this->hidden as $input) - { - $hidden[$input->name] = $input->value; - } - } - - $form_type = 'open'; - // See if we need a multipart form - $check_inputs = array($this->inputs); - while ($check_inputs) { - foreach (array_shift($check_inputs) as $input) { - if ($input instanceof Form_Upload) - { - $form_type = 'open_multipart'; - } - if ($input instanceof Form_Group) - { - $check_inputs += array($input->inputs); - } - } - } - - // Set the form open and close - $form->open = form::$form_type(arr::remove('action', $this->attr), $this->attr, $hidden); - $form->close = form::close(); - - // Set the inputs - $form->inputs = $this->inputs; - } - - return $form; - } - - /** - * Returns the form HTML - */ - public function __toString() - { - return (string) $this->render(); - } - -} // End Forge |