C:\xampp\htdocs\landing\wp-content\plugins\totalpoll\src\Migrations\Polls\TotalPoll\Transform.php


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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
<?php

namespace TotalPoll\Migrations\Polls\TotalPoll;
defined'ABSPATH' ) && exit();


use 
TotalPoll\Contracts\Migrations\Poll\Transform as TransformContract;
use 
TotalPoll\Migrations\Polls\Templates\LogEntry;
use 
TotalPoll\Migrations\Polls\Templates\Options;
use 
TotalPoll\Migrations\Polls\Templates\Poll;
use 
TotalPoll\Migrations\Polls\Templates\Submission;
use 
TotalPollVendors\TotalCore\Helpers\Arrays;
use 
TotalPollVendors\TotalCore\Helpers\Misc;

/**
 * Transform Poll.
 * @package TotalPoll\Migrations\Polls\TotalPoll
 */
class Transform implements TransformContract {
    
/**
     * Transform poll.
     *
     * @param array $raw
     *
     * @return Poll
     */
    
public function transformPoll$raw ) {
        
// Create template
        
$template = new Poll();

        
// Title
        
$template->setTitle$raw['title'] );

        
$template->setId$raw['id'] );

        
// Question
        
$question = [
            
'uid'      => Misc::generateUid(),
            
'content'  => $raw['question'],
            
'settings' => [
                
'selection' => [
                    
'minimum' => 1,
                    
'maximum' => 1,
                ],
            ],
            
'choices'  => [],
        ];

        if ( ! empty( 
$raw['options']['limitations']['selection']['minimum'] ) ):
            
$question['settings']['selection']['minimum'] = $raw['options']['limitations']['selection']['minimum'];
        endif;

        if ( ! empty( 
$raw['options']['limitations']['selection']['maximum'] ) ):
            
$question['settings']['selection']['maximum'] = $raw['options']['limitations']['selection']['maximum'];
        endif;

        
$mediaTypes = [ 'image''video''audio' ];
        foreach ( 
$raw['choices'] as $choice ):
            if ( 
in_array$choice['content']['type'], $mediaTypes ) ):
                
$choice['content'][ $choice['content']['type'] ]['full']      = $choice['content'][ $choice['content']['type'] ]['url'];
                
$choice['content'][ $choice['content']['type'] ]['thumbnail'] = $choice['content']['thumbnail']['url'];
                if ( ! empty( 
$choice['content']['thumbnail']['id'] ) ):
                    
//@TODO: Check this
                    
$attachment                                               wp_prepare_attachment_for_js$choice['content']['thumbnail']['id'] );
                    
$choice['content'][ $choice['content']['type'] ]['sizes'] = empty( $attachment['sizes'] ) ? [] : $attachment['sizes'];
                endif;
                
$choice['content'][ $choice['content']['type'] ]['html'] = TotalPoll'embed' )->getProviderHtml$choice['content'][ $choice['content']['type'] ]['full'] );
                unset( 
$choice['content'][ $choice['content']['type'] ]['url'], $choice['content']['thumbnail'] );
            endif;

            
$question['choices'][] = [
                
'uid'                      => Misc::generateUid(),
                
'votes'                    => (int) $choice['votes'],
                
'votesOverride'            => (int) $choice['votes'],
                
'visibility'               => ! empty( $choice['content']['visible'] ),
                
'type'                     => $choice['content']['type'],
                
'label'                    => $choice['content']['label'],
                
$choice['content']['type'] => $choice['content'][ $choice['content']['type'] ],
            ];
        endforeach;

        
// Fields
        
if ( ! empty( $raw['options']['fields'] ) ):
            foreach ( 
$raw['options']['fields'] as $field ):

                
$filterRules = [];
                if ( ! empty( 
$field['validations']['filter']['list'] ) ):
                    
$rules explode"\r\n"trim$field['validations']['filter']['list'] ) );
                    foreach ( 
$rules as $index => $rule ):
                        
$rule          ltrim$rule );
                        
