New upstream version 0.6.27
This commit is contained in:
@@ -1,4 +1,12 @@
|
||||
<?php defined('SYSPATH') OR die('No direct access allowed.');
|
||||
<?php
|
||||
|
||||
// phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
defined('SYSPATH') or die('No direct access allowed.');
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
// phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
|
||||
|
||||
|
||||
/**
|
||||
* Object Relational Mapping (ORM) "tree" extension. Allows ORM objects to act
|
||||
* as trees, with parents and children.
|
||||
@@ -10,67 +18,58 @@
|
||||
* @copyright (c) 2007-2008 Kohana Team
|
||||
* @license http://kohanaphp.com/license.html
|
||||
*/
|
||||
class ORM_Tree_Core extends ORM {
|
||||
class ORM_Tree_Core extends ORM
|
||||
{
|
||||
// Name of the child
|
||||
protected $ORM_Tree_children;
|
||||
|
||||
// Name of the child
|
||||
protected $ORM_Tree_children;
|
||||
// Parent keyword name
|
||||
protected $ORM_Tree_parent_key = 'parent_id';
|
||||
|
||||
// Parent keyword name
|
||||
protected $ORM_Tree_parent_key = 'parent_id';
|
||||
/**
|
||||
* Overload ORM::__get to support "parent" and "children" properties.
|
||||
*
|
||||
* @param string column name
|
||||
* @return mixed
|
||||
*/
|
||||
public function __get($column)
|
||||
{
|
||||
if ($column === 'parent') {
|
||||
if (empty($this->related[$column])) {
|
||||
// Load child model
|
||||
$model = ORM::factory(inflector::singular($this->ORM_Tree_children));
|
||||
|
||||
/**
|
||||
* Overload ORM::__get to support "parent" and "children" properties.
|
||||
*
|
||||
* @param string column name
|
||||
* @return mixed
|
||||
*/
|
||||
public function __get($column)
|
||||
{
|
||||
if ($column === 'parent')
|
||||
{
|
||||
if (empty($this->related[$column]))
|
||||
{
|
||||
// Load child model
|
||||
$model = ORM::factory(inflector::singular($this->ORM_Tree_children));
|
||||
if (array_key_exists($this->ORM_Tree_parent_key, $this->object)) {
|
||||
// Find children of this parent
|
||||
$model->where($model->primary_key, $this->object[$this->ORM_Tree_parent_key])->find();
|
||||
}
|
||||
|
||||
if (array_key_exists($this->ORM_Tree_parent_key, $this->object))
|
||||
{
|
||||
// Find children of this parent
|
||||
$model->where($model->primary_key, $this->object[$this->ORM_Tree_parent_key])->find();
|
||||
}
|
||||
$this->related[$column] = $model;
|
||||
}
|
||||
|
||||
$this->related[$column] = $model;
|
||||
}
|
||||
return $this->related[$column];
|
||||
} elseif ($column === 'children') {
|
||||
if (empty($this->related[$column])) {
|
||||
$model = ORM::factory(inflector::singular($this->ORM_Tree_children));
|
||||
|
||||
return $this->related[$column];
|
||||
}
|
||||
elseif ($column === 'children')
|
||||
{
|
||||
if (empty($this->related[$column]))
|
||||
{
|
||||
$model = ORM::factory(inflector::singular($this->ORM_Tree_children));
|
||||
if ($this->ORM_Tree_children === $this->table_name) {
|
||||
// Load children within this table
|
||||
$this->related[$column] = $model
|
||||
->where($this->ORM_Tree_parent_key, $this->object[$this->primary_key])
|
||||
->find_all();
|
||||
} else {
|
||||
// Find first selection of children
|
||||
$this->related[$column] = $model
|
||||
->where($this->foreign_key(), $this->object[$this->primary_key])
|
||||
->where($this->ORM_Tree_parent_key, null)
|
||||
->find_all();
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->ORM_Tree_children === $this->table_name)
|
||||
{
|
||||
// Load children within this table
|
||||
$this->related[$column] = $model
|
||||
->where($this->ORM_Tree_parent_key, $this->object[$this->primary_key])
|
||||
->find_all();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Find first selection of children
|
||||
$this->related[$column] = $model
|
||||
->where($this->foreign_key(), $this->object[$this->primary_key])
|
||||
->where($this->ORM_Tree_parent_key, NULL)
|
||||
->find_all();
|
||||
}
|
||||
}
|
||||
return $this->related[$column];
|
||||
}
|
||||
|
||||
return $this->related[$column];
|
||||
}
|
||||
|
||||
return parent::__get($column);
|
||||
}
|
||||
|
||||
} // End ORM Tree
|
||||
return parent::__get($column);
|
||||
}
|
||||
}
|
||||
// End ORM Tree
|
||||
|
||||
Reference in New Issue
Block a user