Completed
Branch new-addon-api (b7bde0)
by
unknown
18:29 queued 08:41
created
templates/reg_admin_details_main_meta_box_attendees.template.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
                 <tbody>
21 21
 
22 22
                 <?php
23
-                foreach ($attendees as $att_nmbr => $attendee) : ?>
23
+				foreach ($attendees as $att_nmbr => $attendee) : ?>
24 24
                     <tr class="ee-status-strip reg-status-<?php echo $attendee['STS_ID']; ?>"
25 25
                         style="display: table-row;">
26 26
                         <td class="jst-left"><?php echo $att_nmbr; ?></td>
@@ -33,9 +33,9 @@  discard block
 block discarded – undo
33 33
                         </td>
34 34
                         <td class="jst-rght">
35 35
                             <?php echo $currency_sign . ' ' . number_format(
36
-                                $attendee['final_price'],
37
-                                2
38
-                            ); ?></td>
36
+								$attendee['final_price'],
37
+								2
38
+							); ?></td>
39 39
                         <td class="jst-left"><?php echo $attendee['email']; ?></td>
40 40
                         <td class="jst-left"><?php echo $attendee['address']; ?></td>
41 41
                         <!--<th class="jst-cntr">view</th>-->
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
     <br/>
4 4
     <?php // echo EEH_Debug_Tools::printr( $event_attendees, 'event_attendees' ); ?>
5 5
     <?php echo $attendee_notice; ?>
6
-    <?php if (! empty($attendees)) : ?>
6
+    <?php if ( ! empty($attendees)) : ?>
7 7
         <div class="admin-primary-mbox-tbl-wrap">
8 8
             <table id="reg-admin-transaction-attendees-table" class="admin-primary-mbox-tbl">
9 9
                 <thead>
@@ -28,11 +28,11 @@  discard block
 block discarded – undo
28 28
                         <td class="jst-left">
29 29
                             <a href="<?php echo $attendee['att_link']; ?>"
30 30
                                title="<?php esc_attr_e('View details for this attendee', 'event_espresso'); ?>">
31
-                                <?php echo $attendee['fname'] . ' ' . $attendee['lname']; ?>
31
+                                <?php echo $attendee['fname'].' '.$attendee['lname']; ?>
32 32
                             </a>
33 33
                         </td>
34 34
                         <td class="jst-rght">
35
-                            <?php echo $currency_sign . ' ' . number_format(
35
+                            <?php echo $currency_sign.' '.number_format(
36 36
                                 $attendee['final_price'],
37 37
                                 2
38 38
                             ); ?></td>
Please login to merge, or discard this patch.
templates/registration_page_registration_questions.template.php 2 patches
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -1,82 +1,82 @@  discard block
 block discarded – undo
1 1
 <div id="single-page-checkout" class="ui-widget">
2 2
     <?php do_action(
3
-        'AHEE__registration_page_registration_questions__template__after_spco_attendee_information_header'
4
-    ) ?>
3
+		'AHEE__registration_page_registration_questions__template__after_spco_attendee_information_header'
4
+	) ?>
5 5
     <div id="spco-attendee_information-dv" class="spco-step-dv">
6 6
 
7 7
         <p id="spco-attendee_information-pg" class="spco-steps-pg small-text drk-grey-text">
8 8
             <?php printf(
9
-                __(
10
-                    'In order to process your registration, we ask you to provide the following information.%1$sPlease note that all fields marked with an asterisk (%2$s) are required.',
11
-                    'event_espresso'
12
-                ),
13
-                '<br />',
14
-                '<span class="asterisk">*</span>'
15
-            ); ?>
9
+				__(
10
+					'In order to process your registration, we ask you to provide the following information.%1$sPlease note that all fields marked with an asterisk (%2$s) are required.',
11
+					'event_espresso'
12
+				),
13
+				'<br />',
14
+				'<span class="asterisk">*</span>'
15
+			); ?>
16 16
         </p>
17 17
 
18 18
         <?php
19
-        global $css_class;
20
-        $att_nmbr = 0;
21
-        $prev_event = '';
19
+		global $css_class;
20
+		$att_nmbr = 0;
21
+		$prev_event = '';
22 22
 
23
-        if ($event_queue['total_items'] > 0) {
24
-            foreach ($event_queue['items'] as $line_item => $item) {
25
-                $att_nmbr++;
26
-                if ($item['attendee_questions'] != '') {
27
-                    ?>
23
+		if ($event_queue['total_items'] > 0) {
24
+			foreach ($event_queue['items'] as $line_item => $item) {
25
+				$att_nmbr++;
26
+				if ($item['attendee_questions'] != '') {
27
+					?>
28 28
 
29 29
                     <div id="spco-attendee-panel-dv-<?php echo $line_item; ?>" class="spco-attendee-panel-dv">
30 30
 
31 31
                         <?php
32
-                        if ($item['ticket']->name() != $prev_event) { ?>
32
+						if ($item['ticket']->name() != $prev_event) { ?>
33 33
                             <p class="spco-ticket-info-pg">
34 34
                                 <?php
35
-                                echo $item['ticket']->name() . ':  '
36
-                                     . EEH_Template::format_currency(
37
-                                         $item['ticket']->price(),
38
-                                         false,
39
-                                         false
40
-                                     );
41
-                                echo $item['ticket']->qty()
42
-                                    ? ' &nbsp; x &nbsp; ' . $ticket_count[ $item['ticket']->ID() ]
43
-                                                              . __(
44
-                                                                  ' tickets',
45
-                                                                  'event_espresso'
46
-                                                              ) . ' &nbsp; = &nbsp; '
47
-                                                              . EEH_Template::format_currency(
48
-                                                                  $item['ticket']->price() * $ticket_count[ $item['ticket']->ID() ]
49
-                                                              )
50
-                                    : '';
51
-                                echo $item['ticket']->description()
52
-                                    ? '<br/>' . __(
53
-                                        'Ticket Details: ',
54
-                                        'event_espresso'
55
-                                    ) . $item['ticket']->description() : '';
56
-                                ?>
35
+								echo $item['ticket']->name() . ':  '
36
+									 . EEH_Template::format_currency(
37
+										 $item['ticket']->price(),
38
+										 false,
39
+										 false
40
+									 );
41
+								echo $item['ticket']->qty()
42
+									? ' &nbsp; x &nbsp; ' . $ticket_count[ $item['ticket']->ID() ]
43
+															  . __(
44
+																  ' tickets',
45
+																  'event_espresso'
46
+															  ) . ' &nbsp; = &nbsp; '
47
+															  . EEH_Template::format_currency(
48
+																  $item['ticket']->price() * $ticket_count[ $item['ticket']->ID() ]
49
+															  )
50
+									: '';
51
+								echo $item['ticket']->description()
52
+									? '<br/>' . __(
53
+										'Ticket Details: ',
54
+										'event_espresso'
55
+									) . $item['ticket']->description() : '';
56
+								?>
57 57
                             </p>
58 58
 
59 59
                             <?php
60
-                        }
61
-                        ?>
60
+						}
61
+						?>
62 62
 
63 63
                         <fieldset id="spco-attendee-wrap-<?php echo $line_item; ?>" class="spco-attendee-wrap-fs">
64 64
                             <legend class="spco-attendee-lgnd smaller-text lt-grey-text">
65 65
                                 <?php echo __(
66
-                                    'Registrant #',
67
-                                    'event_espresso'
68
-                                ) . $att_nmbr; ?></legend>
66
+									'Registrant #',
67
+									'event_espresso'
68
+								) . $att_nmbr; ?></legend>
69 69
 
70 70
                             <?php
71
-                            // do an action before the questions output, including the item and count
72
-                            echo do_action(
73
-                                'AHEE__registration_page_registration_questions__template___before_questions',
74
-                                $item,
75
-                                $att_nmbr
76
-                            );
77
-                            echo $item['attendee_questions'];
78
-
79
-                            if ($att_nmbr == 1 && $print_copy_info) { ?>
71
+							// do an action before the questions output, including the item and count
72
+							echo do_action(
73
+								'AHEE__registration_page_registration_questions__template___before_questions',
74
+								$item,
75
+								$att_nmbr
76
+							);
77
+							echo $item['attendee_questions'];
78
+
79
+							if ($att_nmbr == 1 && $print_copy_info) { ?>
80 80
                                 <input type="hidden" id="primary-attendee" name="qstn[primary_attendee]"
81 81
                                        value="<?php echo $prmy_att_input_name ?>"/>
82 82
 
@@ -85,9 +85,9 @@  discard block
 block discarded – undo
85 85
                                     <p class="spco-copy-all-attendee-pg">
86 86
                                         <label class="wide">
87 87
                                             <?php _e(
88
-                                                'Use Registrant #1\'s information for ALL registrants',
89
-                                                'event_espresso'
90
-                                            ); ?>
88
+												'Use Registrant #1\'s information for ALL registrants',
89
+												'event_espresso'
90
+											); ?>
91 91
                                             <input id="spco-copy-all-attendee-chk"
92 92
                                                    class="spco-copy-all-attendee-chk ui-widget-content ui-corner-all"
93 93
                                                    type="checkbox" value="copy-all">
@@ -96,46 +96,46 @@  discard block
 block discarded – undo
96 96
 
97 97
                                     <p class="spco-copy-attendee-pg">
98 98
                                         <?php _e(
99
-                                            'This option allows you to use the above information for all additional registrant question fields. <span>(&nbsp;Please note that some events may have additional questions that you may still be required to answer in order to complete your registration.&nbsp;)</span>',
100
-                                            'event_espresso'
101
-                                        ); ?></p>
99
+											'This option allows you to use the above information for all additional registrant question fields. <span>(&nbsp;Please note that some events may have additional questions that you may still be required to answer in order to complete your registration.&nbsp;)</span>',
100
+											'event_espresso'
101
+										); ?></p>
102 102
 
103 103
                                     <a id="display-more-attendee-copy-options"
104 104
                                        class="display-the-hidden smaller-text float-right"
105 105
                                        rel="more-attendee-copy-options">
106 106
                                         <?php _e(
107
-                                            'more options',
108
-                                            'event_espresso'
109
-                                        ); ?></a>
107
+											'more options',
108
+											'event_espresso'
109
+										); ?></a>
110 110
 
111 111
                                     <div id="more-attendee-copy-options-dv" class="">
112 112
                                         <a id="hide-more-attendee-copy-options"
113 113
                                            class="hide-the-displayed smaller-text float-right"
114 114
                                            rel="more-attendee-copy-options">
115 115
                                             <?php _e(
116
-                                                'less options',
117
-                                                'event_espresso'
118
-                                            ); ?></a>
116
+												'less options',
117
+												'event_espresso'
118
+											); ?></a>
119 119
                                         <p class="spco-copy-attendee-pg">
120 120
                                             <?php _e(
121
-                                                'The following checkboxes allow you to use the above information for only the selected additional event registrants.',
122
-                                                'event_espresso'
123
-                                            ); ?>
121
+												'The following checkboxes allow you to use the above information for only the selected additional event registrants.',
122
+												'event_espresso'
123
+											); ?>
124 124
                                         </p>
125 125
 
126 126
                                         <?php
127
-                                        foreach ($additional_event_attendees as $event_attendees) {
128
-                                            foreach ($event_attendees as $attendee) {
129
-                                                if ($attendee['event_hdr']) { ?>
127
+										foreach ($additional_event_attendees as $event_attendees) {
128
+											foreach ($event_attendees as $attendee) {
129
+												if ($attendee['event_hdr']) { ?>
130 130
                                                     <h6 class="spco-copy-attendee-event-hdr"><?php echo $attendee['event_hdr']; ?></h6>
131 131
                                                 <?php } ?>
132 132
 
133 133
                                                 <p class="event_form_field spco-copy-attendee-chk-pg">
134 134
                                                     <label>
135 135
                                                         <?php echo __(
136
-                                                            'Attendee #',
137
-                                                            'event_espresso'
138
-                                                        ) . $attendee['att_nmbr']; ?>
136
+															'Attendee #',
137
+															'event_espresso'
138
+														) . $attendee['att_nmbr']; ?>
139 139
                                                         <input type="checkbox"
140 140
                                                                id="spco-copy-attendee-chk-<?php echo $attendee['input_id']; ?>"
141 141
                                                                class="spco-copy-attendee-chk <?php echo $css_class; ?>"
@@ -153,25 +153,25 @@  discard block
 block discarded – undo
153 153
                                     <div class="clear-float"></div>
154 154
                                 </div>
155 155
                                 <?php
156
-                                $print_copy_info = false;
157
-                            } elseif ($att_nmbr == 1) {
158
-                                ?>
156
+								$print_copy_info = false;
157
+							} elseif ($att_nmbr == 1) {
158
+								?>
159 159
                                 <p id="spco-auto-copy-attendee-pg" class="smaller-text lt-grey-text">
160 160
                                     <?php _e(
161
-                                        'The above information will be used for any additional tickets/registrants.',
162
-                                        'event_espresso'
163
-                                    ); ?>
161
+										'The above information will be used for any additional tickets/registrants.',
162
+										'event_espresso'
163
+									); ?>
164 164
                                 </p>
165 165
                                 <?php
166
-                            }
167
-                            ?>
166
+							}
167
+							?>
168 168
                         </fieldset>
169 169
 
170 170
                     </div>
171 171
                     <?php
172
-                } else {
173
-                    if ($att_nmbr == 1) {
174
-                        ?>
172
+				} else {
173
+					if ($att_nmbr == 1) {
174
+						?>
175 175
                         <div id="spco-attendee-panel-dv-<?php echo $line_item; ?>" class="spco-attendee-panel-dv">
176 176
                             <h3 id="event_title-<?php echo $item['ticket']->ID() ?>" class="big-event-title-hdr">
177 177
                                 <?php echo $item['event']->name(); ?>
@@ -179,24 +179,24 @@  discard block
 block discarded – undo
179 179
                             <fieldset id="spco-attendee-wrap-<?php echo $line_item; ?>" class="spco-attendee-wrap-fs">
180 180
                                 <h6>
181 181
                                     <?php _e(
182
-                                        'No information is required to attend this event. Please proceed to the next Step',
183
-                                        'event_espresso'
184
-                                    ); ?></h6>
182
+										'No information is required to attend this event. Please proceed to the next Step',
183
+										'event_espresso'
184
+									); ?></h6>
185 185
                                 <input type="hidden" id="no-questions" name="qstn[]" value="0"/>
186 186
                             </fieldset>
187 187
                         </div>
188 188
                         <?php
189
-                    }
190
-                }
191
-                echo $item['additional_attendee_reg_info'];
192
-                $prev_event = $item['ticket']->name();
193
-            } // $event_queue['items'] as $line_item
194
-        } // $event_queue['total_items']
195
-        ?>
189
+					}
190
+				}
191
+				echo $item['additional_attendee_reg_info'];
192
+				$prev_event = $item['ticket']->name();
193
+			} // $event_queue['items'] as $line_item
194
+		} // $event_queue['total_items']
195
+		?>
196 196
         <div><a id="spco-display-event-questions-lnk"
