/ JavliNet, s.r.o. */ class Doctrine_Template_Archivable extends Doctrine_Template { protected $_options = array('name' => 'archived', 'type' => 'integer', 'length' => 1, 'options' => array('default' => 0, 'notnull' => true, ), 'no_archive' => 0 ); public function __construct(array $options = array()) { $this->_options = Doctrine_Lib::arrayDeepMerge($this->_options, $options); } /** * Set table definition for Archivable behavior * * @return void */ public function setTableDefinition() { $this->hasColumn($this->_options['name'], $this->_options['type'], $this->_options['length'], $this->_options['options']); $this->addListener(new Doctrine_Template_Listener_Archivable($this->_options)); } /** * @nodoc */ public function getOption($name) { return $this->_options[$name]; } /* * Nastavi pozadovanou uroven archivu zaznamu */ public function archive($level = 1) { $name = $this->_options['name']; $record = $this->getInvoker(); $record->$name = $level; $record->save(); return true; } /* * Odnastavi priznak archivu zaznamu */ public function unarchive() { $name = $this->_options['name']; $record = $this->getInvoker(); $record->$name = $this->_options['no_archive']; $record->save(); return true; } } ?>