forked from ProcessMaker/processmaker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCustomizeUiUpdated.php
More file actions
124 lines (110 loc) · 3.79 KB
/
CustomizeUiUpdated.php
File metadata and controls
124 lines (110 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace ProcessMaker\Events;
use Carbon\Carbon;
use Illuminate\Foundation\Events\Dispatchable;
use ProcessMaker\Contracts\SecurityLogEventInterface;
use ProcessMaker\Helpers\ArrayHelper;
use ProcessMaker\Traits\FormatSecurityLogChanges;
class CustomizeUiUpdated implements SecurityLogEventInterface
{
use Dispatchable;
use FormatSecurityLogChanges;
private array $data;
private array $changes;
private array $original;
private bool $reset;
private string $defaultVariables = '[
{"id":"$primary","value":"#0872C2","title":"Primary"},
{"id":"$secondary","value":"#6C757D","title":"Secondary"},
{"id":"$success","value":"#00875A","title":"Success"},
{"id":"$info","value":"#104A75","title":"Info"},
{"id":"$warning","value":"#FFAB00","title":"Warning"},
{"id":"$danger","value":"#E50130","title":"Danger"},
{"id":"$dark","value":"#000000","title":"Dark"},
{"id":"$light","value":"#FFFFFF","title":"Light"}
]';
private string $defaultFont = '{"id":"\'Open Sans\'","title":"Default Font"}';
/**
* Create a new event instance.
*
* @param array $original
* @param array $changes
* @param bool $reset
*
* @return void
*/
public function __construct(array $original, array $changes, $reset = false)
{
if (isset($original['config'])) {
$original = $original['config'];
}
$changes = array_diff_assoc($changes, $original);
$original = array_intersect_key($original, $changes);
$this->original = $original;
$this->changes = $changes;
$this->reset = $reset;
$this->buildData();
}
/**
* Building the data
*/
public function buildData()
{
if (!isset($this->original['variables'])) {
$this->original['variables'] = $this->defaultVariables;
}
if (!isset($this->changes['variables'])) {
$this->changes['variables'] = $this->defaultVariables;
}
if (isset($this->changes['variables']) && isset($this->original['variables'])) {
$varChanges = [];
$varOriginal = [];
foreach ((array) json_decode($this->changes['variables'], true) as $variable) {
$varChanges[$variable['title']] = $variable['value'];
}
foreach ((array) json_decode($this->original['variables'], true) as $variable) {
$varOriginal[$variable['title']] = $variable['value'];
}
$varChanges = array_diff($varChanges, $varOriginal);
$varOriginal = array_intersect_key($varOriginal, $varChanges);
$this->changes['variables'] = $varChanges;
$this->original['variables'] = $varOriginal;
}
// Set a value sansSerifFont
$this->original['sansSerifFont'] = !isset($this->original['sansSerifFont']) ? $this->defaultFont : $this->original['sansSerifFont'];
// Define if the action reset was executed
$actionReset = ($this->reset) ? ['Action' => 'Reset'] : [];
$this->data = array_merge(
[
'name' => [
'label' => 'Customize Ui',
'link' => route('customize-ui.edit'),
],
'last_modified' => Carbon::now(),
],
$actionReset,
ArrayHelper::getArrayDifferencesWithFormat($this->changes, $this->original)
);
}
/**
* Return event data
*/
public function getData(): array
{
return $this->data;
}
/**
* Return event changes
*/
public function getChanges(): array
{
return [];
}
/**
* return event name
*/
public function getEventName(): string
{
return 'CustomizeUiUpdated';
}
}