197 197
                 class="act-like-link smaller-text hidden hide-if-no-js float-right"><?php _e(
198
-                    'show&nbsp;event&nbsp;questions',
199
-                    'event_espresso'
200
-                ); ?></a></div>
198
+					'show&nbsp;event&nbsp;questions',
199
+					'event_espresso'
200
+				); ?></a></div>
201 201
     </div>
202 202
 </div> <!-- #single-page-checkout -->
203 203
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -32,27 +32,27 @@  discard block
 block discarded – undo
32 32
                         if ($item['ticket']->name() != $prev_event) { ?>
33 33
                             <p class="spco-ticket-info-pg">
34 34
                                 <?php
35
-                                echo $item['ticket']->name() . ':  '
35
+                                echo $item['ticket']->name().':  '
36 36
                                      . EEH_Template::format_currency(
37 37
                                          $item['ticket']->price(),
38 38
                                          false,
39 39
                                          false
40 40
                                      );
41 41
                                 echo $item['ticket']->qty()
42
-                                    ? ' &nbsp; x &nbsp; ' . $ticket_count[ $item['ticket']->ID() ]
42
+                                    ? ' &nbsp; x &nbsp; '.$ticket_count[$item['ticket']->ID()]
43 43
                                                               . __(
44 44
                                                                   ' tickets',
45 45
                                                                   'event_espresso'
46
-                                                              ) . ' &nbsp; = &nbsp; '
46
+                                                              ).' &nbsp; = &nbsp; '
47 47
                                                               . EEH_Template::format_currency(
48
-                                                                  $item['ticket']->price() * $ticket_count[ $item['ticket']->ID() ]
48
+                                                                  $item['ticket']->price() * $ticket_count[$item['ticket']->ID()]
49 49
                                                               )
50 50
                                     : '';
51 51
                                 echo $item['ticket']->description()
52
-                                    ? '<br/>' . __(
52
+                                    ? '<br/>'.__(
53 53
                                         'Ticket Details: ',
54 54
                                         'event_espresso'
55
-                                    ) . $item['ticket']->description() : '';
55
+                                    ).$item['ticket']->description() : '';
56 56
                                 ?>
57 57
                             </p>
58 58
 
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
                                 <?php echo __(
66 66
                                     'Registrant #',
67 67
                                     'event_espresso'
68
-                                ) . $att_nmbr; ?></legend>
68
+                                ).$att_nmbr; ?></legend>
69 69
 
70 70
                             <?php
71 71
                             // do an action before the questions output, including the item and count
@@ -135,7 +135,7 @@  discard block
 block discarded – undo
135 135
                                                         <?php echo __(
136 136
                                                             'Attendee #',
137 137
                                                             'event_espresso'
138
-                                                        ) . $attendee['att_nmbr']; ?>
138
+                                                        ).$attendee['att_nmbr']; ?>
139 139
                                                         <input type="checkbox"
140 140
                                                                id="spco-copy-attendee-chk-<?php echo $attendee['input_id']; ?>"
141 141
                                                                class="spco-copy-attendee-chk <?php echo $css_class; ?>"
Please login to merge, or discard this patch.
admin_pages/registrations/templates/reg_status_change_buttons.template.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -17,17 +17,17 @@  discard block
 block discarded – undo
17 17
         <?php echo $nonce; ?>
18 18
         <?php echo $status_buttons; ?>
19 19
         <?php
20
-        if ($attendee instanceof EE_Attendee
21
-            && EE_Registry::instance()->CAP->current_user_can(
22
-                'ee_send_message',
23
-                'registration_message_type'
24
-            )) : ?>
20
+		if ($attendee instanceof EE_Attendee
21
+			&& EE_Registry::instance()->CAP->current_user_can(
22
+				'ee_send_message',
23
+				'registration_message_type'
24
+			)) : ?>
25 25
             <span id="send-related-messages-dv">
26 26
                 <label for="txn-reg-status-send-notifications-inp" class="important-notice">
27 27
                 <?php _e(
28
-                    '...and send related messages ?',
29
-                    'event_espresso'
30
-                ); ?>
28
+					'...and send related messages ?',
29
+					'event_espresso'
30
+				); ?>
31 31
                 <input type="checkbox" value="1" id="txn-reg-status-send-notifications-inp"
32 32
                        name="txn_reg_status_change[send_notifications]">
33 33
                 </label>
@@ -36,9 +36,9 @@  discard block
 block discarded – undo
36 36
             <br/>
37 37
             <p class="description">
38 38
                 <?php _e(
39
-                    'If the "send related messages"checkbox is checked when changing status, then the related messages will be sent to the registrant.',
40
-                    'event_espresso'
41
-                ); ?></p>
39
+					'If the "send related messages"checkbox is checked when changing status, then the related messages will be sent to the registrant.',
40
+					'event_espresso'
41
+				); ?></p>
42 42
         <?php endif; ?>
43 43
     </form>
44 44
 </div>
Please login to merge, or discard this patch.
registrations/templates/attendee_details_main_meta_box.template.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -23,16 +23,16 @@  discard block
 block discarded – undo
23 23
             <td>
24 24
                 <div class="validation-notice-dv">
25 25
                     <?php _e(
26
-                        'The following is  a required field',
27
-                        'event_espresso'
28
-                    ); ?></div>
26
+						'The following is  a required field',
27
+						'event_espresso'
28
+					); ?></div>
29 29
                 <input class="regular-text required" type="text" id="ATT_fname" name="ATT_fname"
30 30
                        value="<?php echo $attendee->fname(); ?>"/><br/>
31 31
                 <p class="description">
32 32
                     <?php _e(
33
-                        'The registrant\'s given name. ( required value )',
34
-                        'event_espresso'
35
-                    ); ?></p>
33
+						'The registrant\'s given name. ( required value )',
34
+						'event_espresso'
35
+					); ?></p>
36 36
             </td>
37 37
         </tr>
38 38
 
@@ -44,16 +44,16 @@  discard block
 block discarded – undo
44 44
             <td>
45 45
                 <div class="validation-notice-dv">
46 46
                     <?php _e(
47
-                        'The following is  a required field',
48
-                        'event_espresso'
49
-                    ); ?></div>
47
+						'The following is  a required field',
48
+						'event_espresso'
49
+					); ?></div>
50 50
                 <input class="regular-text required" type="text" id="ATT_lname" name="ATT_lname"
51 51
                        value="<?php echo $attendee->lname(); ?>"/><br/>
52 52
                 <p class="description">
53 53
                     <?php _e(
54
-                        'The registrant\'s family name. ( required value )',
55
-                        'event_espresso'
56
-                    ); ?></p>
54
+						'The registrant\'s family name. ( required value )',
55
+						'event_espresso'
56
+					); ?></p>
57 57
             </td>
58 58
         </tr>
59 59
 
@@ -65,9 +65,9 @@  discard block
 block discarded – undo
65 65
             <td>
66 66
                 <div class="validation-notice-dv">
67 67
                     <?php _e(
68
-                        'The following is  a required field',
69
-                        'event_espresso'
70
-                    ); ?></div>
68
+						'The following is  a required field',
69
+						'event_espresso'
70
+					); ?></div>
71 71
                 <input class="regular-text required" type="text" id="ATT_email" name="ATT_email"
72 72
                        value="<?php $attendee->f('ATT_email'); ?>"/><br/>
73 73
                 <p class="description"><?php _e('( required value )', 'event_espresso'); ?></p>
Please login to merge, or discard this patch.
registrations/templates/reg_admin_register_new_attendee.template.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <h1><span class="small-text not-bold">
2 2
         <?php _e(
3
-            'Adding Registration For: ',
4
-            'event_espresso'
5
-        ); ?></span><?php echo $event_name; ?></h1>
3
+			'Adding Registration For: ',
4
+			'event_espresso'
5
+		); ?></span><?php echo $event_name; ?></h1>
6 6
 <?php echo $step_content;
Please login to merge, or discard this patch.
admin_pages/registrations/templates/reg_admin_details_header.template.php 2 patches
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -1,23 +1,23 @@
 block discarded – undo
1 1
 <div style="float:right">
2 2
     <?php printf(
3
-        __('View %1$sRegistrations%4$s /  %2$sTransactions%4$s for this %3$sevent%4$s.', 'event_espresso'),
4
-        '<a href="' . $filtered_registrations_link . '">',
5
-        '<a href="' . $filtered_transactions_link . '">',
6
-        '<a href="' . $event_link . '">',
7
-        '</a>'
8
-    ); ?>
3
+		__('View %1$sRegistrations%4$s /  %2$sTransactions%4$s for this %3$sevent%4$s.', 'event_espresso'),
4
+		'<a href="' . $filtered_registrations_link . '">',
5
+		'<a href="' . $filtered_transactions_link . '">',
6
+		'<a href="' . $event_link . '">',
7
+		'</a>'
8
+	); ?>
9 9
 </div>
10 10
 <h3 id="reg-admin-reg-details-reg-nmbr-hdr"><?php echo $previous_registration . '&nbsp;';
11
-    echo __('Registration # ', 'event_espresso') . $reg_nmbr['value'];
12
-    echo '&nbsp;' . $next_registration; ?></h3>
11
+	echo __('Registration # ', 'event_espresso') . $reg_nmbr['value'];
12
+	echo '&nbsp;' . $next_registration; ?></h3>
13 13
 <h2 id="reg-admin-reg-details-reg-date-hdr"><?php echo $reg_datetime['value']; ?></h2>
14 14
 
15 15
 <?php if ($registration->group_size() > 1) : ?>
16 16
     <a id="scroll-to-other-attendees" class="scroll-to" href="#other-attendees">
17 17
         <?php echo __(
18
-            'Scroll to Other Registrations in the Same Transaction',
19
-            'event_espresso'
20
-        ); ?></a>
18
+			'Scroll to Other Registrations in the Same Transaction',
19
+			'event_espresso'
20
+		); ?></a>
21 21
 <?php endif; ?>
22 22
 
23 23
 <?php do_action('AHEE__reg_status_change_buttons__after_header', $REG_ID); ?>
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -1,15 +1,15 @@
 block discarded – undo
1 1
 <div style="float:right">
2 2
     <?php printf(
3 3
         __('View %1$sRegistrations%4$s /  %2$sTransactions%4$s for this %3$sevent%4$s.', 'event_espresso'),
4
-        '<a href="' . $filtered_registrations_link . '">',
5
-        '<a href="' . $filtered_transactions_link . '">',
6
-        '<a href="' . $event_link . '">',
4
+        '<a href="'.$filtered_registrations_link.'">',
5
+        '<a href="'.$filtered_transactions_link.'">',
6
+        '<a href="'.$event_link.'">',
7 7
         '</a>'
8 8
     ); ?>
9 9
 </div>
10
-<h3 id="reg-admin-reg-details-reg-nmbr-hdr"><?php echo $previous_registration . '&nbsp;';
11
-    echo __('Registration # ', 'event_espresso') . $reg_nmbr['value'];
12
-    echo '&nbsp;' . $next_registration; ?></h3>
10
+<h3 id="reg-admin-reg-details-reg-nmbr-hdr"><?php echo $previous_registration.'&nbsp;';
11
+    echo __('Registration # ', 'event_espresso').$reg_nmbr['value'];
12
+    echo '&nbsp;'.$next_registration; ?></h3>
13 13
 <h2 id="reg-admin-reg-details-reg-date-hdr"><?php echo $reg_datetime['value']; ?></h2>
14 14
 
15 15
 <?php if ($registration->group_size() > 1) : ?>
Please login to merge, or discard this patch.
registrations/templates/attendee_registrations_main_meta_box.template.php 2 patches
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -17,62 +17,62 @@
 block discarded – undo
17 17
                 <tr>
18 18
                     <td class="jst-left">
19 19
                         <?php
20
-                        $event_url = add_query_arg(
21
-                            array('action' => 'edit', 'post' => $registration->event_ID()),
22
-                            admin_url('admin.php?page=espresso_events')
23
-                        );
24
-                        echo EE_Registry::instance()->CAP->current_user_can(
25
-                            'ee_edit_event',
26
-                            'espresso_events_edit',
27
-                            $registration->event_ID()
28
-                        ) ? '<a href="' . $event_url . '"  title="'
29
-                            . esc_attr__(
30
-                                'Edit Event',
31
-                                'event_espresso'
32
-                            ) . '">' . $registration->event_name() . '</a>' : $registration->event_name();
33
-                        ?>
20
+						$event_url = add_query_arg(
21
+							array('action' => 'edit', 'post' => $registration->event_ID()),
22
+							admin_url('admin.php?page=espresso_events')
23
+						);
24
+						echo EE_Registry::instance()->CAP->current_user_can(
25
+							'ee_edit_event',
26
+							'espresso_events_edit',
27
+							$registration->event_ID()
28
+						) ? '<a href="' . $event_url . '"  title="'
29
+							. esc_attr__(
30
+								'Edit Event',
31
+								'event_espresso'
32
+							) . '">' . $registration->event_name() . '</a>' : $registration->event_name();
33
+						?>
34 34
                     </td>
35 35
                     <td class="jst-left">
36 36
                         <?php
37
-                        $reg_url = EE_Admin_Page::add_query_args_and_nonce(
38
-                            array('action' => 'view_registration', '_REG_ID' => $registration->ID()),
39
-                            REG_ADMIN_URL
40
-                        );
41
-                        echo EE_Registry::instance()->CAP->current_user_can(
42
-                            'ee_read_registration',
43
-                            'espresso_registrations_view_registration',
44
-                            $registration->ID()
45
-                        ) ? '
37
+						$reg_url = EE_Admin_Page::add_query_args_and_nonce(
38
+							array('action' => 'view_registration', '_REG_ID' => $registration->ID()),
39
+							REG_ADMIN_URL
40
+						);
41
+						echo EE_Registry::instance()->CAP->current_user_can(
42
+							'ee_read_registration',
43
+							'espresso_registrations_view_registration',
44
+							$registration->ID()
45
+						) ? '
46 46
 							<a href="' . $reg_url . '" title="'
