Exemplo n.º 1
0
 protected function processUploadReuse($itemTreeBounds, $itemTreeBoundsReused, $reusedGroupId)
 {
     $groupId = $this->groupId;
     $userId = $this->userId;
     $clearingDecisions = $this->clearingDao->getFileClearingsFolder($itemTreeBoundsReused, $reusedGroupId);
     $currenlyVisibleClearingDecisions = $this->clearingDao->getFileClearingsFolder($itemTreeBounds, $groupId);
     $currenlyVisibleClearingDecisionsById = $this->mapByClearingId($currenlyVisibleClearingDecisions);
     $clearingDecisionsById = $this->mapByClearingId($clearingDecisions);
     $clearingDecisionsToImport = array_diff_key($clearingDecisionsById, $currenlyVisibleClearingDecisionsById);
     $clearingDecisionToImportByFileId = $this->mapByFileId($clearingDecisionsToImport);
     $uploadDao = $this->uploadDao;
     /** @var Item[] $containedItems */
     $containedItems = ArrayOperation::callChunked(function ($fileIds) use($itemTreeBounds, $uploadDao) {
         return $uploadDao->getContainedItems($itemTreeBounds, "pfile_fk = ANY(\$1)", array('{' . implode(', ', $fileIds) . '}'));
     }, array_keys($clearingDecisionToImportByFileId), 100);
     foreach ($containedItems as $item) {
         $fileId = $item->getFileId();
         if (array_key_exists($fileId, $clearingDecisionToImportByFileId)) {
             $this->createCopyOfClearingDecision($item->getId(), $userId, $groupId, $clearingDecisionToImportByFileId[$fileId]);
         } else {
             throw new \Exception("bad internal state");
         }
         $this->heartbeat(1);
     }
     return true;
 }