$filterRules[] = [
                            
'type'  => isset( $rule[0] ) && $rule[0] === '-' 'deny' 'allow',
                            
'value' => isset( $rule[0] ) && ( $rule[0] === '-' || $rule[0] === '+' ) ? substr$rule) : $rule,
                        ];
                    endforeach;
                endif;

                
$template->addField( [
                    
'uid'          => Misc::generateUid(),
                    
'type'         => $field['type'],
                    
'name'         => sanitize_title_with_dashes$field['name'] ),
                    
'label'        => $field['label']['content'],
                    
'defaultValue' => $field['default'],
                    
'options'      => ! empty( $field['extra']['options'] ) ? $field['extra']['options'] : '',
                    
'attributes'   => [
                        
'multiple' => ! empty( $field['extra']['multiple'] ),
                        
'class'    => ! empty( $field['class'] ) ? $field['class'] : '',
                    ],
                    
'template'     => str_replace(
                        [ 
'%label%''%field%' ],
                        [ 
'{{label}}''{{field}}<div class="totalpoll-form-field-errors">{{errors}}</div>' ],
                        
$field['template']
                    ),
                    
'validations'  => [
                        
'filled' => [ 'enabled' => ! empty( $field['validations']['filled']['enabled'] ) ],
                        
'email'  => [ 'enabled' => ! empty( $field['validations']['email']['enabled'] ) ],
                        
'unique' => [ 'enabled' => ! empty( $field['validations']['unique']['enabled'] ) ],
                        
'filter' => [
                            
'enabled' => ! empty( $field['validations']['filter']['enabled'] ),
                            
'rules'   => $filterRules,
                        ],
                        
'regex'  => [
                            
'enabled'      => ! empty( $field['validations']['regex']['enabled'] ),
                            
'type'         => ! empty( $field['validations']['regex']['type'] ) ? $field['validations']['regex']['type'] : 'match',
                            
'pattern'      => ! empty( $field['validations']['regex']['against'] ) ? $field['validations']['regex']['against'] : '',
                            
'errorMessage' => ! empty( $field['validations']['regex']['message'] ) ? str_replace'%label%''{{label}}'$field['validations']['regex']['message'] ) : '',
                        ],
                    ],
                ] );
            endforeach;
        endif;

        
// Settings
        
if ( ! empty( $raw['options']['limitations']['cookies']['enabled'] ) ):
            
$template->addSettings'vote.frequency.cookies.enabled'true );
            
$template->addSettings'vote.frequency.timeout'absint$raw['options']['limitations']['cookies']['timeout'] ) * 60 );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['ip']['enabled'] ) ):
            
$template->addSettings'vote.frequency.ip.enabled'true );
            
$template->addSettings'vote.frequency.timeout'absint$raw['options']['limitations']['ip']['timeout'] ) * 60 );
            
$template->addSettings'vote.frequency.perIP'absint$raw['options']['limitations']['ip']['votes_quota_per_ip'] ) );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['ip']['filter'] ) ):
            
$template->addSettings'vote.limitations.region.enabled'true );
            
$filterRules explode"\r\n"trim$raw['options']['limitations']['ip']['filter'] ) );
            foreach ( 
$filterRules as $index => $rule ):
                
$rule                  str_replace' '''$rule );
                
$filterRules$index ] = [
                    
'type' => isset( $rule[0] ) && $rule[0] === '-' 'deny' 'allow',
                    
'ip'   => isset( $rule[0] ) && ( $rule[0] === '-' || $rule[0] === '+' ) ? substr$rule) : $rule,
                ];
            endforeach;
            
$template->addSettings'vote.limitations.region.rules'$filterRules );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['membership']['enabled'] ) ):
            
$template->addSettings'vote.limitations.membership.enabled'true );
            
$template->addSettings'vote.limitations.membership.roles'Arrays::getDotNotation$raw'options.limitations.membership.type', [] ) );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['membership']['once']['enabled'] ) ):
            
$template->addSettings'vote.frequency.user.enabled'true );
            