47
-                            . esc_attr__(
48
-                                'View Registration Details',
49
-                                'event_espresso'
50
-                            ) . '">' .
51
-                            esc_html__('View Registration', 'event_espresso') .
52
-                            '</a>' : $registration->ID();
53
-                        ?>
47
+							. esc_attr__(
48
+								'View Registration Details',
49
+								'event_espresso'
50
+							) . '">' .
51
+							esc_html__('View Registration', 'event_espresso') .
52
+							'</a>' : $registration->ID();
53
+						?>
54 54
                     </td>
55 55
                     <td class="jst-left">
56 56
                         <?php
57
-                        $txn_url = EE_Admin_Page::add_query_args_and_nonce(
58
-                            array('action' => 'view_transaction', 'TXN_ID' => $registration->transaction_ID()),
59
-                            TXN_ADMIN_URL
60
-                        );
61
-                        echo EE_Registry::instance()->CAP->current_user_can(
62
-                            'ee_read_transaction',
63
-                            'espresso_transactions_view_transaction'
64
-                        ) ? '
57
+						$txn_url = EE_Admin_Page::add_query_args_and_nonce(
58
+							array('action' => 'view_transaction', 'TXN_ID' => $registration->transaction_ID()),
59
+							TXN_ADMIN_URL
60
+						);
61
+						echo EE_Registry::instance()->CAP->current_user_can(
62
+							'ee_read_transaction',
63
+							'espresso_transactions_view_transaction'
64
+						) ? '
65 65
 						<a href="' . $txn_url . '" title="'
66
-                            . esc_attr__(
67
-                                'View Transaction Details',
68
-                                'event_espresso'
69
-                            ) . '">' .
70
-                            sprintf(
71
-                                esc_html__('View Transaction %d', 'event_espresso'),
72
-                                $registration->transaction_ID()
73
-                            ) .
74
-                            '</a>' : $registration->transaction_ID();
75
-                        ?>
66
+							. esc_attr__(
67
+								'View Transaction Details',
68
+								'event_espresso'
69
+							) . '">' .
70
+							sprintf(
71
+								esc_html__('View Transaction %d', 'event_espresso'),
72
+								$registration->transaction_ID()
73
+							) .
74
+							'</a>' : $registration->transaction_ID();
75
+						?>
76 76
                     </td>
77 77
                     <td class="jst-left"><?php echo $registration->reg_code(); ?></td>
78 78
                     <td class="jst-rght"><?php echo EEH_Template::format_currency($registration->final_price()); ?></td>
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -25,11 +25,11 @@  discard block
 block discarded – undo
25 25
                             'ee_edit_event',
26 26
                             'espresso_events_edit',
27 27
                             $registration->event_ID()
28
-                        ) ? '<a href="' . $event_url . '"  title="'
28
+                        ) ? '<a href="'.$event_url.'"  title="'
29 29
                             . esc_attr__(
30 30
                                 'Edit Event',
31 31
                                 'event_espresso'
32
-                            ) . '">' . $registration->event_name() . '</a>' : $registration->event_name();
32
+                            ).'">'.$registration->event_name().'</a>' : $registration->event_name();
33 33
                         ?>
34 34
                     </td>
35 35
                     <td class="jst-left">
@@ -43,12 +43,12 @@  discard block
 block discarded – undo
43 43
                             'espresso_registrations_view_registration',
44 44
                             $registration->ID()
45 45
                         ) ? '
46
-							<a href="' . $reg_url . '" title="'
46
+							<a href="' . $reg_url.'" title="'
47 47
                             . esc_attr__(
48 48
                                 'View Registration Details',
49 49
                                 'event_espresso'
50
-                            ) . '">' .
51
-                            esc_html__('View Registration', 'event_espresso') .
50
+                            ).'">'.
51
+                            esc_html__('View Registration', 'event_espresso').
52 52
                             '</a>' : $registration->ID();
53 53
                         ?>
54 54
                     </td>
@@ -62,15 +62,15 @@  discard block
 block discarded – undo
62 62
                             'ee_read_transaction',
63 63
                             'espresso_transactions_view_transaction'
64 64
                         ) ? '
65
-						<a href="' . $txn_url . '" title="'
65
+						<a href="' . $txn_url.'" title="'
66 66
                             . esc_attr__(
67 67
                                 'View Transaction Details',
68 68
                                 'event_espresso'
69
-                            ) . '">' .
69
+                            ).'">'.
70 70
                             sprintf(
71 71
                                 esc_html__('View Transaction %d', 'event_espresso'),
72 72
                                 $registration->transaction_ID()
73
-                            ) .
73
+                            ).
74 74
                             '</a>' : $registration->transaction_ID();
75 75
                         ?>
76 76
                     </td>
Please login to merge, or discard this patch.
admin_pages/payments/templates/payment_log_details.template.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -65,7 +65,7 @@
 block discarded – undo
65 65
                     <?php echo $payment_log->e(
66 66
                         'LOG_message',
67 67
                         'as_table'
68
-                    );// EEH_Template::layout_array_as_table($payment_log->content())?>
68
+                    ); // EEH_Template::layout_array_as_table($payment_log->content())?>
69 69
                 </td>
70 70
             </tr>
71 71
             </tbody>
Please login to merge, or discard this patch.
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -36,17 +36,17 @@  discard block
 block discarded – undo
36 36
                 </th>
37 37
                 <td>
38 38
                     <?php
39
-                    if ($payment_log->object() instanceof EE_Transaction) {
40
-                        esc_html_e('Unknown', 'event_espresso');
41
-                    } else {
42
-                        echo $payment_method
43
-                        ? $payment_method->admin_name()
44
-                        : esc_html__(
45
-                            "No Longer Exists",
46
-                            'event_espresso'
47
-                        );
48
-                    }
49
-                    ?>
39
+					if ($payment_log->object() instanceof EE_Transaction) {
40
+						esc_html_e('Unknown', 'event_espresso');
41
+					} else {
42
+						echo $payment_method
43
+						? $payment_method->admin_name()
44
+						: esc_html__(
45
+							"No Longer Exists",
46
+							'event_espresso'
47
+						);
48
+					}
49
+					?>
50 50
 
51 51
                 </td>
52 52
             </tr>
@@ -69,9 +69,9 @@  discard block
 block discarded – undo
69 69
                 </th>
70 70
                 <td>
71 71
                     <?php echo $payment_log->e(
72
-                        'LOG_message',
73
-                        'as_table'
74
-                    );// EEH_Template::layout_array_as_table($payment_log->content())?>
72
+						'LOG_message',
73
+						'as_table'
74
+					);// EEH_Template::layout_array_as_table($payment_log->content())?>
75 75
                 </td>
76 76
             </tr>
77 77
             </tbody>
Please login to merge, or discard this patch.
admin_pages/maintenance/Maintenance_Admin_Page.core.php 2 patches
Spacing   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
                     $current_script = null;
