Пример #1
0
 /**
  * Initializes the environment
  *
  * The following settings can be set:
  *
  * Type      | Setting     | Description
  * ----------|-------------|----------------------------------------------------------------------------------------
  * `string`  | server_name | In this extend the Kohana_Core for function init added server_name param
  *
  * @param array $settings
  * @throws Kohana_Exception
  */
 public static function init(array $settings = null)
 {
     parent::init($settings);
     if (isset($settings['server_name'])) {
         Kohana::$server_name = (string) $settings['server_name'];
     }
 }
Пример #2
0
 /**
  * Inserts global Anqh variables into the generated output and prints it.
  *
  * @param   string  final output that will displayed
  * @return  void
  */
 public static function render($output)
 {
     if (Kohana::config('core.render_stats') === true) {
         $queries = Database::$benchmarks;
         $output = str_replace(array('{database_queries}'), array(count($queries)), $output);
     }
     parent::render($output);
 }
Пример #3
0
 /**
  * overrides default init
  * @param  array $settings 
  * @return void           
  */
 public static function init(array $settings = NULL)
 {
     //before cleaning getting a copy of the original in case we need it.
     self::$_GET_ORIG = $_GET;
     self::$_COOKIE_ORIG = $_COOKIE;
     //we remove slashes if needed
     self::$_POST_ORIG = Kohana::stripslashes($_POST);
     parent::init($settings);
 }
Пример #4
0
 public static function modules(array $modules = NULL)
 {
     $modules = parent::modules($modules);
     foreach (array(CMSPATH, DOCROOT) as $path) {
         if (!in_array($path, Kohana::$_paths)) {
             array_unshift(Kohana::$_paths, $path);
         }
     }
     return $modules;
 }
Пример #5
0
 public static function cache($name, $data = NULL, $lifetime = 60)
 {
     try {
         return parent::cache($name, $data, $lifetime);
     } catch (Exception $e) {
         if (preg_match('/unlink\\(\\/application\\/cache\\/.+?\\)/i', $e->getMessage())) {
             !IN_PRODUCTION and Kohana::$log->add('cache', $e . PHP_EOL . 'URI: ' . $request->uri);
             return NULL;
         }
         throw $e;
         // rethrow
     }
 }
Пример #6
0
 /**
  * Finds the path of a file by directory, filename, and extension.
  * If no extension is given, the default EXT extension will be used.
  *
  * When searching the "config" or "i18n" directory, an array of files
  * will be returned. These files will return arrays which must be
  * merged together.
  *
  *     // Returns an absolute path to views/template.php
  *     Kohana::find_file('views', 'template');
  *
  *     // Returns an absolute path to media/css/style.css
  *     Kohana::find_file('media', 'css/style', 'css');
  *
  *     // Returns an array of all the "mimes" configuration file
  *     Kohana::find_file('config', 'mimes');
  *
  * @param   string   directory name (views, i18n, classes, extensions, etc.)
  * @param   string   filename with subdirectory
  * @param   string   extension to search for
  * @return  array    file list from the "config" or "i18n" directories
  * @return  string   single file path
  */
 public static function find_file($dir, $file, $ext = NULL)
 {
     // Use the defined extension by default
     $ext = $ext === NULL ? EXT : '.' . $ext;
     // Create a partial path of the filename
     $path = $dir . '/' . $file . $ext;
     if (self::$caching === TRUE and isset(self::$_files[$path])) {
         // This path has been cached
         return self::$_files[$path];
     }
     if (self::$profiling === TRUE and class_exists('Profiler', FALSE)) {
         // Start a new benchmark
         $benchmark = Profiler::start(__CLASS__, __FUNCTION__);
     }
     if ($dir === 'config' or $dir === 'i18n' or $dir === 'messages') {
         // Include paths must be searched in reverse
         $paths = array_reverse(self::$_paths);
         // Array of files that have been found
         $found = array();
         foreach ($paths as $dir) {
             if (is_file($dir . $path)) {
                 // This path has a file, add it to the list
                 $found[] = $dir . $path;
             }
         }
     } else {
         // The file has not been found yet
         $found = FALSE;
         foreach (self::$_paths as $dir) {
             if (is_file($dir . $path)) {
                 // A path has been found
                 $found = $dir . $path;
                 // Stop searching
                 break;
             }
         }
     }
     if (self::$caching === TRUE) {
         // Add the path to the cache
         self::$_files[$path] = $found;
         // Files have been changed
         self::$_files_changed = TRUE;
     }
     if (isset($benchmark)) {
         // Stop the benchmark
         Profiler::stop($benchmark);
     }
     return $found;
 }