$template->addSettings'vote.frequency.perUser');
        endif;

        if ( ! empty( 
$raw['options']['limitations']['quota']['enabled'] ) ):
            
$template->addSettings'vote.limitations.quota.enabled'true );
            
$template->addSettings'vote.limitations.quota.value'Arrays::getDotNotation$raw'options.limitations.quota.votes'100 ) );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['date']['enabled'] ) ):
            
$template->addSettings'vote.limitations.period.enabled'true );
            
// @TODO Convert this to compatible format
            
$template->addSettings'vote.limitations.period.start'Arrays::getDotNotation$raw'options.limitations.date.start' ) );
            
$template->addSettings'vote.limitations.period.end'Arrays::getDotNotation$raw'options.limitations.date.end' ) );
        endif;

        if ( ! empty( 
$raw['options']['limitations']['results']['require_vote']['enabled'] ) ):
            
$template->addSettings'results.visibility''voters' );
        endif;

        if ( ! empty( 
$raw['options']['results']['order']['enabled'] ) ):
            
$template->addSettings'results.sort.field'str_replace( [ 'date' ], [ 'position' ], Arrays::getDotNotation$raw'options.limitations.results.order.by''votes' ) ) );
            
$template->addSettings'results.sort.direction'Arrays::getDotNotation$raw'options.limitations.results.order.direction''desc' ) );
        endif;

        if ( ! empty( 
$raw['options']['results']['hide']['enabled'] ) ):
            
$template->addSettings'results.visibility''hide' );
            
$template->addSettings'results.message'Arrays::getDotNotation$raw'options.limitations.results.hide.content' ) );
            
$template->addSettings'results.untilReaching.quota'Arrays::getDotNotation$raw'options.limitations.results.hide.until.quota' ) );
            
$template->addSettings'results.untilReaching.endDate'Arrays::getDotNotation$raw'options.limitations.results.hide.until.end_date' ) );
        endif;

        
$votesExpression '';
        if ( ! empty( 
$raw['options']['results']['format']['votes'] ) ):
            
$votesExpression '{{votesWithLabel}} ';
        endif;
        if ( ! empty( 
$raw['options']['results']['format']['percentages'] ) ):
            
$votesExpression .= '({{votesPercentage}})';
        endif;
        
$template->addSettings'results.votes.format'$votesExpression );

        if ( ! empty( 
$raw['options']['choices']['pagination']['per_page'] ) ):
            
$template->addSettings'design.pagination.perPage'absint$raw['options']['choices']['pagination']['per_page'] ) );
        endif;

        if ( ! empty( 
$raw['options']['choices']['other']['enabled'] ) ):
            
$question['settings']['allowCustomChoice'] = 'visible';

            if ( ! empty( 
$raw['options']['choices']['other']['moderation'] ) ):
                
$question['settings']['allowCustomChoice'] = 'hidden';
            endif;
        endif;

        if ( ! empty( 
$raw['options']['choices']['order']['enabled'] ) ):
            
$template->addSettings'choices.sort.field'str_replace( [ 'date' ], [ 'position' ], Arrays::getDotNotation$raw'options.limitations.choices.order.by''votes' ) ) );
            
$template->addSettings'choices.sort.direction'Arrays::getDotNotation$raw'options.limitations.choices.order.direction''desc' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['before_vote']['enabled'] ) ):
            
$template->addSettings'content.welcome.content'Arrays::getDotNotation$raw'options.screens.before_vote.content' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['after_vote']['enabled'] ) ):
            
$template->addSettings'content.thankyou.content'Arrays::getDotNotation$raw'options.screens.after_vote.content' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['above_vote']['enabled'] ) ):
            
$template->addSettings'content.vote.above'Arrays::getDotNotation$raw'options.screens.above_vote.content' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['below_vote']['enabled'] ) ):
            
$template->addSettings'content.vote.below'Arrays::getDotNotation$raw'options.screens.below_vote.content' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['above_results']['enabled'] ) ):
            
