|
1 | 1 | <?php |
2 | 2 |
|
| 3 | +use Illuminate\Database\Capsule\Manager as Capsule; |
| 4 | + |
3 | 5 | class TranslationCreator |
4 | 6 | { |
5 | 7 | public function createTranslation($submissionId, $translationLocale) |
6 | 8 | { |
7 | | - $submissionDao = DAORegistry::getDAO('SubmissionDAO'); |
8 | | - $submission = $submissionDao->getById($submissionId); |
| 9 | + return Capsule::connection()->transaction(function () use ($submissionId, $translationLocale) { |
| 10 | + $submissionDao = DAORegistry::getDAO('SubmissionDAO'); |
| 11 | + $submission = $submissionDao->getById($submissionId); |
9 | 12 |
|
10 | | - $newSubmission = clone $submission; |
11 | | - $newSubmission->setData('id', null); |
12 | | - $newSubmission->setData('locale', $translationLocale); |
13 | | - $newSubmission->setData('isTranslationOf', $submissionId); |
14 | | - $newSubmission->setData('status', STATUS_QUEUED); |
| 13 | + $newSubmission = clone $submission; |
| 14 | + $newSubmission->setData('id', null); |
| 15 | + $newSubmission->setData('locale', $translationLocale); |
| 16 | + $newSubmission->setData('isTranslationOf', $submissionId); |
| 17 | + $newSubmission->setData('status', STATUS_QUEUED); |
15 | 18 |
|
16 | | - $newSubmissionId = $submissionDao->insertObject($newSubmission); |
17 | | - $newSubmission->setData('id', $newSubmissionId); |
| 19 | + $newSubmissionId = $submissionDao->insertObject($newSubmission); |
| 20 | + $newSubmission->setData('id', $newSubmissionId); |
18 | 21 |
|
19 | | - $originalLocale = $submission->getData('locale'); |
| 22 | + $originalLocale = $submission->getData('locale'); |
20 | 23 |
|
21 | | - foreach ($submission->getData('publications') as $publication) { |
22 | | - $newPublicationId = $this->createTranslationPublication($publication, $newSubmissionId, $translationLocale, $originalLocale); |
| 24 | + foreach ($submission->getData('publications') as $publication) { |
| 25 | + $newPublicationId = $this->createTranslationPublication($publication, $newSubmissionId, $translationLocale, $originalLocale); |
23 | 26 |
|
24 | | - if ($publication->getId() == $submission->getData('currentPublicationId')) { |
25 | | - $newSubmission->setData('currentPublicationId', $newPublicationId); |
26 | | - $submissionDao->updateObject($newSubmission); |
| 27 | + if ($publication->getId() == $submission->getData('currentPublicationId')) { |
| 28 | + $newSubmission->setData('currentPublicationId', $newPublicationId); |
| 29 | + $submissionDao->updateObject($newSubmission); |
| 30 | + } |
27 | 31 | } |
28 | | - } |
29 | 32 |
|
30 | | - return $newSubmissionId; |
| 33 | + return $newSubmissionId; |
| 34 | + }); |
31 | 35 | } |
32 | 36 |
|
33 | | - private function createTranslationPublication($publication, $newSubmissionId, $translationLocale, $originalLocale) |
| 37 | + protected function createTranslationPublication($publication, $newSubmissionId, $translationLocale, $originalLocale) |
34 | 38 | { |
35 | 39 | $newPublication = clone $publication; |
36 | 40 | $newPublication->setData('id', null); |
|
0 commit comments