summaryrefslogtreecommitdiff
path: root/includes/controller/event_config_controller.php
blob: dcdcf54a429f54ffa7a4d6c406ab9febd5831a07 (plain)
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
<?php

/**
 * @return string
 */
function event_config_title()
{
    return _('Event config');
}

/**
 * @return array
 */
function event_config_edit_controller()
{
    global $privileges;

    if (!in_array('admin_event_config', $privileges)) {
        redirect('?');
    }

    $request = request();
    $event_name = null;
    $event_welcome_msg = null;
    $buildup_start_date = null;
    $event_start_date = null;
    $event_end_date = null;
    $teardown_end_date = null;

    $event_config = EventConfig();
    if ($event_config != null) {
        $event_name = $event_config['event_name'];
        $buildup_start_date = $event_config['buildup_start_date'];
        $event_start_date = $event_config['event_start_date'];
        $event_end_date = $event_config['event_end_date'];
        $teardown_end_date = $event_config['teardown_end_date'];
        $event_welcome_msg = $event_config['event_welcome_msg'];
    }

    if ($request->has('submit')) {
        $valid = true;

        if ($request->has('event_name')) {
            $event_name = strip_request_item('event_name');
        }
        if ($event_name == '') {
            $event_name = null;
        }

        if ($request->has('event_welcome_msg')) {
            $event_welcome_msg = strip_request_item_nl('event_welcome_msg');
        }
        if ($event_welcome_msg == '') {
            $event_welcome_msg = null;
        }

        $result = check_request_date('buildup_start_date', _('Please enter buildup start date.'), true);
        $buildup_start_date = $result->getValue();
        $valid &= $result->isValid();

        $result = check_request_date('event_start_date', _('Please enter event start date.'), true);
        $event_start_date = $result->getValue();
        $valid &= $result->isValid();

        $result = check_request_date('event_end_date', _('Please enter event end date.'), true);
        $event_end_date = $result->getValue();
        $valid &= $result->isValid();

        $result = check_request_date('teardown_end_date', _('Please enter teardown end date.'), true);
        $teardown_end_date = $result->getValue();
        $valid &= $result->isValid();

        if ($buildup_start_date != null && $event_start_date != null && $buildup_start_date > $event_start_date) {
            $valid = false;
            error(_('The buildup start date has to be before the event start date.'));
        }

        if ($event_start_date != null && $event_end_date != null && $event_start_date > $event_end_date) {
            $valid = false;
            error(_('The event start date has to be before the event end date.'));
        }

        if ($event_end_date != null && $teardown_end_date != null && $event_end_date > $teardown_end_date) {
            $valid = false;
            error(_('The event end date has to be before the teardown end date.'));
        }

        if ($buildup_start_date != null && $teardown_end_date != null && $buildup_start_date > $teardown_end_date) {
            $valid = false;
            error(_('The buildup start date has to be before the teardown end date.'));
        }

        if ($valid) {
            $result = EventConfig_update(
                $event_name,
                $buildup_start_date,
                $event_start_date,
                $event_end_date,
                $teardown_end_date,
                $event_welcome_msg
            );

            if ($result === false) {
                engelsystem_error('Unable to update event config.');
            }

            engelsystem_log(
                'Changed event config: $event_name, $event_welcome_msg, '
                . date('Y-m-d', $buildup_start_date) . ', ' . date('Y-m-d', $event_start_date) . ', '
                . date('Y-m-d', $event_end_date) . ', ' . date('Y-m-d', $teardown_end_date)
            );
            success(_('Settings saved.'));
            redirect(page_link_to('admin_event_config'));
        }
    }

    return [
        event_config_title(),
        EventConfig_edit_view(
            $event_name,
            $event_welcome_msg,
            $buildup_start_date,
            $event_start_date,
            $event_end_date,
            $teardown_end_date
        )
    ];
}