$template->addSettings'content.results.above'Arrays::getDotNotation$raw'options.screens.above_results.content' ) );
        endif;

        if ( ! empty( 
$raw['options']['screens']['below_results']['enabled'] ) ):
            
$template->addSettings'content.results.below'Arrays::getDotNotation$raw'options.screens.below_results.content' ) );
        endif;

        
$template->addSettings'notifications.email.recipient'Arrays::getDotNotation$raw'options.notifications.email' ) );

        if ( ! empty( 
$raw['options']['notifications']['triggers']['new_vote']['enabled'] ) ):
            
$template->addSettings'notifications.email.on.newVote'true );
        endif;

        if ( ! empty( 
$raw['options']['design']['template']['name'] ) ):
            
$designTemplateName     $raw['options']['design']['template']['name'];
            
$designTemplatesMapping = [
                
'default'       => 'basic-template',
                
'chartix'       => 'charts-template',
                
'chartsome'     => 'charts-template',
                
'media-contest' => 'media-contest-template',
                
'facebook-like' => 'facebook-like-template',
                
'twitter-like'  => 'twitter-lite-template',
                
'debate'        => 'debate-template',
                
'versus'        => 'versus-template',
                
'opinion'       => 'opinion-template',
                
'rainbow'       => 'basic-template',
            ];
            
$designTemplateName     = ! isset( $designTemplatesMapping$designTemplateName ] ) ? 'basic-template' $designTemplatesMapping$designTemplateName ];

            
$template->addSettings'design.template'$designTemplateName );
            
$defaults TotalPoll'modules.repository' )->getDefaults$designTemplateName ) ?: [];
            
$template->addSettings'design.custom'$defaults );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['other']['fields']['per-row']['value'] ) ):
            
$template->addSettings'design.layout.choicesPerRow'absintArrays::getDotNotation$raw'options.design.preset.general.tabs.other.fields.per-row.value' ) ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['other']['fields']['animation']['value'] ) ):
            
$template->addSettings'design.effects.duration'absintArrays::getDotNotation$raw'options.design.preset.general.tabs.other.fields.animation.value' ) ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['transition']['type'] ) ):
            
$template->addSettings'design.effects.transition'Arrays::getDotNotation$raw'options.design.transition.type' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['one_click']['enabled'] ) ):
            
$template->addSettings'design.behaviours.oneClick'true );
        endif;

        if ( ! empty( 
$raw['options']['design']['scroll']['enabled'] ) ):
            
$template->addSettings'design.behaviours.scrollUp'true );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['container']['fields']['background']['value'] ) ):
            
$template->addSettings'design.custom.container.colors.background'Arrays::getDotNotation$raw'options.design.preset.general.tabs.container.fields.background.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['container']['fields']['border']['value'] ) ):
            
$template->addSettings'design.custom.container.colors.border'Arrays::getDotNotation$raw'options.design.preset.general.tabs.container.fields.border.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['messages']['fields']['background']['value'] ) ):
            
$template->addSettings'design.custom.message.colors.backgroundError'Arrays::getDotNotation$raw'options.design.preset.general.tabs.messages.fields.background.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['general']['tabs']['messages']['fields']['border']['value'] ) ):
            
$template->addSettings'design.custom.message.colors.borderError'Arrays::getDotNotation$raw'options.design.preset.general.tabs.messages.fields.border.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['typography']['tabs']['general']['fields']['font-family']['value'] ) ):
            
$template->addSettings'design.text.fontFamily'Arrays::getDotNotation$raw'options.design.preset.typography.tabs.general.fields.font-family.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['typography']['tabs']['general']['fields']['font-size']['value'] ) ):
            
