Fixes to OSB to work with KH 3.3

This commit is contained in:
Deon George 2012-11-10 10:13:57 +11:00
parent ea36639638
commit 6db02ae77d
238 changed files with 813 additions and 938 deletions

View File

@ -2,7 +2,7 @@
RewriteEngine On
# Installation directory
RewriteBase /
RewriteBase /osb/
# Protect hidden files from being viewed
<Files .*>
@ -11,7 +11,7 @@ RewriteBase /
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
RewriteRule ^(?:application|modules|includes/kohana)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f

View File

@ -22,7 +22,7 @@ else
* @link http://kohanaframework.org/guide/using.configuration
* @link http://www.php.net/manual/timezones
*/
date_default_timezone_set('America/Chicago');
date_default_timezone_set('Australia/Melbourne');
/**
* Set the default locale.
@ -90,9 +90,9 @@ if (isset($_SERVER['KOHANA_ENV']))
* - boolean expose set the X-Powered-By header FALSE
*/
Kohana::init(array(
'base_url' => '/osb',
'index_file' => '',
'base_url' => '/osb/',
'caching' => TRUE,
'index_file' => '',
));
/**
@ -114,14 +114,14 @@ Kohana::modules(array(
'cron' => SMDPATH.'cron', // Kohana Cron Module
// 'codebench' => SMDPATH.'codebench', // Benchmarking tool
'database' => SMDPATH.'database', // Database access
// 'image' => SMDPATH.'image', // Image manipulation
// 'minion' => MODPATH.'minion', // CLI Tasks
'orm' => SMDPATH.'orm', // Object Relationship Mapping
// 'unittest' => SMDPATH.'unittest', // Unit testing
'userguide' => SMDPATH.'userguide', // User guide and API documentation
'khemail' => SMDPATH.'khemail', // Email module for Kohana 3 PHP Framework
'gchart' => MODPATH.'gchart', // Google Chart Module
// 'image' => SMDPATH.'image', // Image manipulation
'khemail' => SMDPATH.'khemail', // Email module for Kohana 3 PHP Framework
'minion' => SMDPATH.'minion', // CLI Tasks
'orm' => SMDPATH.'orm', // Object Relationship Mapping
'pagination' => SMDPATH.'pagination', // Kohana Pagination module for Kohana 3 PHP Framework
// 'unittest' => SMDPATH.'unittest', // Unit testing
// 'userguide' => SMDPATH.'userguide', // User guide and API documentation
'xml' => SMDPATH.'xml', // XML module for Kohana 3 PHP Framework
));
@ -135,7 +135,7 @@ Kohana::modules(array_merge(Kohana::modules(),Config::modules()));
*/
Route::set('sections', '<directory>/<controller>(/<action>(/<id>(/<sid>)))',
array(
'directory' => '('.implode('|',Kohana::config('config.method_directory')).')'
'directory' => '('.implode('|',Kohana::$config->load('config')->method_directory).')'
))
->defaults(array(
'action' => 'index',

View File

@ -30,12 +30,12 @@ class Auth_OSB extends Auth_ORM {
// If we are not a valid user object, then we are not logged in
if (is_object($user) AND $user instanceof Model_Account AND $user->loaded()) {
if (Config::sitemode() == Kohana::DEVELOPMENT && Kohana::config('config.site_debug'))
if (Config::sitemode() == Kohana::DEVELOPMENT && Kohana::$config->load('config')->site_debug)
SystemMessage::add(array('title'=>'Debug','type'=>'debug','body'=>Kohana::debug(array('user'=>$user->username,'r'=>$role))));
if (! empty($role)) {
// Get the module details
$mo = ORM::factory('module',array('name'=>Request::current()->controller()));
$mo = ORM::factory('Module',array('name'=>Request::current()->controller()));
if (! $mo->loaded() OR ! $mo->status) {
SystemMessage::add(array(
'title'=>'Module is not defined or active in the Database',
@ -50,7 +50,7 @@ class Auth_OSB extends Auth_ORM {
$method_name = Request::current()->action();
// Get the method number
$mmo = ORM::factory('module_method',array('module_id'=>$mo->id,'name'=>$method_name));
$mmo = ORM::factory('Module_Method',array('module_id'=>$mo->id,'name'=>$method_name));
if (! $mmo->loaded()) {
SystemMessage::add(array(
'title'=>'Method is not defined or active in the Database',
@ -60,7 +60,7 @@ class Auth_OSB extends Auth_ORM {
} else {
// If the role has the authorisation to run the method
$gmo = ORM::factory('group_method')
$gmo = ORM::factory('Group_Method')
->where('method_id','=',$mmo->id);
$roles = '';
@ -152,14 +152,14 @@ class Auth_OSB extends Auth_ORM {
if (! is_null($user))
return $user;
$mmto = ORM::factory('module_method_token',array('token'=>$token));
$mmto = ORM::factory('Module_Method_Token',array('token'=>$token));
$user = FALSE;
// Ignore the token if it doesnt exist.
if ($mmto->loaded()) {
// Check that the token is for this URI
$mo = ORM::factory('module',array('name'=>Request::current()->controller()));
$mmo = ORM::factory('module_method',array(
$mo = ORM::factory('Module',array('name'=>Request::current()->controller()));
$mmo = ORM::factory('Module_Method',array(
'module_id'=>$mo->id,
'name'=>Request::current()->directory() ? sprintf('%s_%s',Request::current()->directory(),Request::current()->action()) : Request::current()->action()
));
@ -197,7 +197,7 @@ class Auth_OSB extends Auth_ORM {
Session::instance()->set('token',$token);
$user = ORM::factory('account',$mmto->account_id);
$user = ORM::factory('Account',$mmto->account_id);
$user->log(sprintf('Token %s used for method %s [%s]',$mmto->token,$mmto->module_method->name(),Request::current()->param('id')));
}
}
@ -221,17 +221,23 @@ class Auth_OSB extends Auth_ORM {
$username = $user;
// Load the user
$user = ORM::factory('account');
$user = ORM::factory('Account');
$user->where('username','=',$username)->find();
}
if (is_string($password))
{
// Create a hashed password
$password = $this->hash($password);
}
// If the passwords match, perform a login
if ($user->status AND $user->has_any('group',ORM::factory('group',array('name'=>'Registered Users'))->list_childgrps(TRUE)) AND $user->password === $password)
if ($user->status AND $user->has_any('group',ORM::factory('Group',array('name'=>'Registered Users'))->list_childgrps(TRUE)) AND $user->password === $password)
{
if ($remember === TRUE)
{
// Create a new autologin token
$token = ORM::factory('user_token');
$token = ORM::factory('User_Token');
// Set token data
$token->user_id = $user->id;
@ -250,7 +256,7 @@ class Auth_OSB extends Auth_ORM {
// Do we need to update databases with our new sesion ID
// @todo figure out where this is best to go
$session_change_trigger = array('cart'=>'session_id');
$session_change_trigger = array('Cart'=>'session_id');
if (count($session_change_trigger) AND (session_id() != $oldsess)) {
foreach ($session_change_trigger as $t => $c) {

View File

@ -1,4 +1,4 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
class Breadcrumb extends lnApp_Breadcrumb {}
class BreadCrumb extends lnApp_BreadCrumb {}
?>

View File

@ -0,0 +1,16 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class overrides Kohana's Cache
*
* @package OSB/Modifications
* @category Classes
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class Cache extends Kohana_Cache {
public static $default = 'apc';
}
?>

View File

@ -60,12 +60,12 @@ class Company {
public static function bsb() {
// @todo Details should be obtained from DB
return Kohana::config('config.bsb');
return Kohana::$config->load('config')->bsb;
}
public static function account() {
// @todo Details should be obtained from DB
return Kohana::config('config.accnum');
return Kohana::$config->load('config')->accnum;
}
public static function taxid() {

View File

@ -15,12 +15,55 @@ class Config extends lnApp_Config {
public $so;
public static $no_site_id_tables = array('setup','country','currency','language','tax');
/**
* @compat Restore KH 3.1 functionality
* @var Kohana_Config Singleton static instance
*/
protected static $_instance;
public function __construct() {
parent::__construct();
// We need to know our site here, so that we can subsequently load our enabled modules.
if (Kohana::$is_cli) {
if (! $site = Minion_CLI::options('site'))
// @todo Need to figure out how to make this CLI error nicer.
throw new Minion_Exception_InvalidTask(_('Cant figure out the site, use --site= for CLI'));
else
$_SERVER['SERVER_NAME'] = $site;
}
}
/**
* Get the singleton instance of Config.
*
* $config = Config::instance();
*
* @return Config
* @compat Restore KH 3.1 functionality
*/
public static function instance() {
if (Config::$_instance === NULL)
// Create a new instance
Config::$_instance = new Config;
return Config::$_instance;
}
/** Overloaded methods **/
public static function date($date) {
return date(Config::instance()->loadsite()->so->date_format,($date ? $date : time()));
}
/**
* Show a date using a site configured format
* @note We need this function here, since we call static:: methods, which need to resolve to the child class.
*/
public static function datetime($date) {
return sprintf('%s %s',static::date($date),static::time($date));
}
public static function siteid($format=FALSE) {
return $format ? sprintf('%02s',Config::instance()->loadsite()->so->id) : Config::instance()->loadsite()->so->id;
}
@ -45,7 +88,7 @@ class Config extends lnApp_Config {
if ($this->so AND $this->so->loaded())
return $this;
$this->so = ORM::factory('setup',array('url'=>URL::base('http')));
$this->so = ORM::factory('Setup',array('url'=>URL::base('http')));
if (! $this->so->loaded())
throw new Kohana_Exception(_('Site [:site] not defined in DB?'),array(':site'=>URL::base('http')));
@ -65,7 +108,7 @@ class Config extends lnApp_Config {
static $return = array();
if (! count($return))
foreach (ORM::factory('module')->list_active() as $mo)
foreach (ORM::factory('Module')->list_external() as $mo)
$return[$mo->name] = MODPATH.$mo->name;
return $return;

View File

@ -21,7 +21,7 @@ class Controller_Admin_Account extends Controller_TemplateDefault_Admin {
$return = array();
if (isset($_REQUEST['term']) AND trim($_REQUEST['term']))
$return += ORM::factory('account')->list_autocomplete($_REQUEST['term']);
$return += ORM::factory('Account')->list_autocomplete($_REQUEST['term']);
$this->auto_render = FALSE;
$this->response->headers('Content-Type','application/json');
@ -35,7 +35,7 @@ class Controller_Admin_Account extends Controller_TemplateDefault_Admin {
Block::add(array(
'title'=>_('Account Login Log'),
'body'=>Table::display(
ORM::factory('account_log')->order_by('id','DESC')->find_all(),
ORM::factory('Account_Log')->order_by('id','DESC')->find_all(),
25,
array(
'id'=>array('label'=>'ID'),
@ -57,7 +57,7 @@ class Controller_Admin_Account extends Controller_TemplateDefault_Admin {
Block::add(array(
'title'=>_('Customer List'),
'body'=>Table::display(
ORM::factory('account')->list_active(),
ORM::factory('Account')->list_active(),
25,
array(
'id'=>array('label'=>'ID','url'=>'user/account/view/'),

View File

@ -26,11 +26,11 @@ class Controller_Admin_Module extends Controller_TemplateDefault_Admin {
$methods = array();
// List of classes where all our methods are, including this one.
$classes = Kohana::config('config.method_directory');
$classes = Kohana::$config->load('config')->method_directory;
array_unshift($classes,'');
foreach ($classes as $c) {
$cn = sprintf($ch,$c ? $c.'_'.$class : $class);
$cn = sprintf($ch,$c ? ucfirst($c).'_'.ucfirst($class) : $class);
if (class_exists($cn)) {
$r = new ReflectionClass($cn);
@ -48,7 +48,7 @@ class Controller_Admin_Module extends Controller_TemplateDefault_Admin {
* List our installed modules
*/
public function action_list() {
$mo = ORM::factory('module');
$mo = ORM::factory('Module');
Block::add(array(
'title'=>_('Defined Modules'),
@ -74,7 +74,7 @@ class Controller_Admin_Module extends Controller_TemplateDefault_Admin {
*/
public function action_edit() {
$mid = $this->request->param('id');
$mo = ORM::factory('module',$mid);
$mo = ORM::factory('Module',$mid);
if (! $mo->loaded()) {
SystemMessage::add(array(

View File

@ -14,9 +14,12 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
/**
* Add a method to the database
*/
public function action_add($mid,$method) {
$mo = ORM::factory('module',$mid);
$mmo = ORM::factory('module_method');
public function action_add() {
$id = $this->request->param('id');
$method = $this->request->param('sid');
$mo = ORM::factory('Module',$id);
$mmo = ORM::factory('Module_Method');
if (! $mo->loaded() OR ! in_array($method,$this->_methods($mo->name)))
throw new Kohana_Exception('Method (:method) does not exist in :class',array(':method'=>$method,':class'=>$mo->name));
@ -37,7 +40,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
'body'=>sprintf(_('Method %s defined to database'),$mmo->name),
));
Request::current()->redirect(sprintf('admin/module/edit/%s',$mo->id));
HTTP::redirect(sprintf('admin/module/edit/%s',$mo->id));
} else {
SystemMessage::add(array(
@ -65,7 +68,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
*/
public function action_edit() {
$mid = $this->request->param('id');
$mmo = ORM::factory('module_method',$mid);
$mmo = ORM::factory('Module_Method',$mid);
if (! $mmo->loaded()) {
SystemMessage::add(array(
@ -80,13 +83,13 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
$output = '';
// The groups that can run this method.
$groups = ORM::factory('group');
$groups = ORM::factory('Group');
if ($_POST) {
foreach ($groups->find_all() as $go) {
// If the group was defined and no longer
if ($mmo->has('group',$go) AND (! isset($_POST['groups']) OR ! in_array($go->id,$_POST['groups']))) {
$gm = ORM::factory('group_method',array('method_id'=>$mmo->id,'group_id'=>$go->id));
$gm = ORM::factory('Group_Method',array('method_id'=>$mmo->id,'group_id'=>$go->id));
if (! $gm->delete())
SystemMessage::add(array(
@ -97,7 +100,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
// If the group was not defined and now is
} elseif (! $mmo->has('group',$go) AND isset($_POST['groups']) AND in_array($go->id,$_POST['groups'])) {
$gm = ORM::factory('group_method')
$gm = ORM::factory('Group_Method')
->values(array(
'method_id'=>$mmo->id,
'group_id'=>$go->id,

View File

@ -51,7 +51,7 @@ class Controller_Admin_Setup extends Controller_TemplateDefault_Admin {
$output .= View::factory($this->viewpath().'/module/head');
foreach ($o->module_config as $mid => $detail) {
$mo = ORM::factory('module',$mid);
$mo = ORM::factory('Module',$mid);
$output .= View::factory($this->viewpath().'/module/body')
->set('mo',$mo);

View File

@ -16,11 +16,11 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault_Admin {
);
public function action_index() {
$ao = ORM::factory('account',Auth::instance()->get_user()->id);
$ao = ORM::factory('Account',Auth::instance()->get_user()->id);
$t = time();
// Show outstanding invoices
$o = ORM::factory('invoice');
$o = ORM::factory('Invoice');
Block_Sub::add(array(
'title'=>'Invoices Overdue - No Auto Billing',
@ -83,7 +83,7 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault_Admin {
Block_Sub::add(array(
'title'=>'Unapplied Payments',
'body'=>Table::display(
ORM::factory('payment')->list_unapplied(),
ORM::factory('Payment')->list_unapplied(),
25,
array(
'date_payment'=>array('label'=>'Pay Date'),

View File

@ -22,7 +22,7 @@ class Controller_Affiliate_Account extends Controller_TemplateDefault_Affiliate
Block::add(array(
'title'=>_('Customer List'),
'body'=>Table::display(
$this->filter(ORM::factory('account')->list_active(),$this->ao->affiliate->id,'sortkey(TRUE)'),
$this->filter(ORM::factory('Account')->list_active(),$this->ao->affiliate->id,'sortkey(TRUE)'),
25,
array(
'id'=>array('label'=>'ID','url'=>'user/account/view/'),

View File

@ -3,7 +3,7 @@
class Controller_Debug extends Controller_TemplateDefault {
public function before() {
if (! in_array(Config::sitemode(),array(Kohana::DEVELOPMENT,Kohana::TESTING)))
$this->request->redirect();
HTTP::redirect();
parent::before();
}

View File

@ -20,7 +20,7 @@ class Controller_Login extends lnApp_Controller_Login {
}
// Instantiate a new user
$account = ORM::factory('account');
$account = ORM::factory('Account');
// If there is a post and $_POST is not empty
if ($_POST) {
@ -42,7 +42,7 @@ class Controller_Login extends lnApp_Controller_Login {
}
}
$ido = ORM::factory('module')
$ido = ORM::factory('Module')
->where('name','=','account')
->find();
@ -84,8 +84,8 @@ class Controller_Login extends lnApp_Controller_Login {
// If the user posted their details to reset their password
if ($_POST) {
// If the username is correct, create a method token
if (! empty($_POST['username']) AND ($ao=ORM::factory('account',array('username'=>$_POST['username']))) AND $ao->loaded()) {
$mmto = ORM::factory('module_method_token')
if (! empty($_POST['username']) AND ($ao=ORM::factory('Account',array('username'=>$_POST['username']))) AND $ao->loaded()) {
$mmto = ORM::factory('Module_Method_Token')
->method(array('account','user_resetpassword'))
->account($ao)
->uses(2)

View File

@ -35,8 +35,8 @@ class Controller_TemplateDefault_User extends Controller_TemplateDefault {
$dc = 'welcome/index';
$m = sprintf('%s/%s',Request::current()->directory(),Request::current()->controller());
Breadcrumb::URL(Request::current()->directory(),sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
Breadcrumb::URL($m,method_exists($this,'action_menu') ? $m.'/menu' : sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
BreadCrumb::URL(Request::current()->directory(),sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
BreadCrumb::URL($m,method_exists($this,'action_menu') ? $m.'/menu' : sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
parent::after();
}

View File

@ -46,7 +46,7 @@ class Controller_Tree extends lnApp_Controller_Tree {
if (preg_match('/_/',$id))
list($id,$idx) = explode('_',$id,2);
$mo = ORM::factory('module',$id);
$mo = ORM::factory('Module',$id);
$methods = array();
if ($mo->loaded()) {

View File

@ -38,7 +38,7 @@ class Controller_User_Account extends Controller_TemplateDefault_User {
// Log the password reset
$this->ao->log('Password reset');
Request::current()->redirect('login');
HTTP::redirect('login');
} else {
$output = '';

View File

@ -16,7 +16,7 @@ class Controller_User_Welcome extends Controller_TemplateDefault_User {
);
public function action_index() {
$ao = ORM::factory('account',Auth::instance()->get_user()->id);
$ao = ORM::factory('Account',Auth::instance()->get_user()->id);
Block::add(array(
'title'=>sprintf('%s: %s %s',$ao->accnum(),$ao->first_name,$ao->last_name),

View File

@ -14,11 +14,11 @@ class Controller_Welcome extends Controller_TemplateDefault {
protected $auth_required = FALSE;
public function action_index() {
if (! Kohana::config('config.appname'))
Request::current()->redirect('guide/app');
if (! Kohana::$config->load('config')->appname)
HTTP::redirect('guide/app');
// @todo This should be in the DB or something.
Request::current()->redirect('product/categorys');
HTTP::redirect('product/categorys');
}
public function action_breadcrumb() {

View File

@ -0,0 +1,16 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class overrides Kohana's Cookie
*
* @package OSB/Modifications
* @category Classes
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Cookie extends Kohana_Cookie {
public static $salt = 'OSB';
}
?>

View File

@ -12,7 +12,7 @@
*/
class Country {
public static function icon($cid) {
$co = ORM::factory('country',$cid);
$co = ORM::factory('Country',$cid);
return HTML::image(sprintf('media/img/country/%s.png',strtolower($co->two_code)),array('alt'=>$co->currency()->symbol));
}

View File

@ -11,10 +11,10 @@
* @license http://dev.leenooks.net/license.html
*/
class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 {
public function __construct($message, array $variables = NULL, $code = 0)
public function __construct($message = NULL, array $variables = NULL, Exception $previous = NULL)
{
set_exception_handler(array(get_class($this),'handler'));
parent::__construct($message, $variables, (int) $code);
parent::__construct($message, $variables, $previous);
}
public static function handler(Exception $e)
@ -25,7 +25,7 @@ class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 {
'body'=>sprintf(_('The page [%s] you requested was not found?'),Request::detect_uri()),
));
Request::factory()->redirect('welcome');
HTTP::redirect('welcome');
}
}
?>

View File

@ -10,7 +10,23 @@
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Kohana extends Kohana_Core {
abstract class Kohana extends Kohana_Core {
/**
* @compat Restore KH 3.1 functionality
* @var boolean True if Kohana is running from the command line
*/
public static $is_cli = FALSE;
/**
* @compat Restore KH 3.1 functionality
*/
public static function init(array $settings = NULL) {
parent::init($settings);
// Determine if we are running in a command line environment
Kohana::$is_cli = (PHP_SAPI === 'cli');
}
/**
* Override Kohana's shutdown_handler()
*
@ -22,7 +38,7 @@ class Kohana extends Kohana_Core {
public static function shutdown_handler() {
// If caching isnt enabled, we can skip this anyway
if (! Kohana::$caching)
return parent::shutdown_handler();;
return parent::shutdown_handler();
Kohana::$caching = FALSE;
$result = parent::shutdown_handler();

View File

@ -0,0 +1,18 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class overrides Kohana's Minion CLI Module
*
* @package OSB/Modifications
* @category Classes
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class Minion_Task extends Kohana_Minion_Task {
protected $_options = array(
'site'=>NULL,
);
}
?>

View File

@ -79,7 +79,7 @@ class Model_Account extends Model_Auth_UserDefault {
public function isAdmin() {
// @todo Define admins in the config file or DB
$admins = array(ORM::factory('group',array('name'=>'Root')));
$admins = array(ORM::factory('Group',array('name'=>'Root')));
return $this->has('group',$admins);
}
@ -124,7 +124,7 @@ class Model_Account extends Model_Auth_UserDefault {
public function log($message) {
// Log the logout
$alo = ORM::factory('account_log');
$alo = ORM::factory('Account_Log');
$alo->account_id = $this->id;
$alo->ip = Request::$client_ip;
$alo->details = $message;

View File

@ -1,15 +1,15 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides task management
* OSB Affiliate
*
* @package lnApp
* @subpackage Page/Task
* @category Controllers
* @package OSB
* @subpackage Modules
* @category Models
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Controller_Task extends Controller_TemplateDefault {
class Model_Affiliate extends ORM_OSB {
}
?>

View File

@ -59,13 +59,6 @@ class Model_Auth_UserDefault extends Model_Auth_User {
return $this->log('Logged In');
}
/**
* Test to see if a record has been changed
*/
public function changed() {
return (count($this->_changed));
}
/**
* Debug function to see that has() finds
* @todo This function could be removed

View File

@ -12,7 +12,7 @@
*/
class Model_Country extends ORM_OSB {
public function currency() {
return ORM::factory('currency')->where('country_id','=',$this->id)->find();
return ORM::factory('Currency')->where('country_id','=',$this->id)->find();
}
}
?>

View File

@ -47,7 +47,7 @@ class Model_Group extends Model_Auth_RoleDefault {
if (! $this->loaded())
return $return;
foreach (ORM::factory('group')->where_active()->and_where('parent_id','=',$this)->find_all() as $go) {
foreach (ORM::factory('Group')->where_active()->and_where('parent_id','=',$this)->find_all() as $go) {
array_push($return,$go);
$return = array_merge($return,$go->list_childgrps());
@ -69,7 +69,7 @@ class Model_Group extends Model_Auth_RoleDefault {
if (! $this->loaded())
return $return;
foreach (ORM::factory('group')->where_active()->and_where('id','=',$this->parent_id)->find_all() as $go) {
foreach (ORM::factory('Group')->where_active()->and_where('id','=',$this->parent_id)->find_all() as $go) {
array_push($return,$go);
$return = array_merge($return,$go->list_parentgrps());

View File

@ -35,5 +35,9 @@ class Model_Module extends ORM_OSB {
array('StaticList_YesNo::display',array(':value')),
),
);
public function list_external() {
return $this->_where_active()->where('external','=',TRUE)->find_all();
}
}
?>

View File

@ -28,9 +28,9 @@ class Model_Module_Method_Token extends ORM_OSB {
if (! $method instanceof Model_Module_Method) {
if (is_numeric($module))
$mo = ORM::factory('module',$module);
$mo = ORM::factory('Module',$module);
elseif (is_string($module))
$mo = ORM::factory('module',array('name'=>$module));
$mo = ORM::factory('Module',array('name'=>$module));
elseif (! $module instanceof Model_Module)
throw new Kohana_Exception('Unknown module :module',array(':module'=>serialize($module)));
else
@ -40,9 +40,9 @@ class Model_Module_Method_Token extends ORM_OSB {
throw new Kohana_Exception('Unknown module :module - not loaded?',array(':module'=>$mo->id));
if (is_numeric($method))
$mmo = ORM::factory('module_method',$method);
$mmo = ORM::factory('Module_Method',$method);
elseif (is_string($method))
$mmo = ORM::factory('module_method',array('name'=>$method,'module_id'=>$mo->id));
$mmo = ORM::factory('Module_Method',array('name'=>$method,'module_id'=>$mo->id));
else
throw new Kohana_Exception('Unknown method :method',array(':method'=>serialize($method)));
} else
@ -59,7 +59,7 @@ class Model_Module_Method_Token extends ORM_OSB {
public function account($account) {
if (! $account instanceof Model_Account) {
if (is_numeric($account))
$ao = ORM::factory('account',$account);
$ao = ORM::factory('Account',$account);
else
throw new Kohana_Exception('Unknown account :account',array(':account'=>serialize($account)));
} else
@ -88,7 +88,7 @@ class Model_Module_Method_Token extends ORM_OSB {
return NULL;
// Check we dont already have a valid token
$mmto = ORM::factory('module_method_token')
$mmto = ORM::factory('Module_Method_Token')
->where('account_id','=',$this->account_id)
->where('method_id','=',$this->method_id)
->find();

View File

@ -21,7 +21,7 @@ class Model_Record_Id extends ORM_OSB {
$this->module_id = $mid;
// We'll get the next ID as the MAX(id) of the table
$mo = ORM::factory('module',$mid);
$mo = ORM::factory('Module',$mid);
$max = DB::select(array('MAX(id)','id'))
->from($mo->name)

View File

@ -42,7 +42,7 @@ class Model_Setup extends ORM_OSB {
if (! $this->loaded() OR (is_null($value) AND ! $this->module_config))
return array();
$mo = ORM::factory('module')->where('name','=',$key)->find();
$mo = ORM::factory('Module')->where('name','=',$key)->find();
if (! $mo->loaded())
throw new Kohana_Exception('Unknown module :name',array(':name'=>$key));

View File

@ -22,7 +22,7 @@ abstract class ORM extends Kohana_ORM {
final protected function _build($type) {
// Exclude tables without site ID's
if (! in_array($this->_table_name,Config::$no_site_id_tables))
$this->where($this->_table_name.'.site_id','=',Config::siteid());
$this->where($this->_object_name.'.site_id','=',Config::siteid());
return parent::_build($type);
}
@ -58,12 +58,22 @@ abstract class ORM extends Kohana_ORM {
}
/**
* Override KH's ORM has() function, to include our site_id in the query.
* Override KH's ORM count_relations() function, to include our site_id in the query.
*
* This is a copy of KH's ORM has() function, with the addition of a where
* This is a copy of KH's ORM count_relations() function, with the addition of a where
* clause to include the site id.
*/
public function has($alias, $far_keys) {
public function count_relations($alias, $far_keys = NULL)
{
if ($far_keys === NULL)
{
return (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found'))
->from($this->_has_many[$alias]['through'])
->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk())
->where('site_id', '=', Config::siteid())
->execute($this->_db)->get('records_found');
}
$far_keys = ($far_keys instanceof ORM) ? $far_keys->pk() : $far_keys;
// We need an array to simplify the logic
@ -71,9 +81,9 @@ abstract class ORM extends Kohana_ORM {
// Nothing to check if the model isn't loaded or we don't have any far_keys
if ( ! $far_keys OR ! $this->_loaded)
return FALSE;
return 0;
$count = (int) DB::select(array('COUNT("*")', 'records_found'))
$count = (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found'))
->from($this->_has_many[$alias]['through'])
->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk())
->where($this->_has_many[$alias]['far_key'], 'IN', $far_keys)
@ -81,32 +91,7 @@ abstract class ORM extends Kohana_ORM {
->execute($this->_db)->get('records_found');
// Rows found need to match the rows searched
return $count === count($far_keys);
}
/**
* Tests if this object has a relationship to a different model,
* or an array of different models.
*
* // Check for any of the following roles
* $model->has('roles', array(1, 2, 3, 4));
*
* @param string $alias Alias of the has_many "through" relationship
* @param mixed $far_keys An array of primary keys
* @return Database_Result
*/
public function has_any($alias, array $far_keys) {
// Nothing to check if the model isn't loaded or we don't have any far_keys
if ( ! $far_keys)
return FALSE;
// Rows found need to match the rows searched
return (int) DB::select(array('COUNT("*")', 'records_found'))
->from($this->_has_many[$alias]['through'])
->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk())
->where($this->_has_many[$alias]['far_key'], 'IN', $far_keys)
->where('site_id', '=', Config::siteid())
->execute($this->_db)->get('records_found');
return (int) $count;
}
protected function _where_active() {
@ -116,6 +101,5 @@ abstract class ORM extends Kohana_ORM {
public function where_active() {
return $this->_where_active();
}
}
?>

View File

@ -80,7 +80,7 @@ abstract class ORM_OSB extends ORM {
$model->_changed[$field] = $field;
$ido = ORM::factory('module')
$ido = ORM::factory('Module')
->where('name','=',$model->_table_name)
->find();

View File

@ -0,0 +1,19 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class extends Minions Tasks to require the site option
*
* @package OSB/Modifications
* @category Classes
* @category Helpers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class Task extends Minion_Task {
protected $_options = array(
'site'=>NULL,
'id'=>NULL,
);
}
?>

View File

@ -9,7 +9,7 @@
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Valid extends Kohana_Valid {
abstract class Valid extends Kohana_Valid {
/**
* Checks if a field matches the value of another field, if it is set.
* Field is ignored if it is blank.

View File

@ -1,5 +0,0 @@
<?php
class Cache extends Kohana_Cache {
public static $default = 'apc';
}
?>

View File

@ -1,7 +1,7 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class is for rendering a breadcrumb menu.
* This class is for rendering a BreadCrumb menu.
*
* @package lnApp
* @subpackage Page
@ -10,17 +10,19 @@
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class lnApp_Breadcrumb extends HTMLRender {
abstract class lnApp_BreadCrumb extends HTMLRender {
protected static $_data = array();
protected static $_spacer = ' &raquo; ';
protected static $_required_keys = array('body');
/**
* Set the breadcrumb path
* Set the BreadCrumb path
*
* @param array Block attributes
*/
public static function set($path) {
$path = strtolower($path);
if (is_string($path))
static::$_data['path'] = explode('/',$path);
elseif (is_array($path))
@ -43,6 +45,9 @@ abstract class lnApp_Breadcrumb extends HTMLRender {
* Enable specifying the URL for a path
*/
public static function URL($path,$url,$override=TRUE) {
$path = strtolower($path);
$url = strtolower($url);
if (isset(static::$_data['url'][$path]) AND ! $override)
return;
@ -52,14 +57,14 @@ abstract class lnApp_Breadcrumb extends HTMLRender {
/**
* Return an instance of this class
*
* @return Breadcrumb
* @return BreadCrumb
*/
public static function factory() {
return new Breadcrumb;
return new BreadCrumb;
}
/**
* Render this Breadcrumb
* Render this BreadCrumb
*/
protected function render() {
$output = '<ul id="breadcrumb">';

View File

@ -24,13 +24,6 @@ abstract class lnApp_Config extends Kohana_Config {
public function __construct() {
if (defined('PHPUNITTEST'))
$_SERVER['SERVER_NAME'] = PHPUNITTEST;
elseif (Kohana::$is_cli) {
if (! $site = CLI::options('site'))
throw new Kohana_Exception(_('Cant figure out the site, use --site= for CLI'));
else
$_SERVER['SERVER_NAME'] = $site['site'];
}
}
/**
@ -44,14 +37,14 @@ abstract class lnApp_Config extends Kohana_Config {
* Work out our site ID for multiehosting
*/
public static function siteid() {
return Kohana::Config('config.site.id');
return Kohana::$config->load('config.site.id');
}
/**
* Work out our site mode (dev,test,prod)
*/
public static function sitemode() {
return Kohana::Config('config.site.mode');
return Kohana::$config->load('config.site.mode');
}
public static function sitemodeverbose() {
@ -66,13 +59,13 @@ abstract class lnApp_Config extends Kohana_Config {
}
public static function submode() {
$submode = Kohana::Config('config.debug.submode');
$submode = Kohana::$config->load('config.debug.submode');
return (isset($submode[Request::$client_ip])) ? $submode[Request::$client_ip] : FALSE;
}
public static function sitename() {
return Kohana::Config('config.site.name');
return Kohana::$config->load('config')->site_name;
}
// Called in Invoice/Emailing to embed the file.
@ -98,21 +91,21 @@ abstract class lnApp_Config extends Kohana_Config {
* Return our caching mechanism
*/
public static function cachetype() {
return is_null(Kohana::config('config.cache_type')) ? 'file' : Kohana::config('config.cache_type');
return is_null(Kohana::$config->load('config')->cache_type) ? 'file' : Kohana::$config->load('config')->cache_type;
}
/**
* Show a date using a site configured format
*/
public static function date($date) {
return $date ? date(Kohana::config('config.date_format'),$date) : '&gt;Not Set&lt;';
return $date ? date(Kohana::$config->load('config')->date_format,$date) : '&gt;Not Set&lt;';
}
/**
* Show a date using a site configured format
*/
public static function time($date) {
return date(Kohana::config('config.time_format'),$date);
return date(Kohana::$config->load('config')->time_format,$date);
}
/**
@ -129,7 +122,7 @@ abstract class lnApp_Config extends Kohana_Config {
* @return mixed|array - Email to send test emails to
*/
public static function testmail($template) {
$config = Kohana::config('config.email_admin_only');
$config = Kohana::$config->load('config')->email_admin_only;
if (is_null($config) OR ! is_array($config) OR empty($config[$template]))
return FALSE;
@ -138,7 +131,7 @@ abstract class lnApp_Config extends Kohana_Config {
}
public static function theme() {
return Kohana::config('config.theme');
return Kohana::$config->load('config')->theme;
}
}
?>

View File

@ -52,7 +52,7 @@ abstract class lnApp_Controller_Default extends Controller {
*/
protected function _auth_required() {
// If our global configurable is disabled, then continue
if (! Kohana::Config('config.method_security'))
if (! Kohana::$config->load('config')->method_security)
return FALSE;
return (($this->auth_required !== FALSE && Auth::instance()->logged_in() === FALSE) ||
@ -71,11 +71,11 @@ abstract class lnApp_Controller_Default extends Controller {
// For no AJAX/JSON requests, display an access page
} elseif (Auth::instance()->logged_in(NULL,get_class($this).'|'.__METHOD__)) {
Request::current()->redirect('login/noaccess');
HTTP::redirect('login/noaccess');
} else {
Session::instance()->set('afterlogin',Request::detect_uri());
Request::current()->redirect($this->noauth_redirect);
HTTP::redirect($this->noauth_redirect);
}
}
}
@ -84,7 +84,7 @@ abstract class lnApp_Controller_Default extends Controller {
parent::after();
// Generate and check the ETag for this file
$this->response->check_cache(NULL,$this->request);
$this->check_cache(sha1($this->response->body()));
}
}
?>

View File

@ -0,0 +1,70 @@
<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides login capability
*
* @package lnApp
* @subpackage Page/Login
* @category Controllers
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
* @also [logout]
*/
class lnApp_Controller_Login extends Controller_TemplateDefault {
protected $auth_required = FALSE;
public function action_index() {
// If user already signed-in
if (Auth::instance()->logged_in()!= 0) {
// Redirect to the user account
HTTP::redirect('user/welcome/index');
}
// If there is a post and $_POST is not empty
if ($_POST) {
// Store our details in a session key
Session::instance()->set(Kohana::$config->load('auth')->session_key,$_POST['username']);
Session::instance()->set('password',$_POST['password']);
// If the post data validates using the rules setup in the user model
if (Auth::instance()->login($_POST['username'],$_POST['password'])) {
// Redirect to the user account
if ($redir = Session::instance()->get('afterlogin')) {
Session::instance()->delete('afterlogin');
HTTP::redirect($redir);
} else
HTTP::redirect('user/welcome/index');
} else {
SystemMessage::add(array(
'title'=>_('Invalid username or password'),
'type'=>'error',
'body'=>_('The username or password was invalid.')
));
}
}
Block::add(array(
'title'=>_('Login to server'),
'body'=>View::factory('login'),
'style'=>array('css/login.css'=>'screen'),
));
Script::add(array('type'=>'stdin','data'=>'
$(document).ready(function() {
$("#ajxbody").click(function() {$("#ajBODY").load("'.$this->request->uri().'/"); return false;});
});'
));
}
public function action_noaccess() {
SystemMessage::add(array(
'title'=>_('No access to requested resource'),
'type'=>'error',
'body'=>_('You do not have access to the requested resource, please contact your administrator.')
));
}
}
?>

View File

@ -19,10 +19,10 @@ class lnApp_Controller_Logout extends Controller {
Auth::instance()->logout();
$ao->log('Logged Out');
Request::current()->redirect('login');
HTTP::redirect('login');
}
Request::current()->redirect('welcome/index');
HTTP::redirect('welcome/index');
}
}
?>

View File

@ -52,7 +52,8 @@ abstract class lnApp_Controller_Media extends Controller {
}
// Generate and check the ETag for this file
$this->response->check_cache(NULL,$this->request);
if (Kohana::$environment === Kohana::PRODUCTION OR Kohana::$config->load('debug')->etag)
$this->check_cache(sha1($this->response->body()));
// Set the proper headers to allow caching
$this->response->headers('Content-Type',File::mime_by_ext($ext));

View File

@ -61,7 +61,7 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
*/
protected function _auth_required() {
// If our global configurable is disabled, then continue
if (! Kohana::Config('config.method_security'))
if (! Kohana::$config->load('config')->method_security)
return FALSE;
return (($this->auth_required !== FALSE && Auth::instance()->logged_in(NULL,get_class($this).'|'.__METHOD__) === FALSE) ||
@ -83,7 +83,7 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
}
// Actions that start with ajax, should only be ajax
if (! Kohana::Config('debug.ajax') AND preg_match('/^ajax/',Request::current()->action()) AND ! Request::current()->is_ajax())
if (! Kohana::$config->load('debug')->ajax AND preg_match('/^ajax/',Request::current()->action()) AND ! Request::current()->is_ajax())
die();
parent::before();
@ -108,11 +108,11 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
echo _('You dont have enough permissions.');
die();
} else
Request::current()->redirect('login/noaccess');
HTTP::redirect('login/noaccess');
} else {
Session::instance()->set('afterlogin',Request::detect_uri());
Request::current()->redirect($this->noauth_redirect);
HTTP::redirect($this->noauth_redirect);
}
}
@ -123,7 +123,7 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
}
// Bind our template meta variable
$this->meta = new meta;
$this->meta = new Meta;
View::bind_global('meta',$this->meta);
// Add our logo
@ -159,10 +159,10 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
if ($this->auto_render) {
// Application Title
if ($mo=ORM::factory('module',array('name'=>Request::current()->controller())) AND $mo->loaded())
$this->meta->title = sprintf('%s: %s',Kohana::Config('config.appname'),$mo->display('name'));
if ($mo=ORM::factory('Module',array('name'=>Request::current()->controller())) AND $mo->loaded())
$this->meta->title = sprintf('%s: %s',Kohana::$config->load('config')->appname,$mo->display('name'));
else
$this->meta->title = Kohana::Config('config.appname');
$this->meta->title = Kohana::$config->load('config')->appname;
$this->template->title = '';
// Language
@ -196,7 +196,7 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
$this->response->bodyadd(Style::factory());
// Since we are ajax, we should re-render the breadcrumb
Session::instance()->set('breadcrumb',(string)Breadcrumb::factory());
Session::instance()->set('breadcrumb',(string)BreadCrumb::factory());
$this->response->bodyadd(Script::add(array('type'=>'stdin','data'=>'$().ready($("#ajCONTROL").load("'.URL::site('welcome/breadcrumb').'",null,function(x,s,r) {}));')));
// In case there any javascript for this render.
@ -209,8 +209,8 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
parent::after();
// Generate and check the ETag for this file
if (Kohana::$environment === Kohana::PRODUCTION)
$this->response->check_cache(NULL,$this->request);
if (Kohana::$environment === Kohana::PRODUCTION OR Kohana::$config->load('debug')->etag)
$this->check_cache(sha1($this->response->body()));
}
/**
@ -258,15 +258,17 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
public function viewpath($plugin='') {
$request = Request::current();
$path = '';
$path .= $request->controller();
$path = $request->controller();
if ($request->directory())
$path .= ($path ? '/' : '').$request->directory();
if ($plugin)
$path .= ($path ? '/' : '').$plugin;
$path .= ($path ? '/' : '').$request->action();;
return $path;
$path .= ($path ? '/' : '').$request->action();
return strtolower($path);
}
}
?>

Some files were not shown because too many files have changed in this diff Show More