73 lines
2.0 KiB
PHP
73 lines
2.0 KiB
PHP
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||
|
|
||
|
/**
|
||
|
* This class overrides Kohana's Core
|
||
|
*
|
||
|
* @package Membership Database
|
||
|
* @category Modifications
|
||
|
* @author Deon George
|
||
|
* @copyright (c) 2014 Deon George
|
||
|
* @license http://dev.leenooks.net/license.html
|
||
|
*/
|
||
|
abstract class Kohana extends Kohana_Core {
|
||
|
/**
|
||
|
* Work out our Class Name as per Kohana's standards
|
||
|
*/
|
||
|
public static function classname($name) {
|
||
|
return str_replace(' ','_',ucwords(strtolower(str_replace('_',' ',$name))));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Find files using a multi-site enabled application
|
||
|
*
|
||
|
* In order of precedence, we'll return:
|
||
|
* 1) site-theme file, ie: site/X/THEME/${file}
|
||
|
* 2) site file, ie: site/X/${file}
|
||
|
* 3) theme file, ie: THEME/${file}
|
||
|
* 4) normal search, ie: ${file}
|
||
|
*/
|
||
|
public static function find_file($dir,$file,$ext=NULL,$array=FALSE) {
|
||
|
// Limit our scope to the following dirs
|
||
|
// @note, we cannot have classes checked, since Config() doesnt exist yet
|
||
|
$dirs = array('views','media');
|
||
|
|
||
|
if (! in_array($dir,$dirs) OR PHP_SAPI === 'cli')
|
||
|
return parent::find_file($dir,$file,$ext,$array);
|
||
|
|
||
|
$prefixes = array('');
|
||
|
|
||
|
// Our search order.
|
||
|
array_unshift($prefixes,Site::Theme().'/');
|
||
|
array_unshift($prefixes,sprintf('site/%s/',Site::ID()));
|
||
|
array_unshift($prefixes,sprintf('site/%s/%s/',Site::ID(),Site::Theme()));
|
||
|
|
||
|
foreach ($prefixes as $p)
|
||
|
if ($x = parent::find_file($dir,$p.$file,$ext,$array))
|
||
|
break;
|
||
|
|
||
|
// We found a path.
|
||
|
return $x;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Override Kohana's shutdown_handler()
|
||
|
*
|
||
|
* When set up for multi-site, we need to disable Kohana's caching
|
||
|
* unless each site has exactly the same modules enabled.
|
||
|
* This is because Kohana::$file is cached with the enabled modules
|
||
|
* and is not OSB multi-site aware.
|
||
|
*/
|
||
|
public static function shutdown_handler() {
|
||
|
// If caching isnt enabled, we can skip this anyway
|
||
|
if (! Kohana::$caching)
|
||
|
return parent::shutdown_handler();
|
||
|
|
||
|
Kohana::$caching = FALSE;
|
||
|
$result = parent::shutdown_handler();
|
||
|
Kohana::$caching = TRUE;
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
}
|
||
|
?>
|