/** * Create new deposits for deposit objects */ function _processNewDepositObjects(&$journal) { // get the object type we'll be dealing with $objectType = $this->_plugin->getSetting($journal->getId(), 'object_type'); // create new deposit objects for any new OJS content $depositDao =& DAORegistry::getDAO('DepositDAO'); $depositObjectDao =& DAORegistry::getDAO('DepositObjectDAO'); $depositObjectDao->createNew($journal->getId(), $objectType); // retrieve all deposit objects that don't belong to a deposit $newObjects =& $depositObjectDao->getNew($journal->getId(), $objectType); switch ($objectType) { case PLN_PLUGIN_DEPOSIT_OBJECT_ARTICLE: // get the new object threshold per deposit and split the objects into arrays of that size $objectThreshold = $this->_plugin->getSetting($journal->getId(), 'object_threshold'); foreach (array_chunk($newObjects->toArray(), $objectThreshold) as $newObject_array) { // only create a deposit for the complete threshold, we'll worry about the remainder another day if (count($newObject_array) == $objectThreshold) { //create a new deposit $newDeposit = new Deposit($this->_plugin->newUUID()); $newDeposit->setJournalId($journal->getId()); $depositDao->insertDeposit($newDeposit); // add each object to the deposit foreach ($newObject_array as $newObject) { $newObject->setDepositId($newDeposit->getId()); $depositObjectDao->updateDepositObject($newObject); } } } break; case PLN_PLUGIN_DEPOSIT_OBJECT_ISSUE: // create a new deposit for reach deposit object while ($newObject =& $newObjects->next()) { $newDeposit = new Deposit($this->_plugin->newUUID()); $newDeposit->setJournalId($journal->getId()); $depositDao->insertDeposit($newDeposit); $newObject->setDepositId($newDeposit->getId()); $depositObjectDao->updateDepositObject($newObject); unset($newObject); } break; default: } }