/** * Initialize the fields and add MPTT field defaults if not specified * @return void */ protected function __construct() { // Initialize sprig (this will call _init() in the model) parent::__construct(); // Check we don't have a composite primary Key if (is_array($this->pk())) { throw new Sprig_Exception('Sprig_MPTT does not support composite primary keys'); } // Check Sprig MPTT fields exist, if not add defaults foreach ($this->_fields as $name => $field) { // Check the field extends Sprig_Field_MPTT if ($field instanceof Sprig_Field_MPTT) { if ($field instanceof Sprig_Field_MPTT_Left) { $this->left_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Right) { $this->right_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Level) { $this->level_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Scope) { $this->scope_column = $name; } } elseif ($field instanceof Sprig_Field_MPTT_Related and !array_key_exists($name, $this->related) or !$field instanceof Sprig_Field_MPTT_Related and array_key_exists($name, $this->related)) { unset($this->_fields[$name]); } } // If any of the MPTT fields havn't been defined, create defaults if (is_null($this->left_column)) { $this->left_column = 'lft'; $this->_fields['lft'] = new Sprig_Field_MPTT_Left(array('column' => 'lft')); } if (is_null($this->right_column)) { $this->right_column = 'rgt'; $this->_fields['rgt'] = new Sprig_Field_MPTT_Right(array('column' => 'rgt')); } if (is_null($this->level_column)) { $this->level_column = 'lvl'; $this->_fields['lvl'] = new Sprig_Field_MPTT_Level(array('column' => 'lvl')); } if (is_null($this->scope_column)) { $this->scope_column = 'scope'; $this->_fields['scope'] = new Sprig_Field_MPTT_Scope(array('column' => 'scope')); } $suffixes = array('root', 'parent', 'ancestors', 'children', 'first_child', 'last_child', 'descendants', 'siblings', 'leaves'); while (list($field) = each($this->related) and list(, $suffix) = each($suffixes)) { if (!array_key_exists($field, $this->_fields)) { $sprig_field = 'Sprig_Field_MPTT_' . ucwords($suffix); $this->_fields[$field] = new $sprig_field(array('model' => $this->_model)); } } // Check we have default values for all (MPTT) fields (otherwise we cause errors) foreach ($this->_fields as $name => $field) { if ($field instanceof Sprig_Field_MPTT and !isset($this->_original[$name])) { $this->_original[$name] = NULL; } } }
/** * Initialize the fields and add MPTT field defaults if not specified * @return void */ protected function __construct() { // Initialize sprig (this will call _init() in the model) parent::__construct(); // Check we don't have a composite primary Key if (is_array($this->pk())) { throw new Sprig_Exception('Sprig_MPTT does not support composite primary keys'); } // Check Sprig MPTT fields exist, if not add defaults foreach ($this->_fields as $name => $field) { // Check the field extends Sprig_Field_MPTT if ($field instanceof Sprig_Field_MPTT) { if ($field instanceof Sprig_Field_MPTT_Left) { $this->left_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Right) { $this->right_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Level) { $this->level_column = $name; } elseif ($field instanceof Sprig_Field_MPTT_Scope) { $this->scope_column = $name; } } } // If any of the MPTT fields havn't been defined, create defaults if (is_null($this->left_column)) { $this->left_column = 'lft'; $this->_fields['lft'] = new Sprig_Field_MPTT_Left(array('column' => 'lft')); } if (is_null($this->right_column)) { $this->right_column = 'rgt'; $this->_fields['rgt'] = new Sprig_Field_MPTT_Right(array('column' => 'rgt')); } if (is_null($this->level_column)) { $this->level_column = 'lvl'; $this->_fields['lvl'] = new Sprig_Field_MPTT_Level(array('column' => 'lvl')); } if (is_null($this->scope_column)) { $this->scope_column = 'scope'; $this->_fields['scope'] = new Sprig_Field_MPTT_Scope(array('column' => 'scope')); } // Check we have default values for all (MPTT) fields (otherwise we cause errors) foreach ($this->_fields as $name => $field) { if ($field instanceof Sprig_Field_MPTT and !isset($this->_original[$name])) { $this->_original[$name] = NULL; } } }
public function __construct($id = NULL) { $this->_columns = Kohana::config($this->_config)->columns; $this->_user_model = Kohana::config($this->_config)->user_model; parent::__construct($id); }