1
|
|
|
<?php namespace Anomaly\Streams\Platform\Assignment\Command; |
2
|
|
|
|
3
|
|
|
use Anomaly\Streams\Platform\Assignment\AssignmentSchema; |
4
|
|
|
use Anomaly\Streams\Platform\Assignment\Contract\AssignmentInterface; |
5
|
|
|
use Anomaly\Streams\Platform\Assignment\Contract\AssignmentRepositoryInterface; |
6
|
|
|
use Illuminate\Contracts\Bus\SelfHandling; |
7
|
|
|
|
8
|
|
|
/** |
9
|
|
|
* Class BackupAssignmentData |
10
|
|
|
* |
11
|
|
|
* @link http://anomaly.is/streams-platform |
12
|
|
|
* @author AnomalyLabs, Inc. <[email protected]> |
13
|
|
|
* @author Ryan Thompson <[email protected]> |
14
|
|
|
* @package Anomaly\Streams\Platform\Assignment\Command |
15
|
|
|
*/ |
16
|
|
View Code Duplication |
class BackupAssignmentData implements SelfHandling |
|
|
|
|
17
|
|
|
{ |
18
|
|
|
|
19
|
|
|
/** |
20
|
|
|
* The assignment interface. |
21
|
|
|
* |
22
|
|
|
* @var AssignmentInterface |
23
|
|
|
*/ |
24
|
|
|
protected $assignment; |
25
|
|
|
|
26
|
|
|
/** |
27
|
|
|
* Create a new BackupAssignmentData instance. |
28
|
|
|
* |
29
|
|
|
* @param AssignmentInterface $assignment |
30
|
|
|
*/ |
31
|
|
|
public function __construct(AssignmentInterface $assignment) |
32
|
|
|
{ |
33
|
|
|
$this->assignment = $assignment; |
34
|
|
|
} |
35
|
|
|
|
36
|
|
|
/** |
37
|
|
|
* Handle the command. |
38
|
|
|
* |
39
|
|
|
* @param AssignmentSchema $schema |
40
|
|
|
*/ |
41
|
|
|
public function handle(AssignmentSchema $schema, AssignmentRepositoryInterface $assignments) |
42
|
|
|
{ |
43
|
|
|
$stream = $this->assignment->getStream(); |
44
|
|
|
|
45
|
|
|
/* @var AssignmentInterface $assignment */ |
46
|
|
|
$assignment = $assignments->find($this->assignment->getId()); |
47
|
|
|
|
48
|
|
|
// If nothing is different then skip it. |
49
|
|
|
if ($assignment->isTranslatable() == $this->assignment->isTranslatable()) { |
50
|
|
|
return; |
51
|
|
|
} |
52
|
|
|
|
53
|
|
|
/** |
54
|
|
|
* If it's NOW translatable then |
55
|
|
|
* back it up from the main table. |
56
|
|
|
*/ |
57
|
|
|
if ($this->assignment->isTranslatable()) { |
58
|
|
|
$schema->backupColumn($stream->getEntryTableName(), $assignment->getFieldType(true)); |
59
|
|
|
} |
60
|
|
|
|
61
|
|
|
/** |
62
|
|
|
* If it's NOT translatable then back |
63
|
|
|
* it up from the translations table. |
64
|
|
|
*/ |
65
|
|
|
if (!$this->assignment->isTranslatable()) { |
66
|
|
|
$schema->backupColumn($stream->getEntryTranslationsTableName(), $assignment->getFieldType(true)); |
67
|
|
|
} |
68
|
|
|
} |
69
|
|
|
} |
70
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.