Completed
Branch FIX/fix-datetime-picker-styles (49553a)
by
unknown
43:56 queued 35:31
created
admin_pages/general_settings/help_tours/Countries_Help_Tour.class.php 2 patches
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -15,80 +15,80 @@
 block discarded – undo
15 15
 class Countries_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Countries Tour', 'event_espresso');
21
-        $this->_slug = 'countries-joyride';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Countries Tour', 'event_espresso');
21
+		$this->_slug = 'countries-joyride';
22
+	}
23 23
 
24
-    protected function _set_tour_stops()
25
-    {
26
-        $this->_stops = array(
27
-            10 => array(
28
-                'content' => $this->_start(),
29
-            ),
30
-            20 => array(
31
-                'id'      => 'country',
32
-                'content' => $this->_country_selector_stop(),
33
-                'options' => array(
34
-                    'tipLocation'    => 'right',
35
-                    'tipAdjustmentY' => -50,
36
-                    'tipAdjustmentX' => 15,
37
-                ),
38
-            ),
39
-            30 => array(
40
-                'id'      => 'country-details-dv',
41
-                'content' => $this->_country_details_stop(),
42
-                'options' => array(
43
-                    'tipLocation'    => 'top',
44
-                    'tipAdjustmentY' => -80,
45
-                    'tipAdjustmentX' => 0,
46
-                ),
47
-            ),
48
-            40 => array(
49
-                'id'      => 'country-states-settings-dv',
50
-                'content' => $this->_country_states_settings_stop(),
51
-                'options' => array(
52
-                    'tipLocation'    => 'top',
53
-                    'tipAdjustmentY' => -20,
54
-                    'tipAdjustmentX' => 50,
55
-                ),
56
-            ),
57
-        );
58
-    }
24
+	protected function _set_tour_stops()
25
+	{
26
+		$this->_stops = array(
27
+			10 => array(
28
+				'content' => $this->_start(),
29
+			),
30
+			20 => array(
31
+				'id'      => 'country',
32
+				'content' => $this->_country_selector_stop(),
33
+				'options' => array(
34
+					'tipLocation'    => 'right',
35
+					'tipAdjustmentY' => -50,
36
+					'tipAdjustmentX' => 15,
37
+				),
38
+			),
39
+			30 => array(
40
+				'id'      => 'country-details-dv',
41
+				'content' => $this->_country_details_stop(),
42
+				'options' => array(
43
+					'tipLocation'    => 'top',
44
+					'tipAdjustmentY' => -80,
45
+					'tipAdjustmentX' => 0,
46
+				),
47
+			),
48
+			40 => array(
49
+				'id'      => 'country-states-settings-dv',
50
+				'content' => $this->_country_states_settings_stop(),
51
+				'options' => array(
52
+					'tipLocation'    => 'top',
53
+					'tipAdjustmentY' => -20,
54
+					'tipAdjustmentX' => 50,
55
+				),
56
+			),
57
+		);
58
+	}
59 59
 
60 60
 
61
-    protected function _start()
62
-    {
63
-        $content = '<h3>' . __('Countries Settings', 'event_espresso') . '</h3>';
64
-        $content .= '<p>'
65
-                    . __(
66
-                        'This tour of the Countries Page will go over different areas of the screen to help you understand what they are used for.',
67
-                        'event_espresso'
68
-                    ) . '</p>';
69
-        return $content;
70
-    }
61
+	protected function _start()
62
+	{
63
+		$content = '<h3>' . __('Countries Settings', 'event_espresso') . '</h3>';
64
+		$content .= '<p>'
65
+					. __(
66
+						'This tour of the Countries Page will go over different areas of the screen to help you understand what they are used for.',
67
+						'event_espresso'
68
+					) . '</p>';
69
+		return $content;
70
+	}
71 71
 
72
-    protected function _country_selector_stop()
73
-    {
74
-        return '<p>'
75
-               . __(
76
-                   'Select the country where your business or organization is located. This affects the currency that is used in Event Espresso.',
77
-                   'event_espresso'
78
-               ) . '</p>';
79
-    }
72
+	protected function _country_selector_stop()
73
+	{
74
+		return '<p>'
75
+			   . __(
76
+				   'Select the country where your business or organization is located. This affects the currency that is used in Event Espresso.',
77
+				   'event_espresso'
78
+			   ) . '</p>';
79
+	}
80 80
 
81
-    protected function _country_details_stop()
82
-    {
83
-        return '<p>' . __('Here you can fine tune country and currency settings.', 'event_espresso') . '</p>';
84
-    }
81
+	protected function _country_details_stop()
82
+	{
83
+		return '<p>' . __('Here you can fine tune country and currency settings.', 'event_espresso') . '</p>';
84
+	}
85 85
 
86
-    protected function _country_states_settings_stop()
87
-    {
88
-        return '<p>'
89
-               . __(
90
-                   'Used in certain areas of the plugin, here you can define what states/provinces will be displayed in case you do not do business in certain areas.',
91
-                   'event_espresso'
92
-               ) . '</p>';
93
-    }
86
+	protected function _country_states_settings_stop()
87
+	{
88
+		return '<p>'
89
+			   . __(
90
+				   'Used in certain areas of the plugin, here you can define what states/provinces will be displayed in case you do not do business in certain areas.',
91
+				   'event_espresso'
92
+			   ) . '</p>';
93
+	}
94 94
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -60,12 +60,12 @@  discard block
 block discarded – undo
60 60
 
61 61
     protected function _start()
62 62
     {
63
-        $content = '<h3>' . __('Countries Settings', 'event_espresso') . '</h3>';
63
+        $content = '<h3>'.__('Countries Settings', 'event_espresso').'</h3>';
64 64
         $content .= '<p>'
65 65
                     . __(
66 66
                         'This tour of the Countries Page will go over different areas of the screen to help you understand what they are used for.',
67 67
                         'event_espresso'
68
-                    ) . '</p>';
68
+                    ).'</p>';
69 69
         return $content;
70 70
     }
71 71
 
@@ -75,12 +75,12 @@  discard block
 block discarded – undo
75 75
                . __(
76 76
                    'Select the country where your business or organization is located. This affects the currency that is used in Event Espresso.',
77 77
                    'event_espresso'
78
-               ) . '</p>';
78
+               ).'</p>';
79 79
     }
80 80
 
81 81
     protected function _country_details_stop()
82 82
     {
83
-        return '<p>' . __('Here you can fine tune country and currency settings.', 'event_espresso') . '</p>';
83
+        return '<p>'.__('Here you can fine tune country and currency settings.', 'event_espresso').'</p>';
84 84
     }
85 85
 
86 86
     protected function _country_states_settings_stop()
@@ -89,6 +89,6 @@  discard block
 block discarded – undo
89 89
                . __(
90 90
                    'Used in certain areas of the plugin, here you can define what states/provinces will be displayed in case you do not do business in certain areas.',
91 91
                    'event_espresso'
92
-               ) . '</p>';
92
+               ).'</p>';
93 93
     }
94 94
 }
Please login to merge, or discard this patch.
admin_pages/general_settings/help_tours/Critical_Pages_Help_Tour.class.php 2 patches
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -15,107 +15,107 @@
 block discarded – undo
15 15
 class Critical_Pages_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Critical Pages Tour', 'event_espresso');
21
-        $this->_slug = 'critical-pages-joyride';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Critical Pages Tour', 'event_espresso');
21
+		$this->_slug = 'critical-pages-joyride';
22
+	}
23 23
 
24
-    protected function _set_tour_stops()
25
-    {
26
-        $this->_stops = array(
27
-            10 => array(
28
-                'content' => $this->_start(),
29
-            ),
30
-            20 => array(
31
-                'id'      => 'reg_page_id',
32
-                'content' => $this->_reg_page_id_stop(),
33
-                'options' => array(
34
-                    'tipLocation'    => 'right',
35
-                    'tipAdjustmentY' => -50,
36
-                    'tipAdjustmentX' => 15,
37
-                ),
38
-            ),
39
-            30 => array(
40
-                'id'      => 'txn_page_id',
41
-                'content' => $this->_txn_page_id_stop(),
42
-                'options' => array(
43
-                    'tipLocation'    => 'right',
44
-                    'tipAdjustmentY' => -50,
45
-                    'tipAdjustmentX' => 15,
46
-                ),
47
-            ),
48
-            40 => array(
49
-                'id'      => 'thank_you_page_id',
50
-                'content' => $this->_thank_you_page_id_stop(),
51
-                'options' => array(
52
-                    'tipLocation'    => 'right',
53
-                    'tipAdjustmentY' => -50,
54
-                    'tipAdjustmentX' => 15,
55
-                ),
56
-            ),
57
-            50 => array(
58
-                'id'      => 'cancel_page_id',
59
-                'content' => $this->_cancel_page_id_stop(),
60
-                'options' => array(
61
-                    'tipLocation'    => 'right',
62
-                    'tipAdjustmentY' => -50,
63
-                    'tipAdjustmentX' => 15,
64
-                ),
65
-            ),
66
-        );
67
-    }
24
+	protected function _set_tour_stops()
25
+	{
26
+		$this->_stops = array(
27
+			10 => array(
28
+				'content' => $this->_start(),
29
+			),
30
+			20 => array(
31
+				'id'      => 'reg_page_id',
32
+				'content' => $this->_reg_page_id_stop(),
33
+				'options' => array(
34
+					'tipLocation'    => 'right',
35
+					'tipAdjustmentY' => -50,
36
+					'tipAdjustmentX' => 15,
37
+				),
38
+			),
39
+			30 => array(
40
+				'id'      => 'txn_page_id',
41
+				'content' => $this->_txn_page_id_stop(),
42
+				'options' => array(
43
+					'tipLocation'    => 'right',
44
+					'tipAdjustmentY' => -50,
45
+					'tipAdjustmentX' => 15,
46
+				),
47
+			),
48
+			40 => array(
49
+				'id'      => 'thank_you_page_id',
50
+				'content' => $this->_thank_you_page_id_stop(),
51
+				'options' => array(
52
+					'tipLocation'    => 'right',
53
+					'tipAdjustmentY' => -50,
54
+					'tipAdjustmentX' => 15,
55
+				),
56
+			),
57
+			50 => array(
58
+				'id'      => 'cancel_page_id',
59
+				'content' => $this->_cancel_page_id_stop(),
60
+				'options' => array(
61
+					'tipLocation'    => 'right',
62
+					'tipAdjustmentY' => -50,
63
+					'tipAdjustmentX' => 15,
64
+				),
65
+			),
66
+		);
67
+	}
68 68
 
69 69
 
70
-    protected function _start()
71
-    {
72
-        $content = '<h3>' . __('Critical Pages', 'event_espresso') . '</h3>';
73
-        $content .= '<p>'
74
-                    . __(
75
-                        'This section lists the pages that Event Espresso needs in order to function. Should you wish to change a page that is used you will need to move the shortcode to the new page and then allocate it here. Otherwise your registrations will not work correctly.',
76
-                        'event_espresso'
77
-                    ) . '</p>';
78
-        $content .= '<p>'
79
-                    . __(
80
-                        'This section also provides a status of the page to show you at a glance if something is not right.',
81
-                        'event_espresso'
82
-                    ) . '</p>';
83
-        return $content;
84
-    }
70
+	protected function _start()
71
+	{
72
+		$content = '<h3>' . __('Critical Pages', 'event_espresso') . '</h3>';
73
+		$content .= '<p>'
74
+					. __(
75
+						'This section lists the pages that Event Espresso needs in order to function. Should you wish to change a page that is used you will need to move the shortcode to the new page and then allocate it here. Otherwise your registrations will not work correctly.',
76
+						'event_espresso'
77
+					) . '</p>';
78
+		$content .= '<p>'
79
+					. __(
80
+						'This section also provides a status of the page to show you at a glance if something is not right.',
81
+						'event_espresso'
82
+					) . '</p>';
83
+		return $content;
84
+	}
85 85
 
86
-    protected function _reg_page_id_stop()
87
-    {
88
-        return '<p>'
89
-               . __(
90
-                   'This page processes the registrations and is required, even if it is not visible in your menus. ',
91
-                   'event_espresso'
92
-               ) . '</p>';
93
-    }
86
+	protected function _reg_page_id_stop()
87
+	{
88
+		return '<p>'
89
+			   . __(
90
+				   'This page processes the registrations and is required, even if it is not visible in your menus. ',
91
+				   'event_espresso'
92
+			   ) . '</p>';
93
+	}
94 94
 
95
-    protected function _txn_page_id_stop()
96
-    {
97
-        return '<p>'
98
-               . __(
99
-                   'This page processes payments. It should not be visible on your menus, and the page should not contain anything other than the shortcode.',
100
-                   'event_espresso'
101
-               ) . '</p>';
102
-    }
95
+	protected function _txn_page_id_stop()
96
+	{
97
+		return '<p>'
98
+			   . __(
99
+				   'This page processes payments. It should not be visible on your menus, and the page should not contain anything other than the shortcode.',
100
+				   'event_espresso'
101
+			   ) . '</p>';
102
+	}
103 103
 
104
-    protected function _thank_you_page_id_stop()
105
-    {
106
-        return '<p>'
107
-               . __(
108
-                   'This page is displayed after a successful transaction. Feel free to add extra content to this page to personalise it!',
109
-                   'event_espresso'
110
-               ) . '</p>';
111
-    }
104
+	protected function _thank_you_page_id_stop()
105
+	{
106
+		return '<p>'
107
+			   . __(
108
+				   'This page is displayed after a successful transaction. Feel free to add extra content to this page to personalise it!',
109
+				   'event_espresso'
110
+			   ) . '</p>';
111
+	}
112 112
 
113
-    protected function _cancel_page_id_stop()
114
-    {
115
-        return '<p>'
116
-               . __(
117
-                   'This page is displayed after an unsuccessful transaction. Feel free to add extra content to this page to personalise it!',
118
-                   'event_espresso'
119
-               ) . '</p>';
120
-    }
113
+	protected function _cancel_page_id_stop()
114
+	{
115
+		return '<p>'
116
+			   . __(
117
+				   'This page is displayed after an unsuccessful transaction. Feel free to add extra content to this page to personalise it!',
118
+				   'event_espresso'
119
+			   ) . '</p>';
120
+	}
121 121
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -69,17 +69,17 @@  discard block
 block discarded – undo
69 69
 
70 70
     protected function _start()
71 71
     {
72
-        $content = '<h3>' . __('Critical Pages', 'event_espresso') . '</h3>';
72
+        $content = '<h3>'.__('Critical Pages', 'event_espresso').'</h3>';
73 73
         $content .= '<p>'
74 74
                     . __(
75 75
                         'This section lists the pages that Event Espresso needs in order to function. Should you wish to change a page that is used you will need to move the shortcode to the new page and then allocate it here. Otherwise your registrations will not work correctly.',
76 76
                         'event_espresso'
77
-                    ) . '</p>';
77
+                    ).'</p>';
78 78
         $content .= '<p>'
79 79
                     . __(
80 80
                         'This section also provides a status of the page to show you at a glance if something is not right.',
81 81
                         'event_espresso'
82
-                    ) . '</p>';
82
+                    ).'</p>';
83 83
         return $content;
84 84
     }
85 85
 
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
                . __(
90 90
                    'This page processes the registrations and is required, even if it is not visible in your menus. ',
91 91
                    'event_espresso'
92
-               ) . '</p>';
92
+               ).'</p>';
93 93
     }
94 94
 
95 95
     protected function _txn_page_id_stop()
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
                . __(
99 99
                    'This page processes payments. It should not be visible on your menus, and the page should not contain anything other than the shortcode.',
100 100
                    'event_espresso'
101
-               ) . '</p>';
101
+               ).'</p>';
102 102
     }
103 103
 
104 104
     protected function _thank_you_page_id_stop()
@@ -107,7 +107,7 @@  discard block
 block discarded – undo
107 107
                . __(
108 108
                    'This page is displayed after a successful transaction. Feel free to add extra content to this page to personalise it!',
109 109
                    'event_espresso'
110
-               ) . '</p>';
110
+               ).'</p>';
111 111
     }
112 112
 
113 113
     protected function _cancel_page_id_stop()
@@ -116,6 +116,6 @@  discard block
 block discarded – undo
116 116
                . __(
117 117
                    'This page is displayed after an unsuccessful transaction. Feel free to add extra content to this page to personalise it!',
118 118
                    'event_espresso'
119
-               ) . '</p>';
119
+               ).'</p>';
120 120
     }
121 121
 }
Please login to merge, or discard this patch.
general_settings/help_tours/Your_Organization_Help_Tour.class.php 2 patches
Indentation   +120 added lines, -120 removed lines patch added patch discarded remove patch
@@ -15,136 +15,136 @@
 block discarded – undo
15 15
 class Your_Organization_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Your Organization Tour', 'event_espresso');
21
-        $this->_slug = 'your-organization-joyride';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Your Organization Tour', 'event_espresso');
21
+		$this->_slug = 'your-organization-joyride';
22
+	}
23 23
 
24 24
 
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10 => array(
29
-                'content' => $this->_start(),
30
-            ),
31
-            30 => array(
32
-                'id'      => 'contact_info_h4',
33
-                'content' => $this->_contact_information_stop(),
34
-                'options' => array(
35
-                    'tipLocation'    => 'left',
36
-                    'tipAdjustmentY' => -50,
37
-                    'tipAdjustmentX' => 15,
38
-                ),
39
-            ),
40
-            40 => array(
41
-                'id'      => 'upload_image',
42
-                'content' => $this->_upload_image_stop(),
43
-                'options' => array(
44
-                    'tipLocation'    => 'right',
45
-                    'tipAdjustmentY' => -50,
46
-                    'tipAdjustmentX' => 15,
47
-                ),
48
-            ),
49
-            50 => array(
50
-                'id'      => 'organization_facebook',
51
-                'content' => $this->_organization_facebook_stop(),
52
-                'options' => array(
53
-                    'tipLocation'    => 'right',
54
-                    'tipAdjustmentY' => -50,
55
-                    'tipAdjustmentX' => 15,
56
-                ),
57
-            ),
58
-            60 => array(
59
-                'id'      => 'ueip_optin',
60
-                'content' => $this->_ueip_option_stop(),
61
-                'options' => array(
62
-                    'tipLocation'    => 'right',
63
-                    'tipAdjustmentY' => -50,
64
-                    'tipAdjustmentX' => 15,
65
-                ),
66
-            ),
67
-            70 => array(
68
-                'id'      => 'espresso_major_buttons_wrapper',
69
-                'content' => $this->_end_tour_stop(),
70
-                'options' => array(
71
-                    'tipLocation'    => 'right',
72
-                    'tipAdjustmentY' => -50,
73
-                    'tipAdjustmentX' => 185,
74
-                ),
75
-            ),
76
-        );
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10 => array(
29
+				'content' => $this->_start(),
30
+			),
31
+			30 => array(
32
+				'id'      => 'contact_info_h4',
33
+				'content' => $this->_contact_information_stop(),
34
+				'options' => array(
35
+					'tipLocation'    => 'left',
36
+					'tipAdjustmentY' => -50,
37
+					'tipAdjustmentX' => 15,
38
+				),
39
+			),
40
+			40 => array(
41
+				'id'      => 'upload_image',
42
+				'content' => $this->_upload_image_stop(),
43
+				'options' => array(
44
+					'tipLocation'    => 'right',
45
+					'tipAdjustmentY' => -50,
46
+					'tipAdjustmentX' => 15,
47
+				),
48
+			),
49
+			50 => array(
50
+				'id'      => 'organization_facebook',
51
+				'content' => $this->_organization_facebook_stop(),
52
+				'options' => array(
53
+					'tipLocation'    => 'right',
54
+					'tipAdjustmentY' => -50,
55
+					'tipAdjustmentX' => 15,
56
+				),
57
+			),
58
+			60 => array(
59
+				'id'      => 'ueip_optin',
60
+				'content' => $this->_ueip_option_stop(),
61
+				'options' => array(
62
+					'tipLocation'    => 'right',
63
+					'tipAdjustmentY' => -50,
64
+					'tipAdjustmentX' => 15,
65
+				),
66
+			),
67
+			70 => array(
68
+				'id'      => 'espresso_major_buttons_wrapper',
69
+				'content' => $this->_end_tour_stop(),
70
+				'options' => array(
71
+					'tipLocation'    => 'right',
72
+					'tipAdjustmentY' => -50,
73
+					'tipAdjustmentX' => 185,
74
+				),
75
+			),
76
+		);
77 77
 
78
-        if (is_main_site()) {
79
-            $this->_stops[20] = array(
80
-                'id'      => 'site_license_key',
81
-                'content' => $this->_site_license_key_stop(),
82
-                'options' => array(
83
-                    'tipLocation'    => 'right',
84
-                    'tipAdjustmentY' => -50,
85
-                    'tipAdjustmentX' => 15,
86
-                ),
87
-            );
88
-        }
89
-        ksort($this->_stops);
90
-    }
78
+		if (is_main_site()) {
79
+			$this->_stops[20] = array(
80
+				'id'      => 'site_license_key',
81
+				'content' => $this->_site_license_key_stop(),
82
+				'options' => array(
83
+					'tipLocation'    => 'right',
84
+					'tipAdjustmentY' => -50,
85
+					'tipAdjustmentX' => 15,
86
+				),
87
+			);
88
+		}
89
+		ksort($this->_stops);
90
+	}
91 91
 
92 92
 
93
-    protected function _start()
94
-    {
95
-        $content = '<h3>' . __('Organization Settings', 'event_espresso') . '</h3>';
96
-        $content .= '<p>'
97
-                    . __(
98
-                        'This tour of the Your Organization page will go over different areas of the screen to help you understand what they are used for.',
99
-                        'event_espresso'
100
-                    ) . '</p>';
93
+	protected function _start()
94
+	{
95
+		$content = '<h3>' . __('Organization Settings', 'event_espresso') . '</h3>';
96
+		$content .= '<p>'
97
+					. __(
98
+						'This tour of the Your Organization page will go over different areas of the screen to help you understand what they are used for.',
99
+						'event_espresso'
100
+					) . '</p>';
101 101
 
102
-        return $content;
103
-    }
102
+		return $content;
103
+	}
104 104
 
105
-    protected function _site_license_key_stop()
106
-    {
107
-        return '<p>'
108
-               . __(
109
-                   'Enter your support license key here to enable one-click updates.',
110
-                   'event_espresso'
111
-               ) . '</p>';
112
-    }
105
+	protected function _site_license_key_stop()
106
+	{
107
+		return '<p>'
108
+			   . __(
109
+				   'Enter your support license key here to enable one-click updates.',
110
+				   'event_espresso'
111
+			   ) . '</p>';
112
+	}
113 113
 
114
-    protected function _contact_information_stop()
115
-    {
116
-        return '<p>'
117
-               . __(
118
-                   'You can change your business / organization information below. Be sure to keep this information updated as it is used in other areas of the site. Adjusting the country option here will update your currency settings. More options are available in the Countries tab.',
119
-                   'event_espresso'
120
-               ) . '</p>';
121
-    }
114
+	protected function _contact_information_stop()
115
+	{
116
+		return '<p>'
117
+			   . __(
118
+				   'You can change your business / organization information below. Be sure to keep this information updated as it is used in other areas of the site. Adjusting the country option here will update your currency settings. More options are available in the Countries tab.',
119
+				   'event_espresso'
120
+			   ) . '</p>';
121
+	}
122 122
 
123
-    protected function _upload_image_stop()
124
-    {
125
-        return '<p>' . __('Add a logo. This can be used for invoices and tickets.', 'event_espresso') . '</p>';
126
-    }
123
+	protected function _upload_image_stop()
124
+	{
125
+		return '<p>' . __('Add a logo. This can be used for invoices and tickets.', 'event_espresso') . '</p>';
126
+	}
127 127
 
128
-    protected function _organization_facebook_stop()
129
-    {
130
-        return '<p>' . __('Add links to various social media networks.', 'event_espresso') . '</p>';
131
-    }
128
+	protected function _organization_facebook_stop()
129
+	{
130
+		return '<p>' . __('Add links to various social media networks.', 'event_espresso') . '</p>';
131
+	}
132 132
 
133
-    protected function _ueip_option_stop()
134
-    {
135
-        return '<p>'
136
-               . __(
137
-                   'Help us to help you! Sign up to the User eXperience Improvement Program and send us anonymous data that will help us improve Event Espresso.',
138
-                   'event_espresso'
139
-               ) . '</p>';
140
-    }
133
+	protected function _ueip_option_stop()
134
+	{
135
+		return '<p>'
136
+			   . __(
137
+				   'Help us to help you! Sign up to the User eXperience Improvement Program and send us anonymous data that will help us improve Event Espresso.',
138
+				   'event_espresso'
139
+			   ) . '</p>';
140
+	}
141 141
 
142
-    protected function _end_tour_stop()
143
-    {
144
-        return '<p>'
145
-               . __(
146
-                   'You are almost done updating Your Organization information. Click on the Save button to save changes and then go to the Payment Methods screen so you can setup a payment gateway.',
147
-                   'event_espresso'
148
-               ) . '</p>';
149
-    }
142
+	protected function _end_tour_stop()
143
+	{
144
+		return '<p>'
145
+			   . __(
146
+				   'You are almost done updating Your Organization information. Click on the Save button to save changes and then go to the Payment Methods screen so you can setup a payment gateway.',
147
+				   'event_espresso'
148
+			   ) . '</p>';
149
+	}
150 150
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -92,12 +92,12 @@  discard block
 block discarded – undo
92 92
 
93 93
     protected function _start()
94 94
     {
95
-        $content = '<h3>' . __('Organization Settings', 'event_espresso') . '</h3>';
95
+        $content = '<h3>'.__('Organization Settings', 'event_espresso').'</h3>';
96 96
         $content .= '<p>'
97 97
                     . __(
98 98
                         'This tour of the Your Organization page will go over different areas of the screen to help you understand what they are used for.',
99 99
                         'event_espresso'
100
-                    ) . '</p>';
100
+                    ).'</p>';
101 101
 
102 102
         return $content;
103 103
     }
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
                . __(
109 109
                    'Enter your support license key here to enable one-click updates.',
110 110
                    'event_espresso'
111
-               ) . '</p>';
111
+               ).'</p>';
112 112
     }
113 113
 
114 114
     protected function _contact_information_stop()
@@ -117,17 +117,17 @@  discard block
 block discarded – undo
117 117
                . __(
118 118
                    'You can change your business / organization information below. Be sure to keep this information updated as it is used in other areas of the site. Adjusting the country option here will update your currency settings. More options are available in the Countries tab.',
119 119
                    'event_espresso'
120
-               ) . '</p>';
120
+               ).'</p>';
121 121
     }
122 122
 
123 123
     protected function _upload_image_stop()
124 124
     {
125
-        return '<p>' . __('Add a logo. This can be used for invoices and tickets.', 'event_espresso') . '</p>';
125
+        return '<p>'.__('Add a logo. This can be used for invoices and tickets.', 'event_espresso').'</p>';
126 126
     }
127 127
 
128 128
     protected function _organization_facebook_stop()
129 129
     {
130
-        return '<p>' . __('Add links to various social media networks.', 'event_espresso') . '</p>';
130
+        return '<p>'.__('Add links to various social media networks.', 'event_espresso').'</p>';
131 131
     }
132 132
 
133 133
     protected function _ueip_option_stop()
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
                . __(
137 137
                    'Help us to help you! Sign up to the User eXperience Improvement Program and send us anonymous data that will help us improve Event Espresso.',
138 138
                    'event_espresso'
139
-               ) . '</p>';
139
+               ).'</p>';
140 140
     }
141 141
 
142 142
     protected function _end_tour_stop()
@@ -145,6 +145,6 @@  discard block
 block discarded – undo
145 145
                . __(
146 146
                    'You are almost done updating Your Organization information. Click on the Save button to save changes and then go to the Payment Methods screen so you can setup a payment gateway.',
147 147
                    'event_espresso'
148
-               ) . '</p>';
148
+               ).'</p>';
149 149
     }
150 150
 }
Please login to merge, or discard this patch.
admin_pages/messages/help_tours/Message_Templates_Edit_Help_Tour.class.php 2 patches
Indentation   +133 added lines, -133 removed lines patch added patch discarded remove patch
@@ -15,137 +15,137 @@
 block discarded – undo
15 15
 class Message_Templates_Edit_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Message Template Editor Tour', 'event_espresso');
21
-        $this->_slug = 'messages-templates-edit-joyride';
22
-    }
23
-
24
-
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10 => array(
29
-                'content' => $this->_start(),
30
-            ),
31
-            20 => array(
32
-                'id'      => 'submit-msg-context-switcher-sbmt',
33
-                'content' => $this->_context_switcher_stop(),
34
-                'options' => array(
35
-                    'tipLocation'    => 'bottom',
36
-                    'tipAdjustmentY' => -30,
37
-                    'tipAdjustmentX' => -60,
38
-                ),
39
-            ),
40
-            30 => array(
41
-                'class'   => 'messages-preview-button"',
42
-                'content' => $this->_preview_button_stop(),
43
-                'options' => array(
44
-                    'tipLocation'    => 'bottom',
45
-                    'tipAdjustmentY' => -30,
46
-                ),
47
-            ),
48
-            40 => array(
49
-                'content' => $this->_template_area_stop(),
50
-                'options' => array(
51
-                    'tipAdjustmentY' => -100,
52
-                    'tipAdjustmentX' => -60,
53
-                ),
54
-            ),
55
-            50 => array(
56
-                'id'      => 'mtp_valid_shortcodes',
57
-                'content' => $this->_mtp_valid_shortcodes_stop(),
58
-                'options' => array(
59
-                    'tipLocation'    => 'left',
60
-                    'tipAdjustmentY' => -50,
61
-                    'tipAdjustmentX' => -15,
62
-                ),
63
-            ),
64
-            60 => array(
65
-                'id'      => 'mtp_extra_actions',
66
-                'content' => $this->_mtp_extra_actions_stop(),
67
-                'options' => array(
68
-                    'tipLocation'    => 'left',
69
-                    'tipAdjustmentY' => -50,
70
-                    'tipAdjustmentX' => -15,
71
-                ),
72
-            ),
73
-            70 => array(
74
-                'id'      => 'espresso_espresso_messages_editor_overview',
75
-                'content' => $this->_update_metabox_stop(),
76
-                'options' => array(
77
-                    'tipLocation'    => 'left',
78
-                    'tipAdjustmentY' => -50,
79
-                    'tipAdjustmentX' => -15,
80
-                ),
81
-            ),
82
-        );
83
-    }
84
-
85
-
86
-    protected function _start()
87
-    {
88
-        $content = '<h3>' . __('Message Template Editor', 'event_espresso') . '</h3>';
89
-        $content .= '<p>'
90
-                    . __(
91
-                        'This tour of the Message Template Editor page will go over different areas of the screen to help you understand what they are used for.',
92
-                        'event_espresso'
93
-                    ) . '</p>';
94
-        return $content;
95
-    }
96
-
97
-
98
-    protected function _context_switcher_stop()
99
-    {
100
-        return '<p>'
101
-               . __(
102
-                   'This dropdown allows you to swap between the different recipients templates that are available in this message type. Be sure to save changes befor switching to a different context.',
103
-                   'event_espresso'
104
-               ) . '</p>';
105
-    }
106
-
107
-
108
-    protected function _preview_button_stop()
109
-    {
110
-        return '<p>'
111
-               . __(
112
-                   'Clicking this button will show you a preview of how your message will look.',
113
-                   'event_espresso'
114
-               ) . '</p>';
115
-    }
116
-
117
-
118
-    protected function _template_area_stop()
119
-    {
120
-        return '<p>'
121
-               . __(
122
-                   'Depending on the messenger (recipient) and the message type, the main screen can show different boxes. Overall the screen allows you to confirm who the messages go to and who from, and the actual content of the message.',
123
-                   'event_espresso'
124
-               ) . '</p>';
125
-    }
126
-
127
-    protected function _mtp_valid_shortcodes_stop()
128
-    {
129
-        return '<p>'
130
-               . __(
131
-                   'These shortcodes allow you to quickly add data into your messages, without touching code. From emails, to ticket details, to your company logo, building messages with shortcodes is easy and fast.',
132
-                   'event_espresso'
133
-               ) . '</p>';
134
-    }
135
-
136
-
137
-    protected function _mtp_extra_actions_stop()
138
-    {
139
-        return '<p>'
140
-               . __(
141
-                   'Here you will find miscellaneous options to assist you, including a test send button and a reset button.',
142
-                   'event_espresso'
143
-               ) . '</p>';
144
-    }
145
-
146
-
147
-    protected function _update_metabox_stop()
148
-    {
149
-        return '<p>' . __('When done creating your message, click here to save it.', 'event_espresso') . '</p>';
150
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Message Template Editor Tour', 'event_espresso');
21
+		$this->_slug = 'messages-templates-edit-joyride';
22
+	}
23
+
24
+
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10 => array(
29
+				'content' => $this->_start(),
30
+			),
31
+			20 => array(
32
+				'id'      => 'submit-msg-context-switcher-sbmt',
33
+				'content' => $this->_context_switcher_stop(),
34
+				'options' => array(
35
+					'tipLocation'    => 'bottom',
36
+					'tipAdjustmentY' => -30,
37
+					'tipAdjustmentX' => -60,
38
+				),
39
+			),
40
+			30 => array(
41
+				'class'   => 'messages-preview-button"',
42
+				'content' => $this->_preview_button_stop(),
43
+				'options' => array(
44
+					'tipLocation'    => 'bottom',
45
+					'tipAdjustmentY' => -30,
46
+				),
47
+			),
48
+			40 => array(
49
+				'content' => $this->_template_area_stop(),
50
+				'options' => array(
51
+					'tipAdjustmentY' => -100,
52
+					'tipAdjustmentX' => -60,
53
+				),
54
+			),
55
+			50 => array(
56
+				'id'      => 'mtp_valid_shortcodes',
57
+				'content' => $this->_mtp_valid_shortcodes_stop(),
58
+				'options' => array(
59
+					'tipLocation'    => 'left',
60
+					'tipAdjustmentY' => -50,
61
+					'tipAdjustmentX' => -15,
62
+				),
63
+			),
64
+			60 => array(
65
+				'id'      => 'mtp_extra_actions',
66
+				'content' => $this->_mtp_extra_actions_stop(),
67
+				'options' => array(
68
+					'tipLocation'    => 'left',
69
+					'tipAdjustmentY' => -50,
70
+					'tipAdjustmentX' => -15,
71
+				),
72
+			),
73
+			70 => array(
74
+				'id'      => 'espresso_espresso_messages_editor_overview',
75
+				'content' => $this->_update_metabox_stop(),
76
+				'options' => array(
77
+					'tipLocation'    => 'left',
78
+					'tipAdjustmentY' => -50,
79
+					'tipAdjustmentX' => -15,
80
+				),
81
+			),
82
+		);
83
+	}
84
+
85
+
86
+	protected function _start()
87
+	{
88
+		$content = '<h3>' . __('Message Template Editor', 'event_espresso') . '</h3>';
89
+		$content .= '<p>'
90
+					. __(
91
+						'This tour of the Message Template Editor page will go over different areas of the screen to help you understand what they are used for.',
92
+						'event_espresso'
93
+					) . '</p>';
94
+		return $content;
95
+	}
96
+
97
+
98
+	protected function _context_switcher_stop()
99
+	{
100
+		return '<p>'
101
+			   . __(
102
+				   'This dropdown allows you to swap between the different recipients templates that are available in this message type. Be sure to save changes befor switching to a different context.',
103
+				   'event_espresso'
104
+			   ) . '</p>';
105
+	}
106
+
107
+
108
+	protected function _preview_button_stop()
109
+	{
110
+		return '<p>'
111
+			   . __(
112
+				   'Clicking this button will show you a preview of how your message will look.',
113
+				   'event_espresso'
114
+			   ) . '</p>';
115
+	}
116
+
117
+
118
+	protected function _template_area_stop()
119
+	{
120
+		return '<p>'
121
+			   . __(
122
+				   'Depending on the messenger (recipient) and the message type, the main screen can show different boxes. Overall the screen allows you to confirm who the messages go to and who from, and the actual content of the message.',
123
+				   'event_espresso'
124
+			   ) . '</p>';
125
+	}
126
+
127
+	protected function _mtp_valid_shortcodes_stop()
128
+	{
129
+		return '<p>'
130
+			   . __(
131
+				   'These shortcodes allow you to quickly add data into your messages, without touching code. From emails, to ticket details, to your company logo, building messages with shortcodes is easy and fast.',
132
+				   'event_espresso'
133
+			   ) . '</p>';
134
+	}
135
+
136
+
137
+	protected function _mtp_extra_actions_stop()
138
+	{
139
+		return '<p>'
140
+			   . __(
141
+				   'Here you will find miscellaneous options to assist you, including a test send button and a reset button.',
142
+				   'event_espresso'
143
+			   ) . '</p>';
144
+	}
145
+
146
+
147
+	protected function _update_metabox_stop()
148
+	{
149
+		return '<p>' . __('When done creating your message, click here to save it.', 'event_espresso') . '</p>';
150
+	}
151 151
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -85,12 +85,12 @@  discard block
 block discarded – undo
85 85
 
86 86
     protected function _start()
87 87
     {
88
-        $content = '<h3>' . __('Message Template Editor', 'event_espresso') . '</h3>';
88
+        $content = '<h3>'.__('Message Template Editor', 'event_espresso').'</h3>';
89 89
         $content .= '<p>'
90 90
                     . __(
91 91
                         'This tour of the Message Template Editor page will go over different areas of the screen to help you understand what they are used for.',
92 92
                         'event_espresso'
93
-                    ) . '</p>';
93
+                    ).'</p>';
94 94
         return $content;
95 95
     }
96 96
 
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
                . __(
102 102
                    'This dropdown allows you to swap between the different recipients templates that are available in this message type. Be sure to save changes befor switching to a different context.',
103 103
                    'event_espresso'
104
-               ) . '</p>';
104
+               ).'</p>';
105 105
     }
106 106
 
107 107
 
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
                . __(
112 112
                    'Clicking this button will show you a preview of how your message will look.',
113 113
                    'event_espresso'
114
-               ) . '</p>';
114
+               ).'</p>';
115 115
     }
116 116
 
117 117
 
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
                . __(
122 122
                    'Depending on the messenger (recipient) and the message type, the main screen can show different boxes. Overall the screen allows you to confirm who the messages go to and who from, and the actual content of the message.',
123 123
                    'event_espresso'
124
-               ) . '</p>';
124
+               ).'</p>';
125 125
     }
126 126
 
127 127
     protected function _mtp_valid_shortcodes_stop()
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
                . __(
131 131
                    'These shortcodes allow you to quickly add data into your messages, without touching code. From emails, to ticket details, to your company logo, building messages with shortcodes is easy and fast.',
132 132
                    'event_espresso'
133
-               ) . '</p>';
133
+               ).'</p>';
134 134
     }
135 135
 
136 136
 
@@ -140,12 +140,12 @@  discard block
 block discarded – undo
140 140
                . __(
141 141
                    'Here you will find miscellaneous options to assist you, including a test send button and a reset button.',
142 142
                    'event_espresso'
143
-               ) . '</p>';
143
+               ).'</p>';
144 144
     }
145 145
 
146 146
 
147 147
     protected function _update_metabox_stop()
148 148
     {
149
-        return '<p>' . __('When done creating your message, click here to save it.', 'event_espresso') . '</p>';
149
+        return '<p>'.__('When done creating your message, click here to save it.', 'event_espresso').'</p>';
150 150
     }
151 151
 }
Please login to merge, or discard this patch.
admin_pages/messages/help_tours/Messages_Settings_Help_Tour.class.php 2 patches
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -15,112 +15,112 @@
 block discarded – undo
15 15
 class Messages_Settings_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Messages Settings Tour', 'event_espresso');
21
-        $this->_slug = 'messages-settings-joyride';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Messages Settings Tour', 'event_espresso');
21
+		$this->_slug = 'messages-settings-joyride';
22
+	}
23 23
 
24 24
 
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10 => array(
29
-                'content' => $this->_start(),
30
-            ),
31
-            20 => array(
32
-                'class'   => 'messenger_links',
33
-                'content' => $this->_messenger_links_stop(),
34
-                'options' => array(
35
-                    'tipLocation'    => 'bottom',
36
-                    'tipAdjustmentX' => -5,
37
-                    'tipAdjustmentY' => -25,
38
-                ),
39
-            ),
40
-            30 => array(
41
-                'id'      => 'espresso_email_settings',
42
-                'content' => $this->_email_settings_metabox_stop(),
43
-                'options' => array(
44
-                    'tipLocation'    => 'top',
45
-                    'tipAdjustmentX' => 20,
46
-                    'tipAdjustmentY' => -30,
47
-                ),
48
-            ),
49
-            40 => array(
50
-                'id'      => 'on-off-email',
51
-                'content' => $this->_on_off_toggle_stop(),
52
-                'options' => array(
53
-                    'tipLocation'    => 'left',
54
-                    'tipAdjustmentY' => -50,
55
-                    'tipAdjustmentX' => -15,
56
-                ),
57
-            ),
58
-            50 => array(
59
-                'id'      => 'active-message-types',
60
-                'content' => $this->_active_mts_container_stop(),
61
-                'options' => array(
62
-                    'tipLocation'    => 'top',
63
-                    'tipAdjustmentY' => -30,
64
-                ),
65
-            ),
66
-            60 => array(
67
-                'id'      => 'inactive-message-types',
68
-                'content' => $this->_inactive_mts_container_stop(),
69
-                'options' => array(
70
-                    'tipLocation'    => 'left',
71
-                    'tipAdjustmentY' => -50,
72
-                    'tipAdjustmentX' => -15,
73
-                ),
74
-            ),
75
-        );
76
-    }
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10 => array(
29
+				'content' => $this->_start(),
30
+			),
31
+			20 => array(
32
+				'class'   => 'messenger_links',
33
+				'content' => $this->_messenger_links_stop(),
34
+				'options' => array(
35
+					'tipLocation'    => 'bottom',
36
+					'tipAdjustmentX' => -5,
37
+					'tipAdjustmentY' => -25,
38
+				),
39
+			),
40
+			30 => array(
41
+				'id'      => 'espresso_email_settings',
42
+				'content' => $this->_email_settings_metabox_stop(),
43
+				'options' => array(
44
+					'tipLocation'    => 'top',
45
+					'tipAdjustmentX' => 20,
46
+					'tipAdjustmentY' => -30,
47
+				),
48
+			),
49
+			40 => array(
50
+				'id'      => 'on-off-email',
51
+				'content' => $this->_on_off_toggle_stop(),
52
+				'options' => array(
53
+					'tipLocation'    => 'left',
54
+					'tipAdjustmentY' => -50,
55
+					'tipAdjustmentX' => -15,
56
+				),
57
+			),
58
+			50 => array(
59
+				'id'      => 'active-message-types',
60
+				'content' => $this->_active_mts_container_stop(),
61
+				'options' => array(
62
+					'tipLocation'    => 'top',
63
+					'tipAdjustmentY' => -30,
64
+				),
65
+			),
66
+			60 => array(
67
+				'id'      => 'inactive-message-types',
68
+				'content' => $this->_inactive_mts_container_stop(),
69
+				'options' => array(
70
+					'tipLocation'    => 'left',
71
+					'tipAdjustmentY' => -50,
72
+					'tipAdjustmentX' => -15,
73
+				),
74
+			),
75
+		);
76
+	}
77 77
 
78 78
 
79
-    protected function _start()
80
-    {
81
-        $content = '<h3>' . __('Messages Settings', 'event_espresso') . '</h3>';
82
-        $content .= '<p>'
83
-                    . __(
84
-                        'This tour of the Messages Settings page will go over different areas of the screen to help you understand what they are used for.',
85
-                        'event_espresso'
86
-                    ) . '</p>';
87
-        return $content;
88
-    }
79
+	protected function _start()
80
+	{
81
+		$content = '<h3>' . __('Messages Settings', 'event_espresso') . '</h3>';
82
+		$content .= '<p>'
83
+					. __(
84
+						'This tour of the Messages Settings page will go over different areas of the screen to help you understand what they are used for.',
85
+						'event_espresso'
86
+					) . '</p>';
87
+		return $content;
88
+	}
89 89
 
90
-    protected function _messenger_links_stop()
91
-    {
92
-        return '<p>' . __('Available messengers are shown above.', 'event_espresso') . '</p>';
93
-    }
90
+	protected function _messenger_links_stop()
91
+	{
92
+		return '<p>' . __('Available messengers are shown above.', 'event_espresso') . '</p>';
93
+	}
94 94
 
95
-    protected function _email_settings_metabox_stop()
96
-    {
97
-        return '<p>' . __('View the different message types that are currently active.', 'event_espresso') . '</p>';
98
-    }
95
+	protected function _email_settings_metabox_stop()
96
+	{
97
+		return '<p>' . __('View the different message types that are currently active.', 'event_espresso') . '</p>';
98
+	}
99 99
 
100
-    protected function _on_off_toggle_stop()
101
-    {
102
-        return '<p>'
103
-               . __(
104
-                   'This toggle will turn all messages on or off for this message type.',
105
-                   'event_espresso'
106
-               ) . '</p>';
107
-    }
100
+	protected function _on_off_toggle_stop()
101
+	{
102
+		return '<p>'
103
+			   . __(
104
+				   'This toggle will turn all messages on or off for this message type.',
105
+				   'event_espresso'
106
+			   ) . '</p>';
107
+	}
108 108
 
109
-    protected function _active_mts_container_stop()
110
-    {
111
-        return '<p>'
112
-               . __(
113
-                   'These are your active message types. Click them to see a description and settings for each one.',
114
-                   'event_espresso'
115
-               ) . '</p>';
116
-    }
109
+	protected function _active_mts_container_stop()
110
+	{
111
+		return '<p>'
112
+			   . __(
113
+				   'These are your active message types. Click them to see a description and settings for each one.',
114
+				   'event_espresso'
115
+			   ) . '</p>';
116
+	}
117 117
 
118
-    protected function _inactive_mts_container_stop()
119
-    {
120
-        return '<p>'
121
-               . __(
122
-                   'Drag message types here to deactivate them. Drag them from here to the active box to reactivate them.',
123
-                   'event_espresso'
124
-               ) . '</p>';
125
-    }
118
+	protected function _inactive_mts_container_stop()
119
+	{
120
+		return '<p>'
121
+			   . __(
122
+				   'Drag message types here to deactivate them. Drag them from here to the active box to reactivate them.',
123
+				   'event_espresso'
124
+			   ) . '</p>';
125
+	}
126 126
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -78,23 +78,23 @@  discard block
 block discarded – undo
78 78
 
79 79
     protected function _start()
80 80
     {
81
-        $content = '<h3>' . __('Messages Settings', 'event_espresso') . '</h3>';
81
+        $content = '<h3>'.__('Messages Settings', 'event_espresso').'</h3>';
82 82
         $content .= '<p>'
83 83
                     . __(
84 84
                         'This tour of the Messages Settings page will go over different areas of the screen to help you understand what they are used for.',
85 85
                         'event_espresso'
86
-                    ) . '</p>';
86
+                    ).'</p>';
87 87
         return $content;
88 88
     }
89 89
 
90 90
     protected function _messenger_links_stop()
91 91
     {
92
-        return '<p>' . __('Available messengers are shown above.', 'event_espresso') . '</p>';
92
+        return '<p>'.__('Available messengers are shown above.', 'event_espresso').'</p>';
93 93
     }
94 94
 
95 95
     protected function _email_settings_metabox_stop()
96 96
     {
97
-        return '<p>' . __('View the different message types that are currently active.', 'event_espresso') . '</p>';
97
+        return '<p>'.__('View the different message types that are currently active.', 'event_espresso').'</p>';
98 98
     }
99 99
 
100 100
     protected function _on_off_toggle_stop()
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
                . __(
104 104
                    'This toggle will turn all messages on or off for this message type.',
105 105
                    'event_espresso'
106
-               ) . '</p>';
106
+               ).'</p>';
107 107
     }
108 108
 
109 109
     protected function _active_mts_container_stop()
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
                . __(
113 113
                    'These are your active message types. Click them to see a description and settings for each one.',
114 114
                    'event_espresso'
115
-               ) . '</p>';
115
+               ).'</p>';
116 116
     }
117 117
 
118 118
     protected function _inactive_mts_container_stop()
@@ -121,6 +121,6 @@  discard block
 block discarded – undo
121 121
                . __(
122 122
                    'Drag message types here to deactivate them. Drag them from here to the active box to reactivate them.',
123 123
                    'event_espresso'
124
-               ) . '</p>';
124
+               ).'</p>';
125 125
     }
126 126
 }
Please login to merge, or discard this patch.
admin_pages/messages/help_tours/Messages_Overview_Help_Tour.class.php 2 patches
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -15,131 +15,131 @@
 block discarded – undo
15 15
 class Messages_Overview_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Messages Overview Tour', 'event_espresso');
21
-        $this->_slug = 'messages-overview-joyride';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Messages Overview Tour', 'event_espresso');
21
+		$this->_slug = 'messages-overview-joyride';
22
+	}
23 23
 
24 24
 
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10 => array(
29
-                'content' => $this->_start(),
30
-            ),
31
-            20 => array(
32
-                'id'      => 'event',
33
-                'content' => $this->event_column_stop(),
34
-                'options' => array(
35
-                    'tipLocation'    => 'top',
36
-                    'tipAdjustmentX' => -5,
37
-                    'tipAdjustmentY' => -30,
38
-                ),
39
-            ),
40
-            30 => array(
41
-                'id'      => 'message_type',
42
-                'content' => $this->_message_type_column_stop(),
43
-                'options' => array(
44
-                    'tipLocation'    => 'top',
45
-                    'tipAdjustmentX' => 20,
46
-                    'tipAdjustmentY' => -30,
47
-                ),
48
-            ),
49
-            40 => array(
50
-                'id'      => 'messenger',
51
-                'content' => $this->_messenger_column_stop(),
52
-                'options' => array(
53
-                    'tipLocation'    => 'top',
54
-                    'tipAdjustmentX' => 5,
55
-                    'tipAdjustmentY' => -30,
56
-                ),
57
-            ),
58
-            50 => array(
59
-                'id'      => 'description',
60
-                'content' => $this->_description_column_stop(),
61
-                'options' => array(
62
-                    'tipLocation'    => 'top',
63
-                    'tipAdjustmentX' => 5,
64
-                    'tipAdjustmentY' => -30,
65
-                ),
66
-            ),
67
-            60 => array(
68
-                'class'   => 'bulkactions',
69
-                'content' => $this->_bulk_actions_stop(),
70
-                'options' => array(
71
-                    'tipLocation'    => 'top',
72
-                    'tipAdjustmentX' => 25,
73
-                    'tipAdjustmentY' => -35,
74
-                ),
75
-            ),
76
-            70 => array(
77
-                'id'      => 'ee_messenger_filter_by',
78
-                'content' => $this->_filters_stop(),
79
-                'options' => array(
80
-                    'tipLocation'    => 'top',
81
-                    'tipAdjustmentX' => 25,
82
-                    'tipAdjustmentY' => -30,
83
-                ),
84
-            ),
85
-        );
86
-    }
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10 => array(
29
+				'content' => $this->_start(),
30
+			),
31
+			20 => array(
32
+				'id'      => 'event',
33
+				'content' => $this->event_column_stop(),
34
+				'options' => array(
35
+					'tipLocation'    => 'top',
36
+					'tipAdjustmentX' => -5,
37
+					'tipAdjustmentY' => -30,
38
+				),
39
+			),
40
+			30 => array(
41
+				'id'      => 'message_type',
42
+				'content' => $this->_message_type_column_stop(),
43
+				'options' => array(
44
+					'tipLocation'    => 'top',
45
+					'tipAdjustmentX' => 20,
46
+					'tipAdjustmentY' => -30,
47
+				),
48
+			),
49
+			40 => array(
50
+				'id'      => 'messenger',
51
+				'content' => $this->_messenger_column_stop(),
52
+				'options' => array(
53
+					'tipLocation'    => 'top',
54
+					'tipAdjustmentX' => 5,
55
+					'tipAdjustmentY' => -30,
56
+				),
57
+			),
58
+			50 => array(
59
+				'id'      => 'description',
60
+				'content' => $this->_description_column_stop(),
61
+				'options' => array(
62
+					'tipLocation'    => 'top',
63
+					'tipAdjustmentX' => 5,
64
+					'tipAdjustmentY' => -30,
65
+				),
66
+			),
67
+			60 => array(
68
+				'class'   => 'bulkactions',
69
+				'content' => $this->_bulk_actions_stop(),
70
+				'options' => array(
71
+					'tipLocation'    => 'top',
72
+					'tipAdjustmentX' => 25,
73
+					'tipAdjustmentY' => -35,
74
+				),
75
+			),
76
+			70 => array(
77
+				'id'      => 'ee_messenger_filter_by',
78
+				'content' => $this->_filters_stop(),
79
+				'options' => array(
80
+					'tipLocation'    => 'top',
81
+					'tipAdjustmentX' => 25,
82
+					'tipAdjustmentY' => -30,
83
+				),
84
+			),
85
+		);
86
+	}
87 87
 
88 88
 
89
-    protected function _start()
90
-    {
91
-        $content = '<h3>' . __('Messages Overview', 'event_espresso') . '</h3>';
92
-        $content .= '<p>'
93
-                    . __(
94
-                        'This tour of the Messages Overview page will go over different areas of the screen to help you understand what they are used for.',
95
-                        'event_espresso'
96
-                    ) . '</p>';
97
-        return $content;
98
-    }
89
+	protected function _start()
90
+	{
91
+		$content = '<h3>' . __('Messages Overview', 'event_espresso') . '</h3>';
92
+		$content .= '<p>'
93
+					. __(
94
+						'This tour of the Messages Overview page will go over different areas of the screen to help you understand what they are used for.',
95
+						'event_espresso'
96
+					) . '</p>';
97
+		return $content;
98
+	}
99 99
 
100
-    protected function event_column_stop()
101
-    {
102
-        return '<p>'
103
-               . __(
104
-                   'View if a message is associated with one event or multiple events. Can be sorted in ascending and descending order.',
105
-                   'event_espresso'
106
-               ) . '</p>';
107
-    }
100
+	protected function event_column_stop()
101
+	{
102
+		return '<p>'
103
+			   . __(
104
+				   'View if a message is associated with one event or multiple events. Can be sorted in ascending and descending order.',
105
+				   'event_espresso'
106
+			   ) . '</p>';
107
+	}
108 108
 
109
-    protected function _message_type_column_stop()
110
-    {
111
-        return '<p>'
112
-               . __(
113
-                   'View the type of message. Can be sorted in ascending or descending order.',
114
-                   'event_espresso'
115
-               ) . '</p>';
116
-    }
109
+	protected function _message_type_column_stop()
110
+	{
111
+		return '<p>'
112
+			   . __(
113
+				   'View the type of message. Can be sorted in ascending or descending order.',
114
+				   'event_espresso'
115
+			   ) . '</p>';
116
+	}
117 117
 
118
-    protected function _messenger_column_stop()
119
-    {
120
-        return '<p>'
121
-               . __(
122
-                   'View who messages will be sent to. Can be sorted in ascending or descending order.',
123
-                   'event_espresso'
124
-               ) . '</p>';
125
-    }
118
+	protected function _messenger_column_stop()
119
+	{
120
+		return '<p>'
121
+			   . __(
122
+				   'View who messages will be sent to. Can be sorted in ascending or descending order.',
123
+				   'event_espresso'
124
+			   ) . '</p>';
125
+	}
126 126
 
127
-    protected function _description_column_stop()
128
-    {
129
-        return '<p>' . __('View the description for each message type.', 'event_espresso') . '</p>';
130
-    }
127
+	protected function _description_column_stop()
128
+	{
129
+		return '<p>' . __('View the description for each message type.', 'event_espresso') . '</p>';
130
+	}
131 131
 
132
-    protected function _bulk_actions_stop()
133
-    {
134
-        return '<p>' . __('Perform bulk actions to multiple message types.', 'event_espresso') . '</p>';
135
-    }
132
+	protected function _bulk_actions_stop()
133
+	{
134
+		return '<p>' . __('Perform bulk actions to multiple message types.', 'event_espresso') . '</p>';
135
+	}
136 136
 
137
-    protected function _filters_stop()
138
-    {
139
-        return '<p>'
140
-               . __(
141
-                   'You can filter by different notifications by making a selection below and clicking on the filter button. To reset your selection, just click on the reset filters button.',
142
-                   'event_espresso'
143
-               ) . '</p>';
144
-    }
137
+	protected function _filters_stop()
138
+	{
139
+		return '<p>'
140
+			   . __(
141
+				   'You can filter by different notifications by making a selection below and clicking on the filter button. To reset your selection, just click on the reset filters button.',
142
+				   'event_espresso'
143
+			   ) . '</p>';
144
+	}
145 145
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -88,12 +88,12 @@  discard block
 block discarded – undo
88 88
 
89 89
     protected function _start()
90 90
     {
91
-        $content = '<h3>' . __('Messages Overview', 'event_espresso') . '</h3>';
91
+        $content = '<h3>'.__('Messages Overview', 'event_espresso').'</h3>';
92 92
         $content .= '<p>'
93 93
                     . __(
94 94
                         'This tour of the Messages Overview page will go over different areas of the screen to help you understand what they are used for.',
95 95
                         'event_espresso'
96
-                    ) . '</p>';
96
+                    ).'</p>';
97 97
         return $content;
98 98
     }
99 99
 
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
                . __(
104 104
                    'View if a message is associated with one event or multiple events. Can be sorted in ascending and descending order.',
105 105
                    'event_espresso'
106
-               ) . '</p>';
106
+               ).'</p>';
107 107
     }
108 108
 
109 109
     protected function _message_type_column_stop()
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
                . __(
113 113
                    'View the type of message. Can be sorted in ascending or descending order.',
114 114
                    'event_espresso'
115
-               ) . '</p>';
115
+               ).'</p>';
116 116
     }
117 117
 
118 118
     protected function _messenger_column_stop()
@@ -121,17 +121,17 @@  discard block
 block discarded – undo
121 121
                . __(
122 122
                    'View who messages will be sent to. Can be sorted in ascending or descending order.',
123 123
                    'event_espresso'
124
-               ) . '</p>';
124
+               ).'</p>';
125 125
     }
126 126
 
127 127
     protected function _description_column_stop()
128 128
     {
129
-        return '<p>' . __('View the description for each message type.', 'event_espresso') . '</p>';
129
+        return '<p>'.__('View the description for each message type.', 'event_espresso').'</p>';
130 130
     }
131 131
 
132 132
     protected function _bulk_actions_stop()
133 133
     {
134
-        return '<p>' . __('Perform bulk actions to multiple message types.', 'event_espresso') . '</p>';
134
+        return '<p>'.__('Perform bulk actions to multiple message types.', 'event_espresso').'</p>';
135 135
     }
136 136
 
137 137
     protected function _filters_stop()
@@ -140,6 +140,6 @@  discard block
 block discarded – undo
140 140
                . __(
141 141
                    'You can filter by different notifications by making a selection below and clicking on the filter button. To reset your selection, just click on the reset filters button.',
142 142
                    'event_espresso'
143
-               ) . '</p>';
143
+               ).'</p>';
144 144
     }
145 145
 }
Please login to merge, or discard this patch.
admin_pages/messages/EE_Message_List_Table.class.php 2 patches
Indentation   +430 added lines, -430 removed lines patch added patch discarded remove patch
@@ -12,434 +12,434 @@
 block discarded – undo
12 12
 {
13 13
 
14 14
 
15
-    /**
16
-     * @return Messages_Admin_Page
17
-     */
18
-    public function get_admin_page()
19
-    {
20
-        return $this->_admin_page;
21
-    }
22
-
23
-
24
-    protected function _setup_data()
25
-    {
26
-        $this->_data = $this->_get_messages($this->_per_page, $this->_view);
27
-        $this->_all_data_count = $this->_get_messages($this->_per_page, $this->_view, true);
28
-    }
29
-
30
-
31
-    protected function _set_properties()
32
-    {
33
-        $this->_wp_list_args = array(
34
-            'singular' => __('Message', 'event_espresso'),
35
-            'plural'   => __('Messages', 'event_espresso'),
36
-            'ajax'     => true,
37
-            'screen'   => $this->get_admin_page()->get_current_screen()->id,
38
-        );
39
-
40
-        $this->_columns = array(
41
-            'cb'           => '<input type="checkbox" />',
42
-            'to'           => __('To', 'event_espresso'),
43
-            'from'         => __('From', 'event_espresso'),
44
-            'messenger'    => __('Messenger', 'event_espresso'),
45
-            'message_type' => __('Message Type', 'event_espresso'),
46
-            'context'      => __('Context', 'event_espresso'),
47
-            'modified'     => __('Modified', 'event_espresso'),
48
-            'action'       => __('Actions', 'event_espresso'),
49
-            'msg_id'       => __('ID', 'event_espresso'),
50
-        );
51
-
52
-        $this->_sortable_columns = array(
53
-            'modified'     => array('MSG_modified' => true),
54
-            'message_type' => array('MSG_message_type' => false),
55
-            'messenger'    => array('MSG_messenger' => false),
56
-            'to'           => array('MSG_to' => false),
57
-            'from'         => array('MSG_from' => false),
58
-            'context'      => array('MSG_context' => false),
59
-            'msg_id'       => array('MSG_ID', false),
60
-        );
61
-
62
-        $this->_primary_column = 'to';
63
-
64
-        $this->_hidden_columns = array(
65
-            'msg_id',
66
-        );
67
-    }
68
-
69
-
70
-    /**
71
-     * This simply sets up the row class for the table rows.
72
-     * Allows for easier overriding of child methods for setting up sorting.
73
-     *
74
-     * @param  object $item the current item
75
-     * @return string
76
-     */
77
-    protected function _get_row_class($item)
78
-    {
79
-        $class = parent::_get_row_class($item);
80
-        // add status class
81
-        $class .= ' ee-status-strip msg-status-' . $item->STS_ID();
82
-        if ($this->_has_checkbox_column) {
83
-            $class .= ' has-checkbox-column';
84
-        }
85
-        return $class;
86
-    }
87
-
88
-
89
-    /**
90
-     * _get_table_filters
91
-     * We use this to assemble and return any filters that are associated with this table that help further refine what
92
-     * get's shown in the table.
93
-     *
94
-     * @abstract
95
-     * @access protected
96
-     * @return string
97
-     * @throws \EE_Error
98
-     */
99
-    protected function _get_table_filters()
100
-    {
101
-        $filters = array();
102
-
103
-        // get select_inputs
104
-        $select_inputs = array(
105
-            $this->_get_messengers_dropdown_filter(),
106
-            $this->_get_message_types_dropdown_filter(),
107
-            $this->_get_contexts_for_message_types_dropdown_filter(),
108
-        );
109
-
110
-        // set filters to select inputs if they aren't empty
111
-        foreach ($select_inputs as $select_input) {
112
-            if ($select_input) {
113
-                $filters[] = $select_input;
114
-            }
115
-        }
116
-        return $filters;
117
-    }
118
-
119
-
120
-    protected function _add_view_counts()
121
-    {
122
-        foreach ($this->_views as $view => $args) {
123
-            $this->_views[ $view ]['count'] = $this->_get_messages($this->_per_page, $view, true, true);
124
-        }
125
-    }
126
-
127
-
128
-    /**
129
-     * @param EE_Message $message
130
-     * @return string   checkbox
131
-     * @throws \EE_Error
132
-     */
133
-    public function column_cb($message)
134
-    {
135
-        return sprintf('<input type="checkbox" name="MSG_ID[%s]" value="1" />', $message->ID());
136
-    }
137
-
138
-
139
-    /**
140
-     * @param EE_Message $message
141
-     * @return string
142
-     * @throws \EE_Error
143
-     */
144
-    public function column_msg_id(EE_Message $message)
145
-    {
146
-        return $message->ID();
147
-    }
148
-
149
-
150
-    /**
151
-     * @param EE_Message $message
152
-     * @return string    The recipient of the message
153
-     * @throws \EE_Error
154
-     */
155
-    public function column_to(EE_Message $message)
156
-    {
157
-        EE_Registry::instance()->load_helper('URL');
158
-        $actions = array();
159
-        $actions['delete'] = '<a href="'
160
-                             . EEH_URL::add_query_args_and_nonce(
161
-                                 array(
162
-                                    'page'   => 'espresso_messages',
163
-                                    'action' => 'delete_ee_message',
164
-                                    'MSG_ID' => $message->ID(),
165
-                                 ),
166
-                                 admin_url('admin.php')
167
-                             )
168
-                             . '">' . __('Delete', 'event_espresso') . '</a>';
169
-        return esc_html($message->to()) . $this->row_actions($actions);
170
-    }
171
-
172
-
173
-    /**
174
-     * @param EE_Message $message
175
-     * @return string   The sender of the message
176
-     */
177
-    public function column_from(EE_Message $message)
178
-    {
179
-        return esc_html($message->from());
180
-    }
181
-
182
-
183
-    /**
184
-     * @param EE_Message $message
185
-     * @return string  The messenger used to send the message.
186
-     */
187
-    public function column_messenger(EE_Message $message)
188
-    {
189
-        return ucwords($message->messenger_label());
190
-    }
191
-
192
-
193
-    /**
194
-     * @param EE_Message $message
195
-     * @return string  The message type used to generate the message.
196
-     */
197
-    public function column_message_type(EE_Message $message)
198
-    {
199
-        return ucwords($message->message_type_label());
200
-    }
201
-
202
-
203
-    /**
204
-     * @param EE_Message $message
205
-     * @return string  The context the message was generated for.
206
-     */
207
-    public function column_context(EE_Message $message)
208
-    {
209
-        return $message->context_label();
210
-    }
211
-
212
-
213
-    /**
214
-     * @param EE_Message $message
215
-     * @return string    The timestamp when this message was last modified.
216
-     */
217
-    public function column_modified(EE_Message $message)
218
-    {
219
-        return $message->modified();
220
-    }
221
-
222
-
223
-    /**
224
-     * @param EE_Message $message
225
-     * @return string   Actions that can be done on the current message.
226
-     */
227
-    public function column_action(EE_Message $message)
228
-    {
229
-        EE_Registry::instance()->load_helper('MSG_Template');
230
-        $action_links = array(
231
-            'view'                => EEH_MSG_Template::get_message_action_link('view', $message),
232
-            'error'               => EEH_MSG_Template::get_message_action_link('error', $message),
233
-            'generate_now'        => EEH_MSG_Template::get_message_action_link('generate_now', $message),
234
-            'send_now'            => EEH_MSG_Template::get_message_action_link('send_now', $message),
235
-            'queue_for_resending' => EEH_MSG_Template::get_message_action_link('queue_for_resending', $message),
236
-            'view_transaction'    => EEH_MSG_Template::get_message_action_link('view_transaction', $message),
237
-        );
238
-        $content = '';
239
-        switch ($message->STS_ID()) {
240
-            case EEM_Message::status_sent:
241
-                $content = $action_links['view'] . $action_links['queue_for_resending'] . $action_links['view_transaction'];
242
-                break;
243
-            case EEM_Message::status_resend:
244
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
245
-                break;
246
-            case EEM_Message::status_retry:
247
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['error'] . $action_links['view_transaction'];
248
-                break;
249
-            case EEM_Message::status_failed:
250
-            case EEM_Message::status_debug_only:
251
-                $content = $action_links['error'] . $action_links['view_transaction'];
252
-                break;
253
-            case EEM_Message::status_idle:
254
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
255
-                break;
256
-            case EEM_Message::status_incomplete:
257
-                $content = $action_links['generate_now'] . $action_links['view_transaction'];
258
-                break;
259
-        }
260
-        return $content;
261
-    }
262
-
263
-
264
-    /**
265
-     * Retrieve the EE_Message objects for the list table.
266
-     *
267
-     * @param int    $perpage The number of items per page
268
-     * @param string $view    The view items are being retrieved for
269
-     * @param bool   $count   Whether to just return a count or not.
270
-     * @param bool   $all     Disregard any paging info (no limit on data returned).
271
-     * @return int|EE_Message[]
272
-     * @throws \EE_Error
273
-     */
274
-    protected function _get_messages($perpage = 10, $view = 'all', $count = false, $all = false)
275
-    {
276
-
277
-        $current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
278
-            ? $this->_req_data['paged']
279
-            : 1;
280
-
281
-        $per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
282
-            ? $this->_req_data['perpage']
283
-            : $perpage;
284
-
285
-        $offset = ($current_page - 1) * $per_page;
286
-        $limit = $all || $count ? null : array($offset, $per_page);
287
-        $query_params = array(
288
-            'order_by' => empty($this->_req_data['orderby']) ? 'MSG_modified' : $this->_req_data['orderby'],
289
-            'order'    => empty($this->_req_data['order']) ? 'DESC' : $this->_req_data['order'],
290
-            'limit'    => $limit,
291
-        );
292
-
293
-        /**
294
-         * Any filters coming in from other routes?
295
-         */
296
-        if (isset($this->_req_data['filterby'])) {
297
-            $query_params = array_merge($query_params, EEM_Message::instance()->filter_by_query_params());
298
-            if (! $count) {
299
-                $query_params['group_by'] = 'MSG_ID';
300
-            }
301
-        }
302
-
303
-        // view conditionals
304
-        if ($view !== 'all' && $count && $all) {
305
-            $query_params[0]['AND*view_conditional'] = array(
306
-                'STS_ID' => strtoupper($view),
307
-            );
308
-        }
309
-
310
-        if (! $all && ! empty($this->_req_data['status']) && $this->_req_data['status'] !== 'all') {
311
-            $query_params[0]['AND*view_conditional'] = $this->_req_data === EEM_Message::status_failed
312
-                ? array(
313
-                    'STS_ID' => array(
314
-                        'IN',
315
-                        array(EEM_Message::status_failed, EEM_Message::status_messenger_executing),
316
-                    ),
317
-                )
318
-                : array('STS_ID' => strtoupper($this->_req_data['status']));
319
-        }
320
-
321
-        if (! $all && ! empty($this->_req_data['s'])) {
322
-            $search_string = '%' . $this->_req_data['s'] . '%';
323
-            $query_params[0]['OR'] = array(
324
-                'MSG_to'      => array('LIKE', $search_string),
325
-                'MSG_from'    => array('LIKE', $search_string),
326
-                'MSG_subject' => array('LIKE', $search_string),
327
-                'MSG_content' => array('LIKE', $search_string),
328
-            );
329
-        }
330
-
331
-        // account for debug only status.  We don't show Messages with the EEM_Message::status_debug_only to clients when
332
-        // the messages system is in debug mode.
333
-        // Note: for backward compat with previous iterations, this is necessary because there may be EEM_Message::status_debug_only
334
-        // messages in the database.
335
-        if (! EEM_Message::debug()) {
336
-            $query_params[0]['AND*debug_only_conditional'] = array(
337
-                'STS_ID' => array('!=', EEM_Message::status_debug_only),
338
-            );
339
-        }
340
-
341
-        // account for filters
342
-        if (! $all
343
-            && isset($this->_req_data['ee_messenger_filter_by'])
344
-            && $this->_req_data['ee_messenger_filter_by'] !== 'none_selected'
345
-        ) {
346
-            $query_params[0]['AND*messenger_filter'] = array(
347
-                'MSG_messenger' => $this->_req_data['ee_messenger_filter_by'],
348
-            );
349
-        }
350
-        if (! $all
351
-            && ! empty($this->_req_data['ee_message_type_filter_by'])
352
-            && $this->_req_data['ee_message_type_filter_by'] !== 'none_selected'
353
-        ) {
354
-            $query_params[0]['AND*message_type_filter'] = array(
355
-                'MSG_message_type' => $this->_req_data['ee_message_type_filter_by'],
356
-            );
357
-        }
358
-
359
-        if (! $all
360
-            && ! empty($this->_req_data['ee_context_filter_by'])
361
-            && $this->_req_data['ee_context_filter_by'] !== 'none_selected'
362
-        ) {
363
-            $query_params[0]['AND*context_filter'] = array(
364
-                'MSG_context' => array('IN', explode(',', $this->_req_data['ee_context_filter_by'])),
365
-            );
366
-        }
367
-
368
-        return $count
369
-            /** @type int */
370
-            ? EEM_Message::instance()->count($query_params, null, true)
371
-            /** @type EE_Message[] */
372
-            : EEM_Message::instance()->get_all($query_params);
373
-    }
374
-
375
-
376
-    /**
377
-     * Generate dropdown filter select input for messengers.
378
-     *
379
-     * @return string
380
-     */
381
-    protected function _get_messengers_dropdown_filter()
382
-    {
383
-        $messenger_options = array();
384
-        $active_messages_grouped_by_messenger = EEM_Message::instance()->get_all(array('group_by' => 'MSG_messenger'));
385
-
386
-        // setup array of messenger options
387
-        foreach ($active_messages_grouped_by_messenger as $active_message) {
388
-            if ($active_message instanceof EE_Message) {
389
-                $messenger_options[ $active_message->messenger() ] = ucwords($active_message->messenger_label());
390
-            }
391
-        }
392
-        return $this->get_admin_page()->get_messengers_select_input($messenger_options);
393
-    }
394
-
395
-
396
-    /**
397
-     * Generate dropdown filter select input for message types
398
-     *
399
-     * @return string
400
-     */
401
-    protected function _get_message_types_dropdown_filter()
402
-    {
403
-        $message_type_options = array();
404
-        $active_messages_grouped_by_message_type = EEM_Message::instance()->get_all(
405
-            array('group_by' => 'MSG_message_type')
406
-        );
407
-
408
-        // setup array of message type options
409
-        foreach ($active_messages_grouped_by_message_type as $active_message) {
410
-            if ($active_message instanceof EE_Message) {
411
-                $message_type_options[ $active_message->message_type() ] = ucwords(
412
-                    $active_message->message_type_label()
413
-                );
414
-            }
415
-        }
416
-        return $this->get_admin_page()->get_message_types_select_input($message_type_options);
417
-    }
418
-
419
-
420
-    /**
421
-     * Generate dropdown filter select input for message type contexts
422
-     *
423
-     * @return string
424
-     */
425
-    protected function _get_contexts_for_message_types_dropdown_filter()
426
-    {
427
-        $context_options = array();
428
-        $active_messages_grouped_by_context = EEM_Message::instance()->get_all(array('group_by' => 'MSG_context'));
429
-
430
-        // setup array of context options
431
-        foreach ($active_messages_grouped_by_context as $active_message) {
432
-            if ($active_message instanceof EE_Message) {
433
-                $message_type = $active_message->message_type_object();
434
-                if ($message_type instanceof EE_message_type) {
435
-                    foreach ($message_type->get_contexts() as $context => $context_details) {
436
-                        if (isset($context_details['label'])) {
437
-                            $context_options[ $context ] = $context_details['label'];
438
-                        }
439
-                    }
440
-                }
441
-            }
442
-        }
443
-        return $this->get_admin_page()->get_contexts_for_message_types_select_input($context_options);
444
-    }
15
+	/**
16
+	 * @return Messages_Admin_Page
17
+	 */
18
+	public function get_admin_page()
19
+	{
20
+		return $this->_admin_page;
21
+	}
22
+
23
+
24
+	protected function _setup_data()
25
+	{
26
+		$this->_data = $this->_get_messages($this->_per_page, $this->_view);
27
+		$this->_all_data_count = $this->_get_messages($this->_per_page, $this->_view, true);
28
+	}
29
+
30
+
31
+	protected function _set_properties()
32
+	{
33
+		$this->_wp_list_args = array(
34
+			'singular' => __('Message', 'event_espresso'),
35
+			'plural'   => __('Messages', 'event_espresso'),
36
+			'ajax'     => true,
37
+			'screen'   => $this->get_admin_page()->get_current_screen()->id,
38
+		);
39
+
40
+		$this->_columns = array(
41
+			'cb'           => '<input type="checkbox" />',
42
+			'to'           => __('To', 'event_espresso'),
43
+			'from'         => __('From', 'event_espresso'),
44
+			'messenger'    => __('Messenger', 'event_espresso'),
45
+			'message_type' => __('Message Type', 'event_espresso'),
46
+			'context'      => __('Context', 'event_espresso'),
47
+			'modified'     => __('Modified', 'event_espresso'),
48
+			'action'       => __('Actions', 'event_espresso'),
49
+			'msg_id'       => __('ID', 'event_espresso'),
50
+		);
51
+
52
+		$this->_sortable_columns = array(
53
+			'modified'     => array('MSG_modified' => true),
54
+			'message_type' => array('MSG_message_type' => false),
55
+			'messenger'    => array('MSG_messenger' => false),
56
+			'to'           => array('MSG_to' => false),
57
+			'from'         => array('MSG_from' => false),
58
+			'context'      => array('MSG_context' => false),
59
+			'msg_id'       => array('MSG_ID', false),
60
+		);
61
+
62
+		$this->_primary_column = 'to';
63
+
64
+		$this->_hidden_columns = array(
65
+			'msg_id',
66
+		);
67
+	}
68
+
69
+
70
+	/**
71
+	 * This simply sets up the row class for the table rows.
72
+	 * Allows for easier overriding of child methods for setting up sorting.
73
+	 *
74
+	 * @param  object $item the current item
75
+	 * @return string
76
+	 */
77
+	protected function _get_row_class($item)
78
+	{
79
+		$class = parent::_get_row_class($item);
80
+		// add status class
81
+		$class .= ' ee-status-strip msg-status-' . $item->STS_ID();
82
+		if ($this->_has_checkbox_column) {
83
+			$class .= ' has-checkbox-column';
84
+		}
85
+		return $class;
86
+	}
87
+
88
+
89
+	/**
90
+	 * _get_table_filters
91
+	 * We use this to assemble and return any filters that are associated with this table that help further refine what
92
+	 * get's shown in the table.
93
+	 *
94
+	 * @abstract
95
+	 * @access protected
96
+	 * @return string
97
+	 * @throws \EE_Error
98
+	 */
99
+	protected function _get_table_filters()
100
+	{
101
+		$filters = array();
102
+
103
+		// get select_inputs
104
+		$select_inputs = array(
105
+			$this->_get_messengers_dropdown_filter(),
106
+			$this->_get_message_types_dropdown_filter(),
107
+			$this->_get_contexts_for_message_types_dropdown_filter(),
108
+		);
109
+
110
+		// set filters to select inputs if they aren't empty
111
+		foreach ($select_inputs as $select_input) {
112
+			if ($select_input) {
113
+				$filters[] = $select_input;
114
+			}
115
+		}
116
+		return $filters;
117
+	}
118
+
119
+
120
+	protected function _add_view_counts()
121
+	{
122
+		foreach ($this->_views as $view => $args) {
123
+			$this->_views[ $view ]['count'] = $this->_get_messages($this->_per_page, $view, true, true);
124
+		}
125
+	}
126
+
127
+
128
+	/**
129
+	 * @param EE_Message $message
130
+	 * @return string   checkbox
131
+	 * @throws \EE_Error
132
+	 */
133
+	public function column_cb($message)
134
+	{
135
+		return sprintf('<input type="checkbox" name="MSG_ID[%s]" value="1" />', $message->ID());
136
+	}
137
+
138
+
139
+	/**
140
+	 * @param EE_Message $message
141
+	 * @return string
142
+	 * @throws \EE_Error
143
+	 */
144
+	public function column_msg_id(EE_Message $message)
145
+	{
146
+		return $message->ID();
147
+	}
148
+
149
+
150
+	/**
151
+	 * @param EE_Message $message
152
+	 * @return string    The recipient of the message
153
+	 * @throws \EE_Error
154
+	 */
155
+	public function column_to(EE_Message $message)
156
+	{
157
+		EE_Registry::instance()->load_helper('URL');
158
+		$actions = array();
159
+		$actions['delete'] = '<a href="'
160
+							 . EEH_URL::add_query_args_and_nonce(
161
+								 array(
162
+									'page'   => 'espresso_messages',
163
+									'action' => 'delete_ee_message',
164
+									'MSG_ID' => $message->ID(),
165
+								 ),
166
+								 admin_url('admin.php')
167
+							 )
168
+							 . '">' . __('Delete', 'event_espresso') . '</a>';
169
+		return esc_html($message->to()) . $this->row_actions($actions);
170
+	}
171
+
172
+
173
+	/**
174
+	 * @param EE_Message $message
175
+	 * @return string   The sender of the message
176
+	 */
177
+	public function column_from(EE_Message $message)
178
+	{
179
+		return esc_html($message->from());
180
+	}
181
+
182
+
183
+	/**
184
+	 * @param EE_Message $message
185
+	 * @return string  The messenger used to send the message.
186
+	 */
187
+	public function column_messenger(EE_Message $message)
188
+	{
189
+		return ucwords($message->messenger_label());
190
+	}
191
+
192
+
193
+	/**
194
+	 * @param EE_Message $message
195
+	 * @return string  The message type used to generate the message.
196
+	 */
197
+	public function column_message_type(EE_Message $message)
198
+	{
199
+		return ucwords($message->message_type_label());
200
+	}
201
+
202
+
203
+	/**
204
+	 * @param EE_Message $message
205
+	 * @return string  The context the message was generated for.
206
+	 */
207
+	public function column_context(EE_Message $message)
208
+	{
209
+		return $message->context_label();
210
+	}
211
+
212
+
213
+	/**
214
+	 * @param EE_Message $message
215
+	 * @return string    The timestamp when this message was last modified.
216
+	 */
217
+	public function column_modified(EE_Message $message)
218
+	{
219
+		return $message->modified();
220
+	}
221
+
222
+
223
+	/**
224
+	 * @param EE_Message $message
225
+	 * @return string   Actions that can be done on the current message.
226
+	 */
227
+	public function column_action(EE_Message $message)
228
+	{
229
+		EE_Registry::instance()->load_helper('MSG_Template');
230
+		$action_links = array(
231
+			'view'                => EEH_MSG_Template::get_message_action_link('view', $message),
232
+			'error'               => EEH_MSG_Template::get_message_action_link('error', $message),
233
+			'generate_now'        => EEH_MSG_Template::get_message_action_link('generate_now', $message),
234
+			'send_now'            => EEH_MSG_Template::get_message_action_link('send_now', $message),
235
+			'queue_for_resending' => EEH_MSG_Template::get_message_action_link('queue_for_resending', $message),
236
+			'view_transaction'    => EEH_MSG_Template::get_message_action_link('view_transaction', $message),
237
+		);
238
+		$content = '';
239
+		switch ($message->STS_ID()) {
240
+			case EEM_Message::status_sent:
241
+				$content = $action_links['view'] . $action_links['queue_for_resending'] . $action_links['view_transaction'];
242
+				break;
243
+			case EEM_Message::status_resend:
244
+				$content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
245
+				break;
246
+			case EEM_Message::status_retry:
247
+				$content = $action_links['view'] . $action_links['send_now'] . $action_links['error'] . $action_links['view_transaction'];
248
+				break;
249
+			case EEM_Message::status_failed:
250
+			case EEM_Message::status_debug_only:
251
+				$content = $action_links['error'] . $action_links['view_transaction'];
252
+				break;
253
+			case EEM_Message::status_idle:
254
+				$content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
255
+				break;
256
+			case EEM_Message::status_incomplete:
257
+				$content = $action_links['generate_now'] . $action_links['view_transaction'];
258
+				break;
259
+		}
260
+		return $content;
261
+	}
262
+
263
+
264
+	/**
265
+	 * Retrieve the EE_Message objects for the list table.
266
+	 *
267
+	 * @param int    $perpage The number of items per page
268
+	 * @param string $view    The view items are being retrieved for
269
+	 * @param bool   $count   Whether to just return a count or not.
270
+	 * @param bool   $all     Disregard any paging info (no limit on data returned).
271
+	 * @return int|EE_Message[]
272
+	 * @throws \EE_Error
273
+	 */
274
+	protected function _get_messages($perpage = 10, $view = 'all', $count = false, $all = false)
275
+	{
276
+
277
+		$current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
278
+			? $this->_req_data['paged']
279
+			: 1;
280
+
281
+		$per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
282
+			? $this->_req_data['perpage']
283
+			: $perpage;
284
+
285
+		$offset = ($current_page - 1) * $per_page;
286
+		$limit = $all || $count ? null : array($offset, $per_page);
287
+		$query_params = array(
288
+			'order_by' => empty($this->_req_data['orderby']) ? 'MSG_modified' : $this->_req_data['orderby'],
289
+			'order'    => empty($this->_req_data['order']) ? 'DESC' : $this->_req_data['order'],
290
+			'limit'    => $limit,
291
+		);
292
+
293
+		/**
294
+		 * Any filters coming in from other routes?
295
+		 */
296
+		if (isset($this->_req_data['filterby'])) {
297
+			$query_params = array_merge($query_params, EEM_Message::instance()->filter_by_query_params());
298
+			if (! $count) {
299
+				$query_params['group_by'] = 'MSG_ID';
300
+			}
301
+		}
302
+
303
+		// view conditionals
304
+		if ($view !== 'all' && $count && $all) {
305
+			$query_params[0]['AND*view_conditional'] = array(
306
+				'STS_ID' => strtoupper($view),
307
+			);
308
+		}
309
+
310
+		if (! $all && ! empty($this->_req_data['status']) && $this->_req_data['status'] !== 'all') {
311
+			$query_params[0]['AND*view_conditional'] = $this->_req_data === EEM_Message::status_failed
312
+				? array(
313
+					'STS_ID' => array(
314
+						'IN',
315
+						array(EEM_Message::status_failed, EEM_Message::status_messenger_executing),
316
+					),
317
+				)
318
+				: array('STS_ID' => strtoupper($this->_req_data['status']));
319
+		}
320
+
321
+		if (! $all && ! empty($this->_req_data['s'])) {
322
+			$search_string = '%' . $this->_req_data['s'] . '%';
323
+			$query_params[0]['OR'] = array(
324
+				'MSG_to'      => array('LIKE', $search_string),
325
+				'MSG_from'    => array('LIKE', $search_string),
326
+				'MSG_subject' => array('LIKE', $search_string),
327
+				'MSG_content' => array('LIKE', $search_string),
328
+			);
329
+		}
330
+
331
+		// account for debug only status.  We don't show Messages with the EEM_Message::status_debug_only to clients when
332
+		// the messages system is in debug mode.
333
+		// Note: for backward compat with previous iterations, this is necessary because there may be EEM_Message::status_debug_only
334
+		// messages in the database.
335
+		if (! EEM_Message::debug()) {
336
+			$query_params[0]['AND*debug_only_conditional'] = array(
337
+				'STS_ID' => array('!=', EEM_Message::status_debug_only),
338
+			);
339
+		}
340
+
341
+		// account for filters
342
+		if (! $all
343
+			&& isset($this->_req_data['ee_messenger_filter_by'])
344
+			&& $this->_req_data['ee_messenger_filter_by'] !== 'none_selected'
345
+		) {
346
+			$query_params[0]['AND*messenger_filter'] = array(
347
+				'MSG_messenger' => $this->_req_data['ee_messenger_filter_by'],
348
+			);
349
+		}
350
+		if (! $all
351
+			&& ! empty($this->_req_data['ee_message_type_filter_by'])
352
+			&& $this->_req_data['ee_message_type_filter_by'] !== 'none_selected'
353
+		) {
354
+			$query_params[0]['AND*message_type_filter'] = array(
355
+				'MSG_message_type' => $this->_req_data['ee_message_type_filter_by'],
356
+			);
357
+		}
358
+
359
+		if (! $all
360
+			&& ! empty($this->_req_data['ee_context_filter_by'])
361
+			&& $this->_req_data['ee_context_filter_by'] !== 'none_selected'
362
+		) {
363
+			$query_params[0]['AND*context_filter'] = array(
364
+				'MSG_context' => array('IN', explode(',', $this->_req_data['ee_context_filter_by'])),
365
+			);
366
+		}
367
+
368
+		return $count
369
+			/** @type int */
370
+			? EEM_Message::instance()->count($query_params, null, true)
371
+			/** @type EE_Message[] */
372
+			: EEM_Message::instance()->get_all($query_params);
373
+	}
374
+
375
+
376
+	/**
377
+	 * Generate dropdown filter select input for messengers.
378
+	 *
379
+	 * @return string
380
+	 */
381
+	protected function _get_messengers_dropdown_filter()
382
+	{
383
+		$messenger_options = array();
384
+		$active_messages_grouped_by_messenger = EEM_Message::instance()->get_all(array('group_by' => 'MSG_messenger'));
385
+
386
+		// setup array of messenger options
387
+		foreach ($active_messages_grouped_by_messenger as $active_message) {
388
+			if ($active_message instanceof EE_Message) {
389
+				$messenger_options[ $active_message->messenger() ] = ucwords($active_message->messenger_label());
390
+			}
391
+		}
392
+		return $this->get_admin_page()->get_messengers_select_input($messenger_options);
393
+	}
394
+
395
+
396
+	/**
397
+	 * Generate dropdown filter select input for message types
398
+	 *
399
+	 * @return string
400
+	 */
401
+	protected function _get_message_types_dropdown_filter()
402
+	{
403
+		$message_type_options = array();
404
+		$active_messages_grouped_by_message_type = EEM_Message::instance()->get_all(
405
+			array('group_by' => 'MSG_message_type')
406
+		);
407
+
408
+		// setup array of message type options
409
+		foreach ($active_messages_grouped_by_message_type as $active_message) {
410
+			if ($active_message instanceof EE_Message) {
411
+				$message_type_options[ $active_message->message_type() ] = ucwords(
412
+					$active_message->message_type_label()
413
+				);
414
+			}
415
+		}
416
+		return $this->get_admin_page()->get_message_types_select_input($message_type_options);
417
+	}
418
+
419
+
420
+	/**
421
+	 * Generate dropdown filter select input for message type contexts
422
+	 *
423
+	 * @return string
424
+	 */
425
+	protected function _get_contexts_for_message_types_dropdown_filter()
426
+	{
427
+		$context_options = array();
428
+		$active_messages_grouped_by_context = EEM_Message::instance()->get_all(array('group_by' => 'MSG_context'));
429
+
430
+		// setup array of context options
431
+		foreach ($active_messages_grouped_by_context as $active_message) {
432
+			if ($active_message instanceof EE_Message) {
433
+				$message_type = $active_message->message_type_object();
434
+				if ($message_type instanceof EE_message_type) {
435
+					foreach ($message_type->get_contexts() as $context => $context_details) {
436
+						if (isset($context_details['label'])) {
437
+							$context_options[ $context ] = $context_details['label'];
438
+						}
439
+					}
440
+				}
441
+			}
442
+		}
443
+		return $this->get_admin_page()->get_contexts_for_message_types_select_input($context_options);
444
+	}
445 445
 }
Please login to merge, or discard this patch.
Spacing   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
     {
79 79
         $class = parent::_get_row_class($item);
80 80
         // add status class
81
-        $class .= ' ee-status-strip msg-status-' . $item->STS_ID();
81
+        $class .= ' ee-status-strip msg-status-'.$item->STS_ID();
82 82
         if ($this->_has_checkbox_column) {
83 83
             $class .= ' has-checkbox-column';
84 84
         }
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
     protected function _add_view_counts()
121 121
     {
122 122
         foreach ($this->_views as $view => $args) {
123
-            $this->_views[ $view ]['count'] = $this->_get_messages($this->_per_page, $view, true, true);
123
+            $this->_views[$view]['count'] = $this->_get_messages($this->_per_page, $view, true, true);
124 124
         }
125 125
     }
126 126
 
@@ -165,8 +165,8 @@  discard block
 block discarded – undo
165 165
                                  ),
166 166
                                  admin_url('admin.php')
167 167
                              )
168
-                             . '">' . __('Delete', 'event_espresso') . '</a>';
169
-        return esc_html($message->to()) . $this->row_actions($actions);
168
+                             . '">'.__('Delete', 'event_espresso').'</a>';
169
+        return esc_html($message->to()).$this->row_actions($actions);
170 170
     }
171 171
 
172 172
 
@@ -238,23 +238,23 @@  discard block
 block discarded – undo
238 238
         $content = '';
239 239
         switch ($message->STS_ID()) {
240 240
             case EEM_Message::status_sent:
241
-                $content = $action_links['view'] . $action_links['queue_for_resending'] . $action_links['view_transaction'];
241
+                $content = $action_links['view'].$action_links['queue_for_resending'].$action_links['view_transaction'];
242 242
                 break;
243 243
             case EEM_Message::status_resend:
244
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
244
+                $content = $action_links['view'].$action_links['send_now'].$action_links['view_transaction'];
245 245
                 break;
246 246
             case EEM_Message::status_retry:
247
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['error'] . $action_links['view_transaction'];
247
+                $content = $action_links['view'].$action_links['send_now'].$action_links['error'].$action_links['view_transaction'];
248 248
                 break;
249 249
             case EEM_Message::status_failed:
250 250
             case EEM_Message::status_debug_only:
251
-                $content = $action_links['error'] . $action_links['view_transaction'];
251
+                $content = $action_links['error'].$action_links['view_transaction'];
252 252
                 break;
253 253
             case EEM_Message::status_idle:
254
-                $content = $action_links['view'] . $action_links['send_now'] . $action_links['view_transaction'];
254
+                $content = $action_links['view'].$action_links['send_now'].$action_links['view_transaction'];
255 255
                 break;
256 256
             case EEM_Message::status_incomplete:
257
-                $content = $action_links['generate_now'] . $action_links['view_transaction'];
257
+                $content = $action_links['generate_now'].$action_links['view_transaction'];
258 258
                 break;
259 259
         }
260 260
         return $content;
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
          */
296 296
         if (isset($this->_req_data['filterby'])) {
297 297
             $query_params = array_merge($query_params, EEM_Message::instance()->filter_by_query_params());
298
-            if (! $count) {
298
+            if ( ! $count) {
299 299
                 $query_params['group_by'] = 'MSG_ID';
300 300
             }
301 301
         }
@@ -307,7 +307,7 @@  discard block
 block discarded – undo
307 307
             );
308 308
         }
309 309
 
310
-        if (! $all && ! empty($this->_req_data['status']) && $this->_req_data['status'] !== 'all') {
310
+        if ( ! $all && ! empty($this->_req_data['status']) && $this->_req_data['status'] !== 'all') {
311 311
             $query_params[0]['AND*view_conditional'] = $this->_req_data === EEM_Message::status_failed
312 312
                 ? array(
313 313
                     'STS_ID' => array(
@@ -318,8 +318,8 @@  discard block
 block discarded – undo
318 318
                 : array('STS_ID' => strtoupper($this->_req_data['status']));
319 319
         }
320 320
 
321
-        if (! $all && ! empty($this->_req_data['s'])) {
322
-            $search_string = '%' . $this->_req_data['s'] . '%';
321
+        if ( ! $all && ! empty($this->_req_data['s'])) {
322
+            $search_string = '%'.$this->_req_data['s'].'%';
323 323
             $query_params[0]['OR'] = array(
324 324
                 'MSG_to'      => array('LIKE', $search_string),
325 325
                 'MSG_from'    => array('LIKE', $search_string),
@@ -332,14 +332,14 @@  discard block
 block discarded – undo
332 332
         // the messages system is in debug mode.
333 333
         // Note: for backward compat with previous iterations, this is necessary because there may be EEM_Message::status_debug_only
334 334
         // messages in the database.
335
-        if (! EEM_Message::debug()) {
335
+        if ( ! EEM_Message::debug()) {
336 336
             $query_params[0]['AND*debug_only_conditional'] = array(
337 337
                 'STS_ID' => array('!=', EEM_Message::status_debug_only),
338 338
             );
339 339
         }
340 340
 
341 341
         // account for filters
342
-        if (! $all
342
+        if ( ! $all
343 343
             && isset($this->_req_data['ee_messenger_filter_by'])
344 344
             && $this->_req_data['ee_messenger_filter_by'] !== 'none_selected'
345 345
         ) {
@@ -347,7 +347,7 @@  discard block
 block discarded – undo
347 347
                 'MSG_messenger' => $this->_req_data['ee_messenger_filter_by'],
348 348
             );
349 349
         }
350
-        if (! $all
350
+        if ( ! $all
351 351
             && ! empty($this->_req_data['ee_message_type_filter_by'])
352 352
             && $this->_req_data['ee_message_type_filter_by'] !== 'none_selected'
353 353
         ) {
@@ -356,7 +356,7 @@  discard block
 block discarded – undo
356 356
             );
357 357
         }
358 358
 
359
-        if (! $all
359
+        if ( ! $all
360 360
             && ! empty($this->_req_data['ee_context_filter_by'])
361 361
             && $this->_req_data['ee_context_filter_by'] !== 'none_selected'
362 362
         ) {
@@ -386,7 +386,7 @@  discard block
 block discarded – undo
386 386
         // setup array of messenger options
387 387
         foreach ($active_messages_grouped_by_messenger as $active_message) {
388 388
             if ($active_message instanceof EE_Message) {
389
-                $messenger_options[ $active_message->messenger() ] = ucwords($active_message->messenger_label());
389
+                $messenger_options[$active_message->messenger()] = ucwords($active_message->messenger_label());
390 390
             }
391 391
         }
392 392
         return $this->get_admin_page()->get_messengers_select_input($messenger_options);
@@ -408,7 +408,7 @@  discard block
 block discarded – undo
408 408
         // setup array of message type options
409 409
         foreach ($active_messages_grouped_by_message_type as $active_message) {
410 410
             if ($active_message instanceof EE_Message) {
411
-                $message_type_options[ $active_message->message_type() ] = ucwords(
411
+                $message_type_options[$active_message->message_type()] = ucwords(
412 412
                     $active_message->message_type_label()
413 413
                 );
414 414
             }
@@ -434,7 +434,7 @@  discard block
 block discarded – undo
434 434
                 if ($message_type instanceof EE_message_type) {
435 435
                     foreach ($message_type->get_contexts() as $context => $context_details) {
436 436
                         if (isset($context_details['label'])) {
437
-                            $context_options[ $context ] = $context_details['label'];
437
+                            $context_options[$context] = $context_details['label'];
438 438
                         }
439 439
                     }
440 440
                 }
Please login to merge, or discard this patch.
admin_pages/venues/Venues_Admin_Page.core.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1006,7 +1006,7 @@
 block discarded – undo
1006 1006
      * @access  private
1007 1007
      * @param  int    $VNU_ID
1008 1008
      * @param  string $venue_status
1009
-     * @return void
1009
+     * @return boolean
1010 1010
      */
1011 1011
     private function _change_venue_status($VNU_ID = 0, $venue_status = '')
1012 1012
     {
Please login to merge, or discard this patch.
Indentation   +1512 added lines, -1512 removed lines patch added patch discarded remove patch
@@ -17,1518 +17,1518 @@
 block discarded – undo
17 17
 {
18 18
 
19 19
 
20
-    /**
21
-     * _venue
22
-     * This will hold the venue object for venue_details screen.
23
-     *
24
-     * @access protected
25
-     * @var object
26
-     */
27
-    protected $_venue;
28
-
29
-
30
-    /**
31
-     * This will hold the category object for category_details screen.
32
-     *
33
-     * @var object
34
-     */
35
-    protected $_category;
36
-
37
-
38
-    /**
39
-     * This property will hold the venue model instance
40
-     *
41
-     * @var object
42
-     */
43
-    protected $_venue_model;
44
-
45
-
46
-    protected function _init_page_props()
47
-    {
48
-        require_once(EE_MODELS . 'EEM_Venue.model.php');
49
-        $this->page_slug = EE_VENUES_PG_SLUG;
50
-        $this->_admin_base_url = EE_VENUES_ADMIN_URL;
51
-        $this->_admin_base_path = EE_ADMIN_PAGES . 'venues';
52
-        $this->page_label = __('Event Venues', 'event_espresso');
53
-        $this->_cpt_model_names = array(
54
-            'create_new' => 'EEM_Venue',
55
-            'edit'       => 'EEM_Venue',
56
-        );
57
-        $this->_cpt_edit_routes = array(
58
-            'espresso_venues' => 'edit',
59
-        );
60
-        $this->_venue_model = EEM_Venue::instance();
61
-    }
62
-
63
-
64
-    protected function _ajax_hooks()
65
-    {
66
-        // todo: all hooks for ee_venues ajax goes in here.
67
-    }
68
-
69
-
70
-    protected function _define_page_props()
71
-    {
72
-        $this->_admin_page_title = $this->page_label;
73
-        $this->_labels = array(
74
-            'buttons'      => array(
75
-                'add'             => __('Add New Venue', 'event_espresso'),
76
-                'edit'            => __('Edit Venue', 'event_espresso'),
77
-                'delete'          => __('Delete Venue', 'event_espresso'),
78
-                'add_category'    => __('Add New Category', 'event_espresso'),
79
-                'edit_category'   => __('Edit Category', 'event_espresso'),
80
-                'delete_category' => __('Delete Category', 'event_espresso'),
81
-            ),
82
-            'editor_title' => array(
83
-                'espresso_venues' => __('Enter Venue name here', 'event_espresso'),
84
-            ),
85
-            'publishbox'   => array(
86
-                'create_new'          => __('Save New Venue', 'event_espresso'),
87
-                'edit'                => __('Update Venue', 'event_espresso'),
88
-                'add_category'        => __('Save New Category', 'event_espresso'),
89
-                'edit_category'       => __('Update Category', 'event_espresso'),
90
-                'google_map_settings' => __('Update Settings', 'event_espresso'),
91
-            ),
92
-        );
93
-    }
94
-
95
-
96
-    protected function _set_page_routes()
97
-    {
98
-
99
-        // load formatter helper
100
-        // load field generator helper
101
-
102
-        // is there a vnu_id in the request?
103
-        $vnu_id = ! empty($this->_req_data['VNU_ID']) && ! is_array($this->_req_data['VNU_ID'])
104
-            ? $this->_req_data['VNU_ID'] : 0;
105
-        $vnu_id = ! empty($this->_req_data['post']) ? $this->_req_data['post'] : $vnu_id;
106
-
107
-        $this->_page_routes = array(
108
-            'default'                    => array(
109
-                'func'       => '_overview_list_table',
110
-                'capability' => 'ee_read_venues',
111
-            ),
112
-            'create_new'                 => array(
113
-                'func'       => '_create_new_cpt_item',
114
-                'capability' => 'ee_edit_venues',
115
-            ),
116
-            'edit'                       => array(
117
-                'func'       => '_edit_cpt_item',
118
-                'capability' => 'ee_edit_venue',
119
-                'obj_id'     => $vnu_id,
120
-            ),
121
-            'trash_venue'                => array(
122
-                'func'       => '_trash_or_restore_venue',
123
-                'args'       => array('venue_status' => 'trash'),
124
-                'noheader'   => true,
125
-                'capability' => 'ee_delete_venue',
126
-                'obj_id'     => $vnu_id,
127
-            ),
128
-            'trash_venues'               => array(
129
-                'func'       => '_trash_or_restore_venues',
130
-                'args'       => array('venue_status' => 'trash'),
131
-                'noheader'   => true,
132
-                'capability' => 'ee_delete_venues',
133
-            ),
134
-            'restore_venue'              => array(
135
-                'func'       => '_trash_or_restore_venue',
136
-                'args'       => array('venue_status' => 'draft'),
137
-                'noheader'   => true,
138
-                'capability' => 'ee_delete_venue',
139
-                'obj_id'     => $vnu_id,
140
-            ),
141
-            'restore_venues'             => array(
142
-                'func'       => '_trash_or_restore_venues',
143
-                'args'       => array('venue_status' => 'draft'),
144
-                'noheader'   => true,
145
-                'capability' => 'ee_delete_venues',
146
-            ),
147
-            'delete_venues'              => array(
148
-                'func'       => '_delete_venues',
149
-                'noheader'   => true,
150
-                'capability' => 'ee_delete_venues',
151
-            ),
152
-            'delete_venue'               => array(
153
-                'func'       => '_delete_venue',
154
-                'noheader'   => true,
155
-                'capability' => 'ee_delete_venue',
156
-                'obj_id'     => $vnu_id,
157
-            ),
158
-            // settings related
159
-            'google_map_settings'        => array(
160
-                'func'       => '_google_map_settings',
161
-                'capability' => 'manage_options',
162
-            ),
163
-            'update_google_map_settings' => array(
164
-                'func'       => '_update_google_map_settings',
165
-                'capability' => 'manage_options',
166
-                'noheader'   => true,
167
-            ),
168
-            // venue category tab related
169
-            'add_category'               => array(
170
-                'func'       => '_category_details',
171
-                'args'       => array('add'),
172
-                'capability' => 'ee_edit_venue_category',
173
-            ),
174
-            'edit_category'              => array(
175
-                'func'       => '_category_details',
176
-                'args'       => array('edit'),
177
-                'capability' => 'ee_edit_venue_category',
178
-            ),
179
-            'delete_categories'          => array(
180
-                'func'       => '_delete_categories',
181
-                'noheader'   => true,
182
-                'capability' => 'ee_delete_venue_category',
183
-            ),
184
-
185
-            'delete_category' => array(
186
-                'func'       => '_delete_categories',
187
-                'noheader'   => true,
188
-                'capability' => 'ee_delete_venue_category',
189
-            ),
190
-
191
-            'insert_category' => array(
192
-                'func'       => '_insert_or_update_category',
193
-                'args'       => array('new_category' => true),
194
-                'noheader'   => true,
195
-                'capability' => 'ee_edit_venue_category',
196
-            ),
197
-
198
-            'update_category'   => array(
199
-                'func'       => '_insert_or_update_category',
200
-                'args'       => array('new_category' => false),
201
-                'noheader'   => true,
202
-                'capability' => 'ee_edit_venue_category',
203
-            ),
204
-            'export_categories' => array(
205
-                'func'       => '_categories_export',
206
-                'noheader'   => true,
207
-                'capability' => 'export',
208
-            ),
209
-            'import_categories' => array(
210
-                'func'       => '_import_categories',
211
-                'capability' => 'import',
212
-            ),
213
-            'category_list'     => array(
214
-                'func'       => '_category_list_table',
215
-                'capability' => 'ee_manage_venue_categories',
216
-            ),
217
-        );
218
-    }
219
-
220
-
221
-    protected function _set_page_config()
222
-    {
223
-        $this->_page_config = array(
224
-            'default'             => array(
225
-                'nav'           => array(
226
-                    'label' => __('Overview', 'event_espresso'),
227
-                    'order' => 10,
228
-                ),
229
-                'list_table'    => 'Venues_Admin_List_Table',
230
-                'help_tabs'     => array(
231
-                    'venues_overview_help_tab'                           => array(
232
-                        'title'    => __('Venues Overview', 'event_espresso'),
233
-                        'filename' => 'venues_overview',
234
-                    ),
235
-                    'venues_overview_table_column_headings_help_tab'     => array(
236
-                        'title'    => __('Venues Overview Table Column Headings', 'event_espresso'),
237
-                        'filename' => 'venues_overview_table_column_headings',
238
-                    ),
239
-                    'venues_overview_views_bulk_actions_search_help_tab' => array(
240
-                        'title'    => __('Venues Overview Views & Bulk Actions & Search', 'event_espresso'),
241
-                        'filename' => 'venues_overview_views_bulk_actions_search',
242
-                    ),
243
-                ),
244
-                'help_tour'     => array('Venues_Overview_Help_Tour'),
245
-                'metaboxes'     => array('_espresso_news_post_box', '_espresso_links_post_box'),
246
-                'require_nonce' => false,
247
-            ),
248
-            'create_new'          => array(
249
-                'nav'           => array(
250
-                    'label'      => __('Add Venue', 'event_espresso'),
251
-                    'order'      => 5,
252
-                    'persistent' => false,
253
-                ),
254
-                'help_tabs'     => array(
255
-                    'venues_editor_help_tab'                                               => array(
256
-                        'title'    => __('Venue Editor', 'event_espresso'),
257
-                        'filename' => 'venues_editor',
258
-                    ),
259
-                    'venues_editor_title_richtexteditor_help_tab'                          => array(
260
-                        'title'    => __('Venue Title & Rich Text Editor', 'event_espresso'),
261
-                        'filename' => 'venues_editor_title_richtexteditor',
262
-                    ),
263
-                    'venues_editor_tags_categories_help_tab'                               => array(
264
-                        'title'    => __('Venue Tags & Categories', 'event_espresso'),
265
-                        'filename' => 'venues_editor_tags_categories',
266
-                    ),
267
-                    'venues_editor_physical_location_google_map_virtual_location_help_tab' => array(
268
-                        'title'    => __(
269
-                            'Venue Editor Physical Location & Google Map & Virtual Location',
270
-                            'event_espresso'
271
-                        ),
272
-                        'filename' => 'venues_editor_physical_location_google_map_virtual_location',
273
-                    ),
274
-                    'venues_editor_save_new_venue_help_tab'                                => array(
275
-                        'title'    => __('Save New Venue', 'event_espresso'),
276
-                        'filename' => 'venues_editor_save_new_venue',
277
-                    ),
278
-                    'venues_editor_other_help_tab'                                         => array(
279
-                        'title'    => __('Venue Editor Other', 'event_espresso'),
280
-                        'filename' => 'venues_editor_other',
281
-                    ),
282
-                ),
283
-                'help_tour'     => array('Venues_Add_Venue_Help_Tour'),
284
-                'metaboxes'     => array('_venue_editor_metaboxes'),
285
-                'require_nonce' => false,
286
-            ),
287
-            'edit'                => array(
288
-                'nav'           => array(
289
-                    'label'      => __('Edit Venue', 'event_espresso'),
290
-                    'order'      => 5,
291
-                    'persistent' => false,
292
-                    'url'        => isset($this->_req_data['post']) ? add_query_arg(
293
-                        array('post' => $this->_req_data['post']),
294
-                        $this->_current_page_view_url
295
-                    ) : $this->_admin_base_url,
296
-                ),
297
-                'help_tabs'     => array(
298
-                    'venues_editor_help_tab'                                               => array(
299
-                        'title'    => __('Venue Editor', 'event_espresso'),
300
-                        'filename' => 'venues_editor',
301
-                    ),
302
-                    'venues_editor_title_richtexteditor_help_tab'                          => array(
303
-                        'title'    => __('Venue Title & Rich Text Editor', 'event_espresso'),
304
-                        'filename' => 'venues_editor_title_richtexteditor',
305
-                    ),
306
-                    'venues_editor_tags_categories_help_tab'                               => array(
307
-                        'title'    => __('Venue Tags & Categories', 'event_espresso'),
308
-                        'filename' => 'venues_editor_tags_categories',
309
-                    ),
310
-                    'venues_editor_physical_location_google_map_virtual_location_help_tab' => array(
311
-                        'title'    => __(
312
-                            'Venue Editor Physical Location & Google Map & Virtual Location',
313
-                            'event_espresso'
314
-                        ),
315
-                        'filename' => 'venues_editor_physical_location_google_map_virtual_location',
316
-                    ),
317
-                    'venues_editor_save_new_venue_help_tab'                                => array(
318
-                        'title'    => __('Save New Venue', 'event_espresso'),
319
-                        'filename' => 'venues_editor_save_new_venue',
320
-                    ),
321
-                    'venues_editor_other_help_tab'                                         => array(
322
-                        'title'    => __('Venue Editor Other', 'event_espresso'),
323
-                        'filename' => 'venues_editor_other',
324
-                    ),
325
-                ),
326
-                /*'help_tour' => array( 'Venues_Edit_Venue_Help_Tour' ),*/
327
-                'metaboxes'     => array('_venue_editor_metaboxes'),
328
-                'require_nonce' => false,
329
-            ),
330
-            'google_map_settings' => array(
331
-                'nav'           => array(
332
-                    'label' => esc_html__('Google Maps', 'event_espresso'),
333
-                    'order' => 40,
334
-                ),
335
-                'metaboxes'     => array_merge($this->_default_espresso_metaboxes, array('_publish_post_box')),
336
-                'help_tabs'     => array(
337
-                    'general_settings_google_maps_help_tab' => array(
338
-                        'title'    => __('Google Maps', 'event_espresso'),
339
-                        'filename' => 'general_settings_google_maps',
340
-                    ),
341
-                ),
342
-                'help_tour'     => array('Google_Maps_Help_Tour'),
343
-                'require_nonce' => false,
344
-            ),
345
-            // venue category stuff
346
-            'add_category'        => array(
347
-                'nav'           => array(
348
-                    'label'      => __('Add Category', 'event_espresso'),
349
-                    'order'      => 15,
350
-                    'persistent' => false,
351
-                ),
352
-                'metaboxes'     => array('_publish_post_box'),
353
-                'help_tabs'     => array(
354
-                    'venues_add_category_help_tab' => array(
355
-                        'title'    => __('Add New Venue Category', 'event_espresso'),
356
-                        'filename' => 'venues_add_category',
357
-                    ),
358
-                ),
359
-                'help_tour'     => array('Venues_Add_Category_Help_Tour'),
360
-                'require_nonce' => false,
361
-            ),
362
-            'edit_category'       => array(
363
-                'nav'           => array(
364
-                    'label'      => __('Edit Category', 'event_espresso'),
365
-                    'order'      => 15,
366
-                    'persistent' => false,
367
-                    'url'        => isset($this->_req_data['EVT_CAT_ID']) ? add_query_arg(
368
-                        array('EVT_CAT_ID' => $this->_req_data['EVT_CAT_ID']),
369
-                        $this->_current_page_view_url
370
-                    ) : $this->_admin_base_url,
371
-                ),
372
-                'metaboxes'     => array('_publish_post_box'),
373
-                'help_tabs'     => array(
374
-                    'venues_edit_category_help_tab' => array(
375
-                        'title'    => __('Edit Venue Category', 'event_espresso'),
376
-                        'filename' => 'venues_edit_category',
377
-                    ),
378
-                ),
379
-                /*'help_tour' => array( 'Venues_Edit_Category_Help_Tour' ),*/
380
-                'require_nonce' => false,
381
-            ),
382
-            'category_list'       => array(
383
-                'nav'           => array(
384
-                    'label' => __('Categories', 'event_espresso'),
385
-                    'order' => 20,
386
-                ),
387
-                'list_table'    => 'Venue_Categories_Admin_List_Table',
388
-                'help_tabs'     => array(
389
-                    'venues_categories_help_tab'                       => array(
390
-                        'title'    => __('Venue Categories', 'event_espresso'),
391
-                        'filename' => 'venues_categories',
392
-                    ),
393
-                    'venues_categories_table_column_headings_help_tab' => array(
394
-                        'title'    => __('Venue Categories Table Column Headings', 'event_espresso'),
395
-                        'filename' => 'venues_categories_table_column_headings',
396
-                    ),
397
-                    'venues_categories_views_help_tab'                 => array(
398
-                        'title'    => __('Venue Categories Views', 'event_espresso'),
399
-                        'filename' => 'venues_categories_views',
400
-                    ),
401
-                    'venues_categories_other_help_tab'                 => array(
402
-                        'title'    => __('Venue Categories Other', 'event_espresso'),
403
-                        'filename' => 'venues_categories_other',
404
-                    ),
405
-                ),
406
-                'help_tour'     => array('Venues_Categories_Help_Tour'),
407
-                'metaboxes'     => $this->_default_espresso_metaboxes,
408
-                'require_nonce' => false,
409
-            ),
410
-        );
411
-    }
412
-
413
-
414
-    protected function _add_screen_options()
415
-    {
416
-        // todo
417
-    }
418
-
419
-
420
-    protected function _add_screen_options_default()
421
-    {
422
-        $this->_per_page_screen_option();
423
-    }
424
-
425
-
426
-    protected function _add_screen_options_category_list()
427
-    {
428
-        $page_title = $this->_admin_page_title;
429
-        $this->_admin_page_title = __('Venue Categories', 'event_espresso');
430
-        $this->_per_page_screen_option();
431
-        $this->_admin_page_title = $page_title;
432
-    }
433
-
434
-
435
-    // none of the below group are currently used for Event Venues
436
-    protected function _add_feature_pointers()
437
-    {
438
-    }
439
-
440
-    public function admin_init()
441
-    {
442
-    }
443
-
444
-    public function admin_notices()
445
-    {
446
-    }
447
-
448
-    public function admin_footer_scripts()
449
-    {
450
-    }
451
-
452
-
453
-    public function load_scripts_styles_create_new()
454
-    {
455
-        $this->load_scripts_styles_edit();
456
-    }
457
-
458
-
459
-    public function load_scripts_styles()
460
-    {
461
-        wp_register_style('ee-cat-admin', EVENTS_ASSETS_URL . 'ee-cat-admin.css', array(), EVENT_ESPRESSO_VERSION);
462
-        wp_enqueue_style('ee-cat-admin');
463
-    }
464
-
465
-
466
-    public function load_scripts_styles_add_category()
467
-    {
468
-        $this->load_scripts_styles_edit_category();
469
-    }
470
-
471
-
472
-    public function load_scripts_styles_edit_category()
473
-    {
474
-    }
475
-
476
-
477
-    public function load_scripts_styles_edit()
478
-    {
479
-        // styles
480
-        wp_enqueue_style('espresso-ui-theme');
481
-        wp_register_style(
482
-            'espresso_venues',
483
-            EE_VENUES_ASSETS_URL . 'ee-venues-admin.css',
484
-            array(),
485
-            EVENT_ESPRESSO_VERSION
486
-        );
487
-        wp_enqueue_style('espresso_venues');
488
-    }
489
-
490
-
491
-    protected function _set_list_table_views_default()
492
-    {
493
-        $this->_views = array(
494
-            'all' => array(
495
-                'slug'        => 'all',
496
-                'label'       => __('View All Venues', 'event_espresso'),
497
-                'count'       => 0,
498
-                'bulk_action' => array(),
499
-            ),
500
-        );
501
-
502
-        if (EE_Registry::instance()->CAP->current_user_can('ee_delete_venues', 'espresso_venues_trash_venues')) {
503
-            $this->_views['all']['bulk_action'] = array(
504
-                'trash_venues' => __('Move to Trash', 'event_espresso'),
505
-            );
506
-            $this->_views['trash'] = array(
507
-                'slug'        => 'trash',
508
-                'label'       => __('Trash', 'event_espresso'),
509
-                'count'       => 0,
510
-                'bulk_action' => array(
511
-                    'restore_venues' => __('Restore from Trash', 'event_espresso'),
512
-                    'delete_venues'  => __('Delete', 'event_espresso'),
513
-                ),
514
-            );
515
-        }
516
-    }
517
-
518
-
519
-    protected function _set_list_table_views_category_list()
520
-    {
521
-        $this->_views = array(
522
-            'all' => array(
523
-                'slug'        => 'all',
524
-                'label'       => __('All', 'event_espresso'),
525
-                'count'       => 0,
526
-                'bulk_action' => array(
527
-                    'delete_categories' => __('Delete Permanently', 'event_espresso'),
528
-                ),
529
-            ),
530
-        );
531
-    }
532
-
533
-
534
-    protected function _overview_list_table()
535
-    {
536
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
537
-        $this->_template_args['after_list_table'] = EEH_Template::get_button_or_link(
538
-            get_post_type_archive_link('espresso_venues'),
539
-            __("View Venue Archive Page", "event_espresso"),
540
-            'button'
541
-        );
542
-        $this->_admin_page_title .= ' ' . $this->get_action_link_or_button('create_new', 'add', array(), 'add-new-h2');
543
-        $this->_search_btn_label = __('Venues', 'event_espresso');
544
-        $this->display_admin_list_table_page_with_sidebar();
545
-    }
546
-
547
-
548
-    public function extra_misc_actions_publish_box()
549
-    {
550
-        $extra_rows = array(
551
-            'vnu_capacity' => $this->_cpt_model_obj->get_f('VNU_capacity'),
552
-            'vnu_url'      => $this->_cpt_model_obj->get_f('VNU_url'),
553
-            'vnu_phone'    => $this->_cpt_model_obj->get_f('VNU_phone'),
554
-        );
555
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_publish_box_extras.template.php';
556
-        EEH_Template::display_template($template, $extra_rows);
557
-    }
558
-
559
-
560
-    /*************        Google Maps        *************/
561
-
562
-
563
-    protected function _google_map_settings()
564
-    {
565
-
566
-
567
-        $this->_template_args['values'] = $this->_yes_no_values;
568
-        $default_map_settings = new stdClass();
569
-        $default_map_settings->use_google_maps = true;
570
-        $default_map_settings->google_map_api_key = '';
571
-        // for event details pages (reg page)
572
-        $default_map_settings->event_details_map_width = 585;            // ee_map_width_single
573
-        $default_map_settings->event_details_map_height = 362;            // ee_map_height_single
574
-        $default_map_settings->event_details_map_zoom = 14;            // ee_map_zoom_single
575
-        $default_map_settings->event_details_display_nav = true;            // ee_map_nav_display_single
576
-        $default_map_settings->event_details_nav_size = false;            // ee_map_nav_size_single
577
-        $default_map_settings->event_details_control_type = 'default';        // ee_map_type_control_single
578
-        $default_map_settings->event_details_map_align = 'center';            // ee_map_align_single
579
-        // for event list pages
580
-        $default_map_settings->event_list_map_width = 300;            // ee_map_width
581
-        $default_map_settings->event_list_map_height = 185;        // ee_map_height
582
-        $default_map_settings->event_list_map_zoom = 12;            // ee_map_zoom
583
-        $default_map_settings->event_list_display_nav = false;        // ee_map_nav_display
584
-        $default_map_settings->event_list_nav_size = true;            // ee_map_nav_size
585
-        $default_map_settings->event_list_control_type = 'dropdown';        // ee_map_type_control
586
-        $default_map_settings->event_list_map_align = 'center';            // ee_map_align
587
-
588
-        $this->_template_args['map_settings'] =
589
-            isset(EE_Registry::instance()->CFG->map_settings)
590
-            && ! empty(EE_Registry::instance()->CFG->map_settings)
591
-                ? (object) array_merge(
592
-                    (array) $default_map_settings,
593
-                    (array) EE_Registry::instance()->CFG->map_settings
594
-                )
595
-                : $default_map_settings;
596
-
597
-        $this->_set_add_edit_form_tags('update_google_map_settings');
598
-        $this->_set_publish_post_box_vars(null, false, false, null, false);
599
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
600
-            EE_VENUES_TEMPLATE_PATH . 'google_map.template.php',
601
-            $this->_template_args,
602
-            true
603
-        );
604
-        $this->display_admin_page_with_sidebar();
605
-    }
606
-
607
-    protected function _update_google_map_settings()
608
-    {
609
-
610
-        EE_Registry::instance()->CFG->map_settings->use_google_maps =
611
-            isset($this->_req_data['use_google_maps'])
612
-                ? absint($this->_req_data['use_google_maps'])
613
-                : EE_Registry::instance()->CFG->map_settings->use_google_maps;
614
-
615
-        EE_Registry::instance()->CFG->map_settings->google_map_api_key =
616
-            isset($this->_req_data['google_map_api_key'])
617
-                ? sanitize_text_field($this->_req_data['google_map_api_key'])
618
-                : EE_Registry::instance()->CFG->map_settings->google_map_api_key;
619
-
620
-        EE_Registry::instance()->CFG->map_settings->event_details_map_width =
621
-            isset($this->_req_data['event_details_map_width'])
622
-                ? absint($this->_req_data['event_details_map_width'])
623
-                : EE_Registry::instance()->CFG->map_settings->event_details_map_width;
624
-
625
-        EE_Registry::instance()->CFG->map_settings->event_details_map_height =
626
-            isset($this->_req_data['event_details_map_height'])
627
-                ? absint($this->_req_data['event_details_map_height'])
628
-                : EE_Registry::instance()->CFG->map_settings->event_details_map_height;
629
-
630
-        EE_Registry::instance()->CFG->map_settings->event_details_map_zoom =
631
-            isset($this->_req_data['event_details_map_zoom'])
632
-                ? absint($this->_req_data['event_details_map_zoom'])
633
-                : EE_Registry::instance()->CFG->map_settings->event_details_map_zoom;
634
-
635
-        EE_Registry::instance()->CFG->map_settings->event_details_display_nav =
636
-            isset($this->_req_data['event_details_display_nav'])
637
-                ? absint($this->_req_data['event_details_display_nav'])
638
-                : EE_Registry::instance()->CFG->map_settings->event_details_display_nav;
639
-
640
-        EE_Registry::instance()->CFG->map_settings->event_details_nav_size =
641
-            isset($this->_req_data['event_details_nav_size'])
642
-                ? absint($this->_req_data['event_details_nav_size'])
643
-                : EE_Registry::instance()->CFG->map_settings->event_details_nav_size;
644
-
645
-        EE_Registry::instance()->CFG->map_settings->event_details_control_type =
646
-            isset($this->_req_data['event_details_control_type'])
647
-                ? sanitize_text_field($this->_req_data['event_details_control_type'])
648
-                : EE_Registry::instance()->CFG->map_settings->event_details_control_type;
649
-
650
-        EE_Registry::instance()->CFG->map_settings->event_details_map_align =
651
-            isset($this->_req_data['event_details_map_align'])
652
-                ? sanitize_text_field($this->_req_data['event_details_map_align'])
653
-                : EE_Registry::instance()->CFG->map_settings->event_details_map_align;
654
-
655
-        EE_Registry::instance()->CFG->map_settings->event_list_map_width =
656
-            isset($this->_req_data['event_list_map_width'])
657
-                ? absint($this->_req_data['event_list_map_width'])
658
-                : EE_Registry::instance()->CFG->map_settings->event_list_map_width;
659
-
660
-        EE_Registry::instance()->CFG->map_settings->event_list_map_height =
661
-            isset($this->_req_data['event_list_map_height'])
662
-                ? absint($this->_req_data['event_list_map_height'])
663
-                : EE_Registry::instance()->CFG->map_settings->event_list_map_height;
664
-
665
-        EE_Registry::instance()->CFG->map_settings->event_list_map_zoom =
666
-            isset($this->_req_data['event_list_map_zoom'])
667
-                ? absint($this->_req_data['event_list_map_zoom'])
668
-                : EE_Registry::instance()->CFG->map_settings->event_list_map_zoom;
669
-
670
-        EE_Registry::instance()->CFG->map_settings->event_list_display_nav =
671
-            isset($this->_req_data['event_list_display_nav'])
672
-                ? absint($this->_req_data['event_list_display_nav'])
673
-                : EE_Registry::instance()->CFG->map_settings->event_list_display_nav;
674
-
675
-        EE_Registry::instance()->CFG->map_settings->event_list_nav_size =
676
-            isset($this->_req_data['event_list_nav_size'])
677
-                ? absint($this->_req_data['event_list_nav_size'])
678
-                : EE_Registry::instance()->CFG->map_settings->event_list_nav_size;
679
-
680
-        EE_Registry::instance()->CFG->map_settings->event_list_control_type =
681
-            isset($this->_req_data['event_list_control_type'])
682
-                ? sanitize_text_field($this->_req_data['event_list_control_type'])
683
-                : EE_Registry::instance()->CFG->map_settings->event_list_control_type;
684
-
685
-        EE_Registry::instance()->CFG->map_settings->event_list_map_align =
686
-            isset($this->_req_data['event_list_map_align'])
687
-                ? sanitize_text_field($this->_req_data['event_list_map_align'])
688
-                : EE_Registry::instance()->CFG->map_settings->event_list_map_align;
689
-
690
-        EE_Registry::instance()->CFG->map_settings = apply_filters(
691
-            'FHEE__Extend_General_Settings_Admin_Page___update_google_map_settings__CFG_map_settings',
692
-            EE_Registry::instance()->CFG->map_settings
693
-        );
694
-
695
-        $what = 'Google Map Settings';
696
-        $success = $this->_update_espresso_configuration(
697
-            $what,
698
-            EE_Registry::instance()->CFG->map_settings,
699
-            __FILE__,
700
-            __FUNCTION__,
701
-            __LINE__
702
-        );
703
-        $this->_redirect_after_action($success, $what, 'updated', array('action' => 'google_map_settings'));
704
-    }
705
-
706
-
707
-    protected function _venue_editor_metaboxes()
708
-    {
709
-        $this->verify_cpt_object();
710
-
711
-        add_meta_box(
712
-            'espresso_venue_address_options',
713
-            __('Physical Location', 'event_espresso'),
714
-            array($this, 'venue_address_metabox'),
715
-            $this->page_slug,
716
-            'side',
717
-            'default'
718
-        );
719
-        add_meta_box(
720
-            'espresso_venue_gmap_options',
721
-            __('Google Map', 'event_espresso'),
722
-            array($this, 'venue_gmap_metabox'),
723
-            $this->page_slug,
724
-            'side',
725
-            'default'
726
-        );
727
-        add_meta_box(
728
-            'espresso_venue_virtual_loc_options',
729
-            __('Virtual Location', 'event_espresso'),
730
-            array($this, 'venue_virtual_loc_metabox'),
731
-            $this->page_slug,
732
-            'side',
733
-            'default'
734
-        );
735
-    }
736
-
737
-
738
-    public function venue_gmap_metabox()
739
-    {
740
-        $template_args = array(
741
-            'vnu_enable_for_gmap' => EEH_Form_Fields::select_input(
742
-                'vnu_enable_for_gmap',
743
-                $this->get_yes_no_values(),
744
-                $this->_cpt_model_obj->enable_for_gmap()
745
-            ),
746
-            'vnu_google_map_link' => $this->_cpt_model_obj->google_map_link(),
747
-        );
748
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_gmap_metabox_content.template.php';
749
-        EEH_Template::display_template($template, $template_args);
750
-    }
751
-
752
-
753
-    public function venue_address_metabox()
754
-    {
755
-
756
-        $template_args['_venue'] = $this->_cpt_model_obj;
757
-
758
-        $template_args['states_dropdown'] = EEH_Form_Fields::generate_form_input(
759
-            $QFI = new EE_Question_Form_Input(
760
-                EE_Question::new_instance(
761
-                    array('QST_display_text' => esc_html__('State', 'event_espresso'), 'QST_system' => 'state')
762
-                ),
763
-                EE_Answer::new_instance(array('ANS_value' => $this->_cpt_model_obj->state_ID())),
764
-                array(
765
-                    'input_name'     => 'sta_id',
766
-                    'input_id'       => 'sta_id',
767
-                    'input_class'    => '',
768
-                    'input_prefix'   => '',
769
-                    'append_qstn_id' => false,
770
-                )
771
-            )
772
-        );
773
-        $template_args['countries_dropdown'] = EEH_Form_Fields::generate_form_input(
774
-            $QFI = new EE_Question_Form_Input(
775
-                EE_Question::new_instance(
776
-                    array('QST_display_text' => esc_html__('Country', 'event_espresso'), 'QST_system' => 'country')
777
-                ),
778
-                EE_Answer::new_instance(array('ANS_value' => $this->_cpt_model_obj->country_ID())),
779
-                array(
780
-                    'input_name'     => 'cnt_iso',
781
-                    'input_id'       => 'cnt_iso',
782
-                    'input_class'    => '',
783
-                    'input_prefix'   => '',
784
-                    'append_qstn_id' => false,
785
-                )
786
-            )
787
-        );
788
-
789
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_address_metabox_content.template.php';
790
-        EEH_Template::display_template($template, $template_args);
791
-    }
792
-
793
-
794
-    public function venue_virtual_loc_metabox()
795
-    {
796
-        $template_args = array(
797
-            '_venue' => $this->_cpt_model_obj,
798
-        );
799
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_virtual_location_metabox_content.template.php';
800
-        EEH_Template::display_template($template, $template_args);
801
-    }
802
-
803
-
804
-    protected function _restore_cpt_item($post_id, $revision_id)
805
-    {
806
-        $venue_obj = $this->_venue_model->get_one_by_ID($post_id);
807
-
808
-        // meta revision restore
809
-        $venue_obj->restore_revision($revision_id);
810
-    }
811
-
812
-
813
-    /**
814
-     * Handles updates for venue cpts
815
-     *
816
-     * @param  int    $post_id ID of Venue CPT
817
-     * @param  object $post    Post object (with "blessed" WP properties)
818
-     * @return void
819
-     */
820
-    protected function _insert_update_cpt_item($post_id, $post)
821
-    {
822
-
823
-        if ($post instanceof WP_Post && $post->post_type !== 'espresso_venues') {
824
-            return;// get out we're not processing the saving of venues.
825
-        }
826
-
827
-        $wheres = array($this->_venue_model->primary_key_name() => $post_id);
828
-
829
-        $venue_values = array(
830
-            'VNU_address'         => ! empty($this->_req_data['vnu_address']) ? $this->_req_data['vnu_address'] : null,
831
-            'VNU_address2'        => ! empty($this->_req_data['vnu_address2']) ? $this->_req_data['vnu_address2']
832
-                : null,
833
-            'VNU_city'            => ! empty($this->_req_data['vnu_city']) ? $this->_req_data['vnu_city'] : null,
834
-            'STA_ID'              => ! empty($this->_req_data['sta_id']) ? $this->_req_data['sta_id'] : null,
835
-            'CNT_ISO'             => ! empty($this->_req_data['cnt_iso']) ? $this->_req_data['cnt_iso'] : null,
836
-            'VNU_zip'             => ! empty($this->_req_data['vnu_zip']) ? $this->_req_data['vnu_zip'] : null,
837
-            'VNU_phone'           => ! empty($this->_req_data['vnu_phone']) ? $this->_req_data['vnu_phone'] : null,
838
-            'VNU_capacity'        => ! empty($this->_req_data['vnu_capacity']) ? str_replace(
839
-                ',',
840
-                '',
841
-                $this->_req_data['vnu_capacity']
842
-            ) : EE_INF,
843
-            'VNU_url'             => ! empty($this->_req_data['vnu_url']) ? $this->_req_data['vnu_url'] : null,
844
-            'VNU_virtual_phone'   => ! empty($this->_req_data['vnu_virtual_phone'])
845
-                ? $this->_req_data['vnu_virtual_phone'] : null,
846
-            'VNU_virtual_url'     => ! empty($this->_req_data['vnu_virtual_url']) ? $this->_req_data['vnu_virtual_url']
847
-                : null,
848
-            'VNU_enable_for_gmap' => ! empty($this->_req_data['vnu_enable_for_gmap']) ? true : false,
849
-            'VNU_google_map_link' => ! empty($this->_req_data['vnu_google_map_link'])
850
-                ? $this->_req_data['vnu_google_map_link'] : null,
851
-        );
852
-
853
-        // update venue
854
-        $success = $this->_venue_model->update($venue_values, array($wheres));
855
-
856
-        // get venue_object for other metaboxes that might be added via the filter... though it would seem to make sense to just use $this->_venue_model->get_one_by_ID( $post_id ).. i have to setup where conditions to override the filters in the model that filter out autodraft and inherit statuses so we GET the inherit id!
857
-        $get_one_where = array($this->_venue_model->primary_key_name() => $post_id, 'status' => $post->post_status);
858
-        $venue = $this->_venue_model->get_one(array($get_one_where));
859
-
860
-        // notice we've applied a filter for venue metabox callbacks but we don't actually have any default venue metaboxes in use.  So this is just here for addons to more easily hook into venue saves.
861
-        $venue_update_callbacks = apply_filters(
862
-            'FHEE__Venues_Admin_Page___insert_update_cpt_item__venue_update_callbacks',
863
-            array()
864
-        );
865
-
866
-        $att_success = true;
867
-
868
-        foreach ($venue_update_callbacks as $v_callback) {
869
-            $_succ = call_user_func_array($v_callback, array($venue, $this->_req_data));
870
-            $att_success = ! $att_success ? $att_success
871
-                : $_succ; // if ANY of these updates fail then we want the appropriate global error message
872
-        }
873
-
874
-        // any errors?
875
-        if ($success && ! $att_success) {
876
-            EE_Error::add_error(
877
-                __(
878
-                    'Venue Details saved successfully but something went wrong with saving attachments.',
879
-                    'event_espresso'
880
-                ),
881
-                __FILE__,
882
-                __FUNCTION__,
883
-                __LINE__
884
-            );
885
-        } elseif ($success === false) {
886
-            EE_Error::add_error(
887
-                __('Venue Details did not save successfully.', 'event_espresso'),
888
-                __FILE__,
889
-                __FUNCTION__,
890
-                __LINE__
891
-            );
892
-        }
893
-    }
894
-
895
-
896
-    public function trash_cpt_item($post_id)
897
-    {
898
-        $this->_req_data['VNU_ID'] = $post_id;
899
-        $this->_trash_or_restore_venue('trash', false);
900
-    }
901
-
902
-
903
-    public function restore_cpt_item($post_id)
904
-    {
905
-        $this->_req_data['VNU_ID'] = $post_id;
906
-        $this->_trash_or_restore_venue('draft', false);
907
-    }
908
-
909
-
910
-    public function delete_cpt_item($post_id)
911
-    {
912
-        $this->_req_data['VNU_ID'] = $post_id;
913
-        $this->_delete_venue(false);
914
-    }
915
-
916
-
917
-    public function get_venue_object()
918
-    {
919
-        return $this->_cpt_model_obj;
920
-    }
921
-
922
-
923
-    protected function _trash_or_restore_venue($venue_status = 'trash', $redirect_after = true)
924
-    {
925
-        $VNU_ID = isset($this->_req_data['VNU_ID']) ? absint($this->_req_data['VNU_ID']) : false;
926
-
927
-        // loop thru venues
928
-        if ($VNU_ID) {
929
-            // clean status
930
-            $venue_status = sanitize_key($venue_status);
931
-            // grab status
932
-            if (! empty($venue_status)) {
933
-                $success = $this->_change_venue_status($VNU_ID, $venue_status);
934
-            } else {
935
-                $success = false;
936
-                $msg = __(
937
-                    'An error occurred. The venue could not be moved to the trash because a valid venue status was not not supplied.',
938
-                    'event_espresso'
939
-                );
940
-                EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
941
-            }
942
-        } else {
943
-            $success = false;
944
-            $msg = __(
945
-                'An error occurred. The venue could not be moved to the trash because a valid venue ID was not not supplied.',
946
-                'event_espresso'
947
-            );
948
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
949
-        }
950
-        $action = $venue_status == 'trash' ? 'moved to the trash' : 'restored from the trash';
951
-
952
-        if ($redirect_after) {
953
-            $this->_redirect_after_action($success, 'Venue', $action, array('action' => 'default'));
954
-        }
955
-    }
956
-
957
-
958
-    protected function _trash_or_restore_venues($venue_status = 'trash')
959
-    {
960
-        // clean status
961
-        $venue_status = sanitize_key($venue_status);
962
-        // grab status
963
-        if (! empty($venue_status)) {
964
-            $success = true;
965
-            // determine the event id and set to array.
966
-            $VNU_IDs = isset($this->_req_data['venue_id']) ? (array) $this->_req_data['venue_id'] : array();
967
-            // loop thru events
968
-            foreach ($VNU_IDs as $VNU_ID) {
969
-                if ($VNU_ID = absint($VNU_ID)) {
970
-                    $results = $this->_change_venue_status($VNU_ID, $venue_status);
971
-                    $success = $results !== false ? $success : false;
972
-                } else {
973
-                    $msg = sprintf(
974
-                        __(
975
-                            'An error occurred. Venue #%d could not be moved to the trash because a valid venue ID was not not supplied.',
976
-                            'event_espresso'
977
-                        ),
978
-                        $VNU_ID
979
-                    );
980
-                    EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
981
-                    $success = false;
982
-                }
983
-            }
984
-        } else {
985
-            $success = false;
986
-            $msg = __(
987
-                'An error occurred. The venue could not be moved to the trash because a valid venue status was not not supplied.',
988
-                'event_espresso'
989
-            );
990
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
991
-        }
992
-        // in order to force a pluralized result message we need to send back a success status greater than 1
993
-        $success = $success ? 2 : false;
994
-        $action = $venue_status == 'trash' ? 'moved to the trash' : 'restored from the trash';
995
-        $this->_redirect_after_action($success, 'Venues', $action, array('action' => 'default'));
996
-    }
997
-
998
-
999
-    /**
1000
-     * _trash_or_restore_venues
1001
-     *
1002
-     * //todo this is pretty much the same as the corresponding change_event_status method in Events_Admin_Page.  We
1003
-     * should probably abstract this up to the EE_Admin_Page_CPT (or even EE_Admin_Page) and make this a common method
1004
-     * accepting a certain number of params.
1005
-     *
1006
-     * @access  private
1007
-     * @param  int    $VNU_ID
1008
-     * @param  string $venue_status
1009
-     * @return void
1010
-     */
1011
-    private function _change_venue_status($VNU_ID = 0, $venue_status = '')
1012
-    {
1013
-        // grab venue id
1014
-        if (! $VNU_ID) {
1015
-            $msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1016
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1017
-            return false;
1018
-        }
1019
-
1020
-        $this->_cpt_model_obj = EEM_Venue::instance()->get_one_by_ID($VNU_ID);
1021
-
1022
-        // clean status
1023
-        $venue_status = sanitize_key($venue_status);
1024
-        // grab status
1025
-        if (! $venue_status) {
1026
-            $msg = __('An error occurred. No Venue Status or an invalid Venue Status was received.', 'event_espresso');
1027
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1028
-            return false;
1029
-        }
1030
-
1031
-        // was event trashed or restored ?
1032
-        switch ($venue_status) {
1033
-            case 'draft':
1034
-                $action = 'restored from the trash';
1035
-                $hook = 'AHEE_venue_restored_from_trash';
1036
-                break;
1037
-            case 'trash':
1038
-                $action = 'moved to the trash';
1039
-                $hook = 'AHEE_venue_moved_to_trash';
1040
-                break;
1041
-            default:
1042
-                $action = 'updated';
1043
-                $hook = false;
1044
-        }
1045
-        // use class to change status
1046
-        $this->_cpt_model_obj->set_status($venue_status);
1047
-        $success = $this->_cpt_model_obj->save();
1048
-
1049
-        if ($success === false) {
1050
-            $msg = sprintf(__('An error occurred. The venue could not be %s.', 'event_espresso'), $action);
1051
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1052
-            return false;
1053
-        }
1054
-        if ($hook) {
1055
-            do_action($hook);
1056
-        }
1057
-        return true;
1058
-    }
1059
-
1060
-
1061
-    /**
1062
-     * @param  bool $redirect_after
1063
-     * @return void
1064
-     */
1065
-    protected function _delete_venue($redirect_after = true)
1066
-    {
1067
-        // determine the venue id and set to array.
1068
-        $VNU_ID = isset($this->_req_data['VNU_ID']) ? absint($this->_req_data['VNU_ID']) : null;
1069
-        $VNU_ID = isset($this->_req_data['post']) ? absint($this->_req_data['post']) : $VNU_ID;
1070
-
1071
-
1072
-        // loop thru venues
1073
-        if ($VNU_ID) {
1074
-            $success = $this->_delete_or_trash_venue($VNU_ID);
1075
-        } else {
1076
-            $success = false;
1077
-            $msg = __(
1078
-                'An error occurred. An venue could not be deleted because a valid venue ID was not not supplied.',
1079
-                'event_espresso'
1080
-            );
1081
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1082
-        }
1083
-        if ($redirect_after) {
1084
-            $this->_redirect_after_action($success, 'Venue', 'deleted', array('action' => 'default'));
1085
-        }
1086
-    }
1087
-
1088
-
1089
-    protected function _delete_venues()
1090
-    {
1091
-        $success = true;
1092
-        // determine the event id and set to array.
1093
-        $VNU_IDs = isset($this->_req_data['venue_id']) ? (array) $this->_req_data['venue_id'] : array();
1094
-        // loop thru events
1095
-        foreach ($VNU_IDs as $VNU_ID) {
1096
-            if ($VNU_ID = absint($VNU_ID)) {
1097
-                $results = $this->_delete_or_trash_venue($VNU_ID);
1098
-                $success = $results !== false ? $success : false;
1099
-            } else {
1100
-                $success = false;
1101
-                $msg = __(
1102
-                    'An error occurred. An venue could not be deleted because a valid venue ID was not not supplied.',
1103
-                    'event_espresso'
1104
-                );
1105
-                EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1106
-            }
1107
-        }
1108
-        // in order to force a pluralized result message we need to send back a success status greater than 1
1109
-        $success = $success ? 2 : false;
1110
-        $this->_redirect_after_action(
1111
-            $success,
1112
-            __('Venues', 'event_espresso'),
1113
-            __('deleted', 'event_espresso'),
1114
-            array('action' => 'default')
1115
-        );
1116
-    }
1117
-
1118
-
1119
-    // todo: put in parent
1120
-    private function _delete_or_trash_venue($VNU_ID = false)
1121
-    {
1122
-        // grab event id
1123
-        if (! $VNU_ID = absint($VNU_ID)) {
1124
-            $msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1125
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1126
-            return false;
1127
-        }
1128
-
1129
-
1130
-        $venue = EEM_Venue::instance()->get_one_by_ID($VNU_ID);
1131
-        // first need to remove all term relationships
1132
-        $venue->_remove_relations('Term_Taxonomy');
1133
-        $success = $venue->delete_permanently();
1134
-        // did it all go as planned ?
1135
-        if ($success) {
1136
-            $msg = sprintf(__('Venue ID # %d has been deleted.', 'event_espresso'), $VNU_ID);
1137
-            EE_Error::add_success($msg);
1138
-        } else {
1139
-            $msg = sprintf(__('An error occurred. Venue ID # %d could not be deleted.', 'event_espresso'), $VNU_ID);
1140
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1141
-            return false;
1142
-        }
1143
-        do_action('AHEE__Venues_Admin_Page___delete_or_trash_venue__after_venue_deleted');
1144
-        return true;
1145
-    }
1146
-
1147
-
1148
-
1149
-
1150
-    /***********/
1151
-    /* QUERIES */
1152
-
1153
-
1154
-    public function get_venues($per_page = 10, $count = false)
1155
-    {
1156
-
1157
-        $_orderby = ! empty($this->_req_data['orderby']) ? $this->_req_data['orderby'] : '';
1158
-
1159
-        switch ($_orderby) {
1160
-            case 'id':
1161
-                $orderby = 'VNU_ID';
1162
-                break;
1163
-
1164
-            case 'capacity':
1165
-                $orderby = 'VNU_capacity';
1166
-                break;
1167
-
1168
-            case 'city':
1169
-                $orderby = 'VNU_city';
1170
-                break;
1171
-
1172
-            default:
1173
-                $orderby = 'VNU_name';
1174
-        }
1175
-
1176
-
1177
-        $sort = (isset($this->_req_data['order']) && ! empty($this->_req_data['order'])) ? $this->_req_data['order']
1178
-            : 'ASC';
1179
-
1180
-        $current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
1181
-            ? $this->_req_data['paged'] : 1;
1182
-        $per_page = isset($per_page) && ! empty($per_page) ? $per_page : 10;
1183
-        $per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
1184
-            ? $this->_req_data['perpage'] : $per_page;
1185
-
1186
-
1187
-        $offset = ($current_page - 1) * $per_page;
1188
-        $limit = array($offset, $per_page);
1189
-
1190
-        $category = isset($this->_req_data['category']) && $this->_req_data['category'] > 0
1191
-            ? $this->_req_data['category'] : null;
1192
-        $where = array();
1193
-
1194
-        // only set initial status if it is in the incoming request.  Otherwise the "all" view display's all statuses.
1195
-        if (isset($this->_req_data['status']) && $this->_req_data['status'] != 'all') {
1196
-            $where['status'] = $this->_req_data['status'];
1197
-        }
1198
-
1199
-        if (isset($this->_req_data['venue_status'])) {
1200
-            $where['status'] = $this->_req_data['venue_status'];
1201
-        }
1202
-
1203
-
1204
-        if ($category) {
1205
-            $where['Term_Taxonomy.taxonomy'] = 'espresso_venue_categories';
1206
-            $where['Term_Taxonomy.term_id'] = $category;
1207
-        }
1208
-
1209
-
1210
-        if (! EE_Registry::instance()->CAP->current_user_can('ee_read_others_venues', 'get_venues')) {
1211
-            $where['VNU_wp_user'] = get_current_user_id();
1212
-        } else {
1213
-            if (! EE_Registry::instance()->CAP->current_user_can('ee_read_private_venues', 'get_venues')) {
1214
-                $where['OR'] = array(
1215
-                    'status*restrict_private' => array('!=', 'private'),
1216
-                    'AND'                     => array(
1217
-                        'status*inclusive' => array('=', 'private'),
1218
-                        'VNU_wp_user'      => get_current_user_id(),
1219
-                    ),
1220
-                );
1221
-            }
1222
-        }
1223
-
1224
-
1225
-        if (isset($this->_req_data['s'])) {
1226
-            $sstr = '%' . $this->_req_data['s'] . '%';
1227
-            $where['OR'] = array(
1228
-                'VNU_name'               => array('LIKE', $sstr),
1229
-                'VNU_desc'               => array('LIKE', $sstr),
1230
-                'VNU_short_desc'         => array('LIKE', $sstr),
1231
-                'VNU_address'            => array('LIKE', $sstr),
1232
-                'VNU_address2'           => array('LIKE', $sstr),
1233
-                'VNU_city'               => array('LIKE', $sstr),
1234
-                'VNU_zip'                => array('LIKE', $sstr),
1235
-                'VNU_phone'              => array('LIKE', $sstr),
1236
-                'VNU_url'                => array('LIKE', $sstr),
1237
-                'VNU_virtual_phone'      => array('LIKE', $sstr),
1238
-                'VNU_virtual_url'        => array('LIKE', $sstr),
1239
-                'VNU_google_map_link'    => array('LIKE', $sstr),
1240
-                'Event.EVT_name'         => array('LIKE', $sstr),
1241
-                'Event.EVT_desc'         => array('LIKE', $sstr),
1242
-                'Event.EVT_phone'        => array('LIKE', $sstr),
1243
-                'Event.EVT_external_URL' => array('LIKE', $sstr),
1244
-            );
1245
-        }
20
+	/**
21
+	 * _venue
22
+	 * This will hold the venue object for venue_details screen.
23
+	 *
24
+	 * @access protected
25
+	 * @var object
26
+	 */
27
+	protected $_venue;
28
+
29
+
30
+	/**
31
+	 * This will hold the category object for category_details screen.
32
+	 *
33
+	 * @var object
34
+	 */
35
+	protected $_category;
36
+
37
+
38
+	/**
39
+	 * This property will hold the venue model instance
40
+	 *
41
+	 * @var object
42
+	 */
43
+	protected $_venue_model;
44
+
45
+
46
+	protected function _init_page_props()
47
+	{
48
+		require_once(EE_MODELS . 'EEM_Venue.model.php');
49
+		$this->page_slug = EE_VENUES_PG_SLUG;
50
+		$this->_admin_base_url = EE_VENUES_ADMIN_URL;
51
+		$this->_admin_base_path = EE_ADMIN_PAGES . 'venues';
52
+		$this->page_label = __('Event Venues', 'event_espresso');
53
+		$this->_cpt_model_names = array(
54
+			'create_new' => 'EEM_Venue',
55
+			'edit'       => 'EEM_Venue',
56
+		);
57
+		$this->_cpt_edit_routes = array(
58
+			'espresso_venues' => 'edit',
59
+		);
60
+		$this->_venue_model = EEM_Venue::instance();
61
+	}
62
+
63
+
64
+	protected function _ajax_hooks()
65
+	{
66
+		// todo: all hooks for ee_venues ajax goes in here.
67
+	}
68
+
69
+
70
+	protected function _define_page_props()
71
+	{
72
+		$this->_admin_page_title = $this->page_label;
73
+		$this->_labels = array(
74
+			'buttons'      => array(
75
+				'add'             => __('Add New Venue', 'event_espresso'),
76
+				'edit'            => __('Edit Venue', 'event_espresso'),
77
+				'delete'          => __('Delete Venue', 'event_espresso'),
78
+				'add_category'    => __('Add New Category', 'event_espresso'),
79
+				'edit_category'   => __('Edit Category', 'event_espresso'),
80
+				'delete_category' => __('Delete Category', 'event_espresso'),
81
+			),
82
+			'editor_title' => array(
83
+				'espresso_venues' => __('Enter Venue name here', 'event_espresso'),
84
+			),
85
+			'publishbox'   => array(
86
+				'create_new'          => __('Save New Venue', 'event_espresso'),
87
+				'edit'                => __('Update Venue', 'event_espresso'),
88
+				'add_category'        => __('Save New Category', 'event_espresso'),
89
+				'edit_category'       => __('Update Category', 'event_espresso'),
90
+				'google_map_settings' => __('Update Settings', 'event_espresso'),
91
+			),
92
+		);
93
+	}
94
+
95
+
96
+	protected function _set_page_routes()
97
+	{
98
+
99
+		// load formatter helper
100
+		// load field generator helper
101
+
102
+		// is there a vnu_id in the request?
103
+		$vnu_id = ! empty($this->_req_data['VNU_ID']) && ! is_array($this->_req_data['VNU_ID'])
104
+			? $this->_req_data['VNU_ID'] : 0;
105
+		$vnu_id = ! empty($this->_req_data['post']) ? $this->_req_data['post'] : $vnu_id;
106
+
107
+		$this->_page_routes = array(
108
+			'default'                    => array(
109
+				'func'       => '_overview_list_table',
110
+				'capability' => 'ee_read_venues',
111
+			),
112
+			'create_new'                 => array(
113
+				'func'       => '_create_new_cpt_item',
114
+				'capability' => 'ee_edit_venues',
115
+			),
116
+			'edit'                       => array(
117
+				'func'       => '_edit_cpt_item',
118
+				'capability' => 'ee_edit_venue',
119
+				'obj_id'     => $vnu_id,
120
+			),
121
+			'trash_venue'                => array(
122
+				'func'       => '_trash_or_restore_venue',
123
+				'args'       => array('venue_status' => 'trash'),
124
+				'noheader'   => true,
125
+				'capability' => 'ee_delete_venue',
126
+				'obj_id'     => $vnu_id,
127
+			),
128
+			'trash_venues'               => array(
129
+				'func'       => '_trash_or_restore_venues',
130
+				'args'       => array('venue_status' => 'trash'),
131
+				'noheader'   => true,
132
+				'capability' => 'ee_delete_venues',
133
+			),
134
+			'restore_venue'              => array(
135
+				'func'       => '_trash_or_restore_venue',
136
+				'args'       => array('venue_status' => 'draft'),
137
+				'noheader'   => true,
138
+				'capability' => 'ee_delete_venue',
139
+				'obj_id'     => $vnu_id,
140
+			),
141
+			'restore_venues'             => array(
142
+				'func'       => '_trash_or_restore_venues',
143
+				'args'       => array('venue_status' => 'draft'),
144
+				'noheader'   => true,
145
+				'capability' => 'ee_delete_venues',
146
+			),
147
+			'delete_venues'              => array(
148
+				'func'       => '_delete_venues',
149
+				'noheader'   => true,
150
+				'capability' => 'ee_delete_venues',
151
+			),
152
+			'delete_venue'               => array(
153
+				'func'       => '_delete_venue',
154
+				'noheader'   => true,
155
+				'capability' => 'ee_delete_venue',
156
+				'obj_id'     => $vnu_id,
157
+			),
158
+			// settings related
159
+			'google_map_settings'        => array(
160
+				'func'       => '_google_map_settings',
161
+				'capability' => 'manage_options',
162
+			),
163
+			'update_google_map_settings' => array(
164
+				'func'       => '_update_google_map_settings',
165
+				'capability' => 'manage_options',
166
+				'noheader'   => true,
167
+			),
168
+			// venue category tab related
169
+			'add_category'               => array(
170
+				'func'       => '_category_details',
171
+				'args'       => array('add'),
172
+				'capability' => 'ee_edit_venue_category',
173
+			),
174
+			'edit_category'              => array(
175
+				'func'       => '_category_details',
176
+				'args'       => array('edit'),
177
+				'capability' => 'ee_edit_venue_category',
178
+			),
179
+			'delete_categories'          => array(
180
+				'func'       => '_delete_categories',
181
+				'noheader'   => true,
182
+				'capability' => 'ee_delete_venue_category',
183
+			),
184
+
185
+			'delete_category' => array(
186
+				'func'       => '_delete_categories',
187
+				'noheader'   => true,
188
+				'capability' => 'ee_delete_venue_category',
189
+			),
190
+
191
+			'insert_category' => array(
192
+				'func'       => '_insert_or_update_category',
193
+				'args'       => array('new_category' => true),
194
+				'noheader'   => true,
195
+				'capability' => 'ee_edit_venue_category',
196
+			),
197
+
198
+			'update_category'   => array(
199
+				'func'       => '_insert_or_update_category',
200
+				'args'       => array('new_category' => false),
201
+				'noheader'   => true,
202
+				'capability' => 'ee_edit_venue_category',
203
+			),
204
+			'export_categories' => array(
205
+				'func'       => '_categories_export',
206
+				'noheader'   => true,
207
+				'capability' => 'export',
208
+			),
209
+			'import_categories' => array(
210
+				'func'       => '_import_categories',
211
+				'capability' => 'import',
212
+			),
213
+			'category_list'     => array(
214
+				'func'       => '_category_list_table',
215
+				'capability' => 'ee_manage_venue_categories',
216
+			),
217
+		);
218
+	}
219
+
220
+
221
+	protected function _set_page_config()
222
+	{
223
+		$this->_page_config = array(
224
+			'default'             => array(
225
+				'nav'           => array(
226
+					'label' => __('Overview', 'event_espresso'),
227
+					'order' => 10,
228
+				),
229
+				'list_table'    => 'Venues_Admin_List_Table',
230
+				'help_tabs'     => array(
231
+					'venues_overview_help_tab'                           => array(
232
+						'title'    => __('Venues Overview', 'event_espresso'),
233
+						'filename' => 'venues_overview',
234
+					),
235
+					'venues_overview_table_column_headings_help_tab'     => array(
236
+						'title'    => __('Venues Overview Table Column Headings', 'event_espresso'),
237
+						'filename' => 'venues_overview_table_column_headings',
238
+					),
239
+					'venues_overview_views_bulk_actions_search_help_tab' => array(
240
+						'title'    => __('Venues Overview Views & Bulk Actions & Search', 'event_espresso'),
241
+						'filename' => 'venues_overview_views_bulk_actions_search',
242
+					),
243
+				),
244
+				'help_tour'     => array('Venues_Overview_Help_Tour'),
245
+				'metaboxes'     => array('_espresso_news_post_box', '_espresso_links_post_box'),
246
+				'require_nonce' => false,
247
+			),
248
+			'create_new'          => array(
249
+				'nav'           => array(
250
+					'label'      => __('Add Venue', 'event_espresso'),
251
+					'order'      => 5,
252
+					'persistent' => false,
253
+				),
254
+				'help_tabs'     => array(
255
+					'venues_editor_help_tab'                                               => array(
256
+						'title'    => __('Venue Editor', 'event_espresso'),
257
+						'filename' => 'venues_editor',
258
+					),
259
+					'venues_editor_title_richtexteditor_help_tab'                          => array(
260
+						'title'    => __('Venue Title & Rich Text Editor', 'event_espresso'),
261
+						'filename' => 'venues_editor_title_richtexteditor',
262
+					),
263
+					'venues_editor_tags_categories_help_tab'                               => array(
264
+						'title'    => __('Venue Tags & Categories', 'event_espresso'),
265
+						'filename' => 'venues_editor_tags_categories',
266
+					),
267
+					'venues_editor_physical_location_google_map_virtual_location_help_tab' => array(
268
+						'title'    => __(
269
+							'Venue Editor Physical Location & Google Map & Virtual Location',
270
+							'event_espresso'
271
+						),
272
+						'filename' => 'venues_editor_physical_location_google_map_virtual_location',
273
+					),
274
+					'venues_editor_save_new_venue_help_tab'                                => array(
275
+						'title'    => __('Save New Venue', 'event_espresso'),
276
+						'filename' => 'venues_editor_save_new_venue',
277
+					),
278
+					'venues_editor_other_help_tab'                                         => array(
279
+						'title'    => __('Venue Editor Other', 'event_espresso'),
280
+						'filename' => 'venues_editor_other',
281
+					),
282
+				),
283
+				'help_tour'     => array('Venues_Add_Venue_Help_Tour'),
284
+				'metaboxes'     => array('_venue_editor_metaboxes'),
285
+				'require_nonce' => false,
286
+			),
287
+			'edit'                => array(
288
+				'nav'           => array(
289
+					'label'      => __('Edit Venue', 'event_espresso'),
290
+					'order'      => 5,
291
+					'persistent' => false,
292
+					'url'        => isset($this->_req_data['post']) ? add_query_arg(
293
+						array('post' => $this->_req_data['post']),
294
+						$this->_current_page_view_url
295
+					) : $this->_admin_base_url,
296
+				),
297
+				'help_tabs'     => array(
298
+					'venues_editor_help_tab'                                               => array(
299
+						'title'    => __('Venue Editor', 'event_espresso'),
300
+						'filename' => 'venues_editor',
301
+					),
302
+					'venues_editor_title_richtexteditor_help_tab'                          => array(
303
+						'title'    => __('Venue Title & Rich Text Editor', 'event_espresso'),
304
+						'filename' => 'venues_editor_title_richtexteditor',
305
+					),
306
+					'venues_editor_tags_categories_help_tab'                               => array(
307
+						'title'    => __('Venue Tags & Categories', 'event_espresso'),
308
+						'filename' => 'venues_editor_tags_categories',
309
+					),
310
+					'venues_editor_physical_location_google_map_virtual_location_help_tab' => array(
311
+						'title'    => __(
312
+							'Venue Editor Physical Location & Google Map & Virtual Location',
313
+							'event_espresso'
314
+						),
315
+						'filename' => 'venues_editor_physical_location_google_map_virtual_location',
316
+					),
317
+					'venues_editor_save_new_venue_help_tab'                                => array(
318
+						'title'    => __('Save New Venue', 'event_espresso'),
319
+						'filename' => 'venues_editor_save_new_venue',
320
+					),
321
+					'venues_editor_other_help_tab'                                         => array(
322
+						'title'    => __('Venue Editor Other', 'event_espresso'),
323
+						'filename' => 'venues_editor_other',
324
+					),
325
+				),
326
+				/*'help_tour' => array( 'Venues_Edit_Venue_Help_Tour' ),*/
327
+				'metaboxes'     => array('_venue_editor_metaboxes'),
328
+				'require_nonce' => false,
329
+			),
330
+			'google_map_settings' => array(
331
+				'nav'           => array(
332
+					'label' => esc_html__('Google Maps', 'event_espresso'),
333
+					'order' => 40,
334
+				),
335
+				'metaboxes'     => array_merge($this->_default_espresso_metaboxes, array('_publish_post_box')),
336
+				'help_tabs'     => array(
337
+					'general_settings_google_maps_help_tab' => array(
338
+						'title'    => __('Google Maps', 'event_espresso'),
339
+						'filename' => 'general_settings_google_maps',
340
+					),
341
+				),
342
+				'help_tour'     => array('Google_Maps_Help_Tour'),
343
+				'require_nonce' => false,
344
+			),
345
+			// venue category stuff
346
+			'add_category'        => array(
347
+				'nav'           => array(
348
+					'label'      => __('Add Category', 'event_espresso'),
349
+					'order'      => 15,
350
+					'persistent' => false,
351
+				),
352
+				'metaboxes'     => array('_publish_post_box'),
353
+				'help_tabs'     => array(
354
+					'venues_add_category_help_tab' => array(
355
+						'title'    => __('Add New Venue Category', 'event_espresso'),
356
+						'filename' => 'venues_add_category',
357
+					),
358
+				),
359
+				'help_tour'     => array('Venues_Add_Category_Help_Tour'),
360
+				'require_nonce' => false,
361
+			),
362
+			'edit_category'       => array(
363
+				'nav'           => array(
364
+					'label'      => __('Edit Category', 'event_espresso'),
365
+					'order'      => 15,
366
+					'persistent' => false,
367
+					'url'        => isset($this->_req_data['EVT_CAT_ID']) ? add_query_arg(
368
+						array('EVT_CAT_ID' => $this->_req_data['EVT_CAT_ID']),
369
+						$this->_current_page_view_url
370
+					) : $this->_admin_base_url,
371
+				),
372
+				'metaboxes'     => array('_publish_post_box'),
373
+				'help_tabs'     => array(
374
+					'venues_edit_category_help_tab' => array(
375
+						'title'    => __('Edit Venue Category', 'event_espresso'),
376
+						'filename' => 'venues_edit_category',
377
+					),
378
+				),
379
+				/*'help_tour' => array( 'Venues_Edit_Category_Help_Tour' ),*/
380
+				'require_nonce' => false,
381
+			),
382
+			'category_list'       => array(
383
+				'nav'           => array(
384
+					'label' => __('Categories', 'event_espresso'),
385
+					'order' => 20,
386
+				),
387
+				'list_table'    => 'Venue_Categories_Admin_List_Table',
388
+				'help_tabs'     => array(
389
+					'venues_categories_help_tab'                       => array(
390
+						'title'    => __('Venue Categories', 'event_espresso'),
391
+						'filename' => 'venues_categories',
392
+					),
393
+					'venues_categories_table_column_headings_help_tab' => array(
394
+						'title'    => __('Venue Categories Table Column Headings', 'event_espresso'),
395
+						'filename' => 'venues_categories_table_column_headings',
396
+					),
397
+					'venues_categories_views_help_tab'                 => array(
398
+						'title'    => __('Venue Categories Views', 'event_espresso'),
399
+						'filename' => 'venues_categories_views',
400
+					),
401
+					'venues_categories_other_help_tab'                 => array(
402
+						'title'    => __('Venue Categories Other', 'event_espresso'),
403
+						'filename' => 'venues_categories_other',
404
+					),
405
+				),
406
+				'help_tour'     => array('Venues_Categories_Help_Tour'),
407
+				'metaboxes'     => $this->_default_espresso_metaboxes,
408
+				'require_nonce' => false,
409
+			),
410
+		);
411
+	}
412
+
413
+
414
+	protected function _add_screen_options()
415
+	{
416
+		// todo
417
+	}
418
+
419
+
420
+	protected function _add_screen_options_default()
421
+	{
422
+		$this->_per_page_screen_option();
423
+	}
424
+
425
+
426
+	protected function _add_screen_options_category_list()
427
+	{
428
+		$page_title = $this->_admin_page_title;
429
+		$this->_admin_page_title = __('Venue Categories', 'event_espresso');
430
+		$this->_per_page_screen_option();
431
+		$this->_admin_page_title = $page_title;
432
+	}
433
+
434
+
435
+	// none of the below group are currently used for Event Venues
436
+	protected function _add_feature_pointers()
437
+	{
438
+	}
439
+
440
+	public function admin_init()
441
+	{
442
+	}
443
+
444
+	public function admin_notices()
445
+	{
446
+	}
447
+
448
+	public function admin_footer_scripts()
449
+	{
450
+	}
451
+
452
+
453
+	public function load_scripts_styles_create_new()
454
+	{
455
+		$this->load_scripts_styles_edit();
456
+	}
457
+
458
+
459
+	public function load_scripts_styles()
460
+	{
461
+		wp_register_style('ee-cat-admin', EVENTS_ASSETS_URL . 'ee-cat-admin.css', array(), EVENT_ESPRESSO_VERSION);
462
+		wp_enqueue_style('ee-cat-admin');
463
+	}
464
+
465
+
466
+	public function load_scripts_styles_add_category()
467
+	{
468
+		$this->load_scripts_styles_edit_category();
469
+	}
470
+
471
+
472
+	public function load_scripts_styles_edit_category()
473
+	{
474
+	}
475
+
476
+
477
+	public function load_scripts_styles_edit()
478
+	{
479
+		// styles
480
+		wp_enqueue_style('espresso-ui-theme');
481
+		wp_register_style(
482
+			'espresso_venues',
483
+			EE_VENUES_ASSETS_URL . 'ee-venues-admin.css',
484
+			array(),
485
+			EVENT_ESPRESSO_VERSION
486
+		);
487
+		wp_enqueue_style('espresso_venues');
488
+	}
489
+
490
+
491
+	protected function _set_list_table_views_default()
492
+	{
493
+		$this->_views = array(
494
+			'all' => array(
495
+				'slug'        => 'all',
496
+				'label'       => __('View All Venues', 'event_espresso'),
497
+				'count'       => 0,
498
+				'bulk_action' => array(),
499
+			),
500
+		);
501
+
502
+		if (EE_Registry::instance()->CAP->current_user_can('ee_delete_venues', 'espresso_venues_trash_venues')) {
503
+			$this->_views['all']['bulk_action'] = array(
504
+				'trash_venues' => __('Move to Trash', 'event_espresso'),
505
+			);
506
+			$this->_views['trash'] = array(
507
+				'slug'        => 'trash',
508
+				'label'       => __('Trash', 'event_espresso'),
509
+				'count'       => 0,
510
+				'bulk_action' => array(
511
+					'restore_venues' => __('Restore from Trash', 'event_espresso'),
512
+					'delete_venues'  => __('Delete', 'event_espresso'),
513
+				),
514
+			);
515
+		}
516
+	}
517
+
518
+
519
+	protected function _set_list_table_views_category_list()
520
+	{
521
+		$this->_views = array(
522
+			'all' => array(
523
+				'slug'        => 'all',
524
+				'label'       => __('All', 'event_espresso'),
525
+				'count'       => 0,
526
+				'bulk_action' => array(
527
+					'delete_categories' => __('Delete Permanently', 'event_espresso'),
528
+				),
529
+			),
530
+		);
531
+	}
532
+
533
+
534
+	protected function _overview_list_table()
535
+	{
536
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
537
+		$this->_template_args['after_list_table'] = EEH_Template::get_button_or_link(
538
+			get_post_type_archive_link('espresso_venues'),
539
+			__("View Venue Archive Page", "event_espresso"),
540
+			'button'
541
+		);
542
+		$this->_admin_page_title .= ' ' . $this->get_action_link_or_button('create_new', 'add', array(), 'add-new-h2');
543
+		$this->_search_btn_label = __('Venues', 'event_espresso');
544
+		$this->display_admin_list_table_page_with_sidebar();
545
+	}
546
+
547
+
548
+	public function extra_misc_actions_publish_box()
549
+	{
550
+		$extra_rows = array(
551
+			'vnu_capacity' => $this->_cpt_model_obj->get_f('VNU_capacity'),
552
+			'vnu_url'      => $this->_cpt_model_obj->get_f('VNU_url'),
553
+			'vnu_phone'    => $this->_cpt_model_obj->get_f('VNU_phone'),
554
+		);
555
+		$template = EE_VENUES_TEMPLATE_PATH . 'venue_publish_box_extras.template.php';
556
+		EEH_Template::display_template($template, $extra_rows);
557
+	}
558
+
559
+
560
+	/*************        Google Maps        *************/
561
+
562
+
563
+	protected function _google_map_settings()
564
+	{
565
+
566
+
567
+		$this->_template_args['values'] = $this->_yes_no_values;
568
+		$default_map_settings = new stdClass();
569
+		$default_map_settings->use_google_maps = true;
570
+		$default_map_settings->google_map_api_key = '';
571
+		// for event details pages (reg page)
572
+		$default_map_settings->event_details_map_width = 585;            // ee_map_width_single
573
+		$default_map_settings->event_details_map_height = 362;            // ee_map_height_single
574
+		$default_map_settings->event_details_map_zoom = 14;            // ee_map_zoom_single
575
+		$default_map_settings->event_details_display_nav = true;            // ee_map_nav_display_single
576
+		$default_map_settings->event_details_nav_size = false;            // ee_map_nav_size_single
577
+		$default_map_settings->event_details_control_type = 'default';        // ee_map_type_control_single
578
+		$default_map_settings->event_details_map_align = 'center';            // ee_map_align_single
579
+		// for event list pages
580
+		$default_map_settings->event_list_map_width = 300;            // ee_map_width
581
+		$default_map_settings->event_list_map_height = 185;        // ee_map_height
582
+		$default_map_settings->event_list_map_zoom = 12;            // ee_map_zoom
583
+		$default_map_settings->event_list_display_nav = false;        // ee_map_nav_display
584
+		$default_map_settings->event_list_nav_size = true;            // ee_map_nav_size
585
+		$default_map_settings->event_list_control_type = 'dropdown';        // ee_map_type_control
586
+		$default_map_settings->event_list_map_align = 'center';            // ee_map_align
587
+
588
+		$this->_template_args['map_settings'] =
589
+			isset(EE_Registry::instance()->CFG->map_settings)
590
+			&& ! empty(EE_Registry::instance()->CFG->map_settings)
591
+				? (object) array_merge(
592
+					(array) $default_map_settings,
593
+					(array) EE_Registry::instance()->CFG->map_settings
594
+				)
595
+				: $default_map_settings;
596
+
597
+		$this->_set_add_edit_form_tags('update_google_map_settings');
598
+		$this->_set_publish_post_box_vars(null, false, false, null, false);
599
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
600
+			EE_VENUES_TEMPLATE_PATH . 'google_map.template.php',
601
+			$this->_template_args,
602
+			true
603
+		);
604
+		$this->display_admin_page_with_sidebar();
605
+	}
606
+
607
+	protected function _update_google_map_settings()
608
+	{
609
+
610
+		EE_Registry::instance()->CFG->map_settings->use_google_maps =
611
+			isset($this->_req_data['use_google_maps'])
612
+				? absint($this->_req_data['use_google_maps'])
613
+				: EE_Registry::instance()->CFG->map_settings->use_google_maps;
614
+
615
+		EE_Registry::instance()->CFG->map_settings->google_map_api_key =
616
+			isset($this->_req_data['google_map_api_key'])
617
+				? sanitize_text_field($this->_req_data['google_map_api_key'])
618
+				: EE_Registry::instance()->CFG->map_settings->google_map_api_key;
619
+
620
+		EE_Registry::instance()->CFG->map_settings->event_details_map_width =
621
+			isset($this->_req_data['event_details_map_width'])
622
+				? absint($this->_req_data['event_details_map_width'])
623
+				: EE_Registry::instance()->CFG->map_settings->event_details_map_width;
624
+
625
+		EE_Registry::instance()->CFG->map_settings->event_details_map_height =
626
+			isset($this->_req_data['event_details_map_height'])
627
+				? absint($this->_req_data['event_details_map_height'])
628
+				: EE_Registry::instance()->CFG->map_settings->event_details_map_height;
629
+
630
+		EE_Registry::instance()->CFG->map_settings->event_details_map_zoom =
631
+			isset($this->_req_data['event_details_map_zoom'])
632
+				? absint($this->_req_data['event_details_map_zoom'])
633
+				: EE_Registry::instance()->CFG->map_settings->event_details_map_zoom;
634
+
635
+		EE_Registry::instance()->CFG->map_settings->event_details_display_nav =
636
+			isset($this->_req_data['event_details_display_nav'])
637
+				? absint($this->_req_data['event_details_display_nav'])
638
+				: EE_Registry::instance()->CFG->map_settings->event_details_display_nav;
639
+
640
+		EE_Registry::instance()->CFG->map_settings->event_details_nav_size =
641
+			isset($this->_req_data['event_details_nav_size'])
642
+				? absint($this->_req_data['event_details_nav_size'])
643
+				: EE_Registry::instance()->CFG->map_settings->event_details_nav_size;
644
+
645
+		EE_Registry::instance()->CFG->map_settings->event_details_control_type =
646
+			isset($this->_req_data['event_details_control_type'])
647
+				? sanitize_text_field($this->_req_data['event_details_control_type'])
648
+				: EE_Registry::instance()->CFG->map_settings->event_details_control_type;
649
+
650
+		EE_Registry::instance()->CFG->map_settings->event_details_map_align =
651
+			isset($this->_req_data['event_details_map_align'])
652
+				? sanitize_text_field($this->_req_data['event_details_map_align'])
653
+				: EE_Registry::instance()->CFG->map_settings->event_details_map_align;
654
+
655
+		EE_Registry::instance()->CFG->map_settings->event_list_map_width =
656
+			isset($this->_req_data['event_list_map_width'])
657
+				? absint($this->_req_data['event_list_map_width'])
658
+				: EE_Registry::instance()->CFG->map_settings->event_list_map_width;
659
+
660
+		EE_Registry::instance()->CFG->map_settings->event_list_map_height =
661
+			isset($this->_req_data['event_list_map_height'])
662
+				? absint($this->_req_data['event_list_map_height'])
663
+				: EE_Registry::instance()->CFG->map_settings->event_list_map_height;
664
+
665
+		EE_Registry::instance()->CFG->map_settings->event_list_map_zoom =
666
+			isset($this->_req_data['event_list_map_zoom'])
667
+				? absint($this->_req_data['event_list_map_zoom'])
668
+				: EE_Registry::instance()->CFG->map_settings->event_list_map_zoom;
669
+
670
+		EE_Registry::instance()->CFG->map_settings->event_list_display_nav =
671
+			isset($this->_req_data['event_list_display_nav'])
672
+				? absint($this->_req_data['event_list_display_nav'])
673
+				: EE_Registry::instance()->CFG->map_settings->event_list_display_nav;
674
+
675
+		EE_Registry::instance()->CFG->map_settings->event_list_nav_size =
676
+			isset($this->_req_data['event_list_nav_size'])
677
+				? absint($this->_req_data['event_list_nav_size'])
678
+				: EE_Registry::instance()->CFG->map_settings->event_list_nav_size;
679
+
680
+		EE_Registry::instance()->CFG->map_settings->event_list_control_type =
681
+			isset($this->_req_data['event_list_control_type'])
682
+				? sanitize_text_field($this->_req_data['event_list_control_type'])
683
+				: EE_Registry::instance()->CFG->map_settings->event_list_control_type;
684
+
685
+		EE_Registry::instance()->CFG->map_settings->event_list_map_align =
686
+			isset($this->_req_data['event_list_map_align'])
687
+				? sanitize_text_field($this->_req_data['event_list_map_align'])
688
+				: EE_Registry::instance()->CFG->map_settings->event_list_map_align;
689
+
690
+		EE_Registry::instance()->CFG->map_settings = apply_filters(
691
+			'FHEE__Extend_General_Settings_Admin_Page___update_google_map_settings__CFG_map_settings',
692
+			EE_Registry::instance()->CFG->map_settings
693
+		);
694
+
695
+		$what = 'Google Map Settings';
696
+		$success = $this->_update_espresso_configuration(
697
+			$what,
698
+			EE_Registry::instance()->CFG->map_settings,
699
+			__FILE__,
700
+			__FUNCTION__,
701
+			__LINE__
702
+		);
703
+		$this->_redirect_after_action($success, $what, 'updated', array('action' => 'google_map_settings'));
704
+	}
705
+
706
+
707
+	protected function _venue_editor_metaboxes()
708
+	{
709
+		$this->verify_cpt_object();
710
+
711
+		add_meta_box(
712
+			'espresso_venue_address_options',
713
+			__('Physical Location', 'event_espresso'),
714
+			array($this, 'venue_address_metabox'),
715
+			$this->page_slug,
716
+			'side',
717
+			'default'
718
+		);
719
+		add_meta_box(
720
+			'espresso_venue_gmap_options',
721
+			__('Google Map', 'event_espresso'),
722
+			array($this, 'venue_gmap_metabox'),
723
+			$this->page_slug,
724
+			'side',
725
+			'default'
726
+		);
727
+		add_meta_box(
728
+			'espresso_venue_virtual_loc_options',
729
+			__('Virtual Location', 'event_espresso'),
730
+			array($this, 'venue_virtual_loc_metabox'),
731
+			$this->page_slug,
732
+			'side',
733
+			'default'
734
+		);
735
+	}
736
+
737
+
738
+	public function venue_gmap_metabox()
739
+	{
740
+		$template_args = array(
741
+			'vnu_enable_for_gmap' => EEH_Form_Fields::select_input(
742
+				'vnu_enable_for_gmap',
743
+				$this->get_yes_no_values(),
744
+				$this->_cpt_model_obj->enable_for_gmap()
745
+			),
746
+			'vnu_google_map_link' => $this->_cpt_model_obj->google_map_link(),
747
+		);
748
+		$template = EE_VENUES_TEMPLATE_PATH . 'venue_gmap_metabox_content.template.php';
749
+		EEH_Template::display_template($template, $template_args);
750
+	}
751
+
752
+
753
+	public function venue_address_metabox()
754
+	{
755
+
756
+		$template_args['_venue'] = $this->_cpt_model_obj;
757
+
758
+		$template_args['states_dropdown'] = EEH_Form_Fields::generate_form_input(
759
+			$QFI = new EE_Question_Form_Input(
760
+				EE_Question::new_instance(
761
+					array('QST_display_text' => esc_html__('State', 'event_espresso'), 'QST_system' => 'state')
762
+				),
763
+				EE_Answer::new_instance(array('ANS_value' => $this->_cpt_model_obj->state_ID())),
764
+				array(
765
+					'input_name'     => 'sta_id',
766
+					'input_id'       => 'sta_id',
767
+					'input_class'    => '',
768
+					'input_prefix'   => '',
769
+					'append_qstn_id' => false,
770
+				)
771
+			)
772
+		);
773
+		$template_args['countries_dropdown'] = EEH_Form_Fields::generate_form_input(
774
+			$QFI = new EE_Question_Form_Input(
775
+				EE_Question::new_instance(
776
+					array('QST_display_text' => esc_html__('Country', 'event_espresso'), 'QST_system' => 'country')
777
+				),
778
+				EE_Answer::new_instance(array('ANS_value' => $this->_cpt_model_obj->country_ID())),
779
+				array(
780
+					'input_name'     => 'cnt_iso',
781
+					'input_id'       => 'cnt_iso',
782
+					'input_class'    => '',
783
+					'input_prefix'   => '',
784
+					'append_qstn_id' => false,
785
+				)
786
+			)
787
+		);
788
+
789
+		$template = EE_VENUES_TEMPLATE_PATH . 'venue_address_metabox_content.template.php';
790
+		EEH_Template::display_template($template, $template_args);
791
+	}
792
+
793
+
794
+	public function venue_virtual_loc_metabox()
795
+	{
796
+		$template_args = array(
797
+			'_venue' => $this->_cpt_model_obj,
798
+		);
799
+		$template = EE_VENUES_TEMPLATE_PATH . 'venue_virtual_location_metabox_content.template.php';
800
+		EEH_Template::display_template($template, $template_args);
801
+	}
802
+
803
+
804
+	protected function _restore_cpt_item($post_id, $revision_id)
805
+	{
806
+		$venue_obj = $this->_venue_model->get_one_by_ID($post_id);
807
+
808
+		// meta revision restore
809
+		$venue_obj->restore_revision($revision_id);
810
+	}
811
+
812
+
813
+	/**
814
+	 * Handles updates for venue cpts
815
+	 *
816
+	 * @param  int    $post_id ID of Venue CPT
817
+	 * @param  object $post    Post object (with "blessed" WP properties)
818
+	 * @return void
819
+	 */
820
+	protected function _insert_update_cpt_item($post_id, $post)
821
+	{
822
+
823
+		if ($post instanceof WP_Post && $post->post_type !== 'espresso_venues') {
824
+			return;// get out we're not processing the saving of venues.
825
+		}
826
+
827
+		$wheres = array($this->_venue_model->primary_key_name() => $post_id);
828
+
829
+		$venue_values = array(
830
+			'VNU_address'         => ! empty($this->_req_data['vnu_address']) ? $this->_req_data['vnu_address'] : null,
831
+			'VNU_address2'        => ! empty($this->_req_data['vnu_address2']) ? $this->_req_data['vnu_address2']
832
+				: null,
833
+			'VNU_city'            => ! empty($this->_req_data['vnu_city']) ? $this->_req_data['vnu_city'] : null,
834
+			'STA_ID'              => ! empty($this->_req_data['sta_id']) ? $this->_req_data['sta_id'] : null,
835
+			'CNT_ISO'             => ! empty($this->_req_data['cnt_iso']) ? $this->_req_data['cnt_iso'] : null,
836
+			'VNU_zip'             => ! empty($this->_req_data['vnu_zip']) ? $this->_req_data['vnu_zip'] : null,
837
+			'VNU_phone'           => ! empty($this->_req_data['vnu_phone']) ? $this->_req_data['vnu_phone'] : null,
838
+			'VNU_capacity'        => ! empty($this->_req_data['vnu_capacity']) ? str_replace(
839
+				',',
840
+				'',
841
+				$this->_req_data['vnu_capacity']
842
+			) : EE_INF,
843
+			'VNU_url'             => ! empty($this->_req_data['vnu_url']) ? $this->_req_data['vnu_url'] : null,
844
+			'VNU_virtual_phone'   => ! empty($this->_req_data['vnu_virtual_phone'])
845
+				? $this->_req_data['vnu_virtual_phone'] : null,
846
+			'VNU_virtual_url'     => ! empty($this->_req_data['vnu_virtual_url']) ? $this->_req_data['vnu_virtual_url']
847
+				: null,
848
+			'VNU_enable_for_gmap' => ! empty($this->_req_data['vnu_enable_for_gmap']) ? true : false,
849
+			'VNU_google_map_link' => ! empty($this->_req_data['vnu_google_map_link'])
850
+				? $this->_req_data['vnu_google_map_link'] : null,
851
+		);
852
+
853
+		// update venue
854
+		$success = $this->_venue_model->update($venue_values, array($wheres));
855
+
856
+		// get venue_object for other metaboxes that might be added via the filter... though it would seem to make sense to just use $this->_venue_model->get_one_by_ID( $post_id ).. i have to setup where conditions to override the filters in the model that filter out autodraft and inherit statuses so we GET the inherit id!
857
+		$get_one_where = array($this->_venue_model->primary_key_name() => $post_id, 'status' => $post->post_status);
858
+		$venue = $this->_venue_model->get_one(array($get_one_where));
859
+
860
+		// notice we've applied a filter for venue metabox callbacks but we don't actually have any default venue metaboxes in use.  So this is just here for addons to more easily hook into venue saves.
861
+		$venue_update_callbacks = apply_filters(
862
+			'FHEE__Venues_Admin_Page___insert_update_cpt_item__venue_update_callbacks',
863
+			array()
864
+		);
865
+
866
+		$att_success = true;
867
+
868
+		foreach ($venue_update_callbacks as $v_callback) {
869
+			$_succ = call_user_func_array($v_callback, array($venue, $this->_req_data));
870
+			$att_success = ! $att_success ? $att_success
871
+				: $_succ; // if ANY of these updates fail then we want the appropriate global error message
872
+		}
873
+
874
+		// any errors?
875
+		if ($success && ! $att_success) {
876
+			EE_Error::add_error(
877
+				__(
878
+					'Venue Details saved successfully but something went wrong with saving attachments.',
879
+					'event_espresso'
880
+				),
881
+				__FILE__,
882
+				__FUNCTION__,
883
+				__LINE__
884
+			);
885
+		} elseif ($success === false) {
886
+			EE_Error::add_error(
887
+				__('Venue Details did not save successfully.', 'event_espresso'),
888
+				__FILE__,
889
+				__FUNCTION__,
890
+				__LINE__
891
+			);
892
+		}
893
+	}
894
+
895
+
896
+	public function trash_cpt_item($post_id)
897
+	{
898
+		$this->_req_data['VNU_ID'] = $post_id;
899
+		$this->_trash_or_restore_venue('trash', false);
900
+	}
901
+
902
+
903
+	public function restore_cpt_item($post_id)
904
+	{
905
+		$this->_req_data['VNU_ID'] = $post_id;
906
+		$this->_trash_or_restore_venue('draft', false);
907
+	}
908
+
909
+
910
+	public function delete_cpt_item($post_id)
911
+	{
912
+		$this->_req_data['VNU_ID'] = $post_id;
913
+		$this->_delete_venue(false);
914
+	}
915
+
916
+
917
+	public function get_venue_object()
918
+	{
919
+		return $this->_cpt_model_obj;
920
+	}
921
+
922
+
923
+	protected function _trash_or_restore_venue($venue_status = 'trash', $redirect_after = true)
924
+	{
925
+		$VNU_ID = isset($this->_req_data['VNU_ID']) ? absint($this->_req_data['VNU_ID']) : false;
926
+
927
+		// loop thru venues
928
+		if ($VNU_ID) {
929
+			// clean status
930
+			$venue_status = sanitize_key($venue_status);
931
+			// grab status
932
+			if (! empty($venue_status)) {
933
+				$success = $this->_change_venue_status($VNU_ID, $venue_status);
934
+			} else {
935
+				$success = false;
936
+				$msg = __(
937
+					'An error occurred. The venue could not be moved to the trash because a valid venue status was not not supplied.',
938
+					'event_espresso'
939
+				);
940
+				EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
941
+			}
942
+		} else {
943
+			$success = false;
944
+			$msg = __(
945
+				'An error occurred. The venue could not be moved to the trash because a valid venue ID was not not supplied.',
946
+				'event_espresso'
947
+			);
948
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
949
+		}
950
+		$action = $venue_status == 'trash' ? 'moved to the trash' : 'restored from the trash';
951
+
952
+		if ($redirect_after) {
953
+			$this->_redirect_after_action($success, 'Venue', $action, array('action' => 'default'));
954
+		}
955
+	}
956
+
957
+
958
+	protected function _trash_or_restore_venues($venue_status = 'trash')
959
+	{
960
+		// clean status
961
+		$venue_status = sanitize_key($venue_status);
962
+		// grab status
963
+		if (! empty($venue_status)) {
964
+			$success = true;
965
+			// determine the event id and set to array.
966
+			$VNU_IDs = isset($this->_req_data['venue_id']) ? (array) $this->_req_data['venue_id'] : array();
967
+			// loop thru events
968
+			foreach ($VNU_IDs as $VNU_ID) {
969
+				if ($VNU_ID = absint($VNU_ID)) {
970
+					$results = $this->_change_venue_status($VNU_ID, $venue_status);
971
+					$success = $results !== false ? $success : false;
972
+				} else {
973
+					$msg = sprintf(
974
+						__(
975
+							'An error occurred. Venue #%d could not be moved to the trash because a valid venue ID was not not supplied.',
976
+							'event_espresso'
977
+						),
978
+						$VNU_ID
979
+					);
980
+					EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
981
+					$success = false;
982
+				}
983
+			}
984
+		} else {
985
+			$success = false;
986
+			$msg = __(
987
+				'An error occurred. The venue could not be moved to the trash because a valid venue status was not not supplied.',
988
+				'event_espresso'
989
+			);
990
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
991
+		}
992
+		// in order to force a pluralized result message we need to send back a success status greater than 1
993
+		$success = $success ? 2 : false;
994
+		$action = $venue_status == 'trash' ? 'moved to the trash' : 'restored from the trash';
995
+		$this->_redirect_after_action($success, 'Venues', $action, array('action' => 'default'));
996
+	}
997
+
998
+
999
+	/**
1000
+	 * _trash_or_restore_venues
1001
+	 *
1002
+	 * //todo this is pretty much the same as the corresponding change_event_status method in Events_Admin_Page.  We
1003
+	 * should probably abstract this up to the EE_Admin_Page_CPT (or even EE_Admin_Page) and make this a common method
1004
+	 * accepting a certain number of params.
1005
+	 *
1006
+	 * @access  private
1007
+	 * @param  int    $VNU_ID
1008
+	 * @param  string $venue_status
1009
+	 * @return void
1010
+	 */
1011
+	private function _change_venue_status($VNU_ID = 0, $venue_status = '')
1012
+	{
1013
+		// grab venue id
1014
+		if (! $VNU_ID) {
1015
+			$msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1016
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1017
+			return false;
1018
+		}
1019
+
1020
+		$this->_cpt_model_obj = EEM_Venue::instance()->get_one_by_ID($VNU_ID);
1021
+
1022
+		// clean status
1023
+		$venue_status = sanitize_key($venue_status);
1024
+		// grab status
1025
+		if (! $venue_status) {
1026
+			$msg = __('An error occurred. No Venue Status or an invalid Venue Status was received.', 'event_espresso');
1027
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1028
+			return false;
1029
+		}
1030
+
1031
+		// was event trashed or restored ?
1032
+		switch ($venue_status) {
1033
+			case 'draft':
1034
+				$action = 'restored from the trash';
1035
+				$hook = 'AHEE_venue_restored_from_trash';
1036
+				break;
1037
+			case 'trash':
1038
+				$action = 'moved to the trash';
1039
+				$hook = 'AHEE_venue_moved_to_trash';
1040
+				break;
1041
+			default:
1042
+				$action = 'updated';
1043
+				$hook = false;
1044
+		}
1045
+		// use class to change status
1046
+		$this->_cpt_model_obj->set_status($venue_status);
1047
+		$success = $this->_cpt_model_obj->save();
1048
+
1049
+		if ($success === false) {
1050
+			$msg = sprintf(__('An error occurred. The venue could not be %s.', 'event_espresso'), $action);
1051
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1052
+			return false;
1053
+		}
1054
+		if ($hook) {
1055
+			do_action($hook);
1056
+		}
1057
+		return true;
1058
+	}
1059
+
1060
+
1061
+	/**
1062
+	 * @param  bool $redirect_after
1063
+	 * @return void
1064
+	 */
1065
+	protected function _delete_venue($redirect_after = true)
1066
+	{
1067
+		// determine the venue id and set to array.
1068
+		$VNU_ID = isset($this->_req_data['VNU_ID']) ? absint($this->_req_data['VNU_ID']) : null;
1069
+		$VNU_ID = isset($this->_req_data['post']) ? absint($this->_req_data['post']) : $VNU_ID;
1070
+
1071
+
1072
+		// loop thru venues
1073
+		if ($VNU_ID) {
1074
+			$success = $this->_delete_or_trash_venue($VNU_ID);
1075
+		} else {
1076
+			$success = false;
1077
+			$msg = __(
1078
+				'An error occurred. An venue could not be deleted because a valid venue ID was not not supplied.',
1079
+				'event_espresso'
1080
+			);
1081
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1082
+		}
1083
+		if ($redirect_after) {
1084
+			$this->_redirect_after_action($success, 'Venue', 'deleted', array('action' => 'default'));
1085
+		}
1086
+	}
1087
+
1088
+
1089
+	protected function _delete_venues()
1090
+	{
1091
+		$success = true;
1092
+		// determine the event id and set to array.
1093
+		$VNU_IDs = isset($this->_req_data['venue_id']) ? (array) $this->_req_data['venue_id'] : array();
1094
+		// loop thru events
1095
+		foreach ($VNU_IDs as $VNU_ID) {
1096
+			if ($VNU_ID = absint($VNU_ID)) {
1097
+				$results = $this->_delete_or_trash_venue($VNU_ID);
1098
+				$success = $results !== false ? $success : false;
1099
+			} else {
1100
+				$success = false;
1101
+				$msg = __(
1102
+					'An error occurred. An venue could not be deleted because a valid venue ID was not not supplied.',
1103
+					'event_espresso'
1104
+				);
1105
+				EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1106
+			}
1107
+		}
1108
+		// in order to force a pluralized result message we need to send back a success status greater than 1
1109
+		$success = $success ? 2 : false;
1110
+		$this->_redirect_after_action(
1111
+			$success,
1112
+			__('Venues', 'event_espresso'),
1113
+			__('deleted', 'event_espresso'),
1114
+			array('action' => 'default')
1115
+		);
1116
+	}
1117
+
1118
+
1119
+	// todo: put in parent
1120
+	private function _delete_or_trash_venue($VNU_ID = false)
1121
+	{
1122
+		// grab event id
1123
+		if (! $VNU_ID = absint($VNU_ID)) {
1124
+			$msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1125
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1126
+			return false;
1127
+		}
1128
+
1129
+
1130
+		$venue = EEM_Venue::instance()->get_one_by_ID($VNU_ID);
1131
+		// first need to remove all term relationships
1132
+		$venue->_remove_relations('Term_Taxonomy');
1133
+		$success = $venue->delete_permanently();
1134
+		// did it all go as planned ?
1135
+		if ($success) {
1136
+			$msg = sprintf(__('Venue ID # %d has been deleted.', 'event_espresso'), $VNU_ID);
1137
+			EE_Error::add_success($msg);
1138
+		} else {
1139
+			$msg = sprintf(__('An error occurred. Venue ID # %d could not be deleted.', 'event_espresso'), $VNU_ID);
1140
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1141
+			return false;
1142
+		}
1143
+		do_action('AHEE__Venues_Admin_Page___delete_or_trash_venue__after_venue_deleted');
1144
+		return true;
1145
+	}
1146
+
1147
+
1148
+
1149
+
1150
+	/***********/
1151
+	/* QUERIES */
1152
+
1153
+
1154
+	public function get_venues($per_page = 10, $count = false)
1155
+	{
1156
+
1157
+		$_orderby = ! empty($this->_req_data['orderby']) ? $this->_req_data['orderby'] : '';
1158
+
1159
+		switch ($_orderby) {
1160
+			case 'id':
1161
+				$orderby = 'VNU_ID';
1162
+				break;
1163
+
1164
+			case 'capacity':
1165
+				$orderby = 'VNU_capacity';
1166
+				break;
1167
+
1168
+			case 'city':
1169
+				$orderby = 'VNU_city';
1170
+				break;
1171
+
1172
+			default:
1173
+				$orderby = 'VNU_name';
1174
+		}
1175
+
1176
+
1177
+		$sort = (isset($this->_req_data['order']) && ! empty($this->_req_data['order'])) ? $this->_req_data['order']
1178
+			: 'ASC';
1179
+
1180
+		$current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
1181
+			? $this->_req_data['paged'] : 1;
1182
+		$per_page = isset($per_page) && ! empty($per_page) ? $per_page : 10;
1183
+		$per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
1184
+			? $this->_req_data['perpage'] : $per_page;
1185
+
1186
+
1187
+		$offset = ($current_page - 1) * $per_page;
1188
+		$limit = array($offset, $per_page);
1189
+
1190
+		$category = isset($this->_req_data['category']) && $this->_req_data['category'] > 0
1191
+			? $this->_req_data['category'] : null;
1192
+		$where = array();
1193
+
1194
+		// only set initial status if it is in the incoming request.  Otherwise the "all" view display's all statuses.
1195
+		if (isset($this->_req_data['status']) && $this->_req_data['status'] != 'all') {
1196
+			$where['status'] = $this->_req_data['status'];
1197
+		}
1198
+
1199
+		if (isset($this->_req_data['venue_status'])) {
1200
+			$where['status'] = $this->_req_data['venue_status'];
1201
+		}
1202
+
1203
+
1204
+		if ($category) {
1205
+			$where['Term_Taxonomy.taxonomy'] = 'espresso_venue_categories';
1206
+			$where['Term_Taxonomy.term_id'] = $category;
1207
+		}
1208
+
1209
+
1210
+		if (! EE_Registry::instance()->CAP->current_user_can('ee_read_others_venues', 'get_venues')) {
1211
+			$where['VNU_wp_user'] = get_current_user_id();
1212
+		} else {
1213
+			if (! EE_Registry::instance()->CAP->current_user_can('ee_read_private_venues', 'get_venues')) {
1214
+				$where['OR'] = array(
1215
+					'status*restrict_private' => array('!=', 'private'),
1216
+					'AND'                     => array(
1217
+						'status*inclusive' => array('=', 'private'),
1218
+						'VNU_wp_user'      => get_current_user_id(),
1219
+					),
1220
+				);
1221
+			}
1222
+		}
1223
+
1224
+
1225
+		if (isset($this->_req_data['s'])) {
1226
+			$sstr = '%' . $this->_req_data['s'] . '%';
1227
+			$where['OR'] = array(
1228
+				'VNU_name'               => array('LIKE', $sstr),
1229
+				'VNU_desc'               => array('LIKE', $sstr),
1230
+				'VNU_short_desc'         => array('LIKE', $sstr),
1231
+				'VNU_address'            => array('LIKE', $sstr),
1232
+				'VNU_address2'           => array('LIKE', $sstr),
1233
+				'VNU_city'               => array('LIKE', $sstr),
1234
+				'VNU_zip'                => array('LIKE', $sstr),
1235
+				'VNU_phone'              => array('LIKE', $sstr),
1236
+				'VNU_url'                => array('LIKE', $sstr),
1237
+				'VNU_virtual_phone'      => array('LIKE', $sstr),
1238
+				'VNU_virtual_url'        => array('LIKE', $sstr),
1239
+				'VNU_google_map_link'    => array('LIKE', $sstr),
1240
+				'Event.EVT_name'         => array('LIKE', $sstr),
1241
+				'Event.EVT_desc'         => array('LIKE', $sstr),
1242
+				'Event.EVT_phone'        => array('LIKE', $sstr),
1243
+				'Event.EVT_external_URL' => array('LIKE', $sstr),
1244
+			);
1245
+		}
1246 1246
 
1247 1247
 
1248
-        $venues = $count
1249
-            ? $this->_venue_model->count(array($where), 'VNU_ID')
1250
-            : $this->_venue_model->get_all(
1251
-                array($where, 'limit' => $limit, 'order_by' => $orderby, 'order' => $sort)
1252
-            );
1253
-
1254
-        return $venues;
1255
-    }
1256
-
1257
-
1258
-
1259
-
1260
-    /** Venue Category Stuff **/
1261
-
1262
-    /**
1263
-     * set the _category property with the category object for the loaded page.
1264
-     *
1265
-     * @access private
1266
-     * @return void
1267
-     */
1268
-    private function _set_category_object()
1269
-    {
1270
-        if (isset($this->_category->id) && ! empty($this->_category->id)) {
1271
-            return;
1272
-        } // already have the category object so get out.
1273
-
1274
-        // set default category object
1275
-        $this->_set_empty_category_object();
1276
-
1277
-        // only set if we've got an id
1278
-        if (! isset($this->_req_data['VEN_CAT_ID'])) {
1279
-            return;
1280
-        }
1281
-
1282
-        $category_id = absint($this->_req_data['VEN_CAT_ID']);
1283
-        $term = get_term($category_id, 'espresso_venue_categories');
1284
-
1285
-
1286
-        if (! empty($term)) {
1287
-            $this->_category->category_name = $term->name;
1288
-            $this->_category->category_identifier = $term->slug;
1289
-            $this->_category->category_desc = $term->description;
1290
-            $this->_category->id = $term->term_id;
1291
-            $this->_category->parent = $term->parent;
1292
-        }
1293
-    }
1294
-
1295
-
1296
-    private function _set_empty_category_object()
1297
-    {
1298
-        $this->_category = new stdClass();
1299
-        $this->_category->category_name = $this->_category->category_identifier = $this->_category->category_desc = '';
1300
-        $this->_category->id = $this->_category->parent = 0;
1301
-    }
1302
-
1303
-
1304
-    protected function _category_list_table()
1305
-    {
1306
-        do_action('AHEE_log', __FILE__, __FUNCTION__, '');
1307
-        $this->_admin_page_title .= ' ' . $this->get_action_link_or_button(
1308
-            'add_category',
1309
-            'add_category',
1310
-            array(),
1311
-            'add-new-h2'
1312
-        );
1313
-        $this->_search_btn_label = __('Venue Categories', 'event_espresso');
1314
-        $this->display_admin_list_table_page_with_sidebar();
1315
-    }
1316
-
1317
-
1318
-    protected function _category_details($view)
1319
-    {
1320
-
1321
-        // load formatter helper
1322
-        // load field generator helper
1323
-
1324
-        $route = $view == 'edit' ? 'update_category' : 'insert_category';
1325
-        $this->_set_add_edit_form_tags($route);
1326
-
1327
-        $this->_set_category_object();
1328
-        $id = ! empty($this->_category->id) ? $this->_category->id : '';
1329
-
1330
-        $delete_action = 'delete_category';
1331
-
1332
-        $redirect = EE_Admin_Page::add_query_args_and_nonce(array('action' => 'category_list'), $this->_admin_base_url);
1333
-
1334
-        $this->_set_publish_post_box_vars('VEN_CAT_ID', $id, $delete_action, $redirect);
1335
-
1336
-        // take care of contents
1337
-        $this->_template_args['admin_page_content'] = $this->_category_details_content();
1338
-        $this->display_admin_page_with_sidebar();
1339
-    }
1340
-
1341
-
1342
-    protected function _category_details_content()
1343
-    {
1344
-        $editor_args['category_desc'] = array(
1345
-            'type'          => 'wp_editor',
1346
-            'value'         => EEH_Formatter::admin_format_content($this->_category->category_desc),
1347
-            'class'         => 'my_editor_custom',
1348
-            'wpeditor_args' => array('media_buttons' => false),
1349
-        );
1350
-        $_wp_editor = $this->_generate_admin_form_fields($editor_args, 'array');
1351
-
1352
-        $all_terms = get_terms(
1353
-            array('espresso_venue_categories'),
1354
-            array('hide_empty' => 0, 'exclude' => array($this->_category->id))
1355
-        );
1356
-
1357
-        // setup category select for term parents.
1358
-        $category_select_values[] = array(
1359
-            'text' => __('No Parent', 'event_espresso'),
1360
-            'id'   => 0,
1361
-        );
1362
-        foreach ($all_terms as $term) {
1363
-            $category_select_values[] = array(
1364
-                'text' => $term->name,
1365
-                'id'   => $term->term_id,
1366
-            );
1367
-        }
1368
-
1369
-        $category_select = EEH_Form_Fields::select_input(
1370
-            'category_parent',
1371
-            $category_select_values,
1372
-            $this->_category->parent
1373
-        );
1374
-        $template_args = array(
1375
-            'category'                 => $this->_category,
1376
-            'category_select'          => $category_select,
1377
-            'unique_id_info_help_link' => $this->_get_help_tab_link('unique_id_info'),
1378
-            'category_desc_editor'     => $_wp_editor['category_desc']['field'],
1379
-            'disable'                  => '',
1380
-            'disabled_message'         => false,
1381
-        );
1382
-        $template = EVENTS_TEMPLATE_PATH . 'event_category_details.template.php';
1383
-        return EEH_Template::display_template($template, $template_args, true);
1384
-    }
1385
-
1386
-
1387
-    protected function _delete_categories()
1388
-    {
1389
-        $cat_ids = isset($this->_req_data['VEN_CAT_ID']) ? (array) $this->_req_data['VEN_CAT_ID']
1390
-            : (array) $this->_req_data['category_id'];
1391
-
1392
-        foreach ($cat_ids as $cat_id) {
1393
-            $this->_delete_category($cat_id);
1394
-        }
1395
-
1396
-        // doesn't matter what page we're coming from... we're going to the same place after delete.
1397
-        $query_args = array(
1398
-            'action' => 'category_list',
1399
-        );
1400
-        $this->_redirect_after_action(0, '', '', $query_args);
1401
-    }
1402
-
1403
-
1404
-    protected function _delete_category($cat_id)
1405
-    {
1406
-        $cat_id = absint($cat_id);
1407
-        wp_delete_term($cat_id, 'espresso_venue_categories');
1408
-    }
1409
-
1410
-
1411
-    protected function _insert_or_update_category($new_category)
1412
-    {
1413
-
1414
-        $cat_id = $new_category ? $this->_insert_category() : $this->_insert_category(true);
1415
-        $success = 0; // we already have a success message so lets not send another.
1416
-        if ($cat_id) {
1417
-            $query_args = array(
1418
-                'action'     => 'edit_category',
1419
-                'VEN_CAT_ID' => $cat_id,
1420
-            );
1421
-        } else {
1422
-            $query_args = array('action' => 'add_category');
1423
-        }
1424
-        $this->_redirect_after_action($success, '', '', $query_args, true);
1425
-    }
1426
-
1427
-
1428
-    private function _insert_category($update = false)
1429
-    {
1430
-        $cat_id = $update ? $this->_req_data['VEN_CAT_ID'] : '';
1431
-        $category_name = isset($this->_req_data['category_name']) ? $this->_req_data['category_name'] : '';
1432
-        $category_desc = isset($this->_req_data['category_desc']) ? $this->_req_data['category_desc'] : '';
1433
-        $category_parent = isset($this->_req_data['category_parent']) ? $this->_req_data['category_parent'] : 0;
1434
-
1435
-        if (empty($category_name)) {
1436
-            $msg = __('You must add a name for the category.', 'event_espresso');
1437
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1438
-            return false;
1439
-        }
1440
-
1441
-
1442
-        $term_args = array(
1443
-            'name'        => $category_name,
1444
-            'description' => $category_desc,
1445
-            'parent'      => $category_parent,
1446
-        );
1447
-
1448
-        $insert_ids = $update
1449
-            ? wp_update_term($cat_id, 'espresso_venue_categories', $term_args)
1450
-            : wp_insert_term(
1451
-                $category_name,
1452
-                'espresso_venue_categories',
1453
-                $term_args
1454
-            );
1455
-
1456
-        if (! is_array($insert_ids)) {
1457
-            $msg = __('An error occurred and the category has not been saved to the database.', 'event_espresso');
1458
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1459
-        } else {
1460
-            $cat_id = $insert_ids['term_id'];
1461
-            $msg = sprintf(__('The category %s was successfully created', 'event_espresso'), $category_name);
1462
-            EE_Error::add_success($msg);
1463
-        }
1464
-
1465
-        return $cat_id;
1466
-    }
1467
-
1468
-
1469
-    /**
1470
-     * TODO handle category exports()
1471
-     *
1472
-     * @return file export
1473
-     */
1474
-    protected function _categories_export()
1475
-    {
1476
-
1477
-        // todo: I don't like doing this but it'll do until we modify EE_Export Class.
1478
-        $new_request_args = array(
1479
-            'export'       => 'report',
1480
-            'action'       => 'categories',
1481
-            'category_ids' => $this->_req_data['VEN_CAT_ID'],
1482
-        );
1483
-
1484
-        $this->_req_data = array_merge($this->_req_data, $new_request_args);
1485
-
1486
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
1487
-            require_once(EE_CLASSES . 'EE_Export.class.php');
1488
-            $EE_Export = EE_Export::instance($this->_req_data);
1489
-            $EE_Export->export();
1490
-        }
1491
-    }
1492
-
1493
-
1494
-    protected function _import_categories()
1495
-    {
1496
-
1497
-        require_once(EE_CLASSES . 'EE_Import.class.php');
1498
-        EE_Import::instance()->import();
1499
-    }
1500
-
1501
-
1502
-    public function get_categories($per_page = 10, $current_page = 1, $count = false)
1503
-    {
1504
-
1505
-        // testing term stuff
1506
-        $orderby = isset($this->_req_data['orderby']) ? $this->_req_data['orderby'] : 'Term.term_id';
1507
-        $order = isset($this->_req_data['order']) ? $this->_req_data['order'] : 'DESC';
1508
-        $limit = ($current_page - 1) * $per_page;
1509
-        $where = array('taxonomy' => 'espresso_venue_categories');
1510
-        if (isset($this->_req_data['s'])) {
1511
-            $sstr = '%' . $this->_req_data['s'] . '%';
1512
-            $where['OR'] = array(
1513
-                'Term.name'   => array('LIKE', $sstr),
1514
-                'description' => array('LIKE', $sstr),
1515
-            );
1516
-        }
1517
-
1518
-        $query_params = array(
1519
-            $where,
1520
-            'order_by'   => array($orderby => $order),
1521
-            'limit'      => $limit . ',' . $per_page,
1522
-            'force_join' => array('Term'),
1523
-        );
1524
-
1525
-        $categories = $count ? EEM_Term_Taxonomy::instance()->count($query_params, 'term_id')
1526
-            : EEM_Term_Taxonomy::instance()->get_all($query_params);
1527
-
1528
-        return $categories;
1529
-    }
1530
-
1531
-
1532
-    /* end category stuff */
1533
-    /**************/
1248
+		$venues = $count
1249
+			? $this->_venue_model->count(array($where), 'VNU_ID')
1250
+			: $this->_venue_model->get_all(
1251
+				array($where, 'limit' => $limit, 'order_by' => $orderby, 'order' => $sort)
1252
+			);
1253
+
1254
+		return $venues;
1255
+	}
1256
+
1257
+
1258
+
1259
+
1260
+	/** Venue Category Stuff **/
1261
+
1262
+	/**
1263
+	 * set the _category property with the category object for the loaded page.
1264
+	 *
1265
+	 * @access private
1266
+	 * @return void
1267
+	 */
1268
+	private function _set_category_object()
1269
+	{
1270
+		if (isset($this->_category->id) && ! empty($this->_category->id)) {
1271
+			return;
1272
+		} // already have the category object so get out.
1273
+
1274
+		// set default category object
1275
+		$this->_set_empty_category_object();
1276
+
1277
+		// only set if we've got an id
1278
+		if (! isset($this->_req_data['VEN_CAT_ID'])) {
1279
+			return;
1280
+		}
1281
+
1282
+		$category_id = absint($this->_req_data['VEN_CAT_ID']);
1283
+		$term = get_term($category_id, 'espresso_venue_categories');
1284
+
1285
+
1286
+		if (! empty($term)) {
1287
+			$this->_category->category_name = $term->name;
1288
+			$this->_category->category_identifier = $term->slug;
1289
+			$this->_category->category_desc = $term->description;
1290
+			$this->_category->id = $term->term_id;
1291
+			$this->_category->parent = $term->parent;
1292
+		}
1293
+	}
1294
+
1295
+
1296
+	private function _set_empty_category_object()
1297
+	{
1298
+		$this->_category = new stdClass();
1299
+		$this->_category->category_name = $this->_category->category_identifier = $this->_category->category_desc = '';
1300
+		$this->_category->id = $this->_category->parent = 0;
1301
+	}
1302
+
1303
+
1304
+	protected function _category_list_table()
1305
+	{
1306
+		do_action('AHEE_log', __FILE__, __FUNCTION__, '');
1307
+		$this->_admin_page_title .= ' ' . $this->get_action_link_or_button(
1308
+			'add_category',
1309
+			'add_category',
1310
+			array(),
1311
+			'add-new-h2'
1312
+		);
1313
+		$this->_search_btn_label = __('Venue Categories', 'event_espresso');
1314
+		$this->display_admin_list_table_page_with_sidebar();
1315
+	}
1316
+
1317
+
1318
+	protected function _category_details($view)
1319
+	{
1320
+
1321
+		// load formatter helper
1322
+		// load field generator helper
1323
+
1324
+		$route = $view == 'edit' ? 'update_category' : 'insert_category';
1325
+		$this->_set_add_edit_form_tags($route);
1326
+
1327
+		$this->_set_category_object();
1328
+		$id = ! empty($this->_category->id) ? $this->_category->id : '';
1329
+
1330
+		$delete_action = 'delete_category';
1331
+
1332
+		$redirect = EE_Admin_Page::add_query_args_and_nonce(array('action' => 'category_list'), $this->_admin_base_url);
1333
+
1334
+		$this->_set_publish_post_box_vars('VEN_CAT_ID', $id, $delete_action, $redirect);
1335
+
1336
+		// take care of contents
1337
+		$this->_template_args['admin_page_content'] = $this->_category_details_content();
1338
+		$this->display_admin_page_with_sidebar();
1339
+	}
1340
+
1341
+
1342
+	protected function _category_details_content()
1343
+	{
1344
+		$editor_args['category_desc'] = array(
1345
+			'type'          => 'wp_editor',
1346
+			'value'         => EEH_Formatter::admin_format_content($this->_category->category_desc),
1347
+			'class'         => 'my_editor_custom',
1348
+			'wpeditor_args' => array('media_buttons' => false),
1349
+		);
1350
+		$_wp_editor = $this->_generate_admin_form_fields($editor_args, 'array');
1351
+
1352
+		$all_terms = get_terms(
1353
+			array('espresso_venue_categories'),
1354
+			array('hide_empty' => 0, 'exclude' => array($this->_category->id))
1355
+		);
1356
+
1357
+		// setup category select for term parents.
1358
+		$category_select_values[] = array(
1359
+			'text' => __('No Parent', 'event_espresso'),
1360
+			'id'   => 0,
1361
+		);
1362
+		foreach ($all_terms as $term) {
1363
+			$category_select_values[] = array(
1364
+				'text' => $term->name,
1365
+				'id'   => $term->term_id,
1366
+			);
1367
+		}
1368
+
1369
+		$category_select = EEH_Form_Fields::select_input(
1370
+			'category_parent',
1371
+			$category_select_values,
1372
+			$this->_category->parent
1373
+		);
1374
+		$template_args = array(
1375
+			'category'                 => $this->_category,
1376
+			'category_select'          => $category_select,
1377
+			'unique_id_info_help_link' => $this->_get_help_tab_link('unique_id_info'),
1378
+			'category_desc_editor'     => $_wp_editor['category_desc']['field'],
1379
+			'disable'                  => '',
1380
+			'disabled_message'         => false,
1381
+		);
1382
+		$template = EVENTS_TEMPLATE_PATH . 'event_category_details.template.php';
1383
+		return EEH_Template::display_template($template, $template_args, true);
1384
+	}
1385
+
1386
+
1387
+	protected function _delete_categories()
1388
+	{
1389
+		$cat_ids = isset($this->_req_data['VEN_CAT_ID']) ? (array) $this->_req_data['VEN_CAT_ID']
1390
+			: (array) $this->_req_data['category_id'];
1391
+
1392
+		foreach ($cat_ids as $cat_id) {
1393
+			$this->_delete_category($cat_id);
1394
+		}
1395
+
1396
+		// doesn't matter what page we're coming from... we're going to the same place after delete.
1397
+		$query_args = array(
1398
+			'action' => 'category_list',
1399
+		);
1400
+		$this->_redirect_after_action(0, '', '', $query_args);
1401
+	}
1402
+
1403
+
1404
+	protected function _delete_category($cat_id)
1405
+	{
1406
+		$cat_id = absint($cat_id);
1407
+		wp_delete_term($cat_id, 'espresso_venue_categories');
1408
+	}
1409
+
1410
+
1411
+	protected function _insert_or_update_category($new_category)
1412
+	{
1413
+
1414
+		$cat_id = $new_category ? $this->_insert_category() : $this->_insert_category(true);
1415
+		$success = 0; // we already have a success message so lets not send another.
1416
+		if ($cat_id) {
1417
+			$query_args = array(
1418
+				'action'     => 'edit_category',
1419
+				'VEN_CAT_ID' => $cat_id,
1420
+			);
1421
+		} else {
1422
+			$query_args = array('action' => 'add_category');
1423
+		}
1424
+		$this->_redirect_after_action($success, '', '', $query_args, true);
1425
+	}
1426
+
1427
+
1428
+	private function _insert_category($update = false)
1429
+	{
1430
+		$cat_id = $update ? $this->_req_data['VEN_CAT_ID'] : '';
1431
+		$category_name = isset($this->_req_data['category_name']) ? $this->_req_data['category_name'] : '';
1432
+		$category_desc = isset($this->_req_data['category_desc']) ? $this->_req_data['category_desc'] : '';
1433
+		$category_parent = isset($this->_req_data['category_parent']) ? $this->_req_data['category_parent'] : 0;
1434
+
1435
+		if (empty($category_name)) {
1436
+			$msg = __('You must add a name for the category.', 'event_espresso');
1437
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1438
+			return false;
1439
+		}
1440
+
1441
+
1442
+		$term_args = array(
1443
+			'name'        => $category_name,
1444
+			'description' => $category_desc,
1445
+			'parent'      => $category_parent,
1446
+		);
1447
+
1448
+		$insert_ids = $update
1449
+			? wp_update_term($cat_id, 'espresso_venue_categories', $term_args)
1450
+			: wp_insert_term(
1451
+				$category_name,
1452
+				'espresso_venue_categories',
1453
+				$term_args
1454
+			);
1455
+
1456
+		if (! is_array($insert_ids)) {
1457
+			$msg = __('An error occurred and the category has not been saved to the database.', 'event_espresso');
1458
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1459
+		} else {
1460
+			$cat_id = $insert_ids['term_id'];
1461
+			$msg = sprintf(__('The category %s was successfully created', 'event_espresso'), $category_name);
1462
+			EE_Error::add_success($msg);
1463
+		}
1464
+
1465
+		return $cat_id;
1466
+	}
1467
+
1468
+
1469
+	/**
1470
+	 * TODO handle category exports()
1471
+	 *
1472
+	 * @return file export
1473
+	 */
1474
+	protected function _categories_export()
1475
+	{
1476
+
1477
+		// todo: I don't like doing this but it'll do until we modify EE_Export Class.
1478
+		$new_request_args = array(
1479
+			'export'       => 'report',
1480
+			'action'       => 'categories',
1481
+			'category_ids' => $this->_req_data['VEN_CAT_ID'],
1482
+		);
1483
+
1484
+		$this->_req_data = array_merge($this->_req_data, $new_request_args);
1485
+
1486
+		if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
1487
+			require_once(EE_CLASSES . 'EE_Export.class.php');
1488
+			$EE_Export = EE_Export::instance($this->_req_data);
1489
+			$EE_Export->export();
1490
+		}
1491
+	}
1492
+
1493
+
1494
+	protected function _import_categories()
1495
+	{
1496
+
1497
+		require_once(EE_CLASSES . 'EE_Import.class.php');
1498
+		EE_Import::instance()->import();
1499
+	}
1500
+
1501
+
1502
+	public function get_categories($per_page = 10, $current_page = 1, $count = false)
1503
+	{
1504
+
1505
+		// testing term stuff
1506
+		$orderby = isset($this->_req_data['orderby']) ? $this->_req_data['orderby'] : 'Term.term_id';
1507
+		$order = isset($this->_req_data['order']) ? $this->_req_data['order'] : 'DESC';
1508
+		$limit = ($current_page - 1) * $per_page;
1509
+		$where = array('taxonomy' => 'espresso_venue_categories');
1510
+		if (isset($this->_req_data['s'])) {
1511
+			$sstr = '%' . $this->_req_data['s'] . '%';
1512
+			$where['OR'] = array(
1513
+				'Term.name'   => array('LIKE', $sstr),
1514
+				'description' => array('LIKE', $sstr),
1515
+			);
1516
+		}
1517
+
1518
+		$query_params = array(
1519
+			$where,
1520
+			'order_by'   => array($orderby => $order),
1521
+			'limit'      => $limit . ',' . $per_page,
1522
+			'force_join' => array('Term'),
1523
+		);
1524
+
1525
+		$categories = $count ? EEM_Term_Taxonomy::instance()->count($query_params, 'term_id')
1526
+			: EEM_Term_Taxonomy::instance()->get_all($query_params);
1527
+
1528
+		return $categories;
1529
+	}
1530
+
1531
+
1532
+	/* end category stuff */
1533
+	/**************/
1534 1534
 }
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -45,10 +45,10 @@  discard block
 block discarded – undo
45 45
 
46 46
     protected function _init_page_props()
47 47
     {
48
-        require_once(EE_MODELS . 'EEM_Venue.model.php');
48
+        require_once(EE_MODELS.'EEM_Venue.model.php');
49 49
         $this->page_slug = EE_VENUES_PG_SLUG;
50 50
         $this->_admin_base_url = EE_VENUES_ADMIN_URL;
51
-        $this->_admin_base_path = EE_ADMIN_PAGES . 'venues';
51
+        $this->_admin_base_path = EE_ADMIN_PAGES.'venues';
52 52
         $this->page_label = __('Event Venues', 'event_espresso');
53 53
         $this->_cpt_model_names = array(
54 54
             'create_new' => 'EEM_Venue',
@@ -458,7 +458,7 @@  discard block
 block discarded – undo
458 458
 
459 459
     public function load_scripts_styles()
460 460
     {
461
-        wp_register_style('ee-cat-admin', EVENTS_ASSETS_URL . 'ee-cat-admin.css', array(), EVENT_ESPRESSO_VERSION);
461
+        wp_register_style('ee-cat-admin', EVENTS_ASSETS_URL.'ee-cat-admin.css', array(), EVENT_ESPRESSO_VERSION);
462 462
         wp_enqueue_style('ee-cat-admin');
463 463
     }
464 464
 
@@ -480,7 +480,7 @@  discard block
 block discarded – undo
480 480
         wp_enqueue_style('espresso-ui-theme');
481 481
         wp_register_style(
482 482
             'espresso_venues',
483
-            EE_VENUES_ASSETS_URL . 'ee-venues-admin.css',
483
+            EE_VENUES_ASSETS_URL.'ee-venues-admin.css',
484 484
             array(),
485 485
             EVENT_ESPRESSO_VERSION
486 486
         );
@@ -539,7 +539,7 @@  discard block
 block discarded – undo
539 539
             __("View Venue Archive Page", "event_espresso"),
540 540
             'button'
541 541
         );
542
-        $this->_admin_page_title .= ' ' . $this->get_action_link_or_button('create_new', 'add', array(), 'add-new-h2');
542
+        $this->_admin_page_title .= ' '.$this->get_action_link_or_button('create_new', 'add', array(), 'add-new-h2');
543 543
         $this->_search_btn_label = __('Venues', 'event_espresso');
544 544
         $this->display_admin_list_table_page_with_sidebar();
545 545
     }
@@ -552,7 +552,7 @@  discard block
 block discarded – undo
552 552
             'vnu_url'      => $this->_cpt_model_obj->get_f('VNU_url'),
553 553
             'vnu_phone'    => $this->_cpt_model_obj->get_f('VNU_phone'),
554 554
         );
555
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_publish_box_extras.template.php';
555
+        $template = EE_VENUES_TEMPLATE_PATH.'venue_publish_box_extras.template.php';
556 556
         EEH_Template::display_template($template, $extra_rows);
557 557
     }
558 558
 
@@ -569,21 +569,21 @@  discard block
 block discarded – undo
569 569
         $default_map_settings->use_google_maps = true;
570 570
         $default_map_settings->google_map_api_key = '';
571 571
         // for event details pages (reg page)
572
-        $default_map_settings->event_details_map_width = 585;            // ee_map_width_single
573
-        $default_map_settings->event_details_map_height = 362;            // ee_map_height_single
574
-        $default_map_settings->event_details_map_zoom = 14;            // ee_map_zoom_single
575
-        $default_map_settings->event_details_display_nav = true;            // ee_map_nav_display_single
576
-        $default_map_settings->event_details_nav_size = false;            // ee_map_nav_size_single
577
-        $default_map_settings->event_details_control_type = 'default';        // ee_map_type_control_single
578
-        $default_map_settings->event_details_map_align = 'center';            // ee_map_align_single
572
+        $default_map_settings->event_details_map_width = 585; // ee_map_width_single
573
+        $default_map_settings->event_details_map_height = 362; // ee_map_height_single
574
+        $default_map_settings->event_details_map_zoom = 14; // ee_map_zoom_single
575
+        $default_map_settings->event_details_display_nav = true; // ee_map_nav_display_single
576
+        $default_map_settings->event_details_nav_size = false; // ee_map_nav_size_single
577
+        $default_map_settings->event_details_control_type = 'default'; // ee_map_type_control_single
578
+        $default_map_settings->event_details_map_align = 'center'; // ee_map_align_single
579 579
         // for event list pages
580
-        $default_map_settings->event_list_map_width = 300;            // ee_map_width
581
-        $default_map_settings->event_list_map_height = 185;        // ee_map_height
582
-        $default_map_settings->event_list_map_zoom = 12;            // ee_map_zoom
583
-        $default_map_settings->event_list_display_nav = false;        // ee_map_nav_display
584
-        $default_map_settings->event_list_nav_size = true;            // ee_map_nav_size
585
-        $default_map_settings->event_list_control_type = 'dropdown';        // ee_map_type_control
586
-        $default_map_settings->event_list_map_align = 'center';            // ee_map_align
580
+        $default_map_settings->event_list_map_width = 300; // ee_map_width
581
+        $default_map_settings->event_list_map_height = 185; // ee_map_height
582
+        $default_map_settings->event_list_map_zoom = 12; // ee_map_zoom
583
+        $default_map_settings->event_list_display_nav = false; // ee_map_nav_display
584
+        $default_map_settings->event_list_nav_size = true; // ee_map_nav_size
585
+        $default_map_settings->event_list_control_type = 'dropdown'; // ee_map_type_control
586
+        $default_map_settings->event_list_map_align = 'center'; // ee_map_align
587 587
 
588 588
         $this->_template_args['map_settings'] =
589 589
             isset(EE_Registry::instance()->CFG->map_settings)
@@ -597,7 +597,7 @@  discard block
 block discarded – undo
597 597
         $this->_set_add_edit_form_tags('update_google_map_settings');
598 598
         $this->_set_publish_post_box_vars(null, false, false, null, false);
599 599
         $this->_template_args['admin_page_content'] = EEH_Template::display_template(
600
-            EE_VENUES_TEMPLATE_PATH . 'google_map.template.php',
600
+            EE_VENUES_TEMPLATE_PATH.'google_map.template.php',
601 601
             $this->_template_args,
602 602
             true
603 603
         );
@@ -745,7 +745,7 @@  discard block
 block discarded – undo
745 745
             ),
746 746
             'vnu_google_map_link' => $this->_cpt_model_obj->google_map_link(),
747 747
         );
748
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_gmap_metabox_content.template.php';
748
+        $template = EE_VENUES_TEMPLATE_PATH.'venue_gmap_metabox_content.template.php';
749 749
         EEH_Template::display_template($template, $template_args);
750 750
     }
751 751
 
@@ -786,7 +786,7 @@  discard block
 block discarded – undo
786 786
             )
787 787
         );
788 788
 
789
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_address_metabox_content.template.php';
789
+        $template = EE_VENUES_TEMPLATE_PATH.'venue_address_metabox_content.template.php';
790 790
         EEH_Template::display_template($template, $template_args);
791 791
     }
792 792
 
@@ -796,7 +796,7 @@  discard block
 block discarded – undo
796 796
         $template_args = array(
797 797
             '_venue' => $this->_cpt_model_obj,
798 798
         );
799
-        $template = EE_VENUES_TEMPLATE_PATH . 'venue_virtual_location_metabox_content.template.php';
799
+        $template = EE_VENUES_TEMPLATE_PATH.'venue_virtual_location_metabox_content.template.php';
800 800
         EEH_Template::display_template($template, $template_args);
801 801
     }
802 802
 
@@ -821,7 +821,7 @@  discard block
 block discarded – undo
821 821
     {
822 822
 
823 823
         if ($post instanceof WP_Post && $post->post_type !== 'espresso_venues') {
824
-            return;// get out we're not processing the saving of venues.
824
+            return; // get out we're not processing the saving of venues.
825 825
         }
826 826
 
827 827
         $wheres = array($this->_venue_model->primary_key_name() => $post_id);
@@ -929,7 +929,7 @@  discard block
 block discarded – undo
929 929
             // clean status
930 930
             $venue_status = sanitize_key($venue_status);
931 931
             // grab status
932
-            if (! empty($venue_status)) {
932
+            if ( ! empty($venue_status)) {
933 933
                 $success = $this->_change_venue_status($VNU_ID, $venue_status);
934 934
             } else {
935 935
                 $success = false;
@@ -960,7 +960,7 @@  discard block
 block discarded – undo
960 960
         // clean status
961 961
         $venue_status = sanitize_key($venue_status);
962 962
         // grab status
963
-        if (! empty($venue_status)) {
963
+        if ( ! empty($venue_status)) {
964 964
             $success = true;
965 965
             // determine the event id and set to array.
966 966
             $VNU_IDs = isset($this->_req_data['venue_id']) ? (array) $this->_req_data['venue_id'] : array();
@@ -1011,7 +1011,7 @@  discard block
 block discarded – undo
1011 1011
     private function _change_venue_status($VNU_ID = 0, $venue_status = '')
1012 1012
     {
1013 1013
         // grab venue id
1014
-        if (! $VNU_ID) {
1014
+        if ( ! $VNU_ID) {
1015 1015
             $msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1016 1016
             EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1017 1017
             return false;
@@ -1022,7 +1022,7 @@  discard block
 block discarded – undo
1022 1022
         // clean status
1023 1023
         $venue_status = sanitize_key($venue_status);
1024 1024
         // grab status
1025
-        if (! $venue_status) {
1025
+        if ( ! $venue_status) {
1026 1026
             $msg = __('An error occurred. No Venue Status or an invalid Venue Status was received.', 'event_espresso');
1027 1027
             EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1028 1028
             return false;
@@ -1120,7 +1120,7 @@  discard block
 block discarded – undo
1120 1120
     private function _delete_or_trash_venue($VNU_ID = false)
1121 1121
     {
1122 1122
         // grab event id
1123
-        if (! $VNU_ID = absint($VNU_ID)) {
1123
+        if ( ! $VNU_ID = absint($VNU_ID)) {
1124 1124
             $msg = __('An error occurred. No Venue ID or an invalid Venue ID was received.', 'event_espresso');
1125 1125
             EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1126 1126
             return false;
@@ -1207,10 +1207,10 @@  discard block
 block discarded – undo
1207 1207
         }
1208 1208
 
1209 1209
 
1210
-        if (! EE_Registry::instance()->CAP->current_user_can('ee_read_others_venues', 'get_venues')) {
1210
+        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_venues', 'get_venues')) {
1211 1211
             $where['VNU_wp_user'] = get_current_user_id();
1212 1212
         } else {
1213
-            if (! EE_Registry::instance()->CAP->current_user_can('ee_read_private_venues', 'get_venues')) {
1213
+            if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_private_venues', 'get_venues')) {
1214 1214
                 $where['OR'] = array(
1215 1215
                     'status*restrict_private' => array('!=', 'private'),
1216 1216
                     'AND'                     => array(
@@ -1223,7 +1223,7 @@  discard block
 block discarded – undo
1223 1223
 
1224 1224
 
1225 1225
         if (isset($this->_req_data['s'])) {
1226
-            $sstr = '%' . $this->_req_data['s'] . '%';
1226
+            $sstr = '%'.$this->_req_data['s'].'%';
1227 1227
             $where['OR'] = array(
1228 1228
                 'VNU_name'               => array('LIKE', $sstr),
1229 1229
                 'VNU_desc'               => array('LIKE', $sstr),
@@ -1275,7 +1275,7 @@  discard block
 block discarded – undo
1275 1275
         $this->_set_empty_category_object();
1276 1276
 
1277 1277
         // only set if we've got an id
1278
-        if (! isset($this->_req_data['VEN_CAT_ID'])) {
1278
+        if ( ! isset($this->_req_data['VEN_CAT_ID'])) {
1279 1279
             return;
1280 1280
         }
1281 1281
 
@@ -1283,7 +1283,7 @@  discard block
 block discarded – undo
1283 1283
         $term = get_term($category_id, 'espresso_venue_categories');
1284 1284
 
1285 1285
 
1286
-        if (! empty($term)) {
1286
+        if ( ! empty($term)) {
1287 1287
             $this->_category->category_name = $term->name;
1288 1288
             $this->_category->category_identifier = $term->slug;
1289 1289
             $this->_category->category_desc = $term->description;
@@ -1304,7 +1304,7 @@  discard block
 block discarded – undo
1304 1304
     protected function _category_list_table()
1305 1305
     {
1306 1306
         do_action('AHEE_log', __FILE__, __FUNCTION__, '');
1307
-        $this->_admin_page_title .= ' ' . $this->get_action_link_or_button(
1307
+        $this->_admin_page_title .= ' '.$this->get_action_link_or_button(
1308 1308
             'add_category',
1309 1309
             'add_category',
1310 1310
             array(),
@@ -1379,7 +1379,7 @@  discard block
 block discarded – undo
1379 1379
             'disable'                  => '',
1380 1380
             'disabled_message'         => false,
1381 1381
         );
1382
-        $template = EVENTS_TEMPLATE_PATH . 'event_category_details.template.php';
1382
+        $template = EVENTS_TEMPLATE_PATH.'event_category_details.template.php';
1383 1383
         return EEH_Template::display_template($template, $template_args, true);
1384 1384
     }
1385 1385
 
@@ -1453,7 +1453,7 @@  discard block
 block discarded – undo
1453 1453
                 $term_args
1454 1454
             );
1455 1455
 
1456
-        if (! is_array($insert_ids)) {
1456
+        if ( ! is_array($insert_ids)) {
1457 1457
             $msg = __('An error occurred and the category has not been saved to the database.', 'event_espresso');
1458 1458
             EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
1459 1459
         } else {
@@ -1483,8 +1483,8 @@  discard block
 block discarded – undo
1483 1483
 
1484 1484
         $this->_req_data = array_merge($this->_req_data, $new_request_args);
1485 1485
 
1486
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
1487
-            require_once(EE_CLASSES . 'EE_Export.class.php');
1486
+        if (is_readable(EE_CLASSES.'EE_Export.class.php')) {
1487
+            require_once(EE_CLASSES.'EE_Export.class.php');
1488 1488
             $EE_Export = EE_Export::instance($this->_req_data);
1489 1489
             $EE_Export->export();
1490 1490
         }
@@ -1494,7 +1494,7 @@  discard block
 block discarded – undo
1494 1494
     protected function _import_categories()
1495 1495
     {
1496 1496
 
1497
-        require_once(EE_CLASSES . 'EE_Import.class.php');
1497
+        require_once(EE_CLASSES.'EE_Import.class.php');
1498 1498
         EE_Import::instance()->import();
1499 1499
     }
1500 1500
 
@@ -1508,7 +1508,7 @@  discard block
 block discarded – undo
1508 1508
         $limit = ($current_page - 1) * $per_page;
1509 1509
         $where = array('taxonomy' => 'espresso_venue_categories');
1510 1510
         if (isset($this->_req_data['s'])) {
1511
-            $sstr = '%' . $this->_req_data['s'] . '%';
1511
+            $sstr = '%'.$this->_req_data['s'].'%';
1512 1512
             $where['OR'] = array(
1513 1513
                 'Term.name'   => array('LIKE', $sstr),
1514 1514
                 'description' => array('LIKE', $sstr),
@@ -1518,7 +1518,7 @@  discard block
 block discarded – undo
1518 1518
         $query_params = array(
1519 1519
             $where,
1520 1520
             'order_by'   => array($orderby => $order),
1521
-            'limit'      => $limit . ',' . $per_page,
1521
+            'limit'      => $limit.','.$per_page,
1522 1522
             'force_join' => array('Term'),
1523 1523
         );
1524 1524
 
Please login to merge, or discard this patch.
caffeinated/admin/extend/events/Extend_Events_Admin_Page.core.php 3 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -342,7 +342,7 @@  discard block
 block discarded – undo
342 342
      *
343 343
      * @param $template
344 344
      * @param $template_args
345
-     * @return mixed
345
+     * @return string
346 346
      * @throws DomainException
347 347
      */
348 348
     public function add_additional_datetime_button($template, $template_args)
@@ -360,7 +360,7 @@  discard block
 block discarded – undo
360 360
      *
361 361
      * @param $template
362 362
      * @param $template_args
363
-     * @return mixed
363
+     * @return string
364 364
      * @throws DomainException
365 365
      */
366 366
     public function add_datetime_clone_button($template, $template_args)
@@ -378,7 +378,7 @@  discard block
 block discarded – undo
378 378
      *
379 379
      * @param $template
380 380
      * @param $template_args
381
-     * @return mixed
381
+     * @return string
382 382
      * @throws DomainException
383 383
      */
384 384
     public function datetime_timezones_template($template, $template_args)
Please login to merge, or discard this patch.
Indentation   +1383 added lines, -1383 removed lines patch added patch discarded remove patch
@@ -17,1387 +17,1387 @@
 block discarded – undo
17 17
 class Extend_Events_Admin_Page extends Events_Admin_Page
18 18
 {
19 19
 
20
-    /**
21
-     * @var AdvancedEditorAdminFormSection
22
-     */
23
-    protected $advanced_editor_admin_form;
24
-    /**
25
-     * @var AdvancedEditorEntityData
26
-     */
27
-    protected $advanced_editor_data;
28
-
29
-
30
-    /**
31
-     * Extend_Events_Admin_Page constructor.
32
-     *
33
-     * @param bool $routing
34
-     * @throws EE_Error
35
-     * @throws InvalidArgumentException
36
-     * @throws InvalidDataTypeException
37
-     * @throws InvalidInterfaceException
38
-     * @throws ReflectionException
39
-     */
40
-    public function __construct($routing = true)
41
-    {
42
-        if (! defined('EVENTS_CAF_TEMPLATE_PATH')) {
43
-            define('EVENTS_CAF_TEMPLATE_PATH', EE_CORE_CAF_ADMIN_EXTEND . 'events/templates/');
44
-            define('EVENTS_CAF_ASSETS', EE_CORE_CAF_ADMIN_EXTEND . 'events/assets/');
45
-            define('EVENTS_CAF_ASSETS_URL', EE_CORE_CAF_ADMIN_EXTEND_URL . 'events/assets/');
46
-        }
47
-        parent::__construct($routing);
48
-        if (isset($this->_req_data['action'])
49
-            && (
50
-                $this->_req_data['action'] === 'default_event_settings'
51
-                || $this->_req_data['action'] === 'update_default_event_settings'
52
-            )
53
-        ) {
54
-            $this->advanced_editor_admin_form = $this->loader->getShared(
55
-                'EventEspresso\core\domain\services\admin\events\default_settings\AdvancedEditorAdminFormSection'
56
-            );
57
-        }
58
-        if (isset($this->_req_data['action'])
59
-            && ( $this->_req_data['action'] === 'edit' || $this->_req_data['action'] === 'create_new')
60
-        ) {
61
-            $this->advanced_editor_data = $this->loader->getShared(
62
-                'EventEspresso\core\domain\services\admin\events\editor\AdvancedEditorEntityData'
63
-            );
64
-        }
65
-    }
66
-
67
-
68
-    /**
69
-     * Sets routes.
70
-     *
71
-     * @throws EE_Error
72
-     * @throws InvalidArgumentException
73
-     * @throws InvalidDataTypeException
74
-     * @throws InvalidInterfaceException
75
-     * @since $VID:$
76
-     */
77
-    protected function _extend_page_config()
78
-    {
79
-        $this->_admin_base_path = EE_CORE_CAF_ADMIN_EXTEND . 'events';
80
-        // is there a evt_id in the request?
81
-        $evt_id = ! empty($this->_req_data['EVT_ID']) && ! is_array($this->_req_data['EVT_ID'])
82
-            ? $this->_req_data['EVT_ID']
83
-            : 0;
84
-        $evt_id = ! empty($this->_req_data['post']) ? $this->_req_data['post'] : $evt_id;
85
-        // tkt_id?
86
-        $tkt_id = ! empty($this->_req_data['TKT_ID']) && ! is_array($this->_req_data['TKT_ID'])
87
-            ? $this->_req_data['TKT_ID']
88
-            : 0;
89
-        $new_page_routes = array(
90
-            'duplicate_event'          => array(
91
-                'func'       => '_duplicate_event',
92
-                'capability' => 'ee_edit_event',
93
-                'obj_id'     => $evt_id,
94
-                'noheader'   => true,
95
-            ),
96
-            'ticket_list_table'        => array(
97
-                'func'       => '_tickets_overview_list_table',
98
-                'capability' => 'ee_read_default_tickets',
99
-            ),
100
-            'trash_ticket'             => array(
101
-                'func'       => '_trash_or_restore_ticket',
102
-                'capability' => 'ee_delete_default_ticket',
103
-                'obj_id'     => $tkt_id,
104
-                'noheader'   => true,
105
-                'args'       => array('trash' => true),
106
-            ),
107
-            'trash_tickets'            => array(
108
-                'func'       => '_trash_or_restore_ticket',
109
-                'capability' => 'ee_delete_default_tickets',
110
-                'noheader'   => true,
111
-                'args'       => array('trash' => true),
112
-            ),
113
-            'restore_ticket'           => array(
114
-                'func'       => '_trash_or_restore_ticket',
115
-                'capability' => 'ee_delete_default_ticket',
116
-                'obj_id'     => $tkt_id,
117
-                'noheader'   => true,
118
-            ),
119
-            'restore_tickets'          => array(
120
-                'func'       => '_trash_or_restore_ticket',
121
-                'capability' => 'ee_delete_default_tickets',
122
-                'noheader'   => true,
123
-            ),
124
-            'delete_ticket'            => array(
125
-                'func'       => '_delete_ticket',
126
-                'capability' => 'ee_delete_default_ticket',
127
-                'obj_id'     => $tkt_id,
128
-                'noheader'   => true,
129
-            ),
130
-            'delete_tickets'           => array(
131
-                'func'       => '_delete_ticket',
132
-                'capability' => 'ee_delete_default_tickets',
133
-                'noheader'   => true,
134
-            ),
135
-            'import_page'              => array(
136
-                'func'       => '_import_page',
137
-                'capability' => 'import',
138
-            ),
139
-            'import'                   => array(
140
-                'func'       => '_import_events',
141
-                'capability' => 'import',
142
-                'noheader'   => true,
143
-            ),
144
-            'import_events'            => array(
145
-                'func'       => '_import_events',
146
-                'capability' => 'import',
147
-                'noheader'   => true,
148
-            ),
149
-            'export_events'            => array(
150
-                'func'       => '_events_export',
151
-                'capability' => 'export',
152
-                'noheader'   => true,
153
-            ),
154
-            'export_categories'        => array(
155
-                'func'       => '_categories_export',
156
-                'capability' => 'export',
157
-                'noheader'   => true,
158
-            ),
159
-            'sample_export_file'       => array(
160
-                'func'       => '_sample_export_file',
161
-                'capability' => 'export',
162
-                'noheader'   => true,
163
-            ),
164
-            'update_template_settings' => array(
165
-                'func'       => '_update_template_settings',
166
-                'capability' => 'manage_options',
167
-                'noheader'   => true,
168
-            ),
169
-        );
170
-        $this->_page_routes = array_merge($this->_page_routes, $new_page_routes);
171
-        // partial route/config override
172
-        $this->_page_config['import_events']['metaboxes'] = $this->_default_espresso_metaboxes;
173
-        $this->_page_config['create_new']['metaboxes'][] = '_premium_event_editor_meta_boxes';
174
-        $this->_page_config['create_new']['qtips'][] = 'EE_Event_Editor_Tips';
175
-        $this->_page_config['edit']['qtips'][] = 'EE_Event_Editor_Tips';
176
-        $this->_page_config['edit']['metaboxes'][] = '_premium_event_editor_meta_boxes';
177
-        $this->_page_config['default']['list_table'] = 'Extend_Events_Admin_List_Table';
178
-        // add tickets tab but only if there are more than one default ticket!
179
-        $tkt_count = EEM_Ticket::instance()->count_deleted_and_undeleted(
180
-            array(array('TKT_is_default' => 1)),
181
-            'TKT_ID',
182
-            true
183
-        );
184
-        if ($tkt_count > 1) {
185
-            $new_page_config = array(
186
-                'ticket_list_table' => array(
187
-                    'nav'           => array(
188
-                        'label' => esc_html__('Default Tickets', 'event_espresso'),
189
-                        'order' => 60,
190
-                    ),
191
-                    'list_table'    => 'Tickets_List_Table',
192
-                    'require_nonce' => false,
193
-                ),
194
-            );
195
-        }
196
-        // template settings
197
-        $new_page_config['template_settings'] = array(
198
-            'nav'           => array(
199
-                'label' => esc_html__('Templates', 'event_espresso'),
200
-                'order' => 30,
201
-            ),
202
-            'metaboxes'     => array_merge($this->_default_espresso_metaboxes, array('_publish_post_box')),
203
-            'help_tabs'     => array(
204
-                'general_settings_templates_help_tab' => array(
205
-                    'title'    => esc_html__('Templates', 'event_espresso'),
206
-                    'filename' => 'general_settings_templates',
207
-                ),
208
-            ),
209
-            'help_tour'     => array('Templates_Help_Tour'),
210
-            'require_nonce' => false,
211
-        );
212
-        $this->_page_config = array_merge($this->_page_config, $new_page_config);
213
-        // add filters and actions
214
-        // modifying _views
215
-        add_filter(
216
-            'FHEE_event_datetime_metabox_add_additional_date_time_template',
217
-            array($this, 'add_additional_datetime_button'),
218
-            10,
219
-            2
220
-        );
221
-        add_filter(
222
-            'FHEE_event_datetime_metabox_clone_button_template',
223
-            array($this, 'add_datetime_clone_button'),
224
-            10,
225
-            2
226
-        );
227
-        add_filter(
228
-            'FHEE_event_datetime_metabox_timezones_template',
229
-            array($this, 'datetime_timezones_template'),
230
-            10,
231
-            2
232
-        );
233
-        // filters for event list table
234
-        add_filter('FHEE__Extend_Events_Admin_List_Table__filters', array($this, 'list_table_filters'), 10, 2);
235
-        add_filter(
236
-            'FHEE__Events_Admin_List_Table__column_actions__action_links',
237
-            array($this, 'extra_list_table_actions'),
238
-            10,
239
-            2
240
-        );
241
-        // legend item
242
-        add_filter('FHEE__Events_Admin_Page___event_legend_items__items', array($this, 'additional_legend_items'));
243
-        add_action('admin_init', array($this, 'admin_init'));
244
-    }
245
-
246
-
247
-    /**
248
-     * admin_init
249
-     */
250
-    public function admin_init()
251
-    {
252
-        EE_Registry::$i18n_js_strings = array_merge(
253
-            EE_Registry::$i18n_js_strings,
254
-            array(
255
-                'image_confirm'          => esc_html__(
256
-                    'Do you really want to delete this image? Please remember to update your event to complete the removal.',
257
-                    'event_espresso'
258
-                ),
259
-                'event_starts_on'        => esc_html__('Event Starts on', 'event_espresso'),
260
-                'event_ends_on'          => esc_html__('Event Ends on', 'event_espresso'),
261
-                'event_datetime_actions' => esc_html__('Actions', 'event_espresso'),
262
-                'event_clone_dt_msg'     => esc_html__('Clone this Event Date and Time', 'event_espresso'),
263
-                'remove_event_dt_msg'    => esc_html__('Remove this Event Time', 'event_espresso'),
264
-            )
265
-        );
266
-    }
267
-
268
-
269
-    /**
270
-     * Add per page screen options to the default ticket list table view.
271
-     *
272
-     * @throws InvalidArgumentException
273
-     * @throws InvalidDataTypeException
274
-     * @throws InvalidInterfaceException
275
-     */
276
-    protected function _add_screen_options_ticket_list_table()
277
-    {
278
-        $this->_per_page_screen_option();
279
-    }
280
-
281
-
282
-    /**
283
-     * @param string $return
284
-     * @param int    $id
285
-     * @param string $new_title
286
-     * @param string $new_slug
287
-     * @return string
288
-     */
289
-    public function extra_permalink_field_buttons($return, $id, $new_title, $new_slug)
290
-    {
291
-        $return = parent::extra_permalink_field_buttons($return, $id, $new_title, $new_slug);
292
-        // make sure this is only when editing
293
-        if (! empty($id)) {
294
-            $href = EE_Admin_Page::add_query_args_and_nonce(
295
-                array('action' => 'duplicate_event', 'EVT_ID' => $id),
296
-                $this->_admin_base_url
297
-            );
298
-            $title = esc_attr__('Duplicate Event', 'event_espresso');
299
-            $return .= '<a href="'
300
-                       . $href
301
-                       . '" title="'
302
-                       . $title
303
-                       . '" id="ee-duplicate-event-button" class="button button-small"  value="duplicate_event">'
304
-                       . $title
305
-                       . '</a>';
306
-        }
307
-        return $return;
308
-    }
309
-
310
-
311
-    /**
312
-     * Set the list table views for the default ticket list table view.
313
-     */
314
-    public function _set_list_table_views_ticket_list_table()
315
-    {
316
-        $this->_views = array(
317
-            'all'     => array(
318
-                'slug'        => 'all',
319
-                'label'       => esc_html__('All', 'event_espresso'),
320
-                'count'       => 0,
321
-                'bulk_action' => array(
322
-                    'trash_tickets' => esc_html__('Move to Trash', 'event_espresso'),
323
-                ),
324
-            ),
325
-            'trashed' => array(
326
-                'slug'        => 'trashed',
327
-                'label'       => esc_html__('Trash', 'event_espresso'),
328
-                'count'       => 0,
329
-                'bulk_action' => array(
330
-                    'restore_tickets' => esc_html__('Restore from Trash', 'event_espresso'),
331
-                    'delete_tickets'  => esc_html__('Delete Permanently', 'event_espresso'),
332
-                ),
333
-            ),
334
-        );
335
-    }
336
-
337
-
338
-    /**
339
-     * Enqueue scripts and styles for the event editor.
340
-     */
341
-    public function load_scripts_styles_edit()
342
-    {
343
-        wp_register_script(
344
-            'ee-event-editor-heartbeat',
345
-            EVENTS_CAF_ASSETS_URL . 'event-editor-heartbeat.js',
346
-            array('ee_admin_js', 'heartbeat'),
347
-            EVENT_ESPRESSO_VERSION,
348
-            true
349
-        );
350
-        wp_enqueue_script('ee-accounting');
351
-        // styles
352
-        wp_enqueue_style('espresso-ui-theme');
353
-        wp_enqueue_script('event_editor_js');
354
-        wp_enqueue_script('ee-event-editor-heartbeat');
355
-    }
356
-
357
-
358
-    /**
359
-     * Returns template for the additional datetime.
360
-     *
361
-     * @param $template
362
-     * @param $template_args
363
-     * @return mixed
364
-     * @throws DomainException
365
-     */
366
-    public function add_additional_datetime_button($template, $template_args)
367
-    {
368
-        return EEH_Template::display_template(
369
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_add_additional_time.template.php',
370
-            $template_args,
371
-            true
372
-        );
373
-    }
374
-
375
-
376
-    /**
377
-     * Returns the template for cloning a datetime.
378
-     *
379
-     * @param $template
380
-     * @param $template_args
381
-     * @return mixed
382
-     * @throws DomainException
383
-     */
384
-    public function add_datetime_clone_button($template, $template_args)
385
-    {
386
-        return EEH_Template::display_template(
387
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_metabox_clone_button.template.php',
388
-            $template_args,
389
-            true
390
-        );
391
-    }
392
-
393
-
394
-    /**
395
-     * Returns the template for datetime timezones.
396
-     *
397
-     * @param $template
398
-     * @param $template_args
399
-     * @return mixed
400
-     * @throws DomainException
401
-     */
402
-    public function datetime_timezones_template($template, $template_args)
403
-    {
404
-        return EEH_Template::display_template(
405
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_timezones.template.php',
406
-            $template_args,
407
-            true
408
-        );
409
-    }
410
-
411
-
412
-    /**
413
-     * Sets the views for the default list table view.
414
-     */
415
-    protected function _set_list_table_views_default()
416
-    {
417
-        parent::_set_list_table_views_default();
418
-        $new_views = array(
419
-            'today' => array(
420
-                'slug'        => 'today',
421
-                'label'       => esc_html__('Today', 'event_espresso'),
422
-                'count'       => $this->total_events_today(),
423
-                'bulk_action' => array(
424
-                    'trash_events' => esc_html__('Move to Trash', 'event_espresso'),
425
-                ),
426
-            ),
427
-            'month' => array(
428
-                'slug'        => 'month',
429
-                'label'       => esc_html__('This Month', 'event_espresso'),
430
-                'count'       => $this->total_events_this_month(),
431
-                'bulk_action' => array(
432
-                    'trash_events' => esc_html__('Move to Trash', 'event_espresso'),
433
-                ),
434
-            ),
435
-        );
436
-        $this->_views = array_merge($this->_views, $new_views);
437
-    }
438
-
439
-
440
-    /**
441
-     * Returns the extra action links for the default list table view.
442
-     *
443
-     * @param array    $action_links
444
-     * @param EE_Event $event
445
-     * @return array
446
-     * @throws EE_Error
447
-     * @throws InvalidArgumentException
448
-     * @throws InvalidDataTypeException
449
-     * @throws InvalidInterfaceException
450
-     * @throws ReflectionException
451
-     */
452
-    public function extra_list_table_actions(array $action_links, EE_Event $event)
453
-    {
454
-        if (EE_Registry::instance()->CAP->current_user_can(
455
-            'ee_read_registrations',
456
-            'espresso_registrations_reports',
457
-            $event->ID()
458
-        )
459
-        ) {
460
-            $reports_query_args = array(
461
-                'action' => 'reports',
462
-                'EVT_ID' => $event->ID(),
463
-            );
464
-            $reports_link = EE_Admin_Page::add_query_args_and_nonce($reports_query_args, REG_ADMIN_URL);
465
-            $action_links[] = '<a href="'
466
-                              . $reports_link
467
-                              . '" title="'
468
-                              . esc_attr__('View Report', 'event_espresso')
469
-                              . '"><div class="dashicons dashicons-chart-bar"></div></a>'
470
-                              . "\n\t";
471
-        }
472
-        if (EE_Registry::instance()->CAP->current_user_can('ee_read_global_messages', 'view_filtered_messages')) {
473
-            EE_Registry::instance()->load_helper('MSG_Template');
474
-            $action_links[] = EEH_MSG_Template::get_message_action_link(
475
-                'see_notifications_for',
476
-                null,
477
-                array('EVT_ID' => $event->ID())
478
-            );
479
-        }
480
-        return $action_links;
481
-    }
482
-
483
-
484
-    /**
485
-     * @param $items
486
-     * @return mixed
487
-     */
488
-    public function additional_legend_items($items)
489
-    {
490
-        if (EE_Registry::instance()->CAP->current_user_can(
491
-            'ee_read_registrations',
492
-            'espresso_registrations_reports'
493
-        )
494
-        ) {
495
-            $items['reports'] = array(
496
-                'class' => 'dashicons dashicons-chart-bar',
497
-                'desc'  => esc_html__('Event Reports', 'event_espresso'),
498
-            );
499
-        }
500
-        if (EE_Registry::instance()->CAP->current_user_can('ee_read_global_messages', 'view_filtered_messages')) {
501
-            $related_for_icon = EEH_MSG_Template::get_message_action_icon('see_notifications_for');
502
-            // $related_for_icon can sometimes be a string so 'css_class' would be an illegal offset
503
-            // (can only use numeric offsets when treating strings as arrays)
504
-            if (is_array($related_for_icon) && isset($related_for_icon['css_class'], $related_for_icon['label'])) {
505
-                $items['view_related_messages'] = array(
506
-                    'class' => $related_for_icon['css_class'],
507
-                    'desc'  => $related_for_icon['label'],
508
-                );
509
-            }
510
-        }
511
-        return $items;
512
-    }
513
-
514
-
515
-    /**
516
-     * This is the callback method for the duplicate event route
517
-     * Method looks for 'EVT_ID' in the request and retrieves that event and its details and duplicates them
518
-     * into a new event.  We add a hook so that any plugins that add extra event details can hook into this
519
-     * action.  Note that the dupe will have **DUPLICATE** as its title and slug.
520
-     * After duplication the redirect is to the new event edit page.
521
-     *
522
-     * @return void
523
-     * @throws EE_Error If EE_Event is not available with given ID
524
-     * @throws InvalidArgumentException
525
-     * @throws InvalidDataTypeException
526
-     * @throws InvalidInterfaceException
527
-     * @throws ReflectionException
528
-     * @access protected
529
-     */
530
-    protected function _duplicate_event()
531
-    {
532
-        // first make sure the ID for the event is in the request.
533
-        //  If it isn't then we need to bail and redirect back to overview list table (cause how did we get here?)
534
-        if (! isset($this->_req_data['EVT_ID'])) {
535
-            EE_Error::add_error(
536
-                esc_html__(
537
-                    'In order to duplicate an event an Event ID is required.  None was given.',
538
-                    'event_espresso'
539
-                ),
540
-                __FILE__,
541
-                __FUNCTION__,
542
-                __LINE__
543
-            );
544
-            $this->_redirect_after_action(false, '', '', array(), true);
545
-            return;
546
-        }
547
-        // k we've got EVT_ID so let's use that to get the event we'll duplicate
548
-        $orig_event = EEM_Event::instance()->get_one_by_ID($this->_req_data['EVT_ID']);
549
-        if (! $orig_event instanceof EE_Event) {
550
-            throw new EE_Error(
551
-                sprintf(
552
-                    esc_html__('An EE_Event object could not be retrieved for the given ID (%s)', 'event_espresso'),
553
-                    $this->_req_data['EVT_ID']
554
-                )
555
-            );
556
-        }
557
-        // k now let's clone the $orig_event before getting relations
558
-        $new_event = clone $orig_event;
559
-        // original datetimes
560
-        $orig_datetimes = $orig_event->get_many_related('Datetime');
561
-        // other original relations
562
-        $orig_ven = $orig_event->get_many_related('Venue');
563
-        // reset the ID and modify other details to make it clear this is a dupe
564
-        $new_event->set('EVT_ID', 0);
565
-        $new_name = $new_event->name() . ' ' . esc_html__('**DUPLICATE**', 'event_espresso');
566
-        $new_event->set('EVT_name', $new_name);
567
-        $new_event->set(
568
-            'EVT_slug',
569
-            wp_unique_post_slug(
570
-                sanitize_title($orig_event->name()),
571
-                0,
572
-                'publish',
573
-                'espresso_events',
574
-                0
575
-            )
576
-        );
577
-        $new_event->set('status', 'draft');
578
-        // duplicate discussion settings
579
-        $new_event->set('comment_status', $orig_event->get('comment_status'));
580
-        $new_event->set('ping_status', $orig_event->get('ping_status'));
581
-        // save the new event
582
-        $new_event->save();
583
-        // venues
584
-        foreach ($orig_ven as $ven) {
585
-            $new_event->_add_relation_to($ven, 'Venue');
586
-        }
587
-        $new_event->save();
588
-        // now we need to get the question group relations and handle that
589
-        // first primary question groups
590
-        $orig_primary_qgs = $orig_event->get_many_related(
591
-            'Question_Group',
592
-            [['Event_Question_Group.EQG_primary' => true]]
593
-        );
594
-        if (! empty($orig_primary_qgs)) {
595
-            foreach ($orig_primary_qgs as $id => $obj) {
596
-                if ($obj instanceof EE_Question_Group) {
597
-                    $new_event->_add_relation_to($obj, 'Question_Group', ['EQG_primary' => true]);
598
-                }
599
-            }
600
-        }
601
-        // next additional attendee question groups
602
-        $orig_additional_qgs = $orig_event->get_many_related(
603
-            'Question_Group',
604
-            [['Event_Question_Group.EQG_additional' => true]]
605
-        );
606
-        if (! empty($orig_additional_qgs)) {
607
-            foreach ($orig_additional_qgs as $id => $obj) {
608
-                if ($obj instanceof EE_Question_Group) {
609
-                    $new_event->_add_relation_to($obj, 'Question_Group', ['EQG_additional' => true]);
610
-                }
611
-            }
612
-        }
613
-
614
-        $new_event->save();
615
-
616
-        // k now that we have the new event saved we can loop through the datetimes and start adding relations.
617
-        $cloned_tickets = array();
618
-        foreach ($orig_datetimes as $orig_dtt) {
619
-            if (! $orig_dtt instanceof EE_Datetime) {
620
-                continue;
621
-            }
622
-            $new_dtt = clone $orig_dtt;
623
-            $orig_tkts = $orig_dtt->tickets();
624
-            // save new dtt then add to event
625
-            $new_dtt->set('DTT_ID', 0);
626
-            $new_dtt->set('DTT_sold', 0);
627
-            $new_dtt->set_reserved(0);
628
-            $new_dtt->save();
629
-            $new_event->_add_relation_to($new_dtt, 'Datetime');
630
-            $new_event->save();
631
-            // now let's get the ticket relations setup.
632
-            foreach ((array) $orig_tkts as $orig_tkt) {
633
-                // it's possible a datetime will have no tickets so let's verify we HAVE a ticket first.
634
-                if (! $orig_tkt instanceof EE_Ticket) {
635
-                    continue;
636
-                }
637
-                // is this ticket archived?  If it is then let's skip
638
-                if ($orig_tkt->get('TKT_deleted')) {
639
-                    continue;
640
-                }
641
-                // does this original ticket already exist in the clone_tickets cache?
642
-                //  If so we'll just use the new ticket from it.
643
-                if (isset($cloned_tickets[ $orig_tkt->ID() ])) {
644
-                    $new_tkt = $cloned_tickets[ $orig_tkt->ID() ];
645
-                } else {
646
-                    $new_tkt = clone $orig_tkt;
647
-                    // get relations on the $orig_tkt that we need to setup.
648
-                    $orig_prices = $orig_tkt->prices();
649
-                    $new_tkt->set('TKT_ID', 0);
650
-                    $new_tkt->set('TKT_sold', 0);
651
-                    $new_tkt->set('TKT_reserved', 0);
652
-                    $new_tkt->save(); // make sure new ticket has ID.
653
-                    // price relations on new ticket need to be setup.
654
-                    foreach ($orig_prices as $orig_price) {
655
-                        $new_price = clone $orig_price;
656
-                        $new_price->set('PRC_ID', 0);
657
-                        $new_price->save();
658
-                        $new_tkt->_add_relation_to($new_price, 'Price');
659
-                        $new_tkt->save();
660
-                    }
661
-
662
-                    do_action(
663
-                        'AHEE__Extend_Events_Admin_Page___duplicate_event__duplicate_ticket__after',
664
-                        $orig_tkt,
665
-                        $new_tkt,
666
-                        $orig_prices,
667
-                        $orig_event,
668
-                        $orig_dtt,
669
-                        $new_dtt
670
-                    );
671
-                }
672
-                // k now we can add the new ticket as a relation to the new datetime
673
-                // and make sure its added to our cached $cloned_tickets array
674
-                // for use with later datetimes that have the same ticket.
675
-                $new_dtt->_add_relation_to($new_tkt, 'Ticket');
676
-                $new_dtt->save();
677
-                $cloned_tickets[ $orig_tkt->ID() ] = $new_tkt;
678
-            }
679
-        }
680
-        // clone taxonomy information
681
-        $taxonomies_to_clone_with = apply_filters(
682
-            'FHEE__Extend_Events_Admin_Page___duplicate_event__taxonomies_to_clone',
683
-            array('espresso_event_categories', 'espresso_event_type', 'post_tag')
684
-        );
685
-        // get terms for original event (notice)
686
-        $orig_terms = wp_get_object_terms($orig_event->ID(), $taxonomies_to_clone_with);
687
-        // loop through terms and add them to new event.
688
-        foreach ($orig_terms as $term) {
689
-            wp_set_object_terms($new_event->ID(), $term->term_id, $term->taxonomy, true);
690
-        }
691
-
692
-        // duplicate other core WP_Post items for this event.
693
-        // post thumbnail (feature image).
694
-        $feature_image_id = get_post_thumbnail_id($orig_event->ID());
695
-        if ($feature_image_id) {
696
-            update_post_meta($new_event->ID(), '_thumbnail_id', $feature_image_id);
697
-        }
698
-
699
-        // duplicate page_template setting
700
-        $page_template = get_post_meta($orig_event->ID(), '_wp_page_template', true);
701
-        if ($page_template) {
702
-            update_post_meta($new_event->ID(), '_wp_page_template', $page_template);
703
-        }
704
-
705
-        do_action('AHEE__Extend_Events_Admin_Page___duplicate_event__after', $new_event, $orig_event);
706
-        // now let's redirect to the edit page for this duplicated event if we have a new event id.
707
-        if ($new_event->ID()) {
708
-            $redirect_args = array(
709
-                'post'   => $new_event->ID(),
710
-                'action' => 'edit',
711
-            );
712
-            EE_Error::add_success(
713
-                esc_html__(
714
-                    'Event successfully duplicated.  Please review the details below and make any necessary edits',
715
-                    'event_espresso'
716
-                )
717
-            );
718
-        } else {
719
-            $redirect_args = array(
720
-                'action' => 'default',
721
-            );
722
-            EE_Error::add_error(
723
-                esc_html__('Not able to duplicate event.  Something went wrong.', 'event_espresso'),
724
-                __FILE__,
725
-                __FUNCTION__,
726
-                __LINE__
727
-            );
728
-        }
729
-        $this->_redirect_after_action(false, '', '', $redirect_args, true);
730
-    }
731
-
732
-
733
-    /**
734
-     * Generates output for the import page.
735
-     *
736
-     * @throws DomainException
737
-     * @throws EE_Error
738
-     * @throws InvalidArgumentException
739
-     * @throws InvalidDataTypeException
740
-     * @throws InvalidInterfaceException
741
-     */
742
-    protected function _import_page()
743
-    {
744
-        $title = esc_html__('Import', 'event_espresso');
745
-        $intro = esc_html__(
746
-            'If you have a previously exported Event Espresso 4 information in a Comma Separated Value (CSV) file format, you can upload the file here: ',
747
-            'event_espresso'
748
-        );
749
-        $form_url = EVENTS_ADMIN_URL;
750
-        $action = 'import_events';
751
-        $type = 'csv';
752
-        $this->_template_args['form'] = EE_Import::instance()->upload_form(
753
-            $title,
754
-            $intro,
755
-            $form_url,
756
-            $action,
757
-            $type
758
-        );
759
-        $this->_template_args['sample_file_link'] = EE_Admin_Page::add_query_args_and_nonce(
760
-            array('action' => 'sample_export_file'),
761
-            $this->_admin_base_url
762
-        );
763
-        $content = EEH_Template::display_template(
764
-            EVENTS_CAF_TEMPLATE_PATH . 'import_page.template.php',
765
-            $this->_template_args,
766
-            true
767
-        );
768
-        $this->_template_args['admin_page_content'] = $content;
769
-        $this->display_admin_page_with_sidebar();
770
-    }
771
-
772
-
773
-    /**
774
-     * _import_events
775
-     * This handles displaying the screen and running imports for importing events.
776
-     *
777
-     * @return void
778
-     * @throws EE_Error
779
-     * @throws InvalidArgumentException
780
-     * @throws InvalidDataTypeException
781
-     * @throws InvalidInterfaceException
782
-     */
783
-    protected function _import_events()
784
-    {
785
-        require_once(EE_CLASSES . 'EE_Import.class.php');
786
-        $success = EE_Import::instance()->import();
787
-        $this->_redirect_after_action($success, 'Import File', 'ran', array('action' => 'import_page'), true);
788
-    }
789
-
790
-
791
-    /**
792
-     * _events_export
793
-     * Will export all (or just the given event) to a Excel compatible file.
794
-     *
795
-     * @access protected
796
-     * @return void
797
-     */
798
-    protected function _events_export()
799
-    {
800
-        if (isset($this->_req_data['EVT_ID'])) {
801
-            $event_ids = $this->_req_data['EVT_ID'];
802
-        } elseif (isset($this->_req_data['EVT_IDs'])) {
803
-            $event_ids = $this->_req_data['EVT_IDs'];
804
-        } else {
805
-            $event_ids = null;
806
-        }
807
-        // todo: I don't like doing this but it'll do until we modify EE_Export Class.
808
-        $new_request_args = array(
809
-            'export' => 'report',
810
-            'action' => 'all_event_data',
811
-            'EVT_ID' => $event_ids,
812
-        );
813
-        $this->_req_data = array_merge($this->_req_data, $new_request_args);
814
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
815
-            require_once(EE_CLASSES . 'EE_Export.class.php');
816
-            $EE_Export = EE_Export::instance($this->_req_data);
817
-            $EE_Export->export();
818
-        }
819
-    }
820
-
821
-
822
-    /**
823
-     * handle category exports()
824
-     *
825
-     * @return void
826
-     */
827
-    protected function _categories_export()
828
-    {
829
-        // todo: I don't like doing this but it'll do until we modify EE_Export Class.
830
-        $new_request_args = array(
831
-            'export'       => 'report',
832
-            'action'       => 'categories',
833
-            'category_ids' => $this->_req_data['EVT_CAT_ID'],
834
-        );
835
-        $this->_req_data = array_merge($this->_req_data, $new_request_args);
836
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
837
-            require_once(EE_CLASSES . 'EE_Export.class.php');
838
-            $EE_Export = EE_Export::instance($this->_req_data);
839
-            $EE_Export->export();
840
-        }
841
-    }
842
-
843
-
844
-    /**
845
-     * Creates a sample CSV file for importing
846
-     */
847
-    protected function _sample_export_file()
848
-    {
849
-        // require_once(EE_CLASSES . 'EE_Export.class.php');
850
-        EE_Export::instance()->export_sample();
851
-    }
852
-
853
-
854
-    /*************        Template Settings        *************/
855
-    /**
856
-     * Generates template settings page output
857
-     *
858
-     * @throws DomainException
859
-     * @throws EE_Error
860
-     * @throws InvalidArgumentException
861
-     * @throws InvalidDataTypeException
862
-     * @throws InvalidInterfaceException
863
-     */
864
-    protected function _template_settings()
865
-    {
866
-        $this->_template_args['values'] = $this->_yes_no_values;
867
-        /**
868
-         * Note leaving this filter in for backward compatibility this was moved in 4.6.x
869
-         * from General_Settings_Admin_Page to here.
870
-         */
871
-        $this->_template_args = apply_filters(
872
-            'FHEE__General_Settings_Admin_Page__template_settings__template_args',
873
-            $this->_template_args
874
-        );
875
-        $this->_set_add_edit_form_tags('update_template_settings');
876
-        $this->_set_publish_post_box_vars(null, false, false, null, false);
877
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
878
-            EVENTS_CAF_TEMPLATE_PATH . 'template_settings.template.php',
879
-            $this->_template_args,
880
-            true
881
-        );
882
-        $this->display_admin_page_with_sidebar();
883
-    }
884
-
885
-
886
-    /**
887
-     * Handler for updating template settings.
888
-     *
889
-     * @throws EE_Error
890
-     * @throws InvalidArgumentException
891
-     * @throws InvalidDataTypeException
892
-     * @throws InvalidInterfaceException
893
-     */
894
-    protected function _update_template_settings()
895
-    {
896
-        /**
897
-         * Note leaving this filter in for backward compatibility this was moved in 4.6.x
898
-         * from General_Settings_Admin_Page to here.
899
-         */
900
-        EE_Registry::instance()->CFG->template_settings = apply_filters(
901
-            'FHEE__General_Settings_Admin_Page__update_template_settings__data',
902
-            EE_Registry::instance()->CFG->template_settings,
903
-            $this->_req_data
904
-        );
905
-        // update custom post type slugs and detect if we need to flush rewrite rules
906
-        $old_slug = EE_Registry::instance()->CFG->core->event_cpt_slug;
907
-        EE_Registry::instance()->CFG->core->event_cpt_slug = empty($this->_req_data['event_cpt_slug'])
908
-            ? EE_Registry::instance()->CFG->core->event_cpt_slug
909
-            : EEH_URL::slugify($this->_req_data['event_cpt_slug'], 'events');
910
-        $what = 'Template Settings';
911
-        $success = $this->_update_espresso_configuration(
912
-            $what,
913
-            EE_Registry::instance()->CFG->template_settings,
914
-            __FILE__,
915
-            __FUNCTION__,
916
-            __LINE__
917
-        );
918
-        if (EE_Registry::instance()->CFG->core->event_cpt_slug !== $old_slug) {
919
-            /** @var EventEspresso\core\domain\services\custom_post_types\RewriteRules $rewrite_rules */
920
-            $rewrite_rules = LoaderFactory::getLoader()->getShared(
921
-                'EventEspresso\core\domain\services\custom_post_types\RewriteRules'
922
-            );
923
-            $rewrite_rules->flush();
924
-        }
925
-        $this->_redirect_after_action($success, $what, 'updated', array('action' => 'template_settings'));
926
-    }
927
-
928
-
929
-    /**
930
-     * _premium_event_editor_meta_boxes
931
-     * add all metaboxes related to the event_editor
932
-     *
933
-     * @access protected
934
-     * @return void
935
-     * @throws EE_Error
936
-     * @throws InvalidArgumentException
937
-     * @throws InvalidDataTypeException
938
-     * @throws InvalidInterfaceException
939
-     * @throws ReflectionException
940
-     */
941
-    protected function _premium_event_editor_meta_boxes()
942
-    {
943
-        $this->verify_cpt_object();
944
-        add_meta_box(
945
-            'espresso_event_editor_event_options',
946
-            esc_html__('Event Registration Options', 'event_espresso'),
947
-            array($this, 'registration_options_meta_box'),
948
-            $this->page_slug,
949
-            'side',
950
-            'core'
951
-        );
952
-    }
953
-
954
-
955
-    /**
956
-     * override caf metabox
957
-     *
958
-     * @return void
959
-     * @throws DomainException
960
-     * @throws EE_Error
961
-     */
962
-    public function registration_options_meta_box()
963
-    {
964
-        $yes_no_values = array(
965
-            array('id' => true, 'text' => esc_html__('Yes', 'event_espresso')),
966
-            array('id' => false, 'text' => esc_html__('No', 'event_espresso')),
967
-        );
968
-        $default_reg_status_values = EEM_Registration::reg_status_array(
969
-            array(
970
-                EEM_Registration::status_id_cancelled,
971
-                EEM_Registration::status_id_declined,
972
-                EEM_Registration::status_id_incomplete,
973
-                EEM_Registration::status_id_wait_list,
974
-            ),
975
-            true
976
-        );
977
-        $template_args['active_status'] = $this->_cpt_model_obj->pretty_active_status(false);
978
-        $template_args['_event'] = $this->_cpt_model_obj;
979
-        $template_args['additional_limit'] = $this->_cpt_model_obj->additional_limit();
980
-        $template_args['default_registration_status'] = EEH_Form_Fields::select_input(
981
-            'default_reg_status',
982
-            $default_reg_status_values,
983
-            $this->_cpt_model_obj->default_registration_status()
984
-        );
985
-        $template_args['display_description'] = EEH_Form_Fields::select_input(
986
-            'display_desc',
987
-            $yes_no_values,
988
-            $this->_cpt_model_obj->display_description()
989
-        );
990
-        $template_args['display_ticket_selector'] = EEH_Form_Fields::select_input(
991
-            'display_ticket_selector',
992
-            $yes_no_values,
993
-            $this->_cpt_model_obj->display_ticket_selector(),
994
-            '',
995
-            '',
996
-            false
997
-        );
998
-        $template_args['EVT_default_registration_status'] = EEH_Form_Fields::select_input(
999
-            'EVT_default_registration_status',
1000
-            $default_reg_status_values,
1001
-            $this->_cpt_model_obj->default_registration_status()
1002
-        );
1003
-        $template_args['additional_registration_options'] = apply_filters(
1004
-            'FHEE__Events_Admin_Page__registration_options_meta_box__additional_registration_options',
1005
-            '',
1006
-            $template_args,
1007
-            $yes_no_values,
1008
-            $default_reg_status_values
1009
-        );
1010
-        EEH_Template::display_template(
1011
-            EVENTS_CAF_TEMPLATE_PATH . 'event_registration_options.template.php',
1012
-            $template_args
1013
-        );
1014
-    }
1015
-
1016
-
1017
-
1018
-    /**
1019
-     * wp_list_table_mods for caf
1020
-     * ============================
1021
-     */
1022
-    /**
1023
-     * hook into list table filters and provide filters for caffeinated list table
1024
-     *
1025
-     * @param array $old_filters    any existing filters present
1026
-     * @param array $list_table_obj the list table object
1027
-     * @return array                  new filters
1028
-     * @throws EE_Error
1029
-     * @throws InvalidArgumentException
1030
-     * @throws InvalidDataTypeException
1031
-     * @throws InvalidInterfaceException
1032
-     * @throws ReflectionException
1033
-     */
1034
-    public function list_table_filters($old_filters, $list_table_obj)
1035
-    {
1036
-        $filters = array();
1037
-        // first month/year filters
1038
-        $filters[] = $this->espresso_event_months_dropdown();
1039
-        $status = isset($this->_req_data['status']) ? $this->_req_data['status'] : null;
1040
-        // active status dropdown
1041
-        if ($status !== 'draft') {
1042
-            $filters[] = $this->active_status_dropdown(
1043
-                isset($this->_req_data['active_status']) ? $this->_req_data['active_status'] : ''
1044
-            );
1045
-            $filters[] = $this->venuesDropdown(
1046
-                isset($this->_req_data['venue']) ? $this->_req_data['venue'] : ''
1047
-            );
1048
-        }
1049
-        // category filter
1050
-        $filters[] = $this->category_dropdown();
1051
-        return array_merge($old_filters, $filters);
1052
-    }
1053
-
1054
-
1055
-    /**
1056
-     * espresso_event_months_dropdown
1057
-     *
1058
-     * @access public
1059
-     * @return string                dropdown listing month/year selections for events.
1060
-     */
1061
-    public function espresso_event_months_dropdown()
1062
-    {
1063
-        // what we need to do is get all PRIMARY datetimes for all events to filter on.
1064
-        // Note we need to include any other filters that are set!
1065
-        $status = isset($this->_req_data['status']) ? $this->_req_data['status'] : null;
1066
-        // categories?
1067
-        $category = isset($this->_req_data['EVT_CAT']) && $this->_req_data['EVT_CAT'] > 0
1068
-            ? $this->_req_data['EVT_CAT']
1069
-            : null;
1070
-        // active status?
1071
-        $active_status = isset($this->_req_data['active_status']) ? $this->_req_data['active_status'] : null;
1072
-        $cur_date = isset($this->_req_data['month_range']) ? $this->_req_data['month_range'] : '';
1073
-        return EEH_Form_Fields::generate_event_months_dropdown($cur_date, $status, $category, $active_status);
1074
-    }
1075
-
1076
-
1077
-    /**
1078
-     * returns a list of "active" statuses on the event
1079
-     *
1080
-     * @param  string $current_value whatever the current active status is
1081
-     * @return string
1082
-     */
1083
-    public function active_status_dropdown($current_value = '')
1084
-    {
1085
-        $select_name = 'active_status';
1086
-        $values = array(
1087
-            'none'     => esc_html__('Show Active/Inactive', 'event_espresso'),
1088
-            'active'   => esc_html__('Active', 'event_espresso'),
1089
-            'upcoming' => esc_html__('Upcoming', 'event_espresso'),
1090
-            'expired'  => esc_html__('Expired', 'event_espresso'),
1091
-            'inactive' => esc_html__('Inactive', 'event_espresso'),
1092
-        );
1093
-
1094
-        return EEH_Form_Fields::select_input($select_name, $values, $current_value, '', 'wide');
1095
-    }
1096
-
1097
-
1098
-    /**
1099
-     * returns a list of "venues"
1100
-     *
1101
-     * @param string $current_value whatever the current active status is
1102
-     * @return string
1103
-     * @throws EE_Error
1104
-     * @throws InvalidArgumentException
1105
-     * @throws InvalidDataTypeException
1106
-     * @throws InvalidInterfaceException
1107
-     * @throws ReflectionException
1108
-     */
1109
-    protected function venuesDropdown($current_value = '')
1110
-    {
1111
-        $select_name = 'venue';
1112
-        $values = array(
1113
-            '' => esc_html__('All Venues', 'event_espresso'),
1114
-        );
1115
-        // populate the list of venues.
1116
-        $venue_model = EE_Registry::instance()->load_model('Venue');
1117
-        $venues = $venue_model->get_all(array('order_by' => array('VNU_name' => 'ASC')));
1118
-
1119
-        foreach ($venues as $venue) {
1120
-            $values[ $venue->ID() ] = $venue->name();
1121
-        }
1122
-
1123
-        return EEH_Form_Fields::select_input($select_name, $values, $current_value, '', 'wide');
1124
-    }
1125
-
1126
-
1127
-    /**
1128
-     * output a dropdown of the categories for the category filter on the event admin list table
1129
-     *
1130
-     * @access  public
1131
-     * @return string html
1132
-     */
1133
-    public function category_dropdown()
1134
-    {
1135
-        $cur_cat = isset($this->_req_data['EVT_CAT']) ? $this->_req_data['EVT_CAT'] : -1;
1136
-        return EEH_Form_Fields::generate_event_category_dropdown($cur_cat);
1137
-    }
1138
-
1139
-
1140
-    /**
1141
-     * get total number of events today
1142
-     *
1143
-     * @access public
1144
-     * @return int
1145
-     * @throws EE_Error
1146
-     * @throws InvalidArgumentException
1147
-     * @throws InvalidDataTypeException
1148
-     * @throws InvalidInterfaceException
1149
-     */
1150
-    public function total_events_today()
1151
-    {
1152
-        $start = EEM_Datetime::instance()->convert_datetime_for_query(
1153
-            'DTT_EVT_start',
1154
-            date('Y-m-d') . ' 00:00:00',
1155
-            'Y-m-d H:i:s',
1156
-            'UTC'
1157
-        );
1158
-        $end = EEM_Datetime::instance()->convert_datetime_for_query(
1159
-            'DTT_EVT_start',
1160
-            date('Y-m-d') . ' 23:59:59',
1161
-            'Y-m-d H:i:s',
1162
-            'UTC'
1163
-        );
1164
-        $where = array(
1165
-            'Datetime.DTT_EVT_start' => array('BETWEEN', array($start, $end)),
1166
-        );
1167
-        $count = EEM_Event::instance()->count(array($where, 'caps' => 'read_admin'), 'EVT_ID', true);
1168
-        return $count;
1169
-    }
1170
-
1171
-
1172
-    /**
1173
-     * get total number of events this month
1174
-     *
1175
-     * @access public
1176
-     * @return int
1177
-     * @throws EE_Error
1178
-     * @throws InvalidArgumentException
1179
-     * @throws InvalidDataTypeException
1180
-     * @throws InvalidInterfaceException
1181
-     */
1182
-    public function total_events_this_month()
1183
-    {
1184
-        // Dates
1185
-        $this_year_r = date('Y');
1186
-        $this_month_r = date('m');
1187
-        $days_this_month = date('t');
1188
-        $start = EEM_Datetime::instance()->convert_datetime_for_query(
1189
-            'DTT_EVT_start',
1190
-            $this_year_r . '-' . $this_month_r . '-01 00:00:00',
1191
-            'Y-m-d H:i:s',
1192
-            'UTC'
1193
-        );
1194
-        $end = EEM_Datetime::instance()->convert_datetime_for_query(
1195
-            'DTT_EVT_start',
1196
-            $this_year_r . '-' . $this_month_r . '-' . $days_this_month . ' 23:59:59',
1197
-            'Y-m-d H:i:s',
1198
-            'UTC'
1199
-        );
1200
-        $where = array(
1201
-            'Datetime.DTT_EVT_start' => array('BETWEEN', array($start, $end)),
1202
-        );
1203
-        $count = EEM_Event::instance()->count(array($where, 'caps' => 'read_admin'), 'EVT_ID', true);
1204
-        return $count;
1205
-    }
1206
-
1207
-
1208
-    /** DEFAULT TICKETS STUFF **/
1209
-
1210
-    /**
1211
-     * Output default tickets list table view.
1212
-     *
1213
-     * @throws DomainException
1214
-     * @throws EE_Error
1215
-     * @throws InvalidArgumentException
1216
-     * @throws InvalidDataTypeException
1217
-     * @throws InvalidInterfaceException
1218
-     */
1219
-    public function _tickets_overview_list_table()
1220
-    {
1221
-        $this->_search_btn_label = esc_html__('Tickets', 'event_espresso');
1222
-        $this->display_admin_list_table_page_with_no_sidebar();
1223
-    }
1224
-
1225
-
1226
-    /**
1227
-     * @param int  $per_page
1228
-     * @param bool $count
1229
-     * @param bool $trashed
1230
-     * @return EE_Soft_Delete_Base_Class[]|int
1231
-     * @throws EE_Error
1232
-     * @throws InvalidArgumentException
1233
-     * @throws InvalidDataTypeException
1234
-     * @throws InvalidInterfaceException
1235
-     */
1236
-    public function get_default_tickets($per_page = 10, $count = false, $trashed = false)
1237
-    {
1238
-        $orderby = empty($this->_req_data['orderby']) ? 'TKT_name' : $this->_req_data['orderby'];
1239
-        $order = empty($this->_req_data['order']) ? 'ASC' : $this->_req_data['order'];
1240
-        switch ($orderby) {
1241
-            case 'TKT_name':
1242
-                $orderby = array('TKT_name' => $order);
1243
-                break;
1244
-            case 'TKT_price':
1245
-                $orderby = array('TKT_price' => $order);
1246
-                break;
1247
-            case 'TKT_uses':
1248
-                $orderby = array('TKT_uses' => $order);
1249
-                break;
1250
-            case 'TKT_min':
1251
-                $orderby = array('TKT_min' => $order);
1252
-                break;
1253
-            case 'TKT_max':
1254
-                $orderby = array('TKT_max' => $order);
1255
-                break;
1256
-            case 'TKT_qty':
1257
-                $orderby = array('TKT_qty' => $order);
1258
-                break;
1259
-        }
1260
-        $current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
1261
-            ? $this->_req_data['paged']
1262
-            : 1;
1263
-        $per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
1264
-            ? $this->_req_data['perpage']
1265
-            : $per_page;
1266
-        $_where = array(
1267
-            'TKT_is_default' => 1,
1268
-            'TKT_deleted'    => $trashed,
1269
-        );
1270
-        $offset = ($current_page - 1) * $per_page;
1271
-        $limit = array($offset, $per_page);
1272
-        if (isset($this->_req_data['s'])) {
1273
-            $sstr = '%' . $this->_req_data['s'] . '%';
1274
-            $_where['OR'] = array(
1275
-                'TKT_name'        => array('LIKE', $sstr),
1276
-                'TKT_description' => array('LIKE', $sstr),
1277
-            );
1278
-        }
1279
-        $query_params = array(
1280
-            $_where,
1281
-            'order_by' => $orderby,
1282
-            'limit'    => $limit,
1283
-            'group_by' => 'TKT_ID',
1284
-        );
1285
-        if ($count) {
1286
-            return EEM_Ticket::instance()->count_deleted_and_undeleted(array($_where));
1287
-        } else {
1288
-            return EEM_Ticket::instance()->get_all_deleted_and_undeleted($query_params);
1289
-        }
1290
-    }
1291
-
1292
-
1293
-    /**
1294
-     * @param bool $trash
1295
-     * @throws EE_Error
1296
-     * @throws InvalidArgumentException
1297
-     * @throws InvalidDataTypeException
1298
-     * @throws InvalidInterfaceException
1299
-     */
1300
-    protected function _trash_or_restore_ticket($trash = false)
1301
-    {
1302
-        $success = 1;
1303
-        $TKT = EEM_Ticket::instance();
1304
-        // checkboxes?
1305
-        if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1306
-            // if array has more than one element then success message should be plural
1307
-            $success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1308
-            // cycle thru the boxes
1309
-            foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1310
-                if ($trash) {
1311
-                    if (! $TKT->delete_by_ID($TKT_ID)) {
1312
-                        $success = 0;
1313
-                    }
1314
-                } elseif (! $TKT->restore_by_ID($TKT_ID)) {
1315
-                    $success = 0;
1316
-                }
1317
-            }
1318
-        } else {
1319
-            // grab single id and trash
1320
-            $TKT_ID = absint($this->_req_data['TKT_ID']);
1321
-            if ($trash) {
1322
-                if (! $TKT->delete_by_ID($TKT_ID)) {
1323
-                    $success = 0;
1324
-                }
1325
-            } elseif (! $TKT->restore_by_ID($TKT_ID)) {
1326
-                $success = 0;
1327
-            }
1328
-        }
1329
-        $action_desc = $trash ? 'moved to the trash' : 'restored';
1330
-        $query_args = array(
1331
-            'action' => 'ticket_list_table',
1332
-            'status' => $trash ? '' : 'trashed',
1333
-        );
1334
-        $this->_redirect_after_action($success, 'Tickets', $action_desc, $query_args);
1335
-    }
1336
-
1337
-
1338
-    /**
1339
-     * Handles trashing default ticket.
1340
-     *
1341
-     * @throws EE_Error
1342
-     * @throws InvalidArgumentException
1343
-     * @throws InvalidDataTypeException
1344
-     * @throws InvalidInterfaceException
1345
-     * @throws ReflectionException
1346
-     */
1347
-    protected function _delete_ticket()
1348
-    {
1349
-        $success = 1;
1350
-        // checkboxes?
1351
-        if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1352
-            // if array has more than one element then success message should be plural
1353
-            $success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1354
-            // cycle thru the boxes
1355
-            foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1356
-                // delete
1357
-                if (! $this->_delete_the_ticket($TKT_ID)) {
1358
-                    $success = 0;
1359
-                }
1360
-            }
1361
-        } else {
1362
-            // grab single id and trash
1363
-            $TKT_ID = absint($this->_req_data['TKT_ID']);
1364
-            if (! $this->_delete_the_ticket($TKT_ID)) {
1365
-                $success = 0;
1366
-            }
1367
-        }
1368
-        $action_desc = 'deleted';
1369
-        $query_args = array(
1370
-            'action' => 'ticket_list_table',
1371
-            'status' => 'trashed',
1372
-        );
1373
-        // fail safe.  If the default ticket count === 1 then we need to redirect to event overview.
1374
-        if (EEM_Ticket::instance()->count_deleted_and_undeleted(
1375
-            array(array('TKT_is_default' => 1)),
1376
-            'TKT_ID',
1377
-            true
1378
-        )
1379
-        ) {
1380
-            $query_args = array();
1381
-        }
1382
-        $this->_redirect_after_action($success, 'Tickets', $action_desc, $query_args);
1383
-    }
1384
-
1385
-
1386
-    /**
1387
-     * @param int $TKT_ID
1388
-     * @return bool|int
1389
-     * @throws EE_Error
1390
-     * @throws InvalidArgumentException
1391
-     * @throws InvalidDataTypeException
1392
-     * @throws InvalidInterfaceException
1393
-     * @throws ReflectionException
1394
-     */
1395
-    protected function _delete_the_ticket($TKT_ID)
1396
-    {
1397
-        $tkt = EEM_Ticket::instance()->get_one_by_ID($TKT_ID);
1398
-        $tkt->_remove_relations('Datetime');
1399
-        // delete all related prices first
1400
-        $tkt->delete_related_permanently('Price');
1401
-        return $tkt->delete_permanently();
1402
-    }
20
+	/**
21
+	 * @var AdvancedEditorAdminFormSection
22
+	 */
23
+	protected $advanced_editor_admin_form;
24
+	/**
25
+	 * @var AdvancedEditorEntityData
26
+	 */
27
+	protected $advanced_editor_data;
28
+
29
+
30
+	/**
31
+	 * Extend_Events_Admin_Page constructor.
32
+	 *
33
+	 * @param bool $routing
34
+	 * @throws EE_Error
35
+	 * @throws InvalidArgumentException
36
+	 * @throws InvalidDataTypeException
37
+	 * @throws InvalidInterfaceException
38
+	 * @throws ReflectionException
39
+	 */
40
+	public function __construct($routing = true)
41
+	{
42
+		if (! defined('EVENTS_CAF_TEMPLATE_PATH')) {
43
+			define('EVENTS_CAF_TEMPLATE_PATH', EE_CORE_CAF_ADMIN_EXTEND . 'events/templates/');
44
+			define('EVENTS_CAF_ASSETS', EE_CORE_CAF_ADMIN_EXTEND . 'events/assets/');
45
+			define('EVENTS_CAF_ASSETS_URL', EE_CORE_CAF_ADMIN_EXTEND_URL . 'events/assets/');
46
+		}
47
+		parent::__construct($routing);
48
+		if (isset($this->_req_data['action'])
49
+			&& (
50
+				$this->_req_data['action'] === 'default_event_settings'
51
+				|| $this->_req_data['action'] === 'update_default_event_settings'
52
+			)
53
+		) {
54
+			$this->advanced_editor_admin_form = $this->loader->getShared(
55
+				'EventEspresso\core\domain\services\admin\events\default_settings\AdvancedEditorAdminFormSection'
56
+			);
57
+		}
58
+		if (isset($this->_req_data['action'])
59
+			&& ( $this->_req_data['action'] === 'edit' || $this->_req_data['action'] === 'create_new')
60
+		) {
61
+			$this->advanced_editor_data = $this->loader->getShared(
62
+				'EventEspresso\core\domain\services\admin\events\editor\AdvancedEditorEntityData'
63
+			);
64
+		}
65
+	}
66
+
67
+
68
+	/**
69
+	 * Sets routes.
70
+	 *
71
+	 * @throws EE_Error
72
+	 * @throws InvalidArgumentException
73
+	 * @throws InvalidDataTypeException
74
+	 * @throws InvalidInterfaceException
75
+	 * @since $VID:$
76
+	 */
77
+	protected function _extend_page_config()
78
+	{
79
+		$this->_admin_base_path = EE_CORE_CAF_ADMIN_EXTEND . 'events';
80
+		// is there a evt_id in the request?
81
+		$evt_id = ! empty($this->_req_data['EVT_ID']) && ! is_array($this->_req_data['EVT_ID'])
82
+			? $this->_req_data['EVT_ID']
83
+			: 0;
84
+		$evt_id = ! empty($this->_req_data['post']) ? $this->_req_data['post'] : $evt_id;
85
+		// tkt_id?
86
+		$tkt_id = ! empty($this->_req_data['TKT_ID']) && ! is_array($this->_req_data['TKT_ID'])
87
+			? $this->_req_data['TKT_ID']
88
+			: 0;
89
+		$new_page_routes = array(
90
+			'duplicate_event'          => array(
91
+				'func'       => '_duplicate_event',
92
+				'capability' => 'ee_edit_event',
93
+				'obj_id'     => $evt_id,
94
+				'noheader'   => true,
95
+			),
96
+			'ticket_list_table'        => array(
97
+				'func'       => '_tickets_overview_list_table',
98
+				'capability' => 'ee_read_default_tickets',
99
+			),
100
+			'trash_ticket'             => array(
101
+				'func'       => '_trash_or_restore_ticket',
102
+				'capability' => 'ee_delete_default_ticket',
103
+				'obj_id'     => $tkt_id,
104
+				'noheader'   => true,
105
+				'args'       => array('trash' => true),
106
+			),
107
+			'trash_tickets'            => array(
108
+				'func'       => '_trash_or_restore_ticket',
109
+				'capability' => 'ee_delete_default_tickets',
110
+				'noheader'   => true,
111
+				'args'       => array('trash' => true),
112
+			),
113
+			'restore_ticket'           => array(
114
+				'func'       => '_trash_or_restore_ticket',
115
+				'capability' => 'ee_delete_default_ticket',
116
+				'obj_id'     => $tkt_id,
117
+				'noheader'   => true,
118
+			),
119
+			'restore_tickets'          => array(
120
+				'func'       => '_trash_or_restore_ticket',
121
+				'capability' => 'ee_delete_default_tickets',
122
+				'noheader'   => true,
123
+			),
124
+			'delete_ticket'            => array(
125
+				'func'       => '_delete_ticket',
126
+				'capability' => 'ee_delete_default_ticket',
127
+				'obj_id'     => $tkt_id,
128
+				'noheader'   => true,
129
+			),
130
+			'delete_tickets'           => array(
131
+				'func'       => '_delete_ticket',
132
+				'capability' => 'ee_delete_default_tickets',
133
+				'noheader'   => true,
134
+			),
135
+			'import_page'              => array(
136
+				'func'       => '_import_page',
137
+				'capability' => 'import',
138
+			),
139
+			'import'                   => array(
140
+				'func'       => '_import_events',
141
+				'capability' => 'import',
142
+				'noheader'   => true,
143
+			),
144
+			'import_events'            => array(
145
+				'func'       => '_import_events',
146
+				'capability' => 'import',
147
+				'noheader'   => true,
148
+			),
149
+			'export_events'            => array(
150
+				'func'       => '_events_export',
151
+				'capability' => 'export',
152
+				'noheader'   => true,
153
+			),
154
+			'export_categories'        => array(
155
+				'func'       => '_categories_export',
156
+				'capability' => 'export',
157
+				'noheader'   => true,
158
+			),
159
+			'sample_export_file'       => array(
160
+				'func'       => '_sample_export_file',
161
+				'capability' => 'export',
162
+				'noheader'   => true,
163
+			),
164
+			'update_template_settings' => array(
165
+				'func'       => '_update_template_settings',
166
+				'capability' => 'manage_options',
167
+				'noheader'   => true,
168
+			),
169
+		);
170
+		$this->_page_routes = array_merge($this->_page_routes, $new_page_routes);
171
+		// partial route/config override
172
+		$this->_page_config['import_events']['metaboxes'] = $this->_default_espresso_metaboxes;
173
+		$this->_page_config['create_new']['metaboxes'][] = '_premium_event_editor_meta_boxes';
174
+		$this->_page_config['create_new']['qtips'][] = 'EE_Event_Editor_Tips';
175
+		$this->_page_config['edit']['qtips'][] = 'EE_Event_Editor_Tips';
176
+		$this->_page_config['edit']['metaboxes'][] = '_premium_event_editor_meta_boxes';
177
+		$this->_page_config['default']['list_table'] = 'Extend_Events_Admin_List_Table';
178
+		// add tickets tab but only if there are more than one default ticket!
179
+		$tkt_count = EEM_Ticket::instance()->count_deleted_and_undeleted(
180
+			array(array('TKT_is_default' => 1)),
181
+			'TKT_ID',
182
+			true
183
+		);
184
+		if ($tkt_count > 1) {
185
+			$new_page_config = array(
186
+				'ticket_list_table' => array(
187
+					'nav'           => array(
188
+						'label' => esc_html__('Default Tickets', 'event_espresso'),
189
+						'order' => 60,
190
+					),
191
+					'list_table'    => 'Tickets_List_Table',
192
+					'require_nonce' => false,
193
+				),
194
+			);
195
+		}
196
+		// template settings
197
+		$new_page_config['template_settings'] = array(
198
+			'nav'           => array(
199
+				'label' => esc_html__('Templates', 'event_espresso'),
200
+				'order' => 30,
201
+			),
202
+			'metaboxes'     => array_merge($this->_default_espresso_metaboxes, array('_publish_post_box')),
203
+			'help_tabs'     => array(
204
+				'general_settings_templates_help_tab' => array(
205
+					'title'    => esc_html__('Templates', 'event_espresso'),
206
+					'filename' => 'general_settings_templates',
207
+				),
208
+			),
209
+			'help_tour'     => array('Templates_Help_Tour'),
210
+			'require_nonce' => false,
211
+		);
212
+		$this->_page_config = array_merge($this->_page_config, $new_page_config);
213
+		// add filters and actions
214
+		// modifying _views
215
+		add_filter(
216
+			'FHEE_event_datetime_metabox_add_additional_date_time_template',
217
+			array($this, 'add_additional_datetime_button'),
218
+			10,
219
+			2
220
+		);
221
+		add_filter(
222
+			'FHEE_event_datetime_metabox_clone_button_template',
223
+			array($this, 'add_datetime_clone_button'),
224
+			10,
225
+			2
226
+		);
227
+		add_filter(
228
+			'FHEE_event_datetime_metabox_timezones_template',
229
+			array($this, 'datetime_timezones_template'),
230
+			10,
231
+			2
232
+		);
233
+		// filters for event list table
234
+		add_filter('FHEE__Extend_Events_Admin_List_Table__filters', array($this, 'list_table_filters'), 10, 2);
235
+		add_filter(
236
+			'FHEE__Events_Admin_List_Table__column_actions__action_links',
237
+			array($this, 'extra_list_table_actions'),
238
+			10,
239
+			2
240
+		);
241
+		// legend item
242
+		add_filter('FHEE__Events_Admin_Page___event_legend_items__items', array($this, 'additional_legend_items'));
243
+		add_action('admin_init', array($this, 'admin_init'));
244
+	}
245
+
246
+
247
+	/**
248
+	 * admin_init
249
+	 */
250
+	public function admin_init()
251
+	{
252
+		EE_Registry::$i18n_js_strings = array_merge(
253
+			EE_Registry::$i18n_js_strings,
254
+			array(
255
+				'image_confirm'          => esc_html__(
256
+					'Do you really want to delete this image? Please remember to update your event to complete the removal.',
257
+					'event_espresso'
258
+				),
259
+				'event_starts_on'        => esc_html__('Event Starts on', 'event_espresso'),
260
+				'event_ends_on'          => esc_html__('Event Ends on', 'event_espresso'),
261
+				'event_datetime_actions' => esc_html__('Actions', 'event_espresso'),
262
+				'event_clone_dt_msg'     => esc_html__('Clone this Event Date and Time', 'event_espresso'),
263
+				'remove_event_dt_msg'    => esc_html__('Remove this Event Time', 'event_espresso'),
264
+			)
265
+		);
266
+	}
267
+
268
+
269
+	/**
270
+	 * Add per page screen options to the default ticket list table view.
271
+	 *
272
+	 * @throws InvalidArgumentException
273
+	 * @throws InvalidDataTypeException
274
+	 * @throws InvalidInterfaceException
275
+	 */
276
+	protected function _add_screen_options_ticket_list_table()
277
+	{
278
+		$this->_per_page_screen_option();
279
+	}
280
+
281
+
282
+	/**
283
+	 * @param string $return
284
+	 * @param int    $id
285
+	 * @param string $new_title
286
+	 * @param string $new_slug
287
+	 * @return string
288
+	 */
289
+	public function extra_permalink_field_buttons($return, $id, $new_title, $new_slug)
290
+	{
291
+		$return = parent::extra_permalink_field_buttons($return, $id, $new_title, $new_slug);
292
+		// make sure this is only when editing
293
+		if (! empty($id)) {
294
+			$href = EE_Admin_Page::add_query_args_and_nonce(
295
+				array('action' => 'duplicate_event', 'EVT_ID' => $id),
296
+				$this->_admin_base_url
297
+			);
298
+			$title = esc_attr__('Duplicate Event', 'event_espresso');
299
+			$return .= '<a href="'
300
+					   . $href
301
+					   . '" title="'
302
+					   . $title
303
+					   . '" id="ee-duplicate-event-button" class="button button-small"  value="duplicate_event">'
304
+					   . $title
305
+					   . '</a>';
306
+		}
307
+		return $return;
308
+	}
309
+
310
+
311
+	/**
312
+	 * Set the list table views for the default ticket list table view.
313
+	 */
314
+	public function _set_list_table_views_ticket_list_table()
315
+	{
316
+		$this->_views = array(
317
+			'all'     => array(
318
+				'slug'        => 'all',
319
+				'label'       => esc_html__('All', 'event_espresso'),
320
+				'count'       => 0,
321
+				'bulk_action' => array(
322
+					'trash_tickets' => esc_html__('Move to Trash', 'event_espresso'),
323
+				),
324
+			),
325
+			'trashed' => array(
326
+				'slug'        => 'trashed',
327
+				'label'       => esc_html__('Trash', 'event_espresso'),
328
+				'count'       => 0,
329
+				'bulk_action' => array(
330
+					'restore_tickets' => esc_html__('Restore from Trash', 'event_espresso'),
331
+					'delete_tickets'  => esc_html__('Delete Permanently', 'event_espresso'),
332
+				),
333
+			),
334
+		);
335
+	}
336
+
337
+
338
+	/**
339
+	 * Enqueue scripts and styles for the event editor.
340
+	 */
341
+	public function load_scripts_styles_edit()
342
+	{
343
+		wp_register_script(
344
+			'ee-event-editor-heartbeat',
345
+			EVENTS_CAF_ASSETS_URL . 'event-editor-heartbeat.js',
346
+			array('ee_admin_js', 'heartbeat'),
347
+			EVENT_ESPRESSO_VERSION,
348
+			true
349
+		);
350
+		wp_enqueue_script('ee-accounting');
351
+		// styles
352
+		wp_enqueue_style('espresso-ui-theme');
353
+		wp_enqueue_script('event_editor_js');
354
+		wp_enqueue_script('ee-event-editor-heartbeat');
355
+	}
356
+
357
+
358
+	/**
359
+	 * Returns template for the additional datetime.
360
+	 *
361
+	 * @param $template
362
+	 * @param $template_args
363
+	 * @return mixed
364
+	 * @throws DomainException
365
+	 */
366
+	public function add_additional_datetime_button($template, $template_args)
367
+	{
368
+		return EEH_Template::display_template(
369
+			EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_add_additional_time.template.php',
370
+			$template_args,
371
+			true
372
+		);
373
+	}
374
+
375
+
376
+	/**
377
+	 * Returns the template for cloning a datetime.
378
+	 *
379
+	 * @param $template
380
+	 * @param $template_args
381
+	 * @return mixed
382
+	 * @throws DomainException
383
+	 */
384
+	public function add_datetime_clone_button($template, $template_args)
385
+	{
386
+		return EEH_Template::display_template(
387
+			EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_metabox_clone_button.template.php',
388
+			$template_args,
389
+			true
390
+		);
391
+	}
392
+
393
+
394
+	/**
395
+	 * Returns the template for datetime timezones.
396
+	 *
397
+	 * @param $template
398
+	 * @param $template_args
399
+	 * @return mixed
400
+	 * @throws DomainException
401
+	 */
402
+	public function datetime_timezones_template($template, $template_args)
403
+	{
404
+		return EEH_Template::display_template(
405
+			EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_timezones.template.php',
406
+			$template_args,
407
+			true
408
+		);
409
+	}
410
+
411
+
412
+	/**
413
+	 * Sets the views for the default list table view.
414
+	 */
415
+	protected function _set_list_table_views_default()
416
+	{
417
+		parent::_set_list_table_views_default();
418
+		$new_views = array(
419
+			'today' => array(
420
+				'slug'        => 'today',
421
+				'label'       => esc_html__('Today', 'event_espresso'),
422
+				'count'       => $this->total_events_today(),
423
+				'bulk_action' => array(
424
+					'trash_events' => esc_html__('Move to Trash', 'event_espresso'),
425
+				),
426
+			),
427
+			'month' => array(
428
+				'slug'        => 'month',
429
+				'label'       => esc_html__('This Month', 'event_espresso'),
430
+				'count'       => $this->total_events_this_month(),
431
+				'bulk_action' => array(
432
+					'trash_events' => esc_html__('Move to Trash', 'event_espresso'),
433
+				),
434
+			),
435
+		);
436
+		$this->_views = array_merge($this->_views, $new_views);
437
+	}
438
+
439
+
440
+	/**
441
+	 * Returns the extra action links for the default list table view.
442
+	 *
443
+	 * @param array    $action_links
444
+	 * @param EE_Event $event
445
+	 * @return array
446
+	 * @throws EE_Error
447
+	 * @throws InvalidArgumentException
448
+	 * @throws InvalidDataTypeException
449
+	 * @throws InvalidInterfaceException
450
+	 * @throws ReflectionException
451
+	 */
452
+	public function extra_list_table_actions(array $action_links, EE_Event $event)
453
+	{
454
+		if (EE_Registry::instance()->CAP->current_user_can(
455
+			'ee_read_registrations',
456
+			'espresso_registrations_reports',
457
+			$event->ID()
458
+		)
459
+		) {
460
+			$reports_query_args = array(
461
+				'action' => 'reports',
462
+				'EVT_ID' => $event->ID(),
463
+			);
464
+			$reports_link = EE_Admin_Page::add_query_args_and_nonce($reports_query_args, REG_ADMIN_URL);
465
+			$action_links[] = '<a href="'
466
+							  . $reports_link
467
+							  . '" title="'
468
+							  . esc_attr__('View Report', 'event_espresso')
469
+							  . '"><div class="dashicons dashicons-chart-bar"></div></a>'
470
+							  . "\n\t";
471
+		}
472
+		if (EE_Registry::instance()->CAP->current_user_can('ee_read_global_messages', 'view_filtered_messages')) {
473
+			EE_Registry::instance()->load_helper('MSG_Template');
474
+			$action_links[] = EEH_MSG_Template::get_message_action_link(
475
+				'see_notifications_for',
476
+				null,
477
+				array('EVT_ID' => $event->ID())
478
+			);
479
+		}
480
+		return $action_links;
481
+	}
482
+
483
+
484
+	/**
485
+	 * @param $items
486
+	 * @return mixed
487
+	 */
488
+	public function additional_legend_items($items)
489
+	{
490
+		if (EE_Registry::instance()->CAP->current_user_can(
491
+			'ee_read_registrations',
492
+			'espresso_registrations_reports'
493
+		)
494
+		) {
495
+			$items['reports'] = array(
496
+				'class' => 'dashicons dashicons-chart-bar',
497
+				'desc'  => esc_html__('Event Reports', 'event_espresso'),
498
+			);
499
+		}
500
+		if (EE_Registry::instance()->CAP->current_user_can('ee_read_global_messages', 'view_filtered_messages')) {
501
+			$related_for_icon = EEH_MSG_Template::get_message_action_icon('see_notifications_for');
502
+			// $related_for_icon can sometimes be a string so 'css_class' would be an illegal offset
503
+			// (can only use numeric offsets when treating strings as arrays)
504
+			if (is_array($related_for_icon) && isset($related_for_icon['css_class'], $related_for_icon['label'])) {
505
+				$items['view_related_messages'] = array(
506
+					'class' => $related_for_icon['css_class'],
507
+					'desc'  => $related_for_icon['label'],
508
+				);
509
+			}
510
+		}
511
+		return $items;
512
+	}
513
+
514
+
515
+	/**
516
+	 * This is the callback method for the duplicate event route
517
+	 * Method looks for 'EVT_ID' in the request and retrieves that event and its details and duplicates them
518
+	 * into a new event.  We add a hook so that any plugins that add extra event details can hook into this
519
+	 * action.  Note that the dupe will have **DUPLICATE** as its title and slug.
520
+	 * After duplication the redirect is to the new event edit page.
521
+	 *
522
+	 * @return void
523
+	 * @throws EE_Error If EE_Event is not available with given ID
524
+	 * @throws InvalidArgumentException
525
+	 * @throws InvalidDataTypeException
526
+	 * @throws InvalidInterfaceException
527
+	 * @throws ReflectionException
528
+	 * @access protected
529
+	 */
530
+	protected function _duplicate_event()
531
+	{
532
+		// first make sure the ID for the event is in the request.
533
+		//  If it isn't then we need to bail and redirect back to overview list table (cause how did we get here?)
534
+		if (! isset($this->_req_data['EVT_ID'])) {
535
+			EE_Error::add_error(
536
+				esc_html__(
537
+					'In order to duplicate an event an Event ID is required.  None was given.',
538
+					'event_espresso'
539
+				),
540
+				__FILE__,
541
+				__FUNCTION__,
542
+				__LINE__
543
+			);
544
+			$this->_redirect_after_action(false, '', '', array(), true);
545
+			return;
546
+		}
547
+		// k we've got EVT_ID so let's use that to get the event we'll duplicate
548
+		$orig_event = EEM_Event::instance()->get_one_by_ID($this->_req_data['EVT_ID']);
549
+		if (! $orig_event instanceof EE_Event) {
550
+			throw new EE_Error(
551
+				sprintf(
552
+					esc_html__('An EE_Event object could not be retrieved for the given ID (%s)', 'event_espresso'),
553
+					$this->_req_data['EVT_ID']
554
+				)
555
+			);
556
+		}
557
+		// k now let's clone the $orig_event before getting relations
558
+		$new_event = clone $orig_event;
559
+		// original datetimes
560
+		$orig_datetimes = $orig_event->get_many_related('Datetime');
561
+		// other original relations
562
+		$orig_ven = $orig_event->get_many_related('Venue');
563
+		// reset the ID and modify other details to make it clear this is a dupe
564
+		$new_event->set('EVT_ID', 0);
565
+		$new_name = $new_event->name() . ' ' . esc_html__('**DUPLICATE**', 'event_espresso');
566
+		$new_event->set('EVT_name', $new_name);
567
+		$new_event->set(
568
+			'EVT_slug',
569
+			wp_unique_post_slug(
570
+				sanitize_title($orig_event->name()),
571
+				0,
572
+				'publish',
573
+				'espresso_events',
574
+				0
575
+			)
576
+		);
577
+		$new_event->set('status', 'draft');
578
+		// duplicate discussion settings
579
+		$new_event->set('comment_status', $orig_event->get('comment_status'));
580
+		$new_event->set('ping_status', $orig_event->get('ping_status'));
581
+		// save the new event
582
+		$new_event->save();
583
+		// venues
584
+		foreach ($orig_ven as $ven) {
585
+			$new_event->_add_relation_to($ven, 'Venue');
586
+		}
587
+		$new_event->save();
588
+		// now we need to get the question group relations and handle that
589
+		// first primary question groups
590
+		$orig_primary_qgs = $orig_event->get_many_related(
591
+			'Question_Group',
592
+			[['Event_Question_Group.EQG_primary' => true]]
593
+		);
594
+		if (! empty($orig_primary_qgs)) {
595
+			foreach ($orig_primary_qgs as $id => $obj) {
596
+				if ($obj instanceof EE_Question_Group) {
597
+					$new_event->_add_relation_to($obj, 'Question_Group', ['EQG_primary' => true]);
598
+				}
599
+			}
600
+		}
601
+		// next additional attendee question groups
602
+		$orig_additional_qgs = $orig_event->get_many_related(
603
+			'Question_Group',
604
+			[['Event_Question_Group.EQG_additional' => true]]
605
+		);
606
+		if (! empty($orig_additional_qgs)) {
607
+			foreach ($orig_additional_qgs as $id => $obj) {
608
+				if ($obj instanceof EE_Question_Group) {
609
+					$new_event->_add_relation_to($obj, 'Question_Group', ['EQG_additional' => true]);
610
+				}
611
+			}
612
+		}
613
+
614
+		$new_event->save();
615
+
616
+		// k now that we have the new event saved we can loop through the datetimes and start adding relations.
617
+		$cloned_tickets = array();
618
+		foreach ($orig_datetimes as $orig_dtt) {
619
+			if (! $orig_dtt instanceof EE_Datetime) {
620
+				continue;
621
+			}
622
+			$new_dtt = clone $orig_dtt;
623
+			$orig_tkts = $orig_dtt->tickets();
624
+			// save new dtt then add to event
625
+			$new_dtt->set('DTT_ID', 0);
626
+			$new_dtt->set('DTT_sold', 0);
627
+			$new_dtt->set_reserved(0);
628
+			$new_dtt->save();
629
+			$new_event->_add_relation_to($new_dtt, 'Datetime');
630
+			$new_event->save();
631
+			// now let's get the ticket relations setup.
632
+			foreach ((array) $orig_tkts as $orig_tkt) {
633
+				// it's possible a datetime will have no tickets so let's verify we HAVE a ticket first.
634
+				if (! $orig_tkt instanceof EE_Ticket) {
635
+					continue;
636
+				}
637
+				// is this ticket archived?  If it is then let's skip
638
+				if ($orig_tkt->get('TKT_deleted')) {
639
+					continue;
640
+				}
641
+				// does this original ticket already exist in the clone_tickets cache?
642
+				//  If so we'll just use the new ticket from it.
643
+				if (isset($cloned_tickets[ $orig_tkt->ID() ])) {
644
+					$new_tkt = $cloned_tickets[ $orig_tkt->ID() ];
645
+				} else {
646
+					$new_tkt = clone $orig_tkt;
647
+					// get relations on the $orig_tkt that we need to setup.
648
+					$orig_prices = $orig_tkt->prices();
649
+					$new_tkt->set('TKT_ID', 0);
650
+					$new_tkt->set('TKT_sold', 0);
651
+					$new_tkt->set('TKT_reserved', 0);
652
+					$new_tkt->save(); // make sure new ticket has ID.
653
+					// price relations on new ticket need to be setup.
654
+					foreach ($orig_prices as $orig_price) {
655
+						$new_price = clone $orig_price;
656
+						$new_price->set('PRC_ID', 0);
657
+						$new_price->save();
658
+						$new_tkt->_add_relation_to($new_price, 'Price');
659
+						$new_tkt->save();
660
+					}
661
+
662
+					do_action(
663
+						'AHEE__Extend_Events_Admin_Page___duplicate_event__duplicate_ticket__after',
664
+						$orig_tkt,
665
+						$new_tkt,
666
+						$orig_prices,
667
+						$orig_event,
668
+						$orig_dtt,
669
+						$new_dtt
670
+					);
671
+				}
672
+				// k now we can add the new ticket as a relation to the new datetime
673
+				// and make sure its added to our cached $cloned_tickets array
674
+				// for use with later datetimes that have the same ticket.
675
+				$new_dtt->_add_relation_to($new_tkt, 'Ticket');
676
+				$new_dtt->save();
677
+				$cloned_tickets[ $orig_tkt->ID() ] = $new_tkt;
678
+			}
679
+		}
680
+		// clone taxonomy information
681
+		$taxonomies_to_clone_with = apply_filters(
682
+			'FHEE__Extend_Events_Admin_Page___duplicate_event__taxonomies_to_clone',
683
+			array('espresso_event_categories', 'espresso_event_type', 'post_tag')
684
+		);
685
+		// get terms for original event (notice)
686
+		$orig_terms = wp_get_object_terms($orig_event->ID(), $taxonomies_to_clone_with);
687
+		// loop through terms and add them to new event.
688
+		foreach ($orig_terms as $term) {
689
+			wp_set_object_terms($new_event->ID(), $term->term_id, $term->taxonomy, true);
690
+		}
691
+
692
+		// duplicate other core WP_Post items for this event.
693
+		// post thumbnail (feature image).
694
+		$feature_image_id = get_post_thumbnail_id($orig_event->ID());
695
+		if ($feature_image_id) {
696
+			update_post_meta($new_event->ID(), '_thumbnail_id', $feature_image_id);
697
+		}
698
+
699
+		// duplicate page_template setting
700
+		$page_template = get_post_meta($orig_event->ID(), '_wp_page_template', true);
701
+		if ($page_template) {
702
+			update_post_meta($new_event->ID(), '_wp_page_template', $page_template);
703
+		}
704
+
705
+		do_action('AHEE__Extend_Events_Admin_Page___duplicate_event__after', $new_event, $orig_event);
706
+		// now let's redirect to the edit page for this duplicated event if we have a new event id.
707
+		if ($new_event->ID()) {
708
+			$redirect_args = array(
709
+				'post'   => $new_event->ID(),
710
+				'action' => 'edit',
711
+			);
712
+			EE_Error::add_success(
713
+				esc_html__(
714
+					'Event successfully duplicated.  Please review the details below and make any necessary edits',
715
+					'event_espresso'
716
+				)
717
+			);
718
+		} else {
719
+			$redirect_args = array(
720
+				'action' => 'default',
721
+			);
722
+			EE_Error::add_error(
723
+				esc_html__('Not able to duplicate event.  Something went wrong.', 'event_espresso'),
724
+				__FILE__,
725
+				__FUNCTION__,
726
+				__LINE__
727
+			);
728
+		}
729
+		$this->_redirect_after_action(false, '', '', $redirect_args, true);
730
+	}
731
+
732
+
733
+	/**
734
+	 * Generates output for the import page.
735
+	 *
736
+	 * @throws DomainException
737
+	 * @throws EE_Error
738
+	 * @throws InvalidArgumentException
739
+	 * @throws InvalidDataTypeException
740
+	 * @throws InvalidInterfaceException
741
+	 */
742
+	protected function _import_page()
743
+	{
744
+		$title = esc_html__('Import', 'event_espresso');
745
+		$intro = esc_html__(
746
+			'If you have a previously exported Event Espresso 4 information in a Comma Separated Value (CSV) file format, you can upload the file here: ',
747
+			'event_espresso'
748
+		);
749
+		$form_url = EVENTS_ADMIN_URL;
750
+		$action = 'import_events';
751
+		$type = 'csv';
752
+		$this->_template_args['form'] = EE_Import::instance()->upload_form(
753
+			$title,
754
+			$intro,
755
+			$form_url,
756
+			$action,
757
+			$type
758
+		);
759
+		$this->_template_args['sample_file_link'] = EE_Admin_Page::add_query_args_and_nonce(
760
+			array('action' => 'sample_export_file'),
761
+			$this->_admin_base_url
762
+		);
763
+		$content = EEH_Template::display_template(
764
+			EVENTS_CAF_TEMPLATE_PATH . 'import_page.template.php',
765
+			$this->_template_args,
766
+			true
767
+		);
768
+		$this->_template_args['admin_page_content'] = $content;
769
+		$this->display_admin_page_with_sidebar();
770
+	}
771
+
772
+
773
+	/**
774
+	 * _import_events
775
+	 * This handles displaying the screen and running imports for importing events.
776
+	 *
777
+	 * @return void
778
+	 * @throws EE_Error
779
+	 * @throws InvalidArgumentException
780
+	 * @throws InvalidDataTypeException
781
+	 * @throws InvalidInterfaceException
782
+	 */
783
+	protected function _import_events()
784
+	{
785
+		require_once(EE_CLASSES . 'EE_Import.class.php');
786
+		$success = EE_Import::instance()->import();
787
+		$this->_redirect_after_action($success, 'Import File', 'ran', array('action' => 'import_page'), true);
788
+	}
789
+
790
+
791
+	/**
792
+	 * _events_export
793
+	 * Will export all (or just the given event) to a Excel compatible file.
794
+	 *
795
+	 * @access protected
796
+	 * @return void
797
+	 */
798
+	protected function _events_export()
799
+	{
800
+		if (isset($this->_req_data['EVT_ID'])) {
801
+			$event_ids = $this->_req_data['EVT_ID'];
802
+		} elseif (isset($this->_req_data['EVT_IDs'])) {
803
+			$event_ids = $this->_req_data['EVT_IDs'];
804
+		} else {
805
+			$event_ids = null;
806
+		}
807
+		// todo: I don't like doing this but it'll do until we modify EE_Export Class.
808
+		$new_request_args = array(
809
+			'export' => 'report',
810
+			'action' => 'all_event_data',
811
+			'EVT_ID' => $event_ids,
812
+		);
813
+		$this->_req_data = array_merge($this->_req_data, $new_request_args);
814
+		if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
815
+			require_once(EE_CLASSES . 'EE_Export.class.php');
816
+			$EE_Export = EE_Export::instance($this->_req_data);
817
+			$EE_Export->export();
818
+		}
819
+	}
820
+
821
+
822
+	/**
823
+	 * handle category exports()
824
+	 *
825
+	 * @return void
826
+	 */
827
+	protected function _categories_export()
828
+	{
829
+		// todo: I don't like doing this but it'll do until we modify EE_Export Class.
830
+		$new_request_args = array(
831
+			'export'       => 'report',
832
+			'action'       => 'categories',
833
+			'category_ids' => $this->_req_data['EVT_CAT_ID'],
834
+		);
835
+		$this->_req_data = array_merge($this->_req_data, $new_request_args);
836
+		if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
837
+			require_once(EE_CLASSES . 'EE_Export.class.php');
838
+			$EE_Export = EE_Export::instance($this->_req_data);
839
+			$EE_Export->export();
840
+		}
841
+	}
842
+
843
+
844
+	/**
845
+	 * Creates a sample CSV file for importing
846
+	 */
847
+	protected function _sample_export_file()
848
+	{
849
+		// require_once(EE_CLASSES . 'EE_Export.class.php');
850
+		EE_Export::instance()->export_sample();
851
+	}
852
+
853
+
854
+	/*************        Template Settings        *************/
855
+	/**
856
+	 * Generates template settings page output
857
+	 *
858
+	 * @throws DomainException
859
+	 * @throws EE_Error
860
+	 * @throws InvalidArgumentException
861
+	 * @throws InvalidDataTypeException
862
+	 * @throws InvalidInterfaceException
863
+	 */
864
+	protected function _template_settings()
865
+	{
866
+		$this->_template_args['values'] = $this->_yes_no_values;
867
+		/**
868
+		 * Note leaving this filter in for backward compatibility this was moved in 4.6.x
869
+		 * from General_Settings_Admin_Page to here.
870
+		 */
871
+		$this->_template_args = apply_filters(
872
+			'FHEE__General_Settings_Admin_Page__template_settings__template_args',
873
+			$this->_template_args
874
+		);
875
+		$this->_set_add_edit_form_tags('update_template_settings');
876
+		$this->_set_publish_post_box_vars(null, false, false, null, false);
877
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
878
+			EVENTS_CAF_TEMPLATE_PATH . 'template_settings.template.php',
879
+			$this->_template_args,
880
+			true
881
+		);
882
+		$this->display_admin_page_with_sidebar();
883
+	}
884
+
885
+
886
+	/**
887
+	 * Handler for updating template settings.
888
+	 *
889
+	 * @throws EE_Error
890
+	 * @throws InvalidArgumentException
891
+	 * @throws InvalidDataTypeException
892
+	 * @throws InvalidInterfaceException
893
+	 */
894
+	protected function _update_template_settings()
895
+	{
896
+		/**
897
+		 * Note leaving this filter in for backward compatibility this was moved in 4.6.x
898
+		 * from General_Settings_Admin_Page to here.
899
+		 */
900
+		EE_Registry::instance()->CFG->template_settings = apply_filters(
901
+			'FHEE__General_Settings_Admin_Page__update_template_settings__data',
902
+			EE_Registry::instance()->CFG->template_settings,
903
+			$this->_req_data
904
+		);
905
+		// update custom post type slugs and detect if we need to flush rewrite rules
906
+		$old_slug = EE_Registry::instance()->CFG->core->event_cpt_slug;
907
+		EE_Registry::instance()->CFG->core->event_cpt_slug = empty($this->_req_data['event_cpt_slug'])
908
+			? EE_Registry::instance()->CFG->core->event_cpt_slug
909
+			: EEH_URL::slugify($this->_req_data['event_cpt_slug'], 'events');
910
+		$what = 'Template Settings';
911
+		$success = $this->_update_espresso_configuration(
912
+			$what,
913
+			EE_Registry::instance()->CFG->template_settings,
914
+			__FILE__,
915
+			__FUNCTION__,
916
+			__LINE__
917
+		);
918
+		if (EE_Registry::instance()->CFG->core->event_cpt_slug !== $old_slug) {
919
+			/** @var EventEspresso\core\domain\services\custom_post_types\RewriteRules $rewrite_rules */
920
+			$rewrite_rules = LoaderFactory::getLoader()->getShared(
921
+				'EventEspresso\core\domain\services\custom_post_types\RewriteRules'
922
+			);
923
+			$rewrite_rules->flush();
924
+		}
925
+		$this->_redirect_after_action($success, $what, 'updated', array('action' => 'template_settings'));
926
+	}
927
+
928
+
929
+	/**
930
+	 * _premium_event_editor_meta_boxes
931
+	 * add all metaboxes related to the event_editor
932
+	 *
933
+	 * @access protected
934
+	 * @return void
935
+	 * @throws EE_Error
936
+	 * @throws InvalidArgumentException
937
+	 * @throws InvalidDataTypeException
938
+	 * @throws InvalidInterfaceException
939
+	 * @throws ReflectionException
940
+	 */
941
+	protected function _premium_event_editor_meta_boxes()
942
+	{
943
+		$this->verify_cpt_object();
944
+		add_meta_box(
945
+			'espresso_event_editor_event_options',
946
+			esc_html__('Event Registration Options', 'event_espresso'),
947
+			array($this, 'registration_options_meta_box'),
948
+			$this->page_slug,
949
+			'side',
950
+			'core'
951
+		);
952
+	}
953
+
954
+
955
+	/**
956
+	 * override caf metabox
957
+	 *
958
+	 * @return void
959
+	 * @throws DomainException
960
+	 * @throws EE_Error
961
+	 */
962
+	public function registration_options_meta_box()
963
+	{
964
+		$yes_no_values = array(
965
+			array('id' => true, 'text' => esc_html__('Yes', 'event_espresso')),
966
+			array('id' => false, 'text' => esc_html__('No', 'event_espresso')),
967
+		);
968
+		$default_reg_status_values = EEM_Registration::reg_status_array(
969
+			array(
970
+				EEM_Registration::status_id_cancelled,
971
+				EEM_Registration::status_id_declined,
972
+				EEM_Registration::status_id_incomplete,
973
+				EEM_Registration::status_id_wait_list,
974
+			),
975
+			true
976
+		);
977
+		$template_args['active_status'] = $this->_cpt_model_obj->pretty_active_status(false);
978
+		$template_args['_event'] = $this->_cpt_model_obj;
979
+		$template_args['additional_limit'] = $this->_cpt_model_obj->additional_limit();
980
+		$template_args['default_registration_status'] = EEH_Form_Fields::select_input(
981
+			'default_reg_status',
982
+			$default_reg_status_values,
983
+			$this->_cpt_model_obj->default_registration_status()
984
+		);
985
+		$template_args['display_description'] = EEH_Form_Fields::select_input(
986
+			'display_desc',
987
+			$yes_no_values,
988
+			$this->_cpt_model_obj->display_description()
989
+		);
990
+		$template_args['display_ticket_selector'] = EEH_Form_Fields::select_input(
991
+			'display_ticket_selector',
992
+			$yes_no_values,
993
+			$this->_cpt_model_obj->display_ticket_selector(),
994
+			'',
995
+			'',
996
+			false
997
+		);
998
+		$template_args['EVT_default_registration_status'] = EEH_Form_Fields::select_input(
999
+			'EVT_default_registration_status',
1000
+			$default_reg_status_values,
1001
+			$this->_cpt_model_obj->default_registration_status()
1002
+		);
1003
+		$template_args['additional_registration_options'] = apply_filters(
1004
+			'FHEE__Events_Admin_Page__registration_options_meta_box__additional_registration_options',
1005
+			'',
1006
+			$template_args,
1007
+			$yes_no_values,
1008
+			$default_reg_status_values
1009
+		);
1010
+		EEH_Template::display_template(
1011
+			EVENTS_CAF_TEMPLATE_PATH . 'event_registration_options.template.php',
1012
+			$template_args
1013
+		);
1014
+	}
1015
+
1016
+
1017
+
1018
+	/**
1019
+	 * wp_list_table_mods for caf
1020
+	 * ============================
1021
+	 */
1022
+	/**
1023
+	 * hook into list table filters and provide filters for caffeinated list table
1024
+	 *
1025
+	 * @param array $old_filters    any existing filters present
1026
+	 * @param array $list_table_obj the list table object
1027
+	 * @return array                  new filters
1028
+	 * @throws EE_Error
1029
+	 * @throws InvalidArgumentException
1030
+	 * @throws InvalidDataTypeException
1031
+	 * @throws InvalidInterfaceException
1032
+	 * @throws ReflectionException
1033
+	 */
1034
+	public function list_table_filters($old_filters, $list_table_obj)
1035
+	{
1036
+		$filters = array();
1037
+		// first month/year filters
1038
+		$filters[] = $this->espresso_event_months_dropdown();
1039
+		$status = isset($this->_req_data['status']) ? $this->_req_data['status'] : null;
1040
+		// active status dropdown
1041
+		if ($status !== 'draft') {
1042
+			$filters[] = $this->active_status_dropdown(
1043
+				isset($this->_req_data['active_status']) ? $this->_req_data['active_status'] : ''
1044
+			);
1045
+			$filters[] = $this->venuesDropdown(
1046
+				isset($this->_req_data['venue']) ? $this->_req_data['venue'] : ''
1047
+			);
1048
+		}
1049
+		// category filter
1050
+		$filters[] = $this->category_dropdown();
1051
+		return array_merge($old_filters, $filters);
1052
+	}
1053
+
1054
+
1055
+	/**
1056
+	 * espresso_event_months_dropdown
1057
+	 *
1058
+	 * @access public
1059
+	 * @return string                dropdown listing month/year selections for events.
1060
+	 */
1061
+	public function espresso_event_months_dropdown()
1062
+	{
1063
+		// what we need to do is get all PRIMARY datetimes for all events to filter on.
1064
+		// Note we need to include any other filters that are set!
1065
+		$status = isset($this->_req_data['status']) ? $this->_req_data['status'] : null;
1066
+		// categories?
1067
+		$category = isset($this->_req_data['EVT_CAT']) && $this->_req_data['EVT_CAT'] > 0
1068
+			? $this->_req_data['EVT_CAT']
1069
+			: null;
1070
+		// active status?
1071
+		$active_status = isset($this->_req_data['active_status']) ? $this->_req_data['active_status'] : null;
1072
+		$cur_date = isset($this->_req_data['month_range']) ? $this->_req_data['month_range'] : '';
1073
+		return EEH_Form_Fields::generate_event_months_dropdown($cur_date, $status, $category, $active_status);
1074
+	}
1075
+
1076
+
1077
+	/**
1078
+	 * returns a list of "active" statuses on the event
1079
+	 *
1080
+	 * @param  string $current_value whatever the current active status is
1081
+	 * @return string
1082
+	 */
1083
+	public function active_status_dropdown($current_value = '')
1084
+	{
1085
+		$select_name = 'active_status';
1086
+		$values = array(
1087
+			'none'     => esc_html__('Show Active/Inactive', 'event_espresso'),
1088
+			'active'   => esc_html__('Active', 'event_espresso'),
1089
+			'upcoming' => esc_html__('Upcoming', 'event_espresso'),
1090
+			'expired'  => esc_html__('Expired', 'event_espresso'),
1091
+			'inactive' => esc_html__('Inactive', 'event_espresso'),
1092
+		);
1093
+
1094
+		return EEH_Form_Fields::select_input($select_name, $values, $current_value, '', 'wide');
1095
+	}
1096
+
1097
+
1098
+	/**
1099
+	 * returns a list of "venues"
1100
+	 *
1101
+	 * @param string $current_value whatever the current active status is
1102
+	 * @return string
1103
+	 * @throws EE_Error
1104
+	 * @throws InvalidArgumentException
1105
+	 * @throws InvalidDataTypeException
1106
+	 * @throws InvalidInterfaceException
1107
+	 * @throws ReflectionException
1108
+	 */
1109
+	protected function venuesDropdown($current_value = '')
1110
+	{
1111
+		$select_name = 'venue';
1112
+		$values = array(
1113
+			'' => esc_html__('All Venues', 'event_espresso'),
1114
+		);
1115
+		// populate the list of venues.
1116
+		$venue_model = EE_Registry::instance()->load_model('Venue');
1117
+		$venues = $venue_model->get_all(array('order_by' => array('VNU_name' => 'ASC')));
1118
+
1119
+		foreach ($venues as $venue) {
1120
+			$values[ $venue->ID() ] = $venue->name();
1121
+		}
1122
+
1123
+		return EEH_Form_Fields::select_input($select_name, $values, $current_value, '', 'wide');
1124
+	}
1125
+
1126
+
1127
+	/**
1128
+	 * output a dropdown of the categories for the category filter on the event admin list table
1129
+	 *
1130
+	 * @access  public
1131
+	 * @return string html
1132
+	 */
1133
+	public function category_dropdown()
1134
+	{
1135
+		$cur_cat = isset($this->_req_data['EVT_CAT']) ? $this->_req_data['EVT_CAT'] : -1;
1136
+		return EEH_Form_Fields::generate_event_category_dropdown($cur_cat);
1137
+	}
1138
+
1139
+
1140
+	/**
1141
+	 * get total number of events today
1142
+	 *
1143
+	 * @access public
1144
+	 * @return int
1145
+	 * @throws EE_Error
1146
+	 * @throws InvalidArgumentException
1147
+	 * @throws InvalidDataTypeException
1148
+	 * @throws InvalidInterfaceException
1149
+	 */
1150
+	public function total_events_today()
1151
+	{
1152
+		$start = EEM_Datetime::instance()->convert_datetime_for_query(
1153
+			'DTT_EVT_start',
1154
+			date('Y-m-d') . ' 00:00:00',
1155
+			'Y-m-d H:i:s',
1156
+			'UTC'
1157
+		);
1158
+		$end = EEM_Datetime::instance()->convert_datetime_for_query(
1159
+			'DTT_EVT_start',
1160
+			date('Y-m-d') . ' 23:59:59',
1161
+			'Y-m-d H:i:s',
1162
+			'UTC'
1163
+		);
1164
+		$where = array(
1165
+			'Datetime.DTT_EVT_start' => array('BETWEEN', array($start, $end)),
1166
+		);
1167
+		$count = EEM_Event::instance()->count(array($where, 'caps' => 'read_admin'), 'EVT_ID', true);
1168
+		return $count;
1169
+	}
1170
+
1171
+
1172
+	/**
1173
+	 * get total number of events this month
1174
+	 *
1175
+	 * @access public
1176
+	 * @return int
1177
+	 * @throws EE_Error
1178
+	 * @throws InvalidArgumentException
1179
+	 * @throws InvalidDataTypeException
1180
+	 * @throws InvalidInterfaceException
1181
+	 */
1182
+	public function total_events_this_month()
1183
+	{
1184
+		// Dates
1185
+		$this_year_r = date('Y');
1186
+		$this_month_r = date('m');
1187
+		$days_this_month = date('t');
1188
+		$start = EEM_Datetime::instance()->convert_datetime_for_query(
1189
+			'DTT_EVT_start',
1190
+			$this_year_r . '-' . $this_month_r . '-01 00:00:00',
1191
+			'Y-m-d H:i:s',
1192
+			'UTC'
1193
+		);
1194
+		$end = EEM_Datetime::instance()->convert_datetime_for_query(
1195
+			'DTT_EVT_start',
1196
+			$this_year_r . '-' . $this_month_r . '-' . $days_this_month . ' 23:59:59',
1197
+			'Y-m-d H:i:s',
1198
+			'UTC'
1199
+		);
1200
+		$where = array(
1201
+			'Datetime.DTT_EVT_start' => array('BETWEEN', array($start, $end)),
1202
+		);
1203
+		$count = EEM_Event::instance()->count(array($where, 'caps' => 'read_admin'), 'EVT_ID', true);
1204
+		return $count;
1205
+	}
1206
+
1207
+
1208
+	/** DEFAULT TICKETS STUFF **/
1209
+
1210
+	/**
1211
+	 * Output default tickets list table view.
1212
+	 *
1213
+	 * @throws DomainException
1214
+	 * @throws EE_Error
1215
+	 * @throws InvalidArgumentException
1216
+	 * @throws InvalidDataTypeException
1217
+	 * @throws InvalidInterfaceException
1218
+	 */
1219
+	public function _tickets_overview_list_table()
1220
+	{
1221
+		$this->_search_btn_label = esc_html__('Tickets', 'event_espresso');
1222
+		$this->display_admin_list_table_page_with_no_sidebar();
1223
+	}
1224
+
1225
+
1226
+	/**
1227
+	 * @param int  $per_page
1228
+	 * @param bool $count
1229
+	 * @param bool $trashed
1230
+	 * @return EE_Soft_Delete_Base_Class[]|int
1231
+	 * @throws EE_Error
1232
+	 * @throws InvalidArgumentException
1233
+	 * @throws InvalidDataTypeException
1234
+	 * @throws InvalidInterfaceException
1235
+	 */
1236
+	public function get_default_tickets($per_page = 10, $count = false, $trashed = false)
1237
+	{
1238
+		$orderby = empty($this->_req_data['orderby']) ? 'TKT_name' : $this->_req_data['orderby'];
1239
+		$order = empty($this->_req_data['order']) ? 'ASC' : $this->_req_data['order'];
1240
+		switch ($orderby) {
1241
+			case 'TKT_name':
1242
+				$orderby = array('TKT_name' => $order);
1243
+				break;
1244
+			case 'TKT_price':
1245
+				$orderby = array('TKT_price' => $order);
1246
+				break;
1247
+			case 'TKT_uses':
1248
+				$orderby = array('TKT_uses' => $order);
1249
+				break;
1250
+			case 'TKT_min':
1251
+				$orderby = array('TKT_min' => $order);
1252
+				break;
1253
+			case 'TKT_max':
1254
+				$orderby = array('TKT_max' => $order);
1255
+				break;
1256
+			case 'TKT_qty':
1257
+				$orderby = array('TKT_qty' => $order);
1258
+				break;
1259
+		}
1260
+		$current_page = isset($this->_req_data['paged']) && ! empty($this->_req_data['paged'])
1261
+			? $this->_req_data['paged']
1262
+			: 1;
1263
+		$per_page = isset($this->_req_data['perpage']) && ! empty($this->_req_data['perpage'])
1264
+			? $this->_req_data['perpage']
1265
+			: $per_page;
1266
+		$_where = array(
1267
+			'TKT_is_default' => 1,
1268
+			'TKT_deleted'    => $trashed,
1269
+		);
1270
+		$offset = ($current_page - 1) * $per_page;
1271
+		$limit = array($offset, $per_page);
1272
+		if (isset($this->_req_data['s'])) {
1273
+			$sstr = '%' . $this->_req_data['s'] . '%';
1274
+			$_where['OR'] = array(
1275
+				'TKT_name'        => array('LIKE', $sstr),
1276
+				'TKT_description' => array('LIKE', $sstr),
1277
+			);
1278
+		}
1279
+		$query_params = array(
1280
+			$_where,
1281
+			'order_by' => $orderby,
1282
+			'limit'    => $limit,
1283
+			'group_by' => 'TKT_ID',
1284
+		);
1285
+		if ($count) {
1286
+			return EEM_Ticket::instance()->count_deleted_and_undeleted(array($_where));
1287
+		} else {
1288
+			return EEM_Ticket::instance()->get_all_deleted_and_undeleted($query_params);
1289
+		}
1290
+	}
1291
+
1292
+
1293
+	/**
1294
+	 * @param bool $trash
1295
+	 * @throws EE_Error
1296
+	 * @throws InvalidArgumentException
1297
+	 * @throws InvalidDataTypeException
1298
+	 * @throws InvalidInterfaceException
1299
+	 */
1300
+	protected function _trash_or_restore_ticket($trash = false)
1301
+	{
1302
+		$success = 1;
1303
+		$TKT = EEM_Ticket::instance();
1304
+		// checkboxes?
1305
+		if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1306
+			// if array has more than one element then success message should be plural
1307
+			$success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1308
+			// cycle thru the boxes
1309
+			foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1310
+				if ($trash) {
1311
+					if (! $TKT->delete_by_ID($TKT_ID)) {
1312
+						$success = 0;
1313
+					}
1314
+				} elseif (! $TKT->restore_by_ID($TKT_ID)) {
1315
+					$success = 0;
1316
+				}
1317
+			}
1318
+		} else {
1319
+			// grab single id and trash
1320
+			$TKT_ID = absint($this->_req_data['TKT_ID']);
1321
+			if ($trash) {
1322
+				if (! $TKT->delete_by_ID($TKT_ID)) {
1323
+					$success = 0;
1324
+				}
1325
+			} elseif (! $TKT->restore_by_ID($TKT_ID)) {
1326
+				$success = 0;
1327
+			}
1328
+		}
1329
+		$action_desc = $trash ? 'moved to the trash' : 'restored';
1330
+		$query_args = array(
1331
+			'action' => 'ticket_list_table',
1332
+			'status' => $trash ? '' : 'trashed',
1333
+		);
1334
+		$this->_redirect_after_action($success, 'Tickets', $action_desc, $query_args);
1335
+	}
1336
+
1337
+
1338
+	/**
1339
+	 * Handles trashing default ticket.
1340
+	 *
1341
+	 * @throws EE_Error
1342
+	 * @throws InvalidArgumentException
1343
+	 * @throws InvalidDataTypeException
1344
+	 * @throws InvalidInterfaceException
1345
+	 * @throws ReflectionException
1346
+	 */
1347
+	protected function _delete_ticket()
1348
+	{
1349
+		$success = 1;
1350
+		// checkboxes?
1351
+		if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1352
+			// if array has more than one element then success message should be plural
1353
+			$success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1354
+			// cycle thru the boxes
1355
+			foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1356
+				// delete
1357
+				if (! $this->_delete_the_ticket($TKT_ID)) {
1358
+					$success = 0;
1359
+				}
1360
+			}
1361
+		} else {
1362
+			// grab single id and trash
1363
+			$TKT_ID = absint($this->_req_data['TKT_ID']);
1364
+			if (! $this->_delete_the_ticket($TKT_ID)) {
1365
+				$success = 0;
1366
+			}
1367
+		}
1368
+		$action_desc = 'deleted';
1369
+		$query_args = array(
1370
+			'action' => 'ticket_list_table',
1371
+			'status' => 'trashed',
1372
+		);
1373
+		// fail safe.  If the default ticket count === 1 then we need to redirect to event overview.
1374
+		if (EEM_Ticket::instance()->count_deleted_and_undeleted(
1375
+			array(array('TKT_is_default' => 1)),
1376
+			'TKT_ID',
1377
+			true
1378
+		)
1379
+		) {
1380
+			$query_args = array();
1381
+		}
1382
+		$this->_redirect_after_action($success, 'Tickets', $action_desc, $query_args);
1383
+	}
1384
+
1385
+
1386
+	/**
1387
+	 * @param int $TKT_ID
1388
+	 * @return bool|int
1389
+	 * @throws EE_Error
1390
+	 * @throws InvalidArgumentException
1391
+	 * @throws InvalidDataTypeException
1392
+	 * @throws InvalidInterfaceException
1393
+	 * @throws ReflectionException
1394
+	 */
1395
+	protected function _delete_the_ticket($TKT_ID)
1396
+	{
1397
+		$tkt = EEM_Ticket::instance()->get_one_by_ID($TKT_ID);
1398
+		$tkt->_remove_relations('Datetime');
1399
+		// delete all related prices first
1400
+		$tkt->delete_related_permanently('Price');
1401
+		return $tkt->delete_permanently();
1402
+	}
1403 1403
 }
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -39,10 +39,10 @@  discard block
 block discarded – undo
39 39
      */
40 40
     public function __construct($routing = true)
41 41
     {
42
-        if (! defined('EVENTS_CAF_TEMPLATE_PATH')) {
43
-            define('EVENTS_CAF_TEMPLATE_PATH', EE_CORE_CAF_ADMIN_EXTEND . 'events/templates/');
44
-            define('EVENTS_CAF_ASSETS', EE_CORE_CAF_ADMIN_EXTEND . 'events/assets/');
45
-            define('EVENTS_CAF_ASSETS_URL', EE_CORE_CAF_ADMIN_EXTEND_URL . 'events/assets/');
42
+        if ( ! defined('EVENTS_CAF_TEMPLATE_PATH')) {
43
+            define('EVENTS_CAF_TEMPLATE_PATH', EE_CORE_CAF_ADMIN_EXTEND.'events/templates/');
44
+            define('EVENTS_CAF_ASSETS', EE_CORE_CAF_ADMIN_EXTEND.'events/assets/');
45
+            define('EVENTS_CAF_ASSETS_URL', EE_CORE_CAF_ADMIN_EXTEND_URL.'events/assets/');
46 46
         }
47 47
         parent::__construct($routing);
48 48
         if (isset($this->_req_data['action'])
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
             );
57 57
         }
58 58
         if (isset($this->_req_data['action'])
59
-            && ( $this->_req_data['action'] === 'edit' || $this->_req_data['action'] === 'create_new')
59
+            && ($this->_req_data['action'] === 'edit' || $this->_req_data['action'] === 'create_new')
60 60
         ) {
61 61
             $this->advanced_editor_data = $this->loader->getShared(
62 62
                 'EventEspresso\core\domain\services\admin\events\editor\AdvancedEditorEntityData'
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
      */
77 77
     protected function _extend_page_config()
78 78
     {
79
-        $this->_admin_base_path = EE_CORE_CAF_ADMIN_EXTEND . 'events';
79
+        $this->_admin_base_path = EE_CORE_CAF_ADMIN_EXTEND.'events';
80 80
         // is there a evt_id in the request?
81 81
         $evt_id = ! empty($this->_req_data['EVT_ID']) && ! is_array($this->_req_data['EVT_ID'])
82 82
             ? $this->_req_data['EVT_ID']
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
     {
291 291
         $return = parent::extra_permalink_field_buttons($return, $id, $new_title, $new_slug);
292 292
         // make sure this is only when editing
293
-        if (! empty($id)) {
293
+        if ( ! empty($id)) {
294 294
             $href = EE_Admin_Page::add_query_args_and_nonce(
295 295
                 array('action' => 'duplicate_event', 'EVT_ID' => $id),
296 296
                 $this->_admin_base_url
@@ -342,7 +342,7 @@  discard block
 block discarded – undo
342 342
     {
343 343
         wp_register_script(
344 344
             'ee-event-editor-heartbeat',
345
-            EVENTS_CAF_ASSETS_URL . 'event-editor-heartbeat.js',
345
+            EVENTS_CAF_ASSETS_URL.'event-editor-heartbeat.js',
346 346
             array('ee_admin_js', 'heartbeat'),
347 347
             EVENT_ESPRESSO_VERSION,
348 348
             true
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
     public function add_additional_datetime_button($template, $template_args)
367 367
     {
368 368
         return EEH_Template::display_template(
369
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_add_additional_time.template.php',
369
+            EVENTS_CAF_TEMPLATE_PATH.'event_datetime_add_additional_time.template.php',
370 370
             $template_args,
371 371
             true
372 372
         );
@@ -384,7 +384,7 @@  discard block
 block discarded – undo
384 384
     public function add_datetime_clone_button($template, $template_args)
385 385
     {
386 386
         return EEH_Template::display_template(
387
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_metabox_clone_button.template.php',
387
+            EVENTS_CAF_TEMPLATE_PATH.'event_datetime_metabox_clone_button.template.php',
388 388
             $template_args,
389 389
             true
390 390
         );
@@ -402,7 +402,7 @@  discard block
 block discarded – undo
402 402
     public function datetime_timezones_template($template, $template_args)
403 403
     {
404 404
         return EEH_Template::display_template(
405
-            EVENTS_CAF_TEMPLATE_PATH . 'event_datetime_timezones.template.php',
405
+            EVENTS_CAF_TEMPLATE_PATH.'event_datetime_timezones.template.php',
406 406
             $template_args,
407 407
             true
408 408
         );
@@ -531,7 +531,7 @@  discard block
 block discarded – undo
531 531
     {
532 532
         // first make sure the ID for the event is in the request.
533 533
         //  If it isn't then we need to bail and redirect back to overview list table (cause how did we get here?)
534
-        if (! isset($this->_req_data['EVT_ID'])) {
534
+        if ( ! isset($this->_req_data['EVT_ID'])) {
535 535
             EE_Error::add_error(
536 536
                 esc_html__(
537 537
                     'In order to duplicate an event an Event ID is required.  None was given.',
@@ -546,7 +546,7 @@  discard block
 block discarded – undo
546 546
         }
547 547
         // k we've got EVT_ID so let's use that to get the event we'll duplicate
548 548
         $orig_event = EEM_Event::instance()->get_one_by_ID($this->_req_data['EVT_ID']);
549
-        if (! $orig_event instanceof EE_Event) {
549
+        if ( ! $orig_event instanceof EE_Event) {
550 550
             throw new EE_Error(
551 551
                 sprintf(
552 552
                     esc_html__('An EE_Event object could not be retrieved for the given ID (%s)', 'event_espresso'),
@@ -562,7 +562,7 @@  discard block
 block discarded – undo
562 562
         $orig_ven = $orig_event->get_many_related('Venue');
563 563
         // reset the ID and modify other details to make it clear this is a dupe
564 564
         $new_event->set('EVT_ID', 0);
565
-        $new_name = $new_event->name() . ' ' . esc_html__('**DUPLICATE**', 'event_espresso');
565
+        $new_name = $new_event->name().' '.esc_html__('**DUPLICATE**', 'event_espresso');
566 566
         $new_event->set('EVT_name', $new_name);
567 567
         $new_event->set(
568 568
             'EVT_slug',
@@ -591,7 +591,7 @@  discard block
 block discarded – undo
591 591
             'Question_Group',
592 592
             [['Event_Question_Group.EQG_primary' => true]]
593 593
         );
594
-        if (! empty($orig_primary_qgs)) {
594
+        if ( ! empty($orig_primary_qgs)) {
595 595
             foreach ($orig_primary_qgs as $id => $obj) {
596 596
                 if ($obj instanceof EE_Question_Group) {
597 597
                     $new_event->_add_relation_to($obj, 'Question_Group', ['EQG_primary' => true]);
@@ -603,7 +603,7 @@  discard block
 block discarded – undo
603 603
             'Question_Group',
604 604
             [['Event_Question_Group.EQG_additional' => true]]
605 605
         );
606
-        if (! empty($orig_additional_qgs)) {
606
+        if ( ! empty($orig_additional_qgs)) {
607 607
             foreach ($orig_additional_qgs as $id => $obj) {
608 608
                 if ($obj instanceof EE_Question_Group) {
609 609
                     $new_event->_add_relation_to($obj, 'Question_Group', ['EQG_additional' => true]);
@@ -616,7 +616,7 @@  discard block
 block discarded – undo
616 616
         // k now that we have the new event saved we can loop through the datetimes and start adding relations.
617 617
         $cloned_tickets = array();
618 618
         foreach ($orig_datetimes as $orig_dtt) {
619
-            if (! $orig_dtt instanceof EE_Datetime) {
619
+            if ( ! $orig_dtt instanceof EE_Datetime) {
620 620
                 continue;
621 621
             }
622 622
             $new_dtt = clone $orig_dtt;
@@ -631,7 +631,7 @@  discard block
 block discarded – undo
631 631
             // now let's get the ticket relations setup.
632 632
             foreach ((array) $orig_tkts as $orig_tkt) {
633 633
                 // it's possible a datetime will have no tickets so let's verify we HAVE a ticket first.
634
-                if (! $orig_tkt instanceof EE_Ticket) {
634
+                if ( ! $orig_tkt instanceof EE_Ticket) {
635 635
                     continue;
636 636
                 }
637 637
                 // is this ticket archived?  If it is then let's skip
@@ -640,8 +640,8 @@  discard block
 block discarded – undo
640 640
                 }
641 641
                 // does this original ticket already exist in the clone_tickets cache?
642 642
                 //  If so we'll just use the new ticket from it.
643
-                if (isset($cloned_tickets[ $orig_tkt->ID() ])) {
644
-                    $new_tkt = $cloned_tickets[ $orig_tkt->ID() ];
643
+                if (isset($cloned_tickets[$orig_tkt->ID()])) {
644
+                    $new_tkt = $cloned_tickets[$orig_tkt->ID()];
645 645
                 } else {
646 646
                     $new_tkt = clone $orig_tkt;
647 647
                     // get relations on the $orig_tkt that we need to setup.
@@ -674,7 +674,7 @@  discard block
 block discarded – undo
674 674
                 // for use with later datetimes that have the same ticket.
675 675
                 $new_dtt->_add_relation_to($new_tkt, 'Ticket');
676 676
                 $new_dtt->save();
677
-                $cloned_tickets[ $orig_tkt->ID() ] = $new_tkt;
677
+                $cloned_tickets[$orig_tkt->ID()] = $new_tkt;
678 678
             }
679 679
         }
680 680
         // clone taxonomy information
@@ -761,7 +761,7 @@  discard block
 block discarded – undo
761 761
             $this->_admin_base_url
762 762
         );
763 763
         $content = EEH_Template::display_template(
764
-            EVENTS_CAF_TEMPLATE_PATH . 'import_page.template.php',
764
+            EVENTS_CAF_TEMPLATE_PATH.'import_page.template.php',
765 765
             $this->_template_args,
766 766
             true
767 767
         );
@@ -782,7 +782,7 @@  discard block
 block discarded – undo
782 782
      */
783 783
     protected function _import_events()
784 784
     {
785
-        require_once(EE_CLASSES . 'EE_Import.class.php');
785
+        require_once(EE_CLASSES.'EE_Import.class.php');
786 786
         $success = EE_Import::instance()->import();
787 787
         $this->_redirect_after_action($success, 'Import File', 'ran', array('action' => 'import_page'), true);
788 788
     }
@@ -811,8 +811,8 @@  discard block
 block discarded – undo
811 811
             'EVT_ID' => $event_ids,
812 812
         );
813 813
         $this->_req_data = array_merge($this->_req_data, $new_request_args);
814
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
815
-            require_once(EE_CLASSES . 'EE_Export.class.php');
814
+        if (is_readable(EE_CLASSES.'EE_Export.class.php')) {
815
+            require_once(EE_CLASSES.'EE_Export.class.php');
816 816
             $EE_Export = EE_Export::instance($this->_req_data);
817 817
             $EE_Export->export();
818 818
         }
@@ -833,8 +833,8 @@  discard block
 block discarded – undo
833 833
             'category_ids' => $this->_req_data['EVT_CAT_ID'],
834 834
         );
835 835
         $this->_req_data = array_merge($this->_req_data, $new_request_args);
836
-        if (is_readable(EE_CLASSES . 'EE_Export.class.php')) {
837
-            require_once(EE_CLASSES . 'EE_Export.class.php');
836
+        if (is_readable(EE_CLASSES.'EE_Export.class.php')) {
837
+            require_once(EE_CLASSES.'EE_Export.class.php');
838 838
             $EE_Export = EE_Export::instance($this->_req_data);
839 839
             $EE_Export->export();
840 840
         }
@@ -875,7 +875,7 @@  discard block
 block discarded – undo
875 875
         $this->_set_add_edit_form_tags('update_template_settings');
876 876
         $this->_set_publish_post_box_vars(null, false, false, null, false);
877 877
         $this->_template_args['admin_page_content'] = EEH_Template::display_template(
878
-            EVENTS_CAF_TEMPLATE_PATH . 'template_settings.template.php',
878
+            EVENTS_CAF_TEMPLATE_PATH.'template_settings.template.php',
879 879
             $this->_template_args,
880 880
             true
881 881
         );
@@ -1008,7 +1008,7 @@  discard block
 block discarded – undo
1008 1008
             $default_reg_status_values
1009 1009
         );
1010 1010
         EEH_Template::display_template(
1011
-            EVENTS_CAF_TEMPLATE_PATH . 'event_registration_options.template.php',
1011
+            EVENTS_CAF_TEMPLATE_PATH.'event_registration_options.template.php',
1012 1012
             $template_args
1013 1013
         );
1014 1014
     }
@@ -1117,7 +1117,7 @@  discard block
 block discarded – undo
1117 1117
         $venues = $venue_model->get_all(array('order_by' => array('VNU_name' => 'ASC')));
1118 1118
 
1119 1119
         foreach ($venues as $venue) {
1120
-            $values[ $venue->ID() ] = $venue->name();
1120
+            $values[$venue->ID()] = $venue->name();
1121 1121
         }
1122 1122
 
1123 1123
         return EEH_Form_Fields::select_input($select_name, $values, $current_value, '', 'wide');
@@ -1151,13 +1151,13 @@  discard block
 block discarded – undo
1151 1151
     {
1152 1152
         $start = EEM_Datetime::instance()->convert_datetime_for_query(
1153 1153
             'DTT_EVT_start',
1154
-            date('Y-m-d') . ' 00:00:00',
1154
+            date('Y-m-d').' 00:00:00',
1155 1155
             'Y-m-d H:i:s',
1156 1156
             'UTC'
1157 1157
         );
1158 1158
         $end = EEM_Datetime::instance()->convert_datetime_for_query(
1159 1159
             'DTT_EVT_start',
1160
-            date('Y-m-d') . ' 23:59:59',
1160
+            date('Y-m-d').' 23:59:59',
1161 1161
             'Y-m-d H:i:s',
1162 1162
             'UTC'
1163 1163
         );
@@ -1187,13 +1187,13 @@  discard block
 block discarded – undo
1187 1187
         $days_this_month = date('t');
1188 1188
         $start = EEM_Datetime::instance()->convert_datetime_for_query(
1189 1189
             'DTT_EVT_start',
1190
-            $this_year_r . '-' . $this_month_r . '-01 00:00:00',
1190
+            $this_year_r.'-'.$this_month_r.'-01 00:00:00',
1191 1191
             'Y-m-d H:i:s',
1192 1192
             'UTC'
1193 1193
         );
1194 1194
         $end = EEM_Datetime::instance()->convert_datetime_for_query(
1195 1195
             'DTT_EVT_start',
1196
-            $this_year_r . '-' . $this_month_r . '-' . $days_this_month . ' 23:59:59',
1196
+            $this_year_r.'-'.$this_month_r.'-'.$days_this_month.' 23:59:59',
1197 1197
             'Y-m-d H:i:s',
1198 1198
             'UTC'
1199 1199
         );
@@ -1270,7 +1270,7 @@  discard block
 block discarded – undo
1270 1270
         $offset = ($current_page - 1) * $per_page;
1271 1271
         $limit = array($offset, $per_page);
1272 1272
         if (isset($this->_req_data['s'])) {
1273
-            $sstr = '%' . $this->_req_data['s'] . '%';
1273
+            $sstr = '%'.$this->_req_data['s'].'%';
1274 1274
             $_where['OR'] = array(
1275 1275
                 'TKT_name'        => array('LIKE', $sstr),
1276 1276
                 'TKT_description' => array('LIKE', $sstr),
@@ -1302,16 +1302,16 @@  discard block
 block discarded – undo
1302 1302
         $success = 1;
1303 1303
         $TKT = EEM_Ticket::instance();
1304 1304
         // checkboxes?
1305
-        if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1305
+        if ( ! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1306 1306
             // if array has more than one element then success message should be plural
1307 1307
             $success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1308 1308
             // cycle thru the boxes
1309 1309
             foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1310 1310
                 if ($trash) {
1311
-                    if (! $TKT->delete_by_ID($TKT_ID)) {
1311
+                    if ( ! $TKT->delete_by_ID($TKT_ID)) {
1312 1312
                         $success = 0;
1313 1313
                     }
1314
-                } elseif (! $TKT->restore_by_ID($TKT_ID)) {
1314
+                } elseif ( ! $TKT->restore_by_ID($TKT_ID)) {
1315 1315
                     $success = 0;
1316 1316
                 }
1317 1317
             }
@@ -1319,10 +1319,10 @@  discard block
 block discarded – undo
1319 1319
             // grab single id and trash
1320 1320
             $TKT_ID = absint($this->_req_data['TKT_ID']);
1321 1321
             if ($trash) {
1322
-                if (! $TKT->delete_by_ID($TKT_ID)) {
1322
+                if ( ! $TKT->delete_by_ID($TKT_ID)) {
1323 1323
                     $success = 0;
1324 1324
                 }
1325
-            } elseif (! $TKT->restore_by_ID($TKT_ID)) {
1325
+            } elseif ( ! $TKT->restore_by_ID($TKT_ID)) {
1326 1326
                 $success = 0;
1327 1327
             }
1328 1328
         }
@@ -1348,20 +1348,20 @@  discard block
 block discarded – undo
1348 1348
     {
1349 1349
         $success = 1;
1350 1350
         // checkboxes?
1351
-        if (! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1351
+        if ( ! empty($this->_req_data['checkbox']) && is_array($this->_req_data['checkbox'])) {
1352 1352
             // if array has more than one element then success message should be plural
1353 1353
             $success = count($this->_req_data['checkbox']) > 1 ? 2 : 1;
1354 1354
             // cycle thru the boxes
1355 1355
             foreach ($this->_req_data['checkbox'] as $TKT_ID) {
1356 1356
                 // delete
1357
-                if (! $this->_delete_the_ticket($TKT_ID)) {
1357
+                if ( ! $this->_delete_the_ticket($TKT_ID)) {
1358 1358
                     $success = 0;
1359 1359
                 }
1360 1360
             }
1361 1361
         } else {
1362 1362
             // grab single id and trash
1363 1363
             $TKT_ID = absint($this->_req_data['TKT_ID']);
1364
-            if (! $this->_delete_the_ticket($TKT_ID)) {
1364
+            if ( ! $this->_delete_the_ticket($TKT_ID)) {
1365 1365
                 $success = 0;
1366 1366
             }
1367 1367
         }
Please login to merge, or discard this patch.