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

@@ -43,7 +43,7 @@ class Kohana_Cron
*/
protected static function _lock()
{
$config = Kohana::config('cron');
$config = Kohana::$config->load('cron');
$result = FALSE;
if (file_exists($config->lock) AND ($stat = @stat($config->lock)) AND time() - $config->window < $stat['mtime'])
@@ -80,7 +80,7 @@ class Kohana_Cron
*/
protected static function _save()
{
Kohana::cache("Cron::run()", Cron::$_times, Kohana::config('cron')->window * 2);
Kohana::cache("Cron::run()", Cron::$_times, Kohana::$config->load('cron')->window * 2);
}
/**
@@ -88,7 +88,7 @@ class Kohana_Cron
*/
protected static function _unlock()
{
return @unlink(Kohana::config('cron')->lock);
return @unlink(Kohana::$config->load('cron')->lock);
}
/**
@@ -107,7 +107,7 @@ class Kohana_Cron
Cron::_load();
$now = time();
$threshold = $now - Kohana::config('cron')->window;
$threshold = $now - Kohana::$config->load('cron')->window;
foreach (Cron::$_jobs as $name => $job)
{

View File

@@ -31,7 +31,7 @@ class Email {
}
// Load default configuration
($config === NULL) and $config = Kohana::config('email');
($config === NULL) and $config = Kohana::$config->load('email');
switch ($config['driver'])
{
@@ -142,4 +142,4 @@ class Email {
return Email::$mail->send($message);
}
} // End email
} // End email

View File

@@ -183,6 +183,15 @@ class Kohana_ORM extends Model implements serializable {
*/
protected $_table_names_plural = TRUE;
// Suppress ORMs inclusion of <table_name>.*
protected $_disable_wild_select = FALSE;
// Suppress ORMs inclusion of <table_name>. to column joins
protected $_disable_join_table_name = FALSE;
// Suppress ORMs use of limit
protected $_disable_limit = FALSE;
/**
* Model configuration, reload on wakeup?
* @var bool
@@ -268,7 +277,7 @@ class Kohana_ORM extends Model implements serializable {
else
{
// Passing the primary key
$this->where($this->_object_name.'.'.$this->_primary_key, '=', $id)->find();
$this->where(($this->_disable_join_table_name ? '' : $this->_object_name.'.').$this->_primary_key, '=', $id)->find();
}
}
elseif ( ! empty($this->_cast_data))
@@ -351,6 +360,7 @@ class Kohana_ORM extends Model implements serializable {
}
$defaults['foreign_key'] = $this->_object_name.$this->_foreign_key_suffix;
$defaults['far_key'] = Inflector::singular($alias).$this->_foreign_key_suffix;
$init['_has_one'][$alias] = array_merge($defaults, $details);
}
@@ -359,7 +369,7 @@ class Kohana_ORM extends Model implements serializable {
{
if ( ! isset($details['model']))
{
$defaults['model'] = str_replace(' ', '_', ucwords(str_replace('_', ' ', Inflector::singular($alias))));
$defaults['model'] = str_replace(' ', '_', ucwords(str_replace('_', ' ', ($this->_model_names_plural ? Inflector::singular($alias) : $alias))));
}
$defaults['foreign_key'] = $this->_object_name.$this->_foreign_key_suffix;
@@ -626,7 +636,7 @@ class Kohana_ORM extends Model implements serializable {
$model = $this->_related($column);
// Use this model's column and foreign model's primary key
$col = $model->_object_name.'.'.$model->_primary_key;
$col = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$model->_primary_key;
$val = $this->_object[$this->_belongs_to[$column]['foreign_key']];
// Make sure we don't run WHERE "AUTO_INCREMENT column" = NULL queries. This would
@@ -643,9 +653,23 @@ class Kohana_ORM extends Model implements serializable {
{
$model = $this->_related($column);
// Use this model's primary key value and foreign model's column
$col = $model->_object_name.'.'.$this->_has_one[$column]['foreign_key'];
$val = $this->pk();
if (! is_array($this->_has_one[$column]['foreign_key']))
{
// Use this model's primary key value and foreign model's column
$col = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$this->_has_one[$column]['foreign_key'];
$val = $this->_object[$this->_has_one[$column]['far_key']];
}
else
{
foreach ($this->_has_one[$column]['foreign_key'] as $fk)
{
// Simple has_many relationship, search where target model's foreign key is this model's primary key
$col = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$fk;
$val = $this->_object[$fk];
$model = $model->where($col, '=', $val);
}
}
$model->where($col, '=', $val)->find();
@@ -655,29 +679,53 @@ class Kohana_ORM extends Model implements serializable {
{
$model = ORM::factory($this->_has_many[$column]['model']);
if (isset($this->_has_many[$column]['through']))
if (! is_array($this->_has_many[$column]['foreign_key']))
{
// Grab has_many "through" relationship table
$through = $this->_has_many[$column]['through'];
if (isset($this->_has_many[$column]['through']))
{
// Grab has_many "through" relationship table
$through = $this->_has_many[$column]['through'];
// Join on through model's target foreign key (far_key) and target model's primary key
$join_col1 = $through.'.'.$this->_has_many[$column]['far_key'];
$join_col2 = $model->_object_name.'.'.$model->_primary_key;
// Join on through model's target foreign key (far_key) and target model's primary key
$join_col1 = ($this->_disable_join_table_name ? '' : $through.'.').$this->_has_many[$column]['far_key'];
$join_col2 = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$model->_primary_key;
$model->join($through)->on($join_col1, '=', $join_col2);
$model->join($through)->on($join_col1, '=', $join_col2)
->on(($this->_disable_join_table_name ? '' : $through.'.').'site_id', '=', ($this->_disable_join_table_name ? '' : $model->_object_name.'.').'site_id');
// Through table's source foreign key (foreign_key) should be this model's primary key
$col = $through.'.'.$this->_has_many[$column]['foreign_key'];
$val = $this->pk();
// Through table's source foreign key (foreign_key) should be this model's primary key
$col = ($this->_disable_join_table_name ? '' : $through.'.').$this->_has_many[$column]['foreign_key'];
$val = $this->pk();
}
else
{
// Simple has_many relationship, search where target model's foreign key is this model's primary key
$col = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$this->_has_many[$column]['foreign_key'];
$val = $this->_object[$this->_has_many[$column]['far_key']];
}
return $model->where($col, '=', $val);
}
else
{
// Simple has_many relationship, search where target model's foreign key is this model's primary key
$col = $model->_object_name.'.'.$this->_has_many[$column]['foreign_key'];
$val = $this->pk();
}
foreach ($this->_has_many[$column]['foreign_key'] as $mk => $fk)
{
if (isset($this->_has_many[$column]['through']))
{
throw new Kohana_Exception('This code hasnt been written yet!');
}
else
{
// Simple has_many relationship, search where target model's foreign key is this model's primary key
$col = ($this->_disable_join_table_name ? '' : $model->_object_name.'.').$fk;
$val = $this->_object[$mk];
}
return $model->where($col, '=', $val);
$model = $model->where($col, '=', $val);
}
return $model;
}
}
else
{
@@ -1031,14 +1079,15 @@ class Kohana_ORM extends Model implements serializable {
{
$this->_db_builder->from(array($this->_table_name, $this->_object_name));
if ($multiple === FALSE)
if ($multiple === FALSE AND ! $this->_disable_limit)
{
// Only fetch 1 record
$this->_db_builder->limit(1);
}
// Select all columns by default
$this->_db_builder->select_array($this->_build_select());
if (! $this->_disable_wild_select)
$this->_db_builder->select_array($this->_build_select());
if ( ! isset($this->_db_applied['order_by']) AND ! empty($this->_sorting))
{
@@ -1047,7 +1096,7 @@ class Kohana_ORM extends Model implements serializable {
if (strpos($column, '.') === FALSE)
{
// Sorting column for use in JOINs
$column = $this->_object_name.'.'.$column;
$column = ($this->_disable_join_table_name ? '' : $this->_object_name.'.').$column;
}
$this->_db_builder->order_by($column, $direction);
@@ -1165,9 +1214,10 @@ class Kohana_ORM extends Model implements serializable {
* @param string $value The value to filter
* @return string
*/
protected function run_filter($field, $value)
protected function run_filter($field, $value, $filters=NULL)
{
$filters = $this->filters();
if (is_null($filters))
$filters = $this->filters();
// Get the filters for this column
$wildcards = empty($filters[TRUE]) ? array() : $filters[TRUE];

View File

@@ -111,7 +111,7 @@ class Kohana_Pagination {
public function config_group($group = 'default')
{
// Load the pagination config file
$config_file = Kohana::config('pagination');
$config_file = Kohana::$config->load('pagination');
// Initialize the $config array
$config['group'] = (string) $group;
@@ -332,4 +332,4 @@ class Kohana_Pagination {
}
}
} // End Pagination
} // End Pagination

View File

@@ -15,13 +15,15 @@ $application = 'application';
*/
$modules = 'modules';
$sysmodules = 'includes/kohana/modules';
/**
* The directory in which the Kohana resources are located. The system
* directory must contain the classes/kohana.php file.
*
* @link http://kohanaframework.org/guide/about.install#system
*/
$system = 'system';
$system = 'includes/kohana/system';
/**
* The default extension of resource files. If you change this, all resources
@@ -74,6 +76,12 @@ if ( ! is_dir($modules) AND is_dir(DOCROOT.$modules))
$modules = DOCROOT.$modules;
}
// Make the system relative to the docroot, for symlink'd index.php
if ( ! is_dir($sysmodules) AND is_dir(DOCROOT.$sysmodules))
{
$sysmodules = DOCROOT.$sysmodules;
}
// Make the system relative to the docroot
if ( ! is_dir($system) AND is_dir(DOCROOT.$system))
{
@@ -83,10 +91,11 @@ if ( ! is_dir($system) AND is_dir(DOCROOT.$system))
// Define the absolute paths for configured directories
define('APPPATH', realpath($application).DIRECTORY_SEPARATOR);
define('MODPATH', realpath($modules).DIRECTORY_SEPARATOR);
define('SMDPATH', realpath($sysmodules).DIRECTORY_SEPARATOR);
define('SYSPATH', realpath($system).DIRECTORY_SEPARATOR);
// Clean up the configuration vars
unset($application, $modules, $system);
unset($application, $modules, $sysmodules, $system);
/**
* Define the start time of the application, used for profiling.
@@ -104,6 +113,8 @@ if ( ! defined('KOHANA_START_MEMORY'))
define('KOHANA_START_MEMORY', memory_get_usage());
}
define('PHPUNITTEST','192.168.242.3');
// Bootstrap the application
require APPPATH.'bootstrap'.EXT;
@@ -122,4 +133,4 @@ if (($ob_len = ob_get_length()) !== FALSE)
}
// Enable the unittest module
Kohana::modules(Kohana::modules() + array('unittest' => MODPATH.'unittest'));
Kohana::modules(Kohana::modules() + array('unittest' => SMDPATH.'unittest'));

View File

@@ -252,13 +252,17 @@ class Kohana_Debug {
{
$file = 'APPPATH'.DIRECTORY_SEPARATOR.substr($file, strlen(APPPATH));
}
elseif (strpos($file, MODPATH) === 0)
{
$file = 'MODPATH'.DIRECTORY_SEPARATOR.substr($file, strlen(MODPATH));
}
elseif (strpos($file, SYSPATH) === 0)
{
$file = 'SYSPATH'.DIRECTORY_SEPARATOR.substr($file, strlen(SYSPATH));
}
elseif (strpos($file, MODPATH) === 0)
elseif (strpos($file, SMDPATH) === 0)
{
$file = 'MODPATH'.DIRECTORY_SEPARATOR.substr($file, strlen(MODPATH));
$file = 'SMDPATH'.DIRECTORY_SEPARATOR.substr($file, strlen(SMDPATH));
}
elseif (strpos($file, DOCROOT) === 0)
{

View File

@@ -64,7 +64,7 @@ class Kohana_Request_Client_Curl extends Request_Client_External {
$this->_options[CURLOPT_HEADER] = FALSE;
// Apply any additional options set to
$options += $this->_options;
$options = Arr::merge($options, $this->_options);
$uri = $request->uri();
@@ -132,4 +132,4 @@ class Kohana_Request_Client_Curl extends Request_Client_External {
return $options;
}
} // End Kohana_Request_Client_Curl
} // End Kohana_Request_Client_Curl

View File

@@ -250,7 +250,7 @@ class Kohana_CoreTest extends Unittest_TestCase
{
return array(
array(array('unittest' => MODPATH.'fo0bar')),
array(array('unittest' => MODPATH.'unittest', 'fo0bar' => MODPATH.'fo0bar')),
array(array('unittest' => SMDPATH.'unittest', 'fo0bar' => MODPATH.'fo0bar')),
);
}
@@ -292,7 +292,7 @@ class Kohana_CoreTest extends Unittest_TestCase
{
return array(
array(array(), array()),
array(array('unittest' => MODPATH.'unittest'), array('unittest' => $this->dirSeparator(MODPATH.'unittest/'))),
array(array('unittest' => SMDPATH.'unittest'), array('unittest' => $this->dirSeparator(SMDPATH.'unittest/'))),
);
}

View File

@@ -59,8 +59,8 @@ class Kohana_DebugTest extends Unittest_TestCase
'SYSPATH'.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'kohana.php'
),
array(
MODPATH.$this->dirSeparator('unittest/classes/kohana/unittest/runner').EXT,
$this->dirSeparator('MODPATH/unittest/classes/kohana/unittest/runner').EXT
SMDPATH.$this->dirSeparator('unittest/classes/kohana/unittest/runner').EXT,
$this->dirSeparator('SMDPATH/unittest/classes/kohana/unittest/runner').EXT
),
);
}