Пример #7
0
 /**
  * Initializes the environment:
  *
  * - Disables register_globals and magic_quotes_gpc
  * - Determines the current environment
  * - Set global settings
  * - Sanitizes GET, POST, and COOKIE variables
  * - Converts GET, POST, and COOKIE variables to the global character set
  *
  * The following settings can be set:
  *
  * Type      | Setting    | Description                                    | Default Value
  * ----------|------------|------------------------------------------------|---------------
  * `string`  | base_url   | The base URL for your application.  This should be the *relative* path from your DOCROOT to your `index.php` file, in other words, if Kohana is in a subfolder, set this to the subfolder name, otherwise leave it as the default.  **The leading slash is required**, trailing slash is optional.   | `"/"`
  * `string`  | index_file | The name of the [front controller](http://en.wikipedia.org/wiki/Front_Controller_pattern).  This is used by Kohana to generate relative urls like [HTML::anchor()] and [URL::base()]. This is usually `index.php`.  To [remove index.php from your urls](tutorials/clean-urls), set this to `FALSE`. | `"index.php"`
  * `string`  | charset    | Character set used for all input and output    | `"utf-8"`
  * `string`  | cache_dir  | Kohana's cache directory.  Used by [Kohana::cache] for simple internal caching, like [Fragments](kohana/fragments) and **\[caching database queries](this should link somewhere)**.  This has nothing to do with the [Cache module](cache). | `APPPATH."cache"`
  * `integer` | cache_life | Lifetime, in seconds, of items cached by [Kohana::cache]         | `60`
  * `boolean` | errors     | Should Kohana catch PHP errors and uncaught Exceptions and show the `error_view`. See [Error Handling](kohana/errors) for more info. <br /> <br /> Recommended setting: `TRUE` while developing, `FALSE` on production servers. | `TRUE`
  * `boolean` | profile    | Whether to enable the [Profiler](kohana/profiling). <br /> <br />Recommended setting: `TRUE` while developing, `FALSE` on production servers. | `TRUE`	 * `boolean` | caching    | Cache file locations to speed up [Kohana::find_file].  This has nothing to do with [Kohana::cache], [Fragments](kohana/fragments) or the [Cache module](cache).  <br /> <br />  Recommended setting: `FALSE` while developing, `TRUE` on production servers. | `FALSE`
  *
  * @throws  Kohana_Exception
  * @param   array   Array of settings.  See above.
  * @return  void
  * @uses    Kohana::globals
  * @uses    Kohana::sanitize
  * @uses    Kohana::cache
  * @uses    Profiler
  */
 public static function init(array $settings = NULL)
 {
     if (Kohana::$_init) {
         // Do not allow execution twice
         return;
     }
     // Kohana is now initialized
     Kohana::$_init = TRUE;
     if (isset($settings['profile'])) {
         // Enable profiling
         Kohana::$profiling = (bool) $settings['profile'];
     }
     // Start an output buffer
     ob_start();
     if (isset($settings['errors'])) {
         // Enable error handling
         Kohana::$errors = (bool) $settings['errors'];
     }
     if (Kohana::$errors === TRUE) {
         // Enable Kohana exception handling, adds stack traces and error source.
         set_exception_handler(array('Kohana_Exception', 'handler'));
         // Enable Kohana error handling, converts all PHP errors to exceptions.
         set_error_handler(array('Kohana', 'error_handler'));
     }
     // Enable the Kohana shutdown handler, which catches E_FATAL errors.
     register_shutdown_function(array('Kohana', 'shutdown_handler'));
     if (ini_get('register_globals')) {
         self::$expose = (bool) $settings['expose'];
     }
     if (isset($settings['expose'])) {
         Kohana::$expose = (bool) $settings['expose'];
     }
     // Determine if we are running in a command line environment
     Kohana::$is_cli = PHP_SAPI === 'cli';
     // Determine if we are running in a Windows environment
     Kohana::$is_windows = DIRECTORY_SEPARATOR === '\\';
     // Determine if we are running in safe mode
     Kohana::$safe_mode = (bool) ini_get('safe_mode');
     if (isset($settings['cache_dir'])) {
         if (!is_dir($settings['cache_dir'])) {
             try {
                 // Create the cache directory
                 mkdir($settings['cache_dir'], 0755, TRUE);
                 // Set permissions (must be manually set to fix umask issues)
                 chmod($settings['cache_dir'], 0755);
             } catch (Exception $e) {
                 throw new Kohana_Exception('Could not create cache directory :dir', array(':dir' => Debug::path($settings['cache_dir'])));
             }
         }
         // Set the cache directory path
         Kohana::$cache_dir = realpath($settings['cache_dir']);
     } else {
         // Use the default cache directory
         Kohana::$cache_dir = APPPATH . 'cache';
     }
     if (!is_writable(Kohana::$cache_dir)) {
         throw new Kohana_Exception('Directory :dir must be writable', array(':dir' => Debug::path(Kohana::$cache_dir)));
     }
     if (isset($settings['cache_life'])) {
         // Set the default cache lifetime
         Kohana::$cache_life = (int) $settings['cache_life'];
     }
     if (isset($settings['caching'])) {
         // Enable or disable internal caching
         Kohana::$caching = (bool) $settings['caching'];
     }
     if (Kohana::$caching === TRUE) {
         // Load the file path cache
         Kohana::$_files = Kohana::cache('Kohana::find_file()');
     }
     if (isset($settings['charset'])) {
         // Set the system character set
         Kohana::$charset = strtolower($settings['charset']);
     }
     if (function_exists('mb_internal_encoding')) {
         // Set the MB extension encoding to the same character set
         mb_internal_encoding(Kohana::$charset);
     }
     if (isset($settings['base_url'])) {
         // Set the base URL
         Kohana::$base_url = rtrim($settings['base_url'], '/') . '/';
     }
     if (isset($settings['index_file'])) {
         // Set the index file
         Kohana::$index_file = trim($settings['index_file'], '/');
     }
     // Determine if the extremely evil magic quotes are enabled
     Kohana::$magic_quotes = (bool) get_magic_quotes_gpc();
     // Sanitize all request variables
     $_GET = Kohana::sanitize($_GET);
     $_POST = Kohana::sanitize($_POST);
     $_COOKIE = Kohana::sanitize($_COOKIE);
     // Load the logger
     Kohana::$log = Log::instance();
     // Load the config
     Kohana::$config = Config::instance();
 }
Пример #8
0
 public function action_help()
 {
     foreach (Kohana_Core::include_paths() as $module) {
         var_dump($module);
     }
 }