コード例 #1
0
 /**
  * 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:
     }
 }