Completed
Branch FET/add-step-bubble-nav-compon... (ad6e27)
by
unknown
54:49 queued 46:04
created

EED_Event_Single_Caff::setDefinitions()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 7
Ratio 100 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 7
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Event Espresso
4
 *
5
 * Event Registration and Management Plugin for WordPress
6
 *
7
 * @ package            Event Espresso
8
 * @ author            Seth Shoultes
9
 * @ copyright        (c) 2008-2011 Event Espresso  All Rights Reserved.
10
 * @ license            http://eventespresso.com/support/terms-conditions/   * see Plugin Licensing *
11
 * @ link                http://www.eventespresso.com
12
 * @ version            4.0
13
 *
14
 * ------------------------------------------------------------------------
15
 *
16
 * EED_Event_Single_Caff
17
 *
18
 * @package        Event Espresso
19
 * @subpackage     /modules/event_single_caff/
20
 * @author         Brent Christensen
21
 *
22
 * ------------------------------------------------------------------------
23
 */
24
class EED_Event_Single_Caff extends EED_Event_Single
25
{
26
27
28
    /**
29
     * @return EED_Event_Single_Caff
30
     */
31
    public static function instance()
32
    {
33
        return parent::get_instance(__CLASS__);
34
    }
35
36
37
    /**
38
     *    set_hooks - for hooking into EE Core, other modules, etc
39
     *
40
     * @access    public
41
     * @return    void
42
     */
43
    public static function set_hooks()
44
    {
45
    }
46
47
    /**
48
     *    set_hooks_admin - for hooking into EE Admin Core, other modules, etc
49
     *
50
     * @access    public
51
     * @return    void
52
     */
53
    public static function set_hooks_admin()
54
    {
55
        self::setDefinitions();
56
        add_action(
57
            'FHEE__EE_Admin_Page___load_page_dependencies__after_load__espresso_events__template_settings',
58
            array('EED_Event_Single_Caff', 'load_scripts_styles'),
59
            10
60
        );
61
        add_action(
62
            'AHEE__template_settings__template__before_settings_form',
63
            array('EED_Event_Single_Caff', 'template_settings_form'),
64
            10
65
        );
66
        add_filter(
67
            'FHEE__General_Settings_Admin_Page__update_template_settings__data',
68
            array('EED_Event_Single_Caff', 'update_template_settings'),
69
            10,
70
            2
71
        );
72
        // AJAX
73
        add_action(
74
            'wp_ajax_espresso_update_event_single_order',
75
            array('EED_Event_Single_Caff', 'update_event_single_order')
76
        );
77
        add_action(
78
            'wp_ajax_nopriv_espresso_update_event_single_order',
79
            array('EED_Event_Single_Caff', 'update_event_single_order')
80
        );
81
    }
82
83
84
    public static function load_scripts_styles()
85
    {
86
        add_action('admin_enqueue_scripts', array('EED_Event_Single_Caff', 'enqueue_scripts_styles'), 10);
87
    }
88
89
90 View Code Duplication
    public static function enqueue_scripts_styles()
91
    {
92
        wp_register_style(
93
            'eed-event-single-sortable',
94
            EVENT_SINGLE_CAFF_ASSETS_URL . 'eed_event_single_sortable.css',
95
            array(),
96
            EVENT_ESPRESSO_VERSION
97
        );
98
        wp_enqueue_style('eed-event-single-sortable');
99
        wp_register_script(
100
            'eed-event-single-sortable',
101
            EVENT_SINGLE_CAFF_ASSETS_URL . 'eed_event_single_sortable.js',
102
            array('jquery-ui-sortable'),
103
            EVENT_ESPRESSO_VERSION,
104
            true
105
        );
106
        wp_enqueue_script('eed-event-single-sortable');
107
    }
108
109
110
    /**
111
     * Set constants only if they haven't been set yet.
112
     */
113 View Code Duplication
    public static function setDefinitions()
114
    {
115
        if (! defined('EVENT_SINGLE_CAFF_TEMPLATES_PATH')) {
116
            define('EVENT_SINGLE_CAFF_TEMPLATES_PATH', plugin_dir_path(__FILE__) . 'templates' . DS);
117
            define('EVENT_SINGLE_CAFF_ASSETS_URL', plugin_dir_url(__FILE__) . 'assets' . DS);
118
        }
119
    }
120
121
122
    /**
123
     *    template_settings_form
124
     *
125
     * @access    public
126
     * @static
127
     * @return    void
128
     */
129
    public static function template_settings_form()
130
    {
131
        $config = EE_Registry::instance()->CFG->template_settings;
132
        $config = isset($config->EED_Event_Single) && $config->EED_Event_Single instanceof EE_Event_Single_Config
133
            ? $config->EED_Event_Single : new EE_Event_Single_Config();
134
        $config->use_sortable_display_order = isset($config->use_sortable_display_order)
135
            ? $config->use_sortable_display_order : false;
136
        $config = apply_filters('FHEE__EED_Event_Single__template_settings_form__event_list_config', $config);
137
138
        $event_single_order_array = array();
139
        $event_single_order_array[ $config->display_order_tickets ] = 'tickets';
140
        $event_single_order_array[ $config->display_order_datetimes ] = 'datetimes';
141
        $event_single_order_array[ $config->display_order_event ] = 'event';
142
        $event_single_order_array[ $config->display_order_venue ] = 'venue';
143
        // get template parts
144
        $template_parts = EED_Event_Single::instance()->initialize_template_parts($config);
145
        // convert to array so that we can add more properties
146
        $config = get_object_vars($config);
147
        $config['event_single_display_order'] = $template_parts->generate_sortable_list_of_template_parts(
148
            'event-single-sortable-js',
149
            '',
150
            'single-sortable-li single-sortable-js'
151
        );
152
        EEH_Template::display_template(
153
            EVENT_SINGLE_CAFF_TEMPLATES_PATH . 'admin-event-single-settings.template.php',
154
            $config
155
        );
156
    }
157
158
159
    /**
160
     * update_template_settings
161
     *
162
     * @param EE_Template_Config $CFG
163
     * @param array              $REQ
164
     * @return EE_Template_Config
165
     */
166
    public static function update_template_settings(EE_Template_Config $CFG, $REQ)
167
    {
168
        if (! $CFG->EED_Event_Single instanceof EE_Event_Single_Config) {
169
            $CFG->EED_Event_Single = new EE_Event_Single_Config();
170
        }
171
        $display_order_event = $CFG->EED_Event_Single->display_order_event !== null
172
            ? $CFG->EED_Event_Single->display_order_event
173
            : EED_Event_Single::EVENT_DETAILS_PRIORITY;
174
        $display_order_datetimes = $CFG->EED_Event_Single->display_order_datetimes !== null
175
            ? $CFG->EED_Event_Single->display_order_datetimes
176
            : EED_Event_Single::EVENT_DATETIMES_PRIORITY;
177
        $display_order_tickets = $CFG->EED_Event_Single->display_order_tickets !== null
178
            ? $CFG->EED_Event_Single->display_order_tickets
179
            : EED_Event_Single::EVENT_TICKETS_PRIORITY;
180
        $display_order_venue = $CFG->EED_Event_Single->display_order_venue !== null
181
            ? $CFG->EED_Event_Single->display_order_venue
182
            : EED_Event_Single::EVENT_VENUES_PRIORITY;
183
        $CFG->EED_Event_Single = new EE_Event_Single_Config();
184
        $CFG->EED_Event_Single->display_status_banner_single = ! empty($REQ['display_status_banner_single'])
185
                                                               && $REQ['display_status_banner_single'];
186
        $CFG->EED_Event_Single->display_venue = ! empty($REQ['display_venue']) && $REQ['display_venue'];
187
        $CFG->EED_Event_Single->use_sortable_display_order = ! empty($REQ['EED_Events_Single_use_sortable_display_order'])
188
            ? absint($REQ['EED_Events_Single_use_sortable_display_order'])
189
            : 0;
190
        $CFG->EED_Event_Single->display_order_event = $CFG->EED_Event_Single->use_sortable_display_order
191
            ? $display_order_event
192
            : EED_Event_Single::EVENT_DETAILS_PRIORITY;
193
        $CFG->EED_Event_Single->display_order_datetimes = $CFG->EED_Event_Single->use_sortable_display_order
194
            ? $display_order_datetimes
195
            : EED_Event_Single::EVENT_DATETIMES_PRIORITY;
196
        $CFG->EED_Event_Single->display_order_tickets = $CFG->EED_Event_Single->use_sortable_display_order
197
            ? $display_order_tickets
198
            : EED_Event_Single::EVENT_TICKETS_PRIORITY;
199
        $CFG->EED_Event_Single->display_order_venue = $CFG->EED_Event_Single->use_sortable_display_order
200
            ? $display_order_venue
201
            : EED_Event_Single::EVENT_VENUES_PRIORITY;
202
        do_action('AHEE__EED_Event_Single__update_template_settings__after_update', $CFG, $REQ);
203
        return $CFG;
204
    }
205
206
207
    /**
208
     * update_event_single_order
209
     *
210
     * @access    public
211
     * @return    void
212
     */
213
    public static function update_event_single_order()
214
    {
215
        $config_saved = false;
216
        $template_parts = sanitize_text_field($_POST['elements']);
217
        if (! empty($template_parts)) {
218
            $template_parts = explode(',', trim($template_parts, ','));
219
            foreach ($template_parts as $key => $template_part) {
220
                $template_part = "display_order_$template_part";
221
                $priority = ($key * 10) + EED_Event_Single::EVENT_DETAILS_PRIORITY;
222
                EE_Registry::instance()->CFG->template_settings->EED_Event_Single->{$template_part} = $priority;
223
                do_action("AHEE__EED_Event_Single__update_event_single_order__$template_part", $priority);
224
            }
225
            $config_saved = EE_Registry::instance()->CFG->update_espresso_config(false, false);
226
        }
227 View Code Duplication
        if ($config_saved) {
228
            EE_Error::add_success(__('Display Order has been successfully updated.', 'event_espresso'));
229
        } else {
230
            EE_Error::add_error(
231
                __('Display Order was not updated.', 'event_espresso'),
232
                __FILE__,
233
                __FUNCTION__,
234
                __LINE__
235
            );
236
        }
237
        echo wp_json_encode(EE_Error::get_notices(false));
238
        exit();
239
    }
240
241
242
    /**
243
     *    run - initial module setup
244
     *
245
     * @access    public
246
     * @param WP $WP
247
     * @return    void
248
     */
249
    public function run($WP)
250
    {
251
    }
252
}
253