public function markDuplicateWithMetaData(VenueModel $duplicateVenue, VenueModel $originalVenue, VenueEditMetaDataModel $venueEditMetaDataModel) { global $DB; if ($duplicateVenue->getId() == $originalVenue->getId()) { return; } try { $DB->beginTransaction(); $duplicateVenue->setIsDeleted(true); $duplicateVenue->setIsDuplicateOfId($originalVenue->getId()); $this->venueDBAccess->update($duplicateVenue, array('is_deleted', 'is_duplicate_of_id'), $venueEditMetaDataModel); // Move any Events $eventEditMetaData = new EventEditMetaDataModel(); $eventEditMetaData->setUserAccount($venueEditMetaDataModel->getUserAccount()); $eventRepoBuilder = new EventRepositoryBuilder(); $eventRepoBuilder->setVenue($duplicateVenue); $eventDBAccess = new EventDBAccess($DB, new \TimeSource()); foreach ($eventRepoBuilder->fetchAll() as $event) { $event->setVenueId($originalVenue->getId()); $eventDBAccess->update($event, array('venue_id'), $eventEditMetaData); } $DB->commit(); } catch (Exception $e) { $DB->rollBack(); } }