public function __construct($source, $dest, $options = null) { $this->source_class = get_class($source); if (isset($options['class_name'])) { $this->dest_class = $options['class_name']; } else { $this->dest_class = \Inflector::classify($dest); } if (isset($options['foreign_key'])) { $this->foreign_key = $options['foreign_key']; } else { $this->foreign_key = \Inflector::foreign_key($this->source_class); } if ( ! class_exists($this->dest_class)) { $this->dest_class = '\\Model\\'.$this->dest_class; } if ( ! class_exists($this->source_class)) { $this->source_class = '\\Model\\'.$this->source_class; } $this->options = $options; }
public function __construct($source, $dest, $options = null) { $this->source_class = get_class($source); if (isset($options['class_name'])) { $this->dest_class = $options['class_name']; } else { $this->dest_class = \Inflector::classify($dest); } if (isset($options['foreign_key'])) { $this->foreign_key = $options['foreign_key']; } else { $this->foreign_key = \Inflector::foreign_key($this->source_class); } $namespace = (\Request::active() ? ucfirst(\Request::active()->module) : '') . '\\'; if (class_exists($dest = $namespace . 'Model_' . $this->dest_class)) { $this->dest_class = $dest; } if (!class_exists($this->source_class)) { $this->source_class = 'Model_' . $this->source_class; } $this->options = $options; }
public function break_up($objects, &$source) { foreach ($objects as $object) { if (isset($this->options['dependent']) && $this->options['dependent'] == 'destroy') { $object->destroy(); } else { if (!$this->options['through']) { $object->{$this->foreign_key} = null; $object->save(); } else { $through_class = \Inflector::classify($this->options['through']); $fk_1 = \Inflector::foreign_key($this->dest_class); $fk_2 = \Inflector::foreign_key($this->source_class); $k1 = $object->{$object->get_primary_key()}; $k2 = $source->{$source->get_primary_key()}; $through = call_user_func_array(array($through_class, 'find'), array('first', array('where' => array(array($fk_1, '=', $k1), array($fk_2, '=', $k2))))); $through->destroy(); } } } }