222 222
                     foreach ($scripts_needing_to_run as $script) {
223 223
                         if ($script instanceof EE_Data_Migration_Script_Base) {
224
-                            if (! $current_script) {
224
+                            if ( ! $current_script) {
225 225
                                 $current_script = $script;
226 226
                                 $current_script->migration_page_hooks();
227 227
                             }
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
                 && $most_recent_migration->is_broken()
249 249
             )
250 250
         ) {
251
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_was_borked_page.template.php';
251
+            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_migration_was_borked_page.template.php';
252 252
             $this->_template_args['support_url'] = 'http://eventespresso.com/support/forums/';
253 253
             $this->_template_args['next_url'] = EEH_URL::add_query_args_and_nonce(
254 254
                 array(
@@ -258,7 +258,7 @@  discard block
 block discarded – undo
258 258
                 EE_MAINTENANCE_ADMIN_URL
259 259
             );
260 260
         } elseif ($addons_should_be_upgraded_first) {
261
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_upgrade_addons_before_migrating.template.php';
261
+            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_upgrade_addons_before_migrating.template.php';
262 262
         } else {
263 263
             if ($most_recent_migration
264 264
                 && $most_recent_migration instanceof EE_Data_Migration_Script_Base
@@ -283,7 +283,7 @@  discard block
 block discarded – undo
283 283
                     array(
284 284
                         'current_db_state' => sprintf(
285 285
                             __("EE%s (%s)", "event_espresso"),
286
-                            isset($current_db_state[ $plugin_slug ]) ? $current_db_state[ $plugin_slug ] : 3,
286
+                            isset($current_db_state[$plugin_slug]) ? $current_db_state[$plugin_slug] : 3,
287 287
                             $plugin_slug
288 288
                         ),
289 289
                         'next_db_state'    => isset($current_script) ? sprintf(
@@ -297,7 +297,7 @@  discard block
 block discarded – undo
297 297
                 $this->_template_args['current_db_state'] = null;
298 298
                 $this->_template_args['next_db_state'] = null;
299 299
             }
300
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_page.template.php';
300
+            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_migration_page.template.php';
301 301
             $this->_template_args = array_merge(
302 302
                 $this->_template_args,
303 303
                 array(
@@ -333,11 +333,11 @@  discard block
 block discarded – undo
333 333
             );
334 334
             // make sure we have the form fields helper available. It usually is, but sometimes it isn't
335 335
         }
336
-        $this->_template_args['most_recent_migration'] = $most_recent_migration;// the actual most recently ran migration
336
+        $this->_template_args['most_recent_migration'] = $most_recent_migration; // the actual most recently ran migration
337 337
         // now render the migration options part, and put it in a variable
338 338
         $migration_options_template_file = apply_filters(
339 339
             'FHEE__ee_migration_page__migration_options_template',
340
-            EE_MAINTENANCE_TEMPLATE_PATH . 'migration_options_from_ee4.template.php'
340
+            EE_MAINTENANCE_TEMPLATE_PATH.'migration_options_from_ee4.template.php'
341 341
         );
342 342
         $migration_options_html = EEH_Template::display_template(
343 343
             $migration_options_template_file,
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
     public function _change_maintenance_level()
383 383
     {
384 384
         $new_level = absint($this->_req_data['maintenance_mode_level']);
385
-        if (! EE_Data_Migration_Manager::instance()->check_for_applicable_data_migration_scripts()) {
385
+        if ( ! EE_Data_Migration_Manager::instance()->check_for_applicable_data_migration_scripts()) {
386 386
             EE_Maintenance_Mode::instance()->set_maintenance_level($new_level);
387 387
             $success = true;
388 388
         } else {
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
      */
402 402
     public function _data_reset_and_delete()
403 403
     {
404
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_data_reset_and_delete.template.php';
404
+        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_data_reset_and_delete.template.php';
405 405
         $this->_template_args['reset_reservations_button'] = $this->get_action_link_or_button(
406 406
             'reset_reservations',
407 407
             'reset_reservations',
@@ -486,7 +486,7 @@  discard block
 block discarded – undo
486 486
      */
487 487
     public function _system_status()
488 488
     {
489
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_system_stati_page.template.php';
489
+        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_system_stati_page.template.php';
490 490
         $this->_template_args['system_stati'] = EEM_System_Status::instance()->get_system_stati();
491 491
         $this->_template_args['download_system_status_url'] = EE_Admin_Page::add_query_args_and_nonce(
492 492
             array(
@@ -509,9 +509,9 @@  discard block
 block discarded – undo
509 509
     {
510 510
         $status_info = EEM_System_Status::instance()->get_system_stati();
511 511
         header('Content-Disposition: attachment');
512
-        header("Content-Disposition: attachment; filename=system_status_" . sanitize_key(site_url()) . ".html");
512
+        header("Content-Disposition: attachment; filename=system_status_".sanitize_key(site_url()).".html");
513 513
         echo "<style>table{border:1px solid darkgrey;}td{vertical-align:top}</style>";
514
-        echo "<h1>System Information for " . site_url() . "</h1>";
514
+        echo "<h1>System Information for ".site_url()."</h1>";
515 515
         echo EEH_Template::layout_array_as_table($status_info);
516 516
         die;
517 517
     }
@@ -526,7 +526,7 @@  discard block
 block discarded – undo
526 526
             $success = wp_mail(
527 527
                 EE_SUPPORT_EMAIL,
528 528
                 'Migration Crash Report',
529
-                $body . "/r/n<br>" . print_r(EEM_System_Status::instance()->get_system_stati(), true),
529
+                $body."/r/n<br>".print_r(EEM_System_Status::instance()->get_system_stati(), true),
530 530
                 array(
531 531
                     "from:$from_name<$from>",
532 532
                 )
@@ -569,7 +569,7 @@  discard block
 block discarded – undo
569 569
             array('action' => 'reattempt_migration'),
570 570
             EE_MAINTENANCE_ADMIN_URL
571 571
         );
572
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_confirm_migration_crash_report_sent.template.php';
572
+        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH.'ee_confirm_migration_crash_report_sent.template.php';
573 573
         $this->_template_args['admin_page_content'] = EEH_Template::display_template(
574 574
             $this->_template_path,
575 575
             $this->_template_args,
@@ -668,14 +668,14 @@  discard block
 block discarded – undo
668 668
         wp_enqueue_script('ee_admin_js');
669 669
         wp_enqueue_script(
670 670
             'ee-maintenance',
671
-            EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.js',
671
+            EE_MAINTENANCE_ASSETS_URL.'ee-maintenance.js',
672 672
             array('jquery'),
673 673
             EVENT_ESPRESSO_VERSION,
674 674
             true
675 675
         );
676 676
         wp_register_style(
677 677
             'espresso_maintenance',
678
-            EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.css',
678
+            EE_MAINTENANCE_ASSETS_URL.'ee-maintenance.css',
679 679
             array(),
680 680
             EVENT_ESPRESSO_VERSION
681 681
         );
@@ -742,7 +742,7 @@  discard block
 block discarded – undo
742 742
 
743 743
     protected function _get_datetime_offset_fix_form()
744 744
     {
745
-        if (! $this->datetime_fix_offset_form instanceof EE_Form_Section_Proper) {
745
+        if ( ! $this->datetime_fix_offset_form instanceof EE_Form_Section_Proper) {
746 746
             $this->datetime_fix_offset_form = new EE_Form_Section_Proper(
747 747
                 array(
748 748
                     'name'            => 'datetime_offset_fix_option',
@@ -848,12 +848,12 @@  discard block
 block discarded – undo
848 848
                 $utc_timezone = new DateTimeZone('UTC');
849 849
                 $date_range_start_date = DateTime::createFromFormat(
850 850
                     'm/d/Y H:i:s',
851
-                    $form->get_input_value('date_range_start_date') . ' 00:00:00',
851
+                    $form->get_input_value('date_range_start_date').' 00:00:00',
852 852
                     $utc_timezone
853 853
                 );
854 854
                 $date_range_end_date = DateTime::createFromFormat(
855 855
                     'm/d/Y H:i:s',
856
-                    $form->get_input_value('date_range_end_date') . ' 23:59:59',
856
+                    $form->get_input_value('date_range_end_date').' 23:59:59',
857 857
                     $utc_timezone
858 858
                 );
859 859
                 if ($date_range_start_date instanceof DateTime) {
Please login to merge, or discard this patch.
Indentation   +876 added lines, -876 removed lines patch added patch discarded remove patch
@@ -17,880 +17,880 @@
 block discarded – undo
17 17
 {
18 18
 
19 19
 
20
-    /**
21
-     * @var EE_Form_Section_Proper
22
-     */
23
-    protected $datetime_fix_offset_form;
24
-
25
-
26
-    protected function _init_page_props()
27
-    {
28
-        $this->page_slug = EE_MAINTENANCE_PG_SLUG;
29
-        $this->page_label = EE_MAINTENANCE_LABEL;
30
-        $this->_admin_base_url = EE_MAINTENANCE_ADMIN_URL;
31
-        $this->_admin_base_path = EE_MAINTENANCE_ADMIN;
32
-    }
33
-
34
-
35
-    protected function _ajax_hooks()
36
-    {
37
-        add_action('wp_ajax_migration_step', array($this, 'migration_step'));
38
-        add_action('wp_ajax_add_error_to_migrations_ran', array($this, 'add_error_to_migrations_ran'));
39
-    }
40
-
41
-
42
-    protected function _define_page_props()
43
-    {
44
-        $this->_admin_page_title = EE_MAINTENANCE_LABEL;
45
-        $this->_labels = array(
46
-            'buttons' => array(
47
-                'reset_reservations' => esc_html__('Reset Ticket and Datetime Reserved Counts', 'event_espresso'),
48
-                'reset_capabilities' => esc_html__('Reset Event Espresso Capabilities', 'event_espresso'),
49
-            ),
50
-        );
51
-    }
52
-
53
-
54
-    protected function _set_page_routes()
55
-    {
56
-        $this->_page_routes = array(
57
-            'default'                             => array(
58
-                'func'       => '_maintenance',
59
-                'capability' => 'manage_options',
60
-            ),
61
-            'change_maintenance_level'            => array(
62
-                'func'       => '_change_maintenance_level',
63
-                'capability' => 'manage_options',
64
-                'noheader'   => true,
65
-            ),
66
-            'system_status'                       => array(
67
-                'func'       => '_system_status',
68
-                'capability' => 'manage_options',
69
-            ),
70
-            'download_system_status'              => array(
71
-                'func'       => '_download_system_status',
72
-                'capability' => 'manage_options',
73
-                'noheader'   => true,
74
-            ),
75
-            'send_migration_crash_report'         => array(
76
-                'func'       => '_send_migration_crash_report',
77
-                'capability' => 'manage_options',
78
-                'noheader'   => true,
79
-            ),
80
-            'confirm_migration_crash_report_sent' => array(
81
-                'func'       => '_confirm_migration_crash_report_sent',
82
-                'capability' => 'manage_options',
83
-            ),
84
-            'data_reset'                          => array(
85
-                'func'       => '_data_reset_and_delete',
86
-                'capability' => 'manage_options',
87
-            ),
88
-            'reset_db'                            => array(
89
-                'func'       => '_reset_db',
90
-                'capability' => 'manage_options',
91
-                'noheader'   => true,
92
-                'args'       => array('nuke_old_ee4_data' => true),
93
-            ),
94
-            'start_with_fresh_ee4_db'             => array(
95
-                'func'       => '_reset_db',
96
-                'capability' => 'manage_options',
97
-                'noheader'   => true,
98
-                'args'       => array('nuke_old_ee4_data' => false),
99
-            ),
100
-            'delete_db'                           => array(
101
-                'func'       => '_delete_db',
102
-                'capability' => 'manage_options',
103
-                'noheader'   => true,
104
-            ),
105
-            'rerun_migration_from_ee3'            => array(
106
-                'func'       => '_rerun_migration_from_ee3',
107
-                'capability' => 'manage_options',
108
-                'noheader'   => true,
109
-            ),
110
-            'reset_reservations'                  => array(
111
-                'func'       => '_reset_reservations',
112
-                'capability' => 'manage_options',
113
-                'noheader'   => true,
114
-            ),
115
-            'reset_capabilities'                  => array(
116
-                'func'       => '_reset_capabilities',
117
-                'capability' => 'manage_options',
118
-                'noheader'   => true,
119
-            ),
120
-            'reattempt_migration'                 => array(
121
-                'func'       => '_reattempt_migration',
122
-                'capability' => 'manage_options',
123
-                'noheader'   => true,
124
-            ),
125
-            'datetime_tools'                      => array(
126
-                'func'       => '_datetime_tools',
127
-                'capability' => 'manage_options',
128
-            ),
129
-            'run_datetime_offset_fix'             => array(
130
-                'func'               => '_apply_datetime_offset',
131
-                'noheader'           => true,
132
-                'headers_sent_route' => 'datetime_tools',
133
-                'capability'         => 'manage_options',
134
-            ),
135
-        );
136
-    }
137
-
138
-
139
-    protected function _set_page_config()
140
-    {
141
-        $this->_page_config = array(
142
-            'default'        => array(
143
-                'nav'           => array(
144
-                    'label' => esc_html__('Maintenance', 'event_espresso'),
145
-                    'order' => 10,
146
-                ),
147
-                'require_nonce' => false,
148
-            ),
149
-            'data_reset'     => array(
150
-                'nav'           => array(
151
-                    'label' => esc_html__('Reset/Delete Data', 'event_espresso'),
152
-                    'order' => 20,
153
-                ),
154
-                'require_nonce' => false,
155
-            ),
156
-            'datetime_tools' => array(
157
-                'nav'           => array(
158
-                    'label' => esc_html__('Datetime Utilities', 'event_espresso'),
159
-                    'order' => 25,
160
-                ),
161
-                'require_nonce' => false,
162
-            ),
163
-            'system_status'  => array(
164
-                'nav'           => array(
165
-                    'label' => esc_html__("System Information", "event_espresso"),
166
-                    'order' => 30,
167
-                ),
168
-                'require_nonce' => false,
169
-            ),
170
-        );
171
-    }
172
-
173
-
174
-    /**
175
-     * default maintenance page. If we're in maintenance mode level 2, then we need to show
176
-     * the migration scripts and all that UI.
177
-     */
178
-    public function _maintenance()
179
-    {
180
-        // it all depends if we're in maintenance model level 1 (frontend-only) or
181
-        // level 2 (everything except maintenance page)
182
-        try {
183
-            // get the current maintenance level and check if
184
-            // we are removed
185
-            $mm = EE_Maintenance_Mode::instance()->level();
186
-            $placed_in_mm = EE_Maintenance_Mode::instance()->set_maintenance_mode_if_db_old();
187
-            if ($mm == EE_Maintenance_Mode::level_2_complete_maintenance && ! $placed_in_mm) {
188
-                // we just took the site out of maintenance mode, so notify the user.
189
-                // unfortunately this message appears to be echoed on the NEXT page load...
190
-                // oh well, we should really be checking for this on addon deactivation anyways
191
-                EE_Error::add_attention(
192
-                    __(
193
-                        'Site taken out of maintenance mode because no data migration scripts are required',
194
-                        'event_espresso'
195
-                    )
196
-                );
197
-                $this->_process_notices(array('page' => 'espresso_maintenance_settings'), false);
198
-            }
199
-            // in case an exception is thrown while trying to handle migrations
200
-            switch (EE_Maintenance_Mode::instance()->level()) {
201
-                case EE_Maintenance_Mode::level_0_not_in_maintenance:
202
-                case EE_Maintenance_Mode::level_1_frontend_only_maintenance:
203
-                    $show_maintenance_switch = true;
204
-                    $show_backup_db_text = false;
205
-                    $show_migration_progress = false;
206
-                    $script_names = array();
207
-                    $addons_should_be_upgraded_first = false;
208
-                    break;
209
-                case EE_Maintenance_Mode::level_2_complete_maintenance:
210
-                    $show_maintenance_switch = false;
211
-                    $show_migration_progress = true;
212
-                    if (isset($this->_req_data['continue_migration'])) {
213
-                        $show_backup_db_text = false;
214
-                    } else {
215
-                        $show_backup_db_text = true;
216
-                    }
217
-                    $scripts_needing_to_run = EE_Data_Migration_Manager::instance()
218
-                                                                       ->check_for_applicable_data_migration_scripts();
219
-                    $addons_should_be_upgraded_first = EE_Data_Migration_Manager::instance()->addons_need_updating();
220
-                    $script_names = array();
221
-                    $current_script = null;
222
-                    foreach ($scripts_needing_to_run as $script) {
223
-                        if ($script instanceof EE_Data_Migration_Script_Base) {
224
-                            if (! $current_script) {
225
-                                $current_script = $script;
226
-                                $current_script->migration_page_hooks();
227
-                            }
228
-                            $script_names[] = $script->pretty_name();
229
-                        }
230
-                    }
231
-                    break;
232
-            }
233
-            $most_recent_migration = EE_Data_Migration_Manager::instance()->get_last_ran_script(true);
234
-            $exception_thrown = false;
235
-        } catch (EE_Error $e) {
236
-            EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($e->getMessage());
237
-            // now, just so we can display the page correctly, make a error migration script stage object
238
-            // and also put the error on it. It only persists for the duration of this request
239
-            $most_recent_migration = new EE_DMS_Unknown_1_0_0();
240
-            $most_recent_migration->add_error($e->getMessage());
241
-            $exception_thrown = true;
242
-        }
243
-        $current_db_state = EE_Data_Migration_Manager::instance()->ensure_current_database_state_is_set();
244
-        $current_db_state = str_replace('.decaf', '', $current_db_state);
245
-        if ($exception_thrown
246
-            || ($most_recent_migration
247
-                && $most_recent_migration instanceof EE_Data_Migration_Script_Base
248
-                && $most_recent_migration->is_broken()
249
-            )
250
-        ) {
251
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_was_borked_page.template.php';
252
-            $this->_template_args['support_url'] = 'http://eventespresso.com/support/forums/';
253
-            $this->_template_args['next_url'] = EEH_URL::add_query_args_and_nonce(
254
-                array(
255
-                    'action'  => 'confirm_migration_crash_report_sent',
256
-                    'success' => '0',
257
-                ),
258
-                EE_MAINTENANCE_ADMIN_URL
259
-            );
260
-        } elseif ($addons_should_be_upgraded_first) {
261
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_upgrade_addons_before_migrating.template.php';
262
-        } else {
263
-            if ($most_recent_migration
264
-                && $most_recent_migration instanceof EE_Data_Migration_Script_Base
265
-                && $most_recent_migration->can_continue()
266
-            ) {
267
-                $show_backup_db_text = false;
268
-                $show_continue_current_migration_script = true;
269
-                $show_most_recent_migration = true;
270
-            } elseif (isset($this->_req_data['continue_migration'])) {
271
-                $show_most_recent_migration = true;
272
-                $show_continue_current_migration_script = false;
273
-            } else {
274
-                $show_most_recent_migration = false;
275
-                $show_continue_current_migration_script = false;
276
-            }
277
-            if (isset($current_script)) {
278
-                $migrates_to = $current_script->migrates_to_version();
279
-                $plugin_slug = $migrates_to['slug'];
280
-                $new_version = $migrates_to['version'];
281
-                $this->_template_args = array_merge(
282
-                    $this->_template_args,
283
-                    array(
284
-                        'current_db_state' => sprintf(
285
-                            __("EE%s (%s)", "event_espresso"),
286
-                            isset($current_db_state[ $plugin_slug ]) ? $current_db_state[ $plugin_slug ] : 3,
287
-                            $plugin_slug
288
-                        ),
289
-                        'next_db_state'    => isset($current_script) ? sprintf(
290
-                            __("EE%s (%s)", 'event_espresso'),
291
-                            $new_version,
292
-                            $plugin_slug
293
-                        ) : null,
294
-                    )
295
-                );
296
-            } else {
297
-                $this->_template_args['current_db_state'] = null;
298
-                $this->_template_args['next_db_state'] = null;
299
-            }
300
-            $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_page.template.php';
301
-            $this->_template_args = array_merge(
302
-                $this->_template_args,
303
-                array(
304
-                    'show_most_recent_migration'             => $show_most_recent_migration,
305
-                    // flag for showing the most recent migration's status and/or errors
306
-                    'show_migration_progress'                => $show_migration_progress,
307
-                    // flag for showing the option to run migrations and see their progress
308
-                    'show_backup_db_text'                    => $show_backup_db_text,
309
-                    // flag for showing text telling the user to backup their DB
310
-                    'show_maintenance_switch'                => $show_maintenance_switch,
311
-                    // flag for showing the option to change maintenance mode between levels 0 and 1
312
-                    'script_names'                           => $script_names,
313
-                    // array of names of scripts that have run
314
-                    'show_continue_current_migration_script' => $show_continue_current_migration_script,
315
-                    // flag to change wording to indicating that we're only CONTINUING a migration script (somehow it got interrupted0
316
-                    'reset_db_page_link'                     => EE_Admin_Page::add_query_args_and_nonce(
317
-                        array('action' => 'reset_db'),
318
-                        EE_MAINTENANCE_ADMIN_URL
319
-                    ),
320
-                    'data_reset_page'                        => EE_Admin_Page::add_query_args_and_nonce(
321
-                        array('action' => 'data_reset'),
322
-                        EE_MAINTENANCE_ADMIN_URL
323
-                    ),
324
-                    'update_migration_script_page_link'      => EE_Admin_Page::add_query_args_and_nonce(
325
-                        array('action' => 'change_maintenance_level'),
326
-                        EE_MAINTENANCE_ADMIN_URL
327
-                    ),
328
-                    'ultimate_db_state'                      => sprintf(
329
-                        __("EE%s", 'event_espresso'),
330
-                        espresso_version()
331
-                    ),
332
-                )
333
-            );
334
-            // make sure we have the form fields helper available. It usually is, but sometimes it isn't
335
-        }
336
-        $this->_template_args['most_recent_migration'] = $most_recent_migration;// the actual most recently ran migration
337
-        // now render the migration options part, and put it in a variable
338
-        $migration_options_template_file = apply_filters(
339
-            'FHEE__ee_migration_page__migration_options_template',
340
-            EE_MAINTENANCE_TEMPLATE_PATH . 'migration_options_from_ee4.template.php'
341
-        );
342
-        $migration_options_html = EEH_Template::display_template(
343
-            $migration_options_template_file,
344
-            $this->_template_args,
345
-            true
346
-        );
347
-        $this->_template_args['migration_options_html'] = $migration_options_html;
348
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
349
-            $this->_template_path,
350
-            $this->_template_args,
351
-            true
352
-        );
353
-        $this->display_admin_page_with_sidebar();
354
-    }
355
-
356
-
357
-    /**
358
-     * returns JSON and executes another step of the currently-executing data migration (called via ajax)
359
-     */
360
-    public function migration_step()
361
-    {
362
-        $this->_template_args['data'] = EE_Data_Migration_Manager::instance()->response_to_migration_ajax_request();
363
-        $this->_return_json();
364
-    }
365
-
366
-
367
-    /**
368
-     * Can be used by js when it notices a response with HTML in it in order
369
-     * to log the malformed response
370
-     */
371
-    public function add_error_to_migrations_ran()
372
-    {
373
-        EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($this->_req_data['message']);
374
-        $this->_template_args['data'] = array('ok' => true);
375
-        $this->_return_json();
376
-    }
377
-
378
-
379
-    /**
380
-     * changes the maintenance level, provided there are still no migration scripts that should run
381
-     */
382
-    public function _change_maintenance_level()
383
-    {
384
-        $new_level = absint($this->_req_data['maintenance_mode_level']);
385
-        if (! EE_Data_Migration_Manager::instance()->check_for_applicable_data_migration_scripts()) {
386
-            EE_Maintenance_Mode::instance()->set_maintenance_level($new_level);
387
-            $success = true;
388
-        } else {
389
-            EE_Maintenance_Mode::instance()->set_maintenance_mode_if_db_old();
390
-            $success = false;
391
-        }
392
-        $this->_redirect_after_action($success, 'Maintenance Mode', esc_html__("Updated", "event_espresso"));
393
-    }
394
-
395
-
396
-    /**
397
-     * a tab with options for resetting and/or deleting EE data
398
-     *
399
-     * @throws \EE_Error
400
-     * @throws \DomainException
401
-     */
402
-    public function _data_reset_and_delete()
403
-    {
404
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_data_reset_and_delete.template.php';
405
-        $this->_template_args['reset_reservations_button'] = $this->get_action_link_or_button(
406
-            'reset_reservations',
407
-            'reset_reservations',
408
-            array(),
409
-            'button button-primary ee-confirm',
410
-            '',
411
-            false
412
-        );
413
-        $this->_template_args['reset_capabilities_button'] = $this->get_action_link_or_button(
414
-            'reset_capabilities',
415
-            'reset_capabilities',
416
-            array(),
417
-            'button button-primary ee-confirm',
418
-            '',
419
-            false
420
-        );
421
-        $this->_template_args['delete_db_url'] = EE_Admin_Page::add_query_args_and_nonce(
422
-            array('action' => 'delete_db'),
423
-            EE_MAINTENANCE_ADMIN_URL
424
-        );
425
-        $this->_template_args['reset_db_url'] = EE_Admin_Page::add_query_args_and_nonce(
426
-            array('action' => 'reset_db'),
427
-            EE_MAINTENANCE_ADMIN_URL
428
-        );
429
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
430
-            $this->_template_path,
431
-            $this->_template_args,
432
-            true
433
-        );
434
-        $this->display_admin_page_with_sidebar();
435
-    }
436
-
437
-
438
-    protected function _reset_reservations()
439
-    {
440
-        if (\EED_Ticket_Sales_Monitor::reset_reservation_counts()) {
441
-            EE_Error::add_success(
442
-                __(
443
-                    'Ticket and datetime reserved counts have been successfully reset.',
444
-                    'event_espresso'
445
-                )
446
-            );
447
-        } else {
448
-            EE_Error::add_success(
449
-                __(
450
-                    'Ticket and datetime reserved counts were correct and did not need resetting.',
451
-                    'event_espresso'
452
-                )
453
-            );
454
-        }
455
-        $this->_redirect_after_action(true, '', '', array('action' => 'data_reset'), true);
456
-    }
457
-
458
-
459
-    protected function _reset_capabilities()
460
-    {
461
-        EE_Registry::instance()->CAP->init_caps(true);
462
-        EE_Error::add_success(
463
-            __(
464
-                'Default Event Espresso capabilities have been restored for all current roles.',
465
-                'event_espresso'
466
-            )
467
-        );
468
-        $this->_redirect_after_action(false, '', '', array('action' => 'data_reset'), true);
469
-    }
470
-
471
-
472
-    /**
473
-     * resets the DMSs so we can attempt to continue migrating after a fatal error
474
-     * (only a good idea when someone has somehow tried ot fix whatever caused
475
-     * the fatal error in teh first place)
476
-     */
477
-    protected function _reattempt_migration()
478
-    {
479
-        EE_Data_Migration_Manager::instance()->reattempt();
480
-        $this->_redirect_after_action(false, '', '', array('action' => 'default'), true);
481
-    }
482
-
483
-
484
-    /**
485
-     * shows the big ol' System Information page
486
-     */
487
-    public function _system_status()
488
-    {
489
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_system_stati_page.template.php';
490
-        $this->_template_args['system_stati'] = EEM_System_Status::instance()->get_system_stati();
491
-        $this->_template_args['download_system_status_url'] = EE_Admin_Page::add_query_args_and_nonce(
492
-            array(
493
-                'action' => 'download_system_status',
494
-            ),
495
-            EE_MAINTENANCE_ADMIN_URL
496
-        );
497
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
498
-            $this->_template_path,
499
-            $this->_template_args,
500
-            true
501
-        );
502
-        $this->display_admin_page_with_sidebar();
503
-    }
504
-
505
-    /**
506
-     * Downloads an HTML file of the system status that can be easily stored or emailed
507
-     */
508
-    public function _download_system_status()
509
-    {
510
-        $status_info = EEM_System_Status::instance()->get_system_stati();
511
-        header('Content-Disposition: attachment');
512
-        header("Content-Disposition: attachment; filename=system_status_" . sanitize_key(site_url()) . ".html");
513
-        echo "<style>table{border:1px solid darkgrey;}td{vertical-align:top}</style>";
514
-        echo "<h1>System Information for " . site_url() . "</h1>";
515
-        echo EEH_Template::layout_array_as_table($status_info);
516
-        die;
517
-    }
518
-
519
-
520
-    public function _send_migration_crash_report()
521
-    {
522
-        $from = $this->_req_data['from'];
523
-        $from_name = $this->_req_data['from_name'];
524
-        $body = $this->_req_data['body'];
525
-        try {
526
-            $success = wp_mail(
527
-                EE_SUPPORT_EMAIL,
528
-                'Migration Crash Report',
529
-                $body . "/r/n<br>" . print_r(EEM_System_Status::instance()->get_system_stati(), true),
530
-                array(
531
-                    "from:$from_name<$from>",
532
-                )
533
-            );
534
-        } catch (Exception $e) {
535
-            $success = false;
536
-        }
537
-        $this->_redirect_after_action(
538
-            $success,
539
-            esc_html__("Migration Crash Report", "event_espresso"),
540
-            esc_html__("sent", "event_espresso"),
541
-            array('success' => $success, 'action' => 'confirm_migration_crash_report_sent')
542
-        );
543
-    }
544
-
545
-
546
-    public function _confirm_migration_crash_report_sent()
547
-    {
548
-        try {
549
-            $most_recent_migration = EE_Data_Migration_Manager::instance()->get_last_ran_script(true);
550
-        } catch (EE_Error $e) {
551
-            EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($e->getMessage());
552
-            // now, just so we can display the page correctly, make a error migration script stage object
553
-            // and also put the error on it. It only persists for the duration of this request
554
-            $most_recent_migration = new EE_DMS_Unknown_1_0_0();
555
-            $most_recent_migration->add_error($e->getMessage());
556
-        }
557
-        $success = $this->_req_data['success'] == '1' ? true : false;
558
-        $this->_template_args['success'] = $success;
559
-        $this->_template_args['most_recent_migration'] = $most_recent_migration;
560
-        $this->_template_args['reset_db_action_url'] = EE_Admin_Page::add_query_args_and_nonce(
561
-            array('action' => 'reset_db'),
562
-            EE_MAINTENANCE_ADMIN_URL
563
-        );
564
-        $this->_template_args['reset_db_page_url'] = EE_Admin_Page::add_query_args_and_nonce(
565
-            array('action' => 'data_reset'),
566
-            EE_MAINTENANCE_ADMIN_URL
567
-        );
568
-        $this->_template_args['reattempt_action_url'] = EE_Admin_Page::add_query_args_and_nonce(
569
-            array('action' => 'reattempt_migration'),
570
-            EE_MAINTENANCE_ADMIN_URL
571
-        );
572
-        $this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_confirm_migration_crash_report_sent.template.php';
573
-        $this->_template_args['admin_page_content'] = EEH_Template::display_template(
574
-            $this->_template_path,
575
-            $this->_template_args,
576
-            true
577
-        );
578
-        $this->display_admin_page_with_sidebar();
579
-    }
580
-
581
-
582
-    /**
583
-     * Resets the entire EE4 database.
584
-     * Currently basically only sets up ee4 database for a fresh install- doesn't
585
-     * actually clean out the old wp options, or cpts (although does erase old ee table data)
586
-     *
587
-     * @param boolean $nuke_old_ee4_data controls whether or not we
588
-     *                                   destroy the old ee4 data, or just try initializing ee4 default data
589
-     */
590
-    public function _reset_db($nuke_old_ee4_data = true)
591
-    {
592
-        EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
593
-        if ($nuke_old_ee4_data) {
594
-            EEH_Activation::delete_all_espresso_cpt_data();
595
-            EEH_Activation::delete_all_espresso_tables_and_data(false);
596
-            EEH_Activation::remove_cron_tasks();
597
-        }
598
-        // make sure when we reset the registry's config that it
599
-        // switches to using the new singleton
600
-        EE_Registry::instance()->CFG = EE_Registry::instance()->CFG->reset(true);
601
-        EE_System::instance()->initialize_db_if_no_migrations_required(true);
602
-        EE_System::instance()->redirect_to_about_ee();
603
-    }
604
-
605
-
606
-    /**
607
-     * Deletes ALL EE tables, Records, and Options from the database.
608
-     */
609
-    public function _delete_db()
610
-    {
611
-        EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
612
-        EEH_Activation::delete_all_espresso_cpt_data();
613
-        EEH_Activation::delete_all_espresso_tables_and_data();
614
-        EEH_Activation::remove_cron_tasks();
615
-        EEH_Activation::deactivate_event_espresso();
616
-        wp_safe_redirect(admin_url('plugins.php'));
617
-        exit;
618
-    }
619
-
620
-
621
-    /**
622
-     * sets up EE4 to rerun the migrations from ee3 to ee4
623
-     */
624
-    public function _rerun_migration_from_ee3()
625
-    {
626
-        EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
627
-        EEH_Activation::delete_all_espresso_cpt_data();
628
-        EEH_Activation::delete_all_espresso_tables_and_data(false);
629
-        // set the db state to something that will require migrations
630
-        update_option(EE_Data_Migration_Manager::current_database_state, '3.1.36.0');
631
-        EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_2_complete_maintenance);
632
-        $this->_redirect_after_action(
633
-            true,
634
-            esc_html__("Database", 'event_espresso'),
635
-            esc_html__("reset", 'event_espresso')
636
-        );
637
-    }
638
-
639
-
640
-    // none of the below group are currently used for Gateway Settings
641
-    protected function _add_screen_options()
642
-    {
643
-    }
644
-
645
-
646
-    protected function _add_feature_pointers()
647
-    {
648
-    }
649
-
650
-
651
-    public function admin_init()
652
-    {
653
-    }
654
-
655
-
656
-    public function admin_notices()
657
-    {
658
-    }
659
-
660
-
661
-    public function admin_footer_scripts()
662
-    {
663
-    }
664
-
665
-
666
-    public function load_scripts_styles()
667
-    {
668
-        wp_enqueue_script('ee_admin_js');
669
-        wp_enqueue_script(
670
-            'ee-maintenance',
671
-            EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.js',
672
-            array('jquery'),
673
-            EVENT_ESPRESSO_VERSION,
674
-            true
675
-        );
676
-        wp_register_style(
677
-            'espresso_maintenance',
678
-            EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.css',
679
-            array(),
680
-            EVENT_ESPRESSO_VERSION
681
-        );
682
-        wp_enqueue_style('espresso_maintenance');
683
-        // localize script stuff
684
-        wp_localize_script(
685
-            'ee-maintenance',
686
-            'ee_maintenance',
687
-            array(
688
-                'migrating'                        => esc_html__("Updating Database...", "event_espresso"),
689
-                'next'                             => esc_html__("Next", "event_espresso"),
690
-                'fatal_error'                      => esc_html__("A Fatal Error Has Occurred", "event_espresso"),
691
-                'click_next_when_ready'            => esc_html__(
692
-                    "The current Database Update has ended. Click 'next' when ready to proceed",
693
-                    "event_espresso"
694
-                ),
695
-                'status_no_more_migration_scripts' => EE_Data_Migration_Manager::status_no_more_migration_scripts,
696
-                'status_fatal_error'               => EE_Data_Migration_Manager::status_fatal_error,
697
-                'status_completed'                 => EE_Data_Migration_Manager::status_completed,
698
-                'confirm'                          => esc_html__(
699
-                    'Are you sure you want to do this? It CANNOT be undone!',
700
-                    'event_espresso'
701
-                ),
702
-                'confirm_skip_migration'           => esc_html__(
703
-                    'You have chosen to NOT migrate your existing data. Are you sure you want to continue?',
704
-                    'event_espresso'
705
-                ),
706
-            )
707
-        );
708
-    }
709
-
710
-
711
-    public function load_scripts_styles_default()
712
-    {
713
-    }
714
-
715
-
716
-    /**
717
-     * Enqueue scripts and styles for the datetime tools page.
718
-     */
719
-    public function load_scripts_styles_datetime_tools()
720
-    {
721
-        EE_Datepicker_Input::enqueue_styles_and_scripts();
722
-    }
723
-
724
-
725
-    protected function _datetime_tools()
726
-    {
727
-        $form_action = EE_Admin_Page::add_query_args_and_nonce(
728
-            array(
729
-                'action'        => 'run_datetime_offset_fix',
730
-                'return_action' => $this->_req_action,
731
-            ),
732
-            EE_MAINTENANCE_ADMIN_URL
733
-        );
734
-        $form = $this->_get_datetime_offset_fix_form();
735
-        $this->_admin_page_title = esc_html__('Datetime Utilities', 'event_espresso');
736
-        $this->_template_args['admin_page_content'] = $form->form_open($form_action, 'post')
737
-                                                      . $form->get_html_and_js()
738
-                                                      . $form->form_close();
739
-        $this->display_admin_page_with_no_sidebar();
740
-    }
741
-
742
-
743
-    protected function _get_datetime_offset_fix_form()
744
-    {
745
-        if (! $this->datetime_fix_offset_form instanceof EE_Form_Section_Proper) {
746
-            $this->datetime_fix_offset_form = new EE_Form_Section_Proper(
747
-                array(
748
-                    'name'            => 'datetime_offset_fix_option',
749
-                    'layout_strategy' => new EE_Admin_Two_Column_Layout(),
750
-                    'subsections'     => array(
751
-                        'title'                  => new EE_Form_Section_HTML(
752
-                            EEH_HTML::h2(
753
-                                esc_html__('Datetime Offset Tool', 'event_espresso')
754
-                            )
755
-                        ),
756
-                        'explanation'            => new EE_Form_Section_HTML(
757
-                            EEH_HTML::p(
758
-                                esc_html__(
759
-                                    'Use this tool to automatically apply the provided offset to all Event Espresso records in your database that involve dates and times.',
760
-                                    'event_espresso'
761
-                                )
762
-                            )
763
-                            . EEH_HTML::p(
764
-                                esc_html__(
765
-                                    'Note: If you enter 1.25, that will result in the offset of 1 hour 15 minutes being applied.  Decimals represent the fraction of hours, not minutes.',
766
-                                    'event_espresso'
767
-                                )
768
-                            )
769
-                        ),
770
-                        'offset_input'           => new EE_Float_Input(
771
-                            array(
772
-                                'html_name'       => 'offset_for_datetimes',
773
-                                'html_label_text' => esc_html__(
774
-                                    'Offset to apply (in hours):',
775
-                                    'event_espresso'
776
-                                ),
777
-                                'min_value'       => '-12',
778
-                                'max_value'       => '14',
779
-                                'step_value'      => '.25',
780
-                                'default'         => DatetimeOffsetFix::getOffset(),
781
-                            )
782
-                        ),
783
-                        'date_range_explanation' => new EE_Form_Section_HTML(
784
-                            EEH_HTML::p(
785
-                                esc_html__(
786
-                                    'Leave the following fields blank if you want the offset to be applied to all dates. If however, you want to just apply the offset to a specific range of dates you can restrict the offset application using these fields.',
787
-                                    'event_espresso'
788
-                                )
789
-                            )
790
-                            . EEH_HTML::p(
791
-                                EEH_HTML::strong(
792
-                                    sprintf(
793
-                                        esc_html__(
794
-                                            'Note: please enter the dates in UTC (You can use %1$sthis online tool%2$s to assist with conversions).',
795
-                                            'event_espresso'
796
-                                        ),
797
-                                        '<a href="https://www.timeanddate.com/worldclock/converter.html">',
798
-                                        '</a>'
799
-                                    )
800
-                                )
801
-                            )
802
-                        ),
803
-                        'date_range_start_date'  => new EE_Datepicker_Input(
804
-                            array(
805
-                                'html_name'       => 'offset_date_start_range',
806
-                                'html_label_text' => esc_html__(
807
-                                    'Start Date for dates the offset applied to:',
808
-                                    'event_espresso'
809
-                                ),
810
-                            )
811
-                        ),
812
-                        'date_range_end_date'    => new EE_Datepicker_Input(
813
-                            array(
814
-                                'html_name'       => 'offset_date_end_range',
815
-                                'html_label_text' => esc_html__(
816
-                                    'End Date for dates the offset is applied to:',
817
-                                    'event_espresso'
818
-                                ),
819
-                            )
820
-                        ),
821
-                        'submit'                 => new EE_Submit_Input(
822
-                            array(
823
-                                'html_label_text' => '',
824
-                                'default'         => esc_html__('Apply Offset', 'event_espresso'),
825
-                            )
826
-                        ),
827
-                    ),
828
-                )
829
-            );
830
-        }
831
-        return $this->datetime_fix_offset_form;
832
-    }
833
-
834
-
835
-    /**
836
-     * Callback for the run_datetime_offset_fix route.
837
-     *
838
-     * @throws EE_Error
839
-     */
840
-    protected function _apply_datetime_offset()
841
-    {
842
-        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
843
-            $form = $this->_get_datetime_offset_fix_form();
844
-            $form->receive_form_submission($this->_req_data);
845
-            if ($form->is_valid()) {
846
-                // save offset data so batch processor can get it.
847
-                DatetimeOffsetFix::updateOffset($form->get_input_value('offset_input'));
848
-                $utc_timezone = new DateTimeZone('UTC');
849
-                $date_range_start_date = DateTime::createFromFormat(
850
-                    'm/d/Y H:i:s',
851
-                    $form->get_input_value('date_range_start_date') . ' 00:00:00',
852
-                    $utc_timezone
853
-                );
854
-                $date_range_end_date = DateTime::createFromFormat(
855
-                    'm/d/Y H:i:s',
856
-                    $form->get_input_value('date_range_end_date') . ' 23:59:59',
857
-                    $utc_timezone
858
-                );
859
-                if ($date_range_start_date instanceof DateTime) {
860
-                    DatetimeOffsetFix::updateStartDateRange(DbSafeDateTime::createFromDateTime($date_range_start_date));
861
-                }
862
-                if ($date_range_end_date instanceof DateTime) {
863
-                    DatetimeOffsetFix::updateEndDateRange(DbSafeDateTime::createFromDateTime($date_range_end_date));
864
-                }
865
-                // redirect to batch tool
866
-                wp_redirect(
867
-                    EE_Admin_Page::add_query_args_and_nonce(
868
-                        array(
869
-                            'page'        => 'espresso_batch',
870
-                            'batch'       => 'job',
871
-                            'label'       => esc_html__('Applying Offset', 'event_espresso'),
872
-                            'job_handler' => urlencode('EventEspressoBatchRequest\JobHandlers\DatetimeOffsetFix'),
873
-                            'return_url'  => urlencode(
874
-                                add_query_arg(
875
-                                    array(
876
-                                        'action' => 'datetime_tools',
877
-                                    ),
878
-                                    EEH_URL::current_url_without_query_paramaters(
879
-                                        array(
880
-                                            'return_action',
881
-                                            'run_datetime_offset_fix_nonce',
882
-                                            'return',
883
-                                            'datetime_tools_nonce',
884
-                                        )
885
-                                    )
886
-                                )
887
-                            ),
888
-                        ),
889
-                        admin_url()
890
-                    )
891
-                );
892
-                exit;
893
-            }
894
-        }
895
-    }
20
+	/**
21
+	 * @var EE_Form_Section_Proper
22
+	 */
23
+	protected $datetime_fix_offset_form;
24
+
25
+
26
+	protected function _init_page_props()
27
+	{
28
+		$this->page_slug = EE_MAINTENANCE_PG_SLUG;
29
+		$this->page_label = EE_MAINTENANCE_LABEL;
30
+		$this->_admin_base_url = EE_MAINTENANCE_ADMIN_URL;
31
+		$this->_admin_base_path = EE_MAINTENANCE_ADMIN;
32
+	}
33
+
34
+
35
+	protected function _ajax_hooks()
36
+	{
37
+		add_action('wp_ajax_migration_step', array($this, 'migration_step'));
38
+		add_action('wp_ajax_add_error_to_migrations_ran', array($this, 'add_error_to_migrations_ran'));
39
+	}
40
+
41
+
42
+	protected function _define_page_props()
43
+	{
44
+		$this->_admin_page_title = EE_MAINTENANCE_LABEL;
45
+		$this->_labels = array(
46
+			'buttons' => array(
47
+				'reset_reservations' => esc_html__('Reset Ticket and Datetime Reserved Counts', 'event_espresso'),
48
+				'reset_capabilities' => esc_html__('Reset Event Espresso Capabilities', 'event_espresso'),
49
+			),
50
+		);
51
+	}
52
+
53
+
54
+	protected function _set_page_routes()
55
+	{
56
+		$this->_page_routes = array(
57
+			'default'                             => array(
58
+				'func'       => '_maintenance',
59
+				'capability' => 'manage_options',
60
+			),
61
+			'change_maintenance_level'            => array(
62
+				'func'       => '_change_maintenance_level',
63
+				'capability' => 'manage_options',
64
+				'noheader'   => true,
65
+			),
66
+			'system_status'                       => array(
67
+				'func'       => '_system_status',
68
+				'capability' => 'manage_options',
69
+			),
70
+			'download_system_status'              => array(
71
+				'func'       => '_download_system_status',
72
+				'capability' => 'manage_options',
73
+				'noheader'   => true,
74
+			),
75
+			'send_migration_crash_report'         => array(
76
+				'func'       => '_send_migration_crash_report',
77
+				'capability' => 'manage_options',
78
+				'noheader'   => true,
79
+			),
80
+			'confirm_migration_crash_report_sent' => array(
81
+				'func'       => '_confirm_migration_crash_report_sent',
82
+				'capability' => 'manage_options',
83
+			),
84
+			'data_reset'                          => array(
85
+				'func'       => '_data_reset_and_delete',
86
+				'capability' => 'manage_options',
87
+			),
88
+			'reset_db'                            => array(
89
+				'func'       => '_reset_db',
90
+				'capability' => 'manage_options',
91
+				'noheader'   => true,
92
+				'args'       => array('nuke_old_ee4_data' => true),
93
+			),
94
+			'start_with_fresh_ee4_db'             => array(
95
+				'func'       => '_reset_db',
96
+				'capability' => 'manage_options',
97
+				'noheader'   => true,
98
+				'args'       => array('nuke_old_ee4_data' => false),
99
+			),
100
+			'delete_db'                           => array(
101
+				'func'       => '_delete_db',
102
+				'capability' => 'manage_options',
103
+				'noheader'   => true,
104
+			),
105
+			'rerun_migration_from_ee3'            => array(
106
+				'func'       => '_rerun_migration_from_ee3',
107
+				'capability' => 'manage_options',
108
+				'noheader'   => true,
109
+			),
110
+			'reset_reservations'                  => array(
111
+				'func'       => '_reset_reservations',
112
+				'capability' => 'manage_options',
113
+				'noheader'   => true,
114
+			),
115
+			'reset_capabilities'                  => array(
116
+				'func'       => '_reset_capabilities',
117
+				'capability' => 'manage_options',
118
+				'noheader'   => true,
119
+			),
120
+			'reattempt_migration'                 => array(
121
+				'func'       => '_reattempt_migration',
122
+				'capability' => 'manage_options',
123
+				'noheader'   => true,
124
+			),
125
+			'datetime_tools'                      => array(
126
+				'func'       => '_datetime_tools',
127
+				'capability' => 'manage_options',
128
+			),
129
+			'run_datetime_offset_fix'             => array(
130
+				'func'               => '_apply_datetime_offset',
131
+				'noheader'           => true,
132
+				'headers_sent_route' => 'datetime_tools',
133
+				'capability'         => 'manage_options',
134
+			),
135
+		);
136
+	}
137
+
138
+
139
+	protected function _set_page_config()
140
+	{
141
+		$this->_page_config = array(
142
+			'default'        => array(
143
+				'nav'           => array(
144
+					'label' => esc_html__('Maintenance', 'event_espresso'),
145
+					'order' => 10,
146
+				),
147
+				'require_nonce' => false,
148
+			),
149
+			'data_reset'     => array(
150
+				'nav'           => array(
151
+					'label' => esc_html__('Reset/Delete Data', 'event_espresso'),
152
+					'order' => 20,
153
+				),
154
+				'require_nonce' => false,
155
+			),
156
+			'datetime_tools' => array(
157
+				'nav'           => array(
158
+					'label' => esc_html__('Datetime Utilities', 'event_espresso'),
159
+					'order' => 25,
160
+				),
161
+				'require_nonce' => false,
162
+			),
163
+			'system_status'  => array(
164
+				'nav'           => array(
165
+					'label' => esc_html__("System Information", "event_espresso"),
166
+					'order' => 30,
167
+				),
168
+				'require_nonce' => false,
169
+			),
170
+		);
171
+	}
172
+
173
+
174
+	/**
175
+	 * default maintenance page. If we're in maintenance mode level 2, then we need to show
176
+	 * the migration scripts and all that UI.
177
+	 */
178
+	public function _maintenance()
179
+	{
180
+		// it all depends if we're in maintenance model level 1 (frontend-only) or
181
+		// level 2 (everything except maintenance page)
182
+		try {
183
+			// get the current maintenance level and check if
184
+			// we are removed
185
+			$mm = EE_Maintenance_Mode::instance()->level();
186
+			$placed_in_mm = EE_Maintenance_Mode::instance()->set_maintenance_mode_if_db_old();
187
+			if ($mm == EE_Maintenance_Mode::level_2_complete_maintenance && ! $placed_in_mm) {
188
+				// we just took the site out of maintenance mode, so notify the user.
189
+				// unfortunately this message appears to be echoed on the NEXT page load...
190
+				// oh well, we should really be checking for this on addon deactivation anyways
191
+				EE_Error::add_attention(
192
+					__(
193
+						'Site taken out of maintenance mode because no data migration scripts are required',
194
+						'event_espresso'
195
+					)
196
+				);
197
+				$this->_process_notices(array('page' => 'espresso_maintenance_settings'), false);
198
+			}
199
+			// in case an exception is thrown while trying to handle migrations
200
+			switch (EE_Maintenance_Mode::instance()->level()) {
201
+				case EE_Maintenance_Mode::level_0_not_in_maintenance:
202
+				case EE_Maintenance_Mode::level_1_frontend_only_maintenance:
203
+					$show_maintenance_switch = true;
204
+					$show_backup_db_text = false;
205
+					$show_migration_progress = false;
206
+					$script_names = array();
207
+					$addons_should_be_upgraded_first = false;
208
+					break;
209
+				case EE_Maintenance_Mode::level_2_complete_maintenance:
210
+					$show_maintenance_switch = false;
211
+					$show_migration_progress = true;
212
+					if (isset($this->_req_data['continue_migration'])) {
213
+						$show_backup_db_text = false;
214
+					} else {
215
+						$show_backup_db_text = true;
216
+					}
217
+					$scripts_needing_to_run = EE_Data_Migration_Manager::instance()
218
+																	   ->check_for_applicable_data_migration_scripts();
219
+					$addons_should_be_upgraded_first = EE_Data_Migration_Manager::instance()->addons_need_updating();
220
+					$script_names = array();
221
+					$current_script = null;
222
+					foreach ($scripts_needing_to_run as $script) {
223
+						if ($script instanceof EE_Data_Migration_Script_Base) {
224
+							if (! $current_script) {
225
+								$current_script = $script;
226
+								$current_script->migration_page_hooks();
227
+							}
228
+							$script_names[] = $script->pretty_name();
229
+						}
230
+					}
231
+					break;
232
+			}
233
+			$most_recent_migration = EE_Data_Migration_Manager::instance()->get_last_ran_script(true);
234
+			$exception_thrown = false;
235
+		} catch (EE_Error $e) {
236
+			EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($e->getMessage());
237
+			// now, just so we can display the page correctly, make a error migration script stage object
238
+			// and also put the error on it. It only persists for the duration of this request
239
+			$most_recent_migration = new EE_DMS_Unknown_1_0_0();
240
+			$most_recent_migration->add_error($e->getMessage());
241
+			$exception_thrown = true;
242
+		}
243
+		$current_db_state = EE_Data_Migration_Manager::instance()->ensure_current_database_state_is_set();
244
+		$current_db_state = str_replace('.decaf', '', $current_db_state);
245
+		if ($exception_thrown
246
+			|| ($most_recent_migration
247
+				&& $most_recent_migration instanceof EE_Data_Migration_Script_Base
248
+				&& $most_recent_migration->is_broken()
249
+			)
250
+		) {
251
+			$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_was_borked_page.template.php';
252
+			$this->_template_args['support_url'] = 'http://eventespresso.com/support/forums/';
253
+			$this->_template_args['next_url'] = EEH_URL::add_query_args_and_nonce(
254
+				array(
255
+					'action'  => 'confirm_migration_crash_report_sent',
256
+					'success' => '0',
257
+				),
258
+				EE_MAINTENANCE_ADMIN_URL
259
+			);
260
+		} elseif ($addons_should_be_upgraded_first) {
261
+			$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_upgrade_addons_before_migrating.template.php';
262
+		} else {
263
+			if ($most_recent_migration
264
+				&& $most_recent_migration instanceof EE_Data_Migration_Script_Base
265
+				&& $most_recent_migration->can_continue()
266
+			) {
267
+				$show_backup_db_text = false;
268
+				$show_continue_current_migration_script = true;
269
+				$show_most_recent_migration = true;
270
+			} elseif (isset($this->_req_data['continue_migration'])) {
271
+				$show_most_recent_migration = true;
272
+				$show_continue_current_migration_script = false;
273
+			} else {
274
+				$show_most_recent_migration = false;
275
+				$show_continue_current_migration_script = false;
276
+			}
277
+			if (isset($current_script)) {
278
+				$migrates_to = $current_script->migrates_to_version();
279
+				$plugin_slug = $migrates_to['slug'];
280
+				$new_version = $migrates_to['version'];
281
+				$this->_template_args = array_merge(
282
+					$this->_template_args,
283
+					array(
284
+						'current_db_state' => sprintf(
285
+							__("EE%s (%s)", "event_espresso"),
286
+							isset($current_db_state[ $plugin_slug ]) ? $current_db_state[ $plugin_slug ] : 3,
287
+							$plugin_slug
288
+						),
289
+						'next_db_state'    => isset($current_script) ? sprintf(
290
+							__("EE%s (%s)", 'event_espresso'),
291
+							$new_version,
292
+							$plugin_slug
293
+						) : null,
294
+					)
295
+				);
296
+			} else {
297
+				$this->_template_args['current_db_state'] = null;
298
+				$this->_template_args['next_db_state'] = null;
299
+			}
300
+			$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_migration_page.template.php';
301
+			$this->_template_args = array_merge(
302
+				$this->_template_args,
303
+				array(
304
+					'show_most_recent_migration'             => $show_most_recent_migration,
305
+					// flag for showing the most recent migration's status and/or errors
306
+					'show_migration_progress'                => $show_migration_progress,
307
+					// flag for showing the option to run migrations and see their progress
308
+					'show_backup_db_text'                    => $show_backup_db_text,
309
+					// flag for showing text telling the user to backup their DB
310
+					'show_maintenance_switch'                => $show_maintenance_switch,
311
+					// flag for showing the option to change maintenance mode between levels 0 and 1
312
+					'script_names'                           => $script_names,
313
+					// array of names of scripts that have run
314
+					'show_continue_current_migration_script' => $show_continue_current_migration_script,
315
+					// flag to change wording to indicating that we're only CONTINUING a migration script (somehow it got interrupted0
316
+					'reset_db_page_link'                     => EE_Admin_Page::add_query_args_and_nonce(
317
+						array('action' => 'reset_db'),
318
+						EE_MAINTENANCE_ADMIN_URL
319
+					),
320
+					'data_reset_page'                        => EE_Admin_Page::add_query_args_and_nonce(
321
+						array('action' => 'data_reset'),
322
+						EE_MAINTENANCE_ADMIN_URL
323
+					),
324
+					'update_migration_script_page_link'      => EE_Admin_Page::add_query_args_and_nonce(
325
+						array('action' => 'change_maintenance_level'),
326
+						EE_MAINTENANCE_ADMIN_URL
327
+					),
328
+					'ultimate_db_state'                      => sprintf(
329
+						__("EE%s", 'event_espresso'),
330
+						espresso_version()
331
+					),
332
+				)
333
+			);
334
+			// make sure we have the form fields helper available. It usually is, but sometimes it isn't
335
+		}
336
+		$this->_template_args['most_recent_migration'] = $most_recent_migration;// the actual most recently ran migration
337
+		// now render the migration options part, and put it in a variable
338
+		$migration_options_template_file = apply_filters(
339
+			'FHEE__ee_migration_page__migration_options_template',
340
+			EE_MAINTENANCE_TEMPLATE_PATH . 'migration_options_from_ee4.template.php'
341
+		);
342
+		$migration_options_html = EEH_Template::display_template(
343
+			$migration_options_template_file,
344
+			$this->_template_args,
345
+			true
346
+		);
347
+		$this->_template_args['migration_options_html'] = $migration_options_html;
348
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
349
+			$this->_template_path,
350
+			$this->_template_args,
351
+			true
352
+		);
353
+		$this->display_admin_page_with_sidebar();
354
+	}
355
+
356
+
357
+	/**
358
+	 * returns JSON and executes another step of the currently-executing data migration (called via ajax)
359
+	 */
360
+	public function migration_step()
361
+	{
362
+		$this->_template_args['data'] = EE_Data_Migration_Manager::instance()->response_to_migration_ajax_request();
363
+		$this->_return_json();
364
+	}
365
+
366
+
367
+	/**
368
+	 * Can be used by js when it notices a response with HTML in it in order
369
+	 * to log the malformed response
370
+	 */
371
+	public function add_error_to_migrations_ran()
372
+	{
373
+		EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($this->_req_data['message']);
374
+		$this->_template_args['data'] = array('ok' => true);
375
+		$this->_return_json();
376
+	}
377
+
378
+
379
+	/**
380
+	 * changes the maintenance level, provided there are still no migration scripts that should run
381
+	 */
382
+	public function _change_maintenance_level()
383
+	{
384
+		$new_level = absint($this->_req_data['maintenance_mode_level']);
385
+		if (! EE_Data_Migration_Manager::instance()->check_for_applicable_data_migration_scripts()) {
386
+			EE_Maintenance_Mode::instance()->set_maintenance_level($new_level);
387
+			$success = true;
388
+		} else {
389
+			EE_Maintenance_Mode::instance()->set_maintenance_mode_if_db_old();
390
+			$success = false;
391
+		}
392
+		$this->_redirect_after_action($success, 'Maintenance Mode', esc_html__("Updated", "event_espresso"));
393
+	}
394
+
395
+
396
+	/**
397
+	 * a tab with options for resetting and/or deleting EE data
398
+	 *
399
+	 * @throws \EE_Error
400
+	 * @throws \DomainException
401
+	 */
402
+	public function _data_reset_and_delete()
403
+	{
404
+		$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_data_reset_and_delete.template.php';
405
+		$this->_template_args['reset_reservations_button'] = $this->get_action_link_or_button(
406
+			'reset_reservations',
407
+			'reset_reservations',
408
+			array(),
409
+			'button button-primary ee-confirm',
410
+			'',
411
+			false
412
+		);
413
+		$this->_template_args['reset_capabilities_button'] = $this->get_action_link_or_button(
414
+			'reset_capabilities',
415
+			'reset_capabilities',
416
+			array(),
417
+			'button button-primary ee-confirm',
418
+			'',
419
+			false
420
+		);
421
+		$this->_template_args['delete_db_url'] = EE_Admin_Page::add_query_args_and_nonce(
422
+			array('action' => 'delete_db'),
423
+			EE_MAINTENANCE_ADMIN_URL
424
+		);
425
+		$this->_template_args['reset_db_url'] = EE_Admin_Page::add_query_args_and_nonce(
426
+			array('action' => 'reset_db'),
427
+			EE_MAINTENANCE_ADMIN_URL
428
+		);
429
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
430
+			$this->_template_path,
431
+			$this->_template_args,
432
+			true
433
+		);
434
+		$this->display_admin_page_with_sidebar();
435
+	}
436
+
437
+
438
+	protected function _reset_reservations()
439
+	{
440
+		if (\EED_Ticket_Sales_Monitor::reset_reservation_counts()) {
441
+			EE_Error::add_success(
442
+				__(
443
+					'Ticket and datetime reserved counts have been successfully reset.',
444
+					'event_espresso'
445
+				)
446
+			);
447
+		} else {
448
+			EE_Error::add_success(
449
+				__(
450
+					'Ticket and datetime reserved counts were correct and did not need resetting.',
451
+					'event_espresso'
452
+				)
453
+			);
454
+		}
455
+		$this->_redirect_after_action(true, '', '', array('action' => 'data_reset'), true);
456
+	}
457
+
458
+
459
+	protected function _reset_capabilities()
460
+	{
461
+		EE_Registry::instance()->CAP->init_caps(true);
462
+		EE_Error::add_success(
463
+			__(
464
+				'Default Event Espresso capabilities have been restored for all current roles.',
465
+				'event_espresso'
466
+			)
467
+		);
468
+		$this->_redirect_after_action(false, '', '', array('action' => 'data_reset'), true);
469
+	}
470
+
471
+
472
+	/**
473
+	 * resets the DMSs so we can attempt to continue migrating after a fatal error
474
+	 * (only a good idea when someone has somehow tried ot fix whatever caused
475
+	 * the fatal error in teh first place)
476
+	 */
477
+	protected function _reattempt_migration()
478
+	{
479
+		EE_Data_Migration_Manager::instance()->reattempt();
480
+		$this->_redirect_after_action(false, '', '', array('action' => 'default'), true);
481
+	}
482
+
483
+
484
+	/**
485
+	 * shows the big ol' System Information page
486
+	 */
487
+	public function _system_status()
488
+	{
489
+		$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_system_stati_page.template.php';
490
+		$this->_template_args['system_stati'] = EEM_System_Status::instance()->get_system_stati();
491
+		$this->_template_args['download_system_status_url'] = EE_Admin_Page::add_query_args_and_nonce(
492
+			array(
493
+				'action' => 'download_system_status',
494
+			),
495
+			EE_MAINTENANCE_ADMIN_URL
496
+		);
497
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
498
+			$this->_template_path,
499
+			$this->_template_args,
500
+			true
501
+		);
502
+		$this->display_admin_page_with_sidebar();
503
+	}
504
+
505
+	/**
506
+	 * Downloads an HTML file of the system status that can be easily stored or emailed
507
+	 */
508
+	public function _download_system_status()
509
+	{
510
+		$status_info = EEM_System_Status::instance()->get_system_stati();
511
+		header('Content-Disposition: attachment');
512
+		header("Content-Disposition: attachment; filename=system_status_" . sanitize_key(site_url()) . ".html");
513
+		echo "<style>table{border:1px solid darkgrey;}td{vertical-align:top}</style>";
514
+		echo "<h1>System Information for " . site_url() . "</h1>";
515
+		echo EEH_Template::layout_array_as_table($status_info);
516
+		die;
517
+	}
518
+
519
+
520
+	public function _send_migration_crash_report()
521
+	{
522
+		$from = $this->_req_data['from'];
523
+		$from_name = $this->_req_data['from_name'];
524
+		$body = $this->_req_data['body'];
525
+		try {
526
+			$success = wp_mail(
527
+				EE_SUPPORT_EMAIL,
528
+				'Migration Crash Report',
529
+				$body . "/r/n<br>" . print_r(EEM_System_Status::instance()->get_system_stati(), true),
530
+				array(
531
+					"from:$from_name<$from>",
532
+				)
533
+			);
534
+		} catch (Exception $e) {
535
+			$success = false;
536
+		}
537
+		$this->_redirect_after_action(
538
+			$success,
539
+			esc_html__("Migration Crash Report", "event_espresso"),
540
+			esc_html__("sent", "event_espresso"),
541
+			array('success' => $success, 'action' => 'confirm_migration_crash_report_sent')
542
+		);
543
+	}
544
+
545
+
546
+	public function _confirm_migration_crash_report_sent()
547
+	{
548
+		try {
549
+			$most_recent_migration = EE_Data_Migration_Manager::instance()->get_last_ran_script(true);
550
+		} catch (EE_Error $e) {
551
+			EE_Data_Migration_Manager::instance()->add_error_to_migrations_ran($e->getMessage());
552
+			// now, just so we can display the page correctly, make a error migration script stage object
553
+			// and also put the error on it. It only persists for the duration of this request
554
+			$most_recent_migration = new EE_DMS_Unknown_1_0_0();
555
+			$most_recent_migration->add_error($e->getMessage());
556
+		}
557
+		$success = $this->_req_data['success'] == '1' ? true : false;
558
+		$this->_template_args['success'] = $success;
559
+		$this->_template_args['most_recent_migration'] = $most_recent_migration;
560
+		$this->_template_args['reset_db_action_url'] = EE_Admin_Page::add_query_args_and_nonce(
561
+			array('action' => 'reset_db'),
562
+			EE_MAINTENANCE_ADMIN_URL
563
+		);
564
+		$this->_template_args['reset_db_page_url'] = EE_Admin_Page::add_query_args_and_nonce(
565
+			array('action' => 'data_reset'),
566
+			EE_MAINTENANCE_ADMIN_URL
567
+		);
568
+		$this->_template_args['reattempt_action_url'] = EE_Admin_Page::add_query_args_and_nonce(
569
+			array('action' => 'reattempt_migration'),
570
+			EE_MAINTENANCE_ADMIN_URL
571
+		);
572
+		$this->_template_path = EE_MAINTENANCE_TEMPLATE_PATH . 'ee_confirm_migration_crash_report_sent.template.php';
573
+		$this->_template_args['admin_page_content'] = EEH_Template::display_template(
574
+			$this->_template_path,
575
+			$this->_template_args,
576
+			true
577
+		);
578
+		$this->display_admin_page_with_sidebar();
579
+	}
580
+
581
+
582
+	/**
583
+	 * Resets the entire EE4 database.
584
+	 * Currently basically only sets up ee4 database for a fresh install- doesn't
585
+	 * actually clean out the old wp options, or cpts (although does erase old ee table data)
586
+	 *
587
+	 * @param boolean $nuke_old_ee4_data controls whether or not we
588
+	 *                                   destroy the old ee4 data, or just try initializing ee4 default data
589
+	 */
590
+	public function _reset_db($nuke_old_ee4_data = true)
591
+	{
592
+		EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
593
+		if ($nuke_old_ee4_data) {
594
+			EEH_Activation::delete_all_espresso_cpt_data();
595
+			EEH_Activation::delete_all_espresso_tables_and_data(false);
596
+			EEH_Activation::remove_cron_tasks();
597
+		}
598
+		// make sure when we reset the registry's config that it
599
+		// switches to using the new singleton
600
+		EE_Registry::instance()->CFG = EE_Registry::instance()->CFG->reset(true);
601
+		EE_System::instance()->initialize_db_if_no_migrations_required(true);
602
+		EE_System::instance()->redirect_to_about_ee();
603
+	}
604
+
605
+
606
+	/**
607
+	 * Deletes ALL EE tables, Records, and Options from the database.
608
+	 */
609
+	public function _delete_db()
610
+	{
611
+		EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
612
+		EEH_Activation::delete_all_espresso_cpt_data();
613
+		EEH_Activation::delete_all_espresso_tables_and_data();
614
+		EEH_Activation::remove_cron_tasks();
615
+		EEH_Activation::deactivate_event_espresso();
616
+		wp_safe_redirect(admin_url('plugins.php'));
617
+		exit;
618
+	}
619
+
620
+
621
+	/**
622
+	 * sets up EE4 to rerun the migrations from ee3 to ee4
623
+	 */
624
+	public function _rerun_migration_from_ee3()
625
+	{
626
+		EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance);
627
+		EEH_Activation::delete_all_espresso_cpt_data();
628
+		EEH_Activation::delete_all_espresso_tables_and_data(false);
629
+		// set the db state to something that will require migrations
630
+		update_option(EE_Data_Migration_Manager::current_database_state, '3.1.36.0');
631
+		EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_2_complete_maintenance);
632
+		$this->_redirect_after_action(
633
+			true,
634
+			esc_html__("Database", 'event_espresso'),
635
+			esc_html__("reset", 'event_espresso')
636
+		);
637
+	}
638
+
639
+
640
+	// none of the below group are currently used for Gateway Settings
641
+	protected function _add_screen_options()
642
+	{
643
+	}
644
+
645
+
646
+	protected function _add_feature_pointers()
647
+	{
648
+	}
649
+
650
+
651
+	public function admin_init()
652
+	{
653
+	}
654
+
655
+
656
+	public function admin_notices()
657
+	{
658
+	}
659
+
660
+
661
+	public function admin_footer_scripts()
662
+	{
663
+	}
664
+
665
+
666
+	public function load_scripts_styles()
667
+	{
668
+		wp_enqueue_script('ee_admin_js');
669
+		wp_enqueue_script(
670
+			'ee-maintenance',
671
+			EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.js',
672
+			array('jquery'),
673
+			EVENT_ESPRESSO_VERSION,
674
+			true
675
+		);
676
+		wp_register_style(
677
+			'espresso_maintenance',
678
+			EE_MAINTENANCE_ASSETS_URL . 'ee-maintenance.css',
679
+			array(),
680
+			EVENT_ESPRESSO_VERSION
681
+		);
682
+		wp_enqueue_style('espresso_maintenance');
683
+		// localize script stuff
684
+		wp_localize_script(
685
+			'ee-maintenance',
686
+			'ee_maintenance',
687
+			array(
688
+				'migrating'                        => esc_html__("Updating Database...", "event_espresso"),
689
+				'next'                             => esc_html__("Next", "event_espresso"),
690
+				'fatal_error'                      => esc_html__("A Fatal Error Has Occurred", "event_espresso"),
691
+				'click_next_when_ready'            => esc_html__(
692
+					"The current Database Update has ended. Click 'next' when ready to proceed",
693
+					"event_espresso"
694
+				),
695
+				'status_no_more_migration_scripts' => EE_Data_Migration_Manager::status_no_more_migration_scripts,
696
+				'status_fatal_error'               => EE_Data_Migration_Manager::status_fatal_error,
697
+				'status_completed'                 => EE_Data_Migration_Manager::status_completed,
698
+				'confirm'                          => esc_html__(
699
+					'Are you sure you want to do this? It CANNOT be undone!',
700
+					'event_espresso'
701
+				),
702
+				'confirm_skip_migration'           => esc_html__(
703
+					'You have chosen to NOT migrate your existing data. Are you sure you want to continue?',
704
+					'event_espresso'
705
+				),
706
+			)
707
+		);
708
+	}
709
+
710
+
711
+	public function load_scripts_styles_default()
712
+	{
713
+	}
714
+
715
+
716
+	/**
717
+	 * Enqueue scripts and styles for the datetime tools page.
718
+	 */
719
+	public function load_scripts_styles_datetime_tools()
720
+	{
721
+		EE_Datepicker_Input::enqueue_styles_and_scripts();
722
+	}
723
+
724
+
725
+	protected function _datetime_tools()
726
+	{
727
+		$form_action = EE_Admin_Page::add_query_args_and_nonce(
728
+			array(
729
+				'action'        => 'run_datetime_offset_fix',
730
+				'return_action' => $this->_req_action,
731
+			),
732
+			EE_MAINTENANCE_ADMIN_URL
733
+		);
734
+		$form = $this->_get_datetime_offset_fix_form();
735
+		$this->_admin_page_title = esc_html__('Datetime Utilities', 'event_espresso');
736
+		$this->_template_args['admin_page_content'] = $form->form_open($form_action, 'post')
737
+													  . $form->get_html_and_js()
738
+													  . $form->form_close();
739
+		$this->display_admin_page_with_no_sidebar();
740
+	}
741
+
742
+
743
+	protected function _get_datetime_offset_fix_form()
744
+	{
745
+		if (! $this->datetime_fix_offset_form instanceof EE_Form_Section_Proper) {
746
+			$this->datetime_fix_offset_form = new EE_Form_Section_Proper(
747
+				array(
748
+					'name'            => 'datetime_offset_fix_option',
749
+					'layout_strategy' => new EE_Admin_Two_Column_Layout(),
750
+					'subsections'     => array(
751
+						'title'                  => new EE_Form_Section_HTML(
752
+							EEH_HTML::h2(
753
+								esc_html__('Datetime Offset Tool', 'event_espresso')
754
+							)
755
+						),
756
+						'explanation'            => new EE_Form_Section_HTML(
757
+							EEH_HTML::p(
758
+								esc_html__(
759
+									'Use this tool to automatically apply the provided offset to all Event Espresso records in your database that involve dates and times.',
760
+									'event_espresso'
761
+								)
762
+							)
763
+							. EEH_HTML::p(
764
+								esc_html__(
765
+									'Note: If you enter 1.25, that will result in the offset of 1 hour 15 minutes being applied.  Decimals represent the fraction of hours, not minutes.',
766
+									'event_espresso'
767
+								)
768
+							)
769
+						),
770
+						'offset_input'           => new EE_Float_Input(
771
+							array(
772
+								'html_name'       => 'offset_for_datetimes',
773
+								'html_label_text' => esc_html__(
774
+									'Offset to apply (in hours):',
775
+									'event_espresso'
776
+								),
777
+								'min_value'       => '-12',
778
+								'max_value'       => '14',
779
+								'step_value'      => '.25',
780
+								'default'         => DatetimeOffsetFix::getOffset(),
781
+							)
782
+						),
783
+						'date_range_explanation' => new EE_Form_Section_HTML(
784
+							EEH_HTML::p(
785
+								esc_html__(
786
+									'Leave the following fields blank if you want the offset to be applied to all dates. If however, you want to just apply the offset to a specific range of dates you can restrict the offset application using these fields.',
787
+									'event_espresso'
788
+								)
789
+							)
790
+							. EEH_HTML::p(
791
+								EEH_HTML::strong(
792
+									sprintf(
793
+										esc_html__(
794
+											'Note: please enter the dates in UTC (You can use %1$sthis online tool%2$s to assist with conversions).',
795
+											'event_espresso'
796
+										),
797
+										'<a href="https://www.timeanddate.com/worldclock/converter.html">',
798
+										'</a>'
799
+									)
800
+								)
801
+							)
802
+						),
803
+						'date_range_start_date'  => new EE_Datepicker_Input(
804
+							array(
805
+								'html_name'       => 'offset_date_start_range',
806
+								'html_label_text' => esc_html__(
807
+									'Start Date for dates the offset applied to:',
808
+									'event_espresso'
809
+								),
810
+							)
811
+						),
812
+						'date_range_end_date'    => new EE_Datepicker_Input(
813
+							array(
814
+								'html_name'       => 'offset_date_end_range',
815
+								'html_label_text' => esc_html__(
816
+									'End Date for dates the offset is applied to:',
817
+									'event_espresso'
818
+								),
819
+							)
820
+						),
821
+						'submit'                 => new EE_Submit_Input(
822
+							array(
823
+								'html_label_text' => '',
824
+								'default'         => esc_html__('Apply Offset', 'event_espresso'),
825
+							)
826
+						),
827
+					),
828
+				)
829
+			);
830
+		}
831
+		return $this->datetime_fix_offset_form;
832
+	}
833
+
834
+
835
+	/**
836
+	 * Callback for the run_datetime_offset_fix route.
837
+	 *
838
+	 * @throws EE_Error
839
+	 */
840
+	protected function _apply_datetime_offset()
841
+	{
842
+		if ($_SERVER['REQUEST_METHOD'] === 'POST') {
843
+			$form = $this->_get_datetime_offset_fix_form();
844
+			$form->receive_form_submission($this->_req_data);
845
+			if ($form->is_valid()) {
846
+				// save offset data so batch processor can get it.
847
+				DatetimeOffsetFix::updateOffset($form->get_input_value('offset_input'));
848
+				$utc_timezone = new DateTimeZone('UTC');
849
+				$date_range_start_date = DateTime::createFromFormat(
850
+					'm/d/Y H:i:s',
851
+					$form->get_input_value('date_range_start_date') . ' 00:00:00',
852
+					$utc_timezone
853
+				);
854
+				$date_range_end_date = DateTime::createFromFormat(
855
+					'm/d/Y H:i:s',
856
+					$form->get_input_value('date_range_end_date') . ' 23:59:59',
857
+					$utc_timezone
858
+				);
859
+				if ($date_range_start_date instanceof DateTime) {
860
+					DatetimeOffsetFix::updateStartDateRange(DbSafeDateTime::createFromDateTime($date_range_start_date));
861
+				}
862
+				if ($date_range_end_date instanceof DateTime) {
863
+					DatetimeOffsetFix::updateEndDateRange(DbSafeDateTime::createFromDateTime($date_range_end_date));
864
+				}
865
+				// redirect to batch tool
866
+				wp_redirect(
867
+					EE_Admin_Page::add_query_args_and_nonce(
868
+						array(
869
+							'page'        => 'espresso_batch',
870
+							'batch'       => 'job',
871
+							'label'       => esc_html__('Applying Offset', 'event_espresso'),
872
+							'job_handler' => urlencode('EventEspressoBatchRequest\JobHandlers\DatetimeOffsetFix'),
873
+							'return_url'  => urlencode(
874
+								add_query_arg(
875
+									array(
876
+										'action' => 'datetime_tools',
877
+									),
878
+									EEH_URL::current_url_without_query_paramaters(
879
+										array(
880
+											'return_action',
881
+											'run_datetime_offset_fix_nonce',
882
+											'return',
883
+											'datetime_tools_nonce',
884
+										)
885
+									)
886
+								)
887
+							),
888
+						),
889
+						admin_url()
890
+					)
891
+				);
892
+				exit;
893
+			}
894
+		}
895
+	}
896 896
 }
Please login to merge, or discard this patch.