$template->addSettings'design.text.fontSize'Arrays::getDotNotation$raw'options.design.preset.typography.tabs.general.fields.font-size.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['background:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.background'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.background:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['background:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.backgroundHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.background:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['border:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.border'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.border:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['border:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.borderHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.border:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['color:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.color'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.color:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['default']['fields']['color:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.colorHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.default.fields.color:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['background:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.backgroundPrimary'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.background:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['background:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.backgroundPrimaryHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.background:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['border:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.borderPrimary'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.border:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['border:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.borderPrimaryHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.border:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['color:normal']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.colorPrimary'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.color:normal.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['buttons']['tabs']['primary']['fields']['color:hover']['value'] ) ):
            
$template->addSettings'design.custom.button.colors.colorPrimaryHover'Arrays::getDotNotation$raw'options.design.preset.buttons.tabs.primary.fields.color:hover.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['votes-bar']['tabs']['bar']['fields']['color:start']['value'] ) ):
            
$template->addSettings'design.custom.votesbar.colors.backgroundStart'Arrays::getDotNotation$raw'options.design.preset.votes-bar.tabs.bar.fields.color:start.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['votes-bar']['tabs']['bar']['fields']['color:end']['value'] ) ):
            
$template->addSettings'design.custom.votesbar.colors.backgroundEnd'Arrays::getDotNotation$raw'options.design.preset.votes-bar.tabs.bar.fields.color:end.value' ) );
        endif;

        if ( ! empty( 
$raw['options']['design']['preset']['votes-bar']['tabs']['bar']['fields']['color']['value'] ) ):
            
$template->addSettings'design.custom.votesbar.colors.color'Arrays::getDotNotation$raw'options.design.preset.votes-bar.tabs.bar.fields.color.value' ) );
        endif;

        
$template->addQuestion$question );

        return 
$template;
    }

    
/**
     * Transform options.
     *
     * @param array $raw
     *
     * @return Options
     */
    
public function transformOptions$raw ) {
        
// Create template
        
$template = new Options();

        
// Options
        
if ( ! empty( $raw['recaptcha']['key'] ) ):
            
$template->addOption'services.recaptcha.key'$raw['recaptcha']['key'] );
        endif;

        if ( ! empty( 
$raw['recaptcha']['secret'] ) ):
            
$template->addOption'services.recaptcha.secret'$raw['recaptcha']['secret'] );
        endif;

        if ( ! empty( 
$raw['recaptcha']['key'] ) && ! empty( $raw['recaptcha']['secret'] ) ):
            
$template->addOption'services.recaptcha.enabled'true );
        endif;

        if ( ! empty( 
$raw['general']['async']['enabled'] ) ):
            
$template->addOption'performance.async.enabled'true );
        endif;

        if ( ! empty( 
$raw['advanced']['css_cache_alt']['enabled'] ) ):
            
$template->addOption'advanced.inlineCss'true );
        endif;

        if ( ! empty( 
$raw['expressions'] ) ):
            
$template->addOption'expressions'$raw['expressions'] );
        endif;

        if ( ! empty( 
$raw['sharing']['networks'] ) ):
            if ( 
in_array'facebook'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.facebook'true );
            endif;
            if ( 
in_array'twitter'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.twitter'true );
            endif;
            if ( 
in_array'googlePlus'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.googlePlus'true );
            endif;
            if ( 
in_array'reddit'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.reddit'true );
            endif;
            if ( 
in_array'linkedin'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.linkedin'true );
            endif;
            if ( 
in_array'email'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.email'true );
            endif;
            if ( 
in_array'whatsapp'$raw['sharing']['networks'] ) ):
                
$template->addOption'share.websites.whatsapp'true );
            endif;
        endif;

        return 
$template;
    }

    
/**
     * Transform log.
     *
     * @param array $raw
     *
     * @return LogEntry
     */
    
public function transformLog$raw ) {
        
// Create template
        
$template = new LogEntry();

        
// Attributes
        
foreach ( $raw as $key => $value ):
            
$template$key ] = $value;
        endforeach;

        return 
$template;
    }


    
/**
     * @param $raw
     *
     * @return Submission
     */
    
public function transformSubmission$raw ) {
        
// Create template
        
$template = new Submission();

        
// Attributes
        
foreach ( $raw as $key => $value ):
            
$template$key ] = $value;
        endforeach;

        return 
$template;
    }
}
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586