/** * @see {Opus_Model_Plugin_Interface::postStore} */ public function postStoreInternal(Opus_Model_AbstractDb $model) { $log = Zend_Registry::get('Zend_Log'); $log->debug('Opus_Document_Plugin_SequenceNumber::postStore() with id ' . $model->getId()); if (!$model instanceof Opus_Document) { $message = 'Model is not an Opus_Document. Aborting...'; $log->err($message); throw new Opus_Document_Exception($message); } if ($model->getServerState() !== 'published') { $message = 'Skip Opus_Documents not in ServerState *published* ...'; $log->info($message); return; } $config = Zend_Registry::get('Zend_Config'); if (!isset($config, $config->sequence->identifier_type)) { $log->debug('Sequence auto creation is not configured. skipping...'); return; } $sequence_type = trim($config->sequence->identifier_type); $sequence_ids = array(); foreach ($model->getIdentifier() as $id) { if ($id->getType() === $sequence_type) { $sequence_ids[] = trim($id->getValue()); } } if (count($sequence_ids) > 0) { $message = "Sequence IDs for type '{$sequence_type}' already exists: " . implode(",", $sequence_ids); $log->debug($message); return; } // Create and initialize new sequence number... $next_sequence_number = $this->_fetchNextSequenceNumber($sequence_type); $model->addIdentifier()->setType($sequence_type)->setValue($next_sequence_number); return; }