diff options
Diffstat (limited to 'kohana/libraries/View.php')
-rw-r--r-- | kohana/libraries/View.php | 309 |
1 files changed, 0 insertions, 309 deletions
diff --git a/kohana/libraries/View.php b/kohana/libraries/View.php deleted file mode 100644 index 2b8471c6..00000000 --- a/kohana/libraries/View.php +++ /dev/null @@ -1,309 +0,0 @@ -<?php defined('SYSPATH') OR die('No direct access allowed.'); -/** - * Loads and displays Kohana view files. Can also handle output of some binary - * files, such as image, Javascript, and CSS files. - * - * $Id: View.php 4072 2009-03-13 17:20:38Z jheathco $ - * - * @package Core - * @author Kohana Team - * @copyright (c) 2007-2008 Kohana Team - * @license http://kohanaphp.com/license.html - */ -class View_Core { - - // The view file name and type - protected $kohana_filename = FALSE; - protected $kohana_filetype = FALSE; - - // View variable storage - protected $kohana_local_data = array(); - protected static $kohana_global_data = array(); - - /** - * Creates a new View using the given parameters. - * - * @param string view name - * @param array pre-load data - * @param string type of file: html, css, js, etc. - * @return object - */ - public static function factory($name = NULL, $data = NULL, $type = NULL) - { - return new View($name, $data, $type); - } - - /** - * Attempts to load a view and pre-load view data. - * - * @throws Kohana_Exception if the requested view cannot be found - * @param string view name - * @param array pre-load data - * @param string type of file: html, css, js, etc. - * @return void - */ - public function __construct($name = NULL, $data = NULL, $type = NULL) - { - if (is_string($name) AND $name !== '') - { - // Set the filename - $this->set_filename($name, $type); - } - - if (is_array($data) AND ! empty($data)) - { - // Preload data using array_merge, to allow user extensions - $this->kohana_local_data = array_merge($this->kohana_local_data, $data); - } - } - - /** - * Magic method access to test for view property - * - * @param string View property to test for - * @return boolean - */ - public function __isset($key = NULL) - { - return $this->is_set($key); - } - - /** - * Sets the view filename. - * - * @chainable - * @param string view filename - * @param string view file type - * @return object - */ - public function set_filename($name, $type = NULL) - { - if ($type == NULL) - { - // Load the filename and set the content type - $this->kohana_filename = Kohana::find_file('views', $name, TRUE); - $this->kohana_filetype = EXT; - } - else - { - // Check if the filetype is allowed by the configuration - if ( ! in_array($type, Kohana::config('view.allowed_filetypes'))) - throw new Kohana_Exception('core.invalid_filetype', $type); - - // Load the filename and set the content type - $this->kohana_filename = Kohana::find_file('views', $name, TRUE, $type); - $this->kohana_filetype = Kohana::config('mimes.'.$type); - - if ($this->kohana_filetype == NULL) - { - // Use the specified type - $this->kohana_filetype = $type; - } - } - - return $this; - } - - /** - * Sets a view variable. - * - * @param string|array name of variable or an array of variables - * @param mixed value when using a named variable - * @return object - */ - public function set($name, $value = NULL) - { - if (is_array($name)) - { - foreach ($name as $key => $value) - { - $this->__set($key, $value); - } - } - else - { - $this->__set($name, $value); - } - - return $this; - } - - /** - * Checks for a property existence in the view locally or globally. Unlike the built in __isset(), - * this method can take an array of properties to test simultaneously. - * - * @param string $key property name to test for - * @param array $key array of property names to test for - * @return boolean property test result - * @return array associative array of keys and boolean test result - */ - public function is_set( $key = FALSE ) - { - // Setup result; - $result = FALSE; - - // If key is an array - if (is_array($key)) - { - // Set the result to an array - $result = array(); - - // Foreach key - foreach ($key as $property) - { - // Set the result to an associative array - $result[$property] = (array_key_exists($property, $this->kohana_local_data) OR array_key_exists($property, View::$kohana_global_data)) ? TRUE : FALSE; - } - } - else - { - // Otherwise just check one property - $result = (array_key_exists($key, $this->kohana_local_data) OR array_key_exists($key, View::$kohana_global_data)) ? TRUE : FALSE; - } - - // Return the result - return $result; - } - - /** - * Sets a bound variable by reference. - * - * @param string name of variable - * @param mixed variable to assign by reference - * @return object - */ - public function bind($name, & $var) - { - $this->kohana_local_data[$name] =& $var; - - return $this; - } - - /** - * Sets a view global variable. - * - * @param string|array name of variable or an array of variables - * @param mixed value when using a named variable - * @return void - */ - public static function set_global($name, $value = NULL) - { - if (is_array($name)) - { - foreach ($name as $key => $value) - { - View::$kohana_global_data[$key] = $value; - } - } - else - { - View::$kohana_global_data[$name] = $value; - } - } - - /** - * Magically sets a view variable. - * - * @param string variable key - * @param string variable value - * @return void - */ - public function __set($key, $value) - { - $this->kohana_local_data[$key] = $value; - } - - /** - * Magically gets a view variable. - * - * @param string variable key - * @return mixed variable value if the key is found - * @return void if the key is not found - */ - public function &__get($key) - { - if (isset($this->kohana_local_data[$key])) - return $this->kohana_local_data[$key]; - - if (isset(View::$kohana_global_data[$key])) - return View::$kohana_global_data[$key]; - - if (isset($this->$key)) - return $this->$key; - } - - /** - * Magically converts view object to string. - * - * @return string - */ - public function __toString() - { - try - { - return $this->render(); - } - catch (Exception $e) - { - // Display the exception using its internal __toString method - return (string) $e; - } - } - - /** - * Renders a view. - * - * @param boolean set to TRUE to echo the output instead of returning it - * @param callback special renderer to pass the output through - * @return string if print is FALSE - * @return void if print is TRUE - */ - public function render($print = FALSE, $renderer = FALSE) - { - if (empty($this->kohana_filename)) - throw new Kohana_Exception('core.view_set_filename'); - - if (is_string($this->kohana_filetype)) - { - // Merge global and local data, local overrides global with the same name - $data = array_merge(View::$kohana_global_data, $this->kohana_local_data); - - // Load the view in the controller for access to $this - $output = Kohana::$instance->_kohana_load_view($this->kohana_filename, $data); - - if ($renderer !== FALSE AND is_callable($renderer, TRUE)) - { - // Pass the output through the user defined renderer - $output = call_user_func($renderer, $output); - } - - if ($print === TRUE) - { - // Display the output - echo $output; - return; - } - } - else - { - // Set the content type and size - header('Content-Type: '.$this->kohana_filetype[0]); - - if ($print === TRUE) - { - if ($file = fopen($this->kohana_filename, 'rb')) - { - // Display the output - fpassthru($file); - fclose($file); - } - return; - } - - // Fetch the file contents - $output = file_get_contents($this->kohana_filename); - } - - return $output; - } -} // End View
\ No newline at end of file |