Completed
Branch BUG/fix-table-exists-query (bbef99)
by
unknown
02:41 queued 26s
created
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/help_tabs/payment_methods_overview.help_tab.php 2 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -7,80 +7,80 @@
 block discarded – undo
7 7
     <li>
8 8
         <strong><?php _e('Name', 'event_espresso'); ?></strong><br>
9 9
         <?php _e(
10
-            'The name of the payment method as customers see it in the registration form, in emails, in receipts, etc.',
11
-            'event_espresso'
12
-        ); ?>
10
+			'The name of the payment method as customers see it in the registration form, in emails, in receipts, etc.',
11
+			'event_espresso'
12
+		); ?>
13 13
     </li>
14 14
     <li>
15 15
         <strong><?php _e('Description', 'event_espresso'); ?></strong><br/>
16 16
         <?php _e(
17
-            'The description of how to use the payment method as customers will see it. This is mostly only seen during registration.',
18
-            'event_espresso'
19
-        ); ?>
17
+			'The description of how to use the payment method as customers will see it. This is mostly only seen during registration.',
18
+			'event_espresso'
19
+		); ?>
20 20
     </li>
21 21
     <li><strong><?php _e('Admin-Only Name', 'event_espresso'); ?></strong><br/>
22 22
         <?php _e(
23
-            'The name of the payment method as seen internally by site administrators and staff.',
24
-            'event_espresso'
25
-        ); ?>
23
+			'The name of the payment method as seen internally by site administrators and staff.',
24
+			'event_espresso'
25
+		); ?>
26 26
     </li>
27 27
     <li>
28 28
         <strong><?php _e('Admin-Only Description', 'event_espresso'); ?></strong><br/>
29 29
         <?php _e(
30
-            'The description of the payment method as seen internally by site administrators and staff.',
31
-            'event_espresso'
32
-        ); ?>
30
+			'The description of the payment method as seen internally by site administrators and staff.',
31
+			'event_espresso'
32
+		); ?>
33 33
     </li>
34 34
     <li>
35 35
         <strong><?php _e('Debug (sandbox) Mode', 'event_espresso'); ?></strong><br/>
36 36
         <?php _e(
37
-            'Many payment methods have a debug/sandbox mode where payments are not processed but are only simulated. This is helpful when setup and debugging.',
38
-            'event_espresso'
39
-        ); ?>
37
+			'Many payment methods have a debug/sandbox mode where payments are not processed but are only simulated. This is helpful when setup and debugging.',
38
+			'event_espresso'
39
+		); ?>
40 40
     </li>
41 41
     <li>
42 42
         <strong><?php _e('Open by Default', 'event_espresso'); ?></strong><br/>
43 43
         <?php _e(
44
-            'If checked, this payment method will be selected by default (assuming no other valid payment methods are also marked as open by default.)',
45
-            'event_espresso'
46
-        ); ?>
44
+			'If checked, this payment method will be selected by default (assuming no other valid payment methods are also marked as open by default.)',
45
+			'event_espresso'
46
+		); ?>
47 47
     </li>
48 48
     <li>
49 49
         <strong><?php _e('Button URL', 'event_espresso'); ?></strong><br/>
50 50
         <?php printf(
51
-            __(
52
-                'The URL of the button image for this payment method in the registration process. You may use any uploaded image on your website (click %s next to the field to select). If left blank, the default button image will be used.',
53
-                'event_espresso'
54
-            ),
55
-            '<img src="' . admin_url('images/media-button-image.gif') . '">'
56
-        ); ?>
51
+			__(
52
+				'The URL of the button image for this payment method in the registration process. You may use any uploaded image on your website (click %s next to the field to select). If left blank, the default button image will be used.',
53
+				'event_espresso'
54
+			),
55
+			'<img src="' . admin_url('images/media-button-image.gif') . '">'
56
+		); ?>
57 57
     </li>
58 58
     <li><strong><?php _e('Usable From', 'event_espresso'); ?></strong><br/>
59 59
         <?php _e('Where this payment method can be used from.', 'event_espresso'); ?>
60 60
         <ul>
61 61
             <li>
62 62
                 <?php _e(
63
-                    'Front-end Registration Page: the payment method will appear as an option during the normal registration process to customers and they can use it to process payments.',
64
-                    'event_espresso'
65
-                ); ?></li>
63
+					'Front-end Registration Page: the payment method will appear as an option during the normal registration process to customers and they can use it to process payments.',
64
+					'event_espresso'
65
+				); ?></li>
66 66
             <li>
67 67
                 <?php _e(
68
-                    'Admin Registration Page: when recording payments made from the transaction admin page, the payment method will appear as an option. Note: currently payments can only be RECORDED from the admin, they cannot be PROCESSED.',
69
-                    'event_espresso'
70
-                ); ?></li>
68
+					'Admin Registration Page: when recording payments made from the transaction admin page, the payment method will appear as an option. Note: currently payments can only be RECORDED from the admin, they cannot be PROCESSED.',
69
+					'event_espresso'
70
+				); ?></li>
71 71
         </ul>
72 72
     </li>
73 73
 </ul>
74 74
 <strong><?php _e('Recommendations', 'event_espresso'); ?></strong><br/>
75 75
 <?php _e(
76
-    'Want to see a tour of this screen? Click on the Payment Methods Overview Tour button which appears on the right side of the page. <br />To learn more about the options on this page, take a look at the different tabs that appear on the left side of the page.',
77
-    'event_espresso'
76
+	'Want to see a tour of this screen? Click on the Payment Methods Overview Tour button which appears on the right side of the page. <br />To learn more about the options on this page, take a look at the different tabs that appear on the left side of the page.',
77
+	'event_espresso'
78 78
 ); ?>
79 79
 </p>
80 80
 <p>
81 81
     <strong><?php _e('Screen Options', 'event_espresso'); ?></strong><br/>
82 82
     <?php _e(
83
-        'You can customize the information that is shown on this page by toggling the Screen Options tab. Then you can add or remove checkmarks to hide or show certain content.',
84
-        'event_espresso'
85
-    ); ?>
83
+		'You can customize the information that is shown on this page by toggling the Screen Options tab. Then you can add or remove checkmarks to hide or show certain content.',
84
+		'event_espresso'
85
+	); ?>
86 86
 </p>
87 87
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@
 block discarded – undo
52 52
                 'The URL of the button image for this payment method in the registration process. You may use any uploaded image on your website (click %s next to the field to select). If left blank, the default button image will be used.',
53 53
                 'event_espresso'
54 54
             ),
55
-            '<img src="' . admin_url('images/media-button-image.gif') . '">'
55
+            '<img src="'.admin_url('images/media-button-image.gif').'">'
56 56
         ); ?>
57 57
     </li>
58 58
     <li><strong><?php _e('Usable From', 'event_espresso'); ?></strong><br/>
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.
admin_pages/maintenance/templates/ee_data_reset_and_delete.template.php 1 patch
Indentation   +65 added lines, -65 removed lines patch added patch discarded remove patch
@@ -14,9 +14,9 @@  discard block
 block discarded – undo
14 14
 <div class="padding">
15 15
     <h4 class="espresso-header"><span class="dashicons dashicons-update ee-icon-size-22"></span>
16 16
         <?php esc_html_e(
17
-            'Reset Ticket and Datetime Reserved Counts',
18
-            'event_espresso'
19
-        ); ?></h4>
17
+			'Reset Ticket and Datetime Reserved Counts',
18
+			'event_espresso'
19
+		); ?></h4>
20 20
     <p><?php esc_html_e('Use this to reset the counts for ticket and datetime reservations.', 'event_espresso'); ?></p>
21 21
     <div class="float-right"><?php echo $reset_reservations_button; ?></div>
22 22
     <div class="clear"></div>
@@ -28,14 +28,14 @@  discard block
 block discarded – undo
28 28
 <div class="padding">
29 29
     <h4 class="espresso-header"><span class="dashicons dashicons-update ee-icon-size-22"></span>
30 30
         <?php esc_html_e(
31
-            'Reset Event Espresso Capabilities',
32
-            'event_espresso'
33
-        ); ?></h4>
31
+			'Reset Event Espresso Capabilities',
32
+			'event_espresso'
33
+		); ?></h4>
34 34
     <p>
35 35
         <?php esc_html_e(
36
-            'Use this to reset the capabilities on WP roles to the defaults as defined via EE_Capabilities.  Note this reset does not REMOVE any existing capabilities, it just ensures that all the defaults are ADDED to the roles.',
37
-            'event_espresso'
38
-        ); ?></p>
36
+			'Use this to reset the capabilities on WP roles to the defaults as defined via EE_Capabilities.  Note this reset does not REMOVE any existing capabilities, it just ensures that all the defaults are ADDED to the roles.',
37
+			'event_espresso'
38
+		); ?></p>
39 39
     <div class="float-right"><?php echo $reset_capabilities_button; ?></div>
40 40
     <div class="clear"></div>
41 41
 </div>
@@ -45,25 +45,25 @@  discard block
 block discarded – undo
45 45
 <div class="padding">
46 46
     <h4 class="espresso-header"><span class="dashicons dashicons-update ee-icon-size-22"></span>
47 47
         <?php esc_html_e(
48
-            'Reset Event Espresso Data',
49
-            'event_espresso'
50
-        ); ?></h4>
48
+			'Reset Event Espresso Data',
49
+			'event_espresso'
50
+		); ?></h4>
51 51
     <p>
52 52
         <?php esc_html_e(
53
-            ' This will reset data for Event Espresso 4, and for all active add-ons. Inactive add-ons will not be affected.',
54
-            'event_espresso'
55
-        ); ?></p>
53
+			' This will reset data for Event Espresso 4, and for all active add-ons. Inactive add-ons will not be affected.',
54
+			'event_espresso'
55
+		); ?></p>
56 56
     <p>
57 57
         <?php esc_html_e(
58
-            'Your Event Espresso data will return to its default settings. The rest of your website will be unaffected.',
59
-            'event_espresso'
60
-        ); ?></p>
58
+			'Your Event Espresso data will return to its default settings. The rest of your website will be unaffected.',
59
+			'event_espresso'
60
+		); ?></p>
61 61
     <div class="float-right"><a class="button button-primary ee-confirm"
62 62
                                 href="<?php echo $reset_db_url; ?>">
63 63
             <?php esc_html_e(
64
-                'Reset Event Espresso Tables',
65
-                'event_espresso'
66
-            ); ?></a></div>
64
+				'Reset Event Espresso Tables',
65
+				'event_espresso'
66
+			); ?></a></div>
67 67
     <div class="clear"></div>
68 68
 </div>
69 69
 <br/>
@@ -72,71 +72,71 @@  discard block
 block discarded – undo
72 72
 <div class="padding">
73 73
     <h4 class="espresso-header"><span class="dashicons dashicons-post-trash ee-icon-size-22"></span>
74 74
         <?php esc_html_e(
75
-            'Permanently Delete ALL Event Espresso Data',
76
-            'event_espresso'
77
-        ); ?></h4>
75
+			'Permanently Delete ALL Event Espresso Data',
76
+			'event_espresso'
77
+		); ?></h4>
78 78
     <p>
79 79
         <?php esc_html_e(
80
-            ' This will delete data for Event Espresso 4, and all currently active add-ons. Event Espresso will then be deactivated. You may need to manually deactivate each add-on individually.',
81
-            'event_espresso'
82
-        ); ?></p>
80
+			' This will delete data for Event Espresso 4, and all currently active add-ons. Event Espresso will then be deactivated. You may need to manually deactivate each add-on individually.',
81
+			'event_espresso'
82
+		); ?></p>
83 83
     <p>
84 84
         <?php esc_html_e(
85
-            'If you know for certain that you will no longer be using Event Espresso and you wish to remove ALL traces of the plugin from your system, then perform the following steps.',
86
-            'event_espresso'
87
-        ); ?></p>
85
+			'If you know for certain that you will no longer be using Event Espresso and you wish to remove ALL traces of the plugin from your system, then perform the following steps.',
86
+			'event_espresso'
87
+		); ?></p>
88 88
     <p class="important-notice">
89 89
         <?php printf(
90
-            esc_html__('Please note: %sThis is permanent and can NOT be undone.%s', 'event_espresso'),
91
-            '<em>',
92
-            '</em>'
93
-        ); ?><br/></p>
90
+			esc_html__('Please note: %sThis is permanent and can NOT be undone.%s', 'event_espresso'),
91
+			'<em>',
92
+			'</em>'
93
+		); ?><br/></p>
94 94
     <ol>
95 95
         <li>
96 96
             <?php printf(
97
-                esc_html__(
98
-                    'First, click the button below to permanently delete all Event Espresso tables, records, and options from your WordPress database . If you receive a "500 Internal Server Error" or a blank white screen, it means the server has timed out due to the large number of records being updated. This is not a cause for concern. Simply %1$srefresh the page%2$s and the Database Update will continue where it left off.',
99
-                    'event_espresso'
100
-                ),
101
-                '<strong>',
102
-                '</strong>'
103
-            ); ?></li>
97
+				esc_html__(
98
+					'First, click the button below to permanently delete all Event Espresso tables, records, and options from your WordPress database . If you receive a "500 Internal Server Error" or a blank white screen, it means the server has timed out due to the large number of records being updated. This is not a cause for concern. Simply %1$srefresh the page%2$s and the Database Update will continue where it left off.',
99
+					'event_espresso'
100
+				),
101
+				'<strong>',
102
+				'</strong>'
103
+			); ?></li>
104 104
         <li>
105 105
             <?php printf(
106
-                esc_html__(
107
-                    'Then, locate Event Espresso on the WordPress Plugins page, and click on %sDelete%s',
108
-                    'event_espresso'
109
-                ),
110
-                '<strong>',
111
-                '</strong>'
112
-            ); ?></li>
106
+				esc_html__(
107
+					'Then, locate Event Espresso on the WordPress Plugins page, and click on %sDelete%s',
108
+					'event_espresso'
109
+				),
110
+				'<strong>',
111
+				'</strong>'
112
+			); ?></li>
113 113
         <li>
114 114
             <?php printf(
115
-                esc_html__(
116
-                    'Once you are on the Delete Plugin page, click on %sYes, Delete these files and data%s',
117
-                    'event_espresso'
118
-                ),
119
-                '<strong>',
120
-                '</strong>'
121
-            ); ?></li>
115
+				esc_html__(
116
+					'Once you are on the Delete Plugin page, click on %sYes, Delete these files and data%s',
117
+					'event_espresso'
118
+				),
119
+				'<strong>',
120
+				'</strong>'
121
+			); ?></li>
122 122
         <li>
123 123
             <?php printf(
124
-                esc_html__('Note: Event Espresso 4 categories are %snot%s deleted by this script', 'event_espresso'),
125
-                '<strong>',
126
-                '</strong>'
127
-            ); ?>
124
+				esc_html__('Note: Event Espresso 4 categories are %snot%s deleted by this script', 'event_espresso'),
125
+				'<strong>',
126
+				'</strong>'
127
+			); ?>
128 128
             <br><a href="<?php echo admin_url('edit-tags.php?taxonomy=espresso_event_categories'); ?>">
129 129
                 <?php esc_html_e(
130
-                    'You can go here to delete Event Espresso categories',
131
-                    'event_espresso'
132
-                ); ?></a></li>
130
+					'You can go here to delete Event Espresso categories',
131
+					'event_espresso'
132
+				); ?></a></li>
133 133
     </ol>
134 134
     <div class="float-right"><a href="<?php echo $delete_db_url; ?>" id="delete-all-data-btn"
135 135
                                 class="button-primary ee-confirm">
136 136
             <?php esc_html_e(
137
-                'Permanently Delete All Event Espresso Data',
138
-                'event_espresso'
139
-            ); ?></a></div>
137
+				'Permanently Delete All Event Espresso Data',
138
+				'event_espresso'
139
+			); ?></a></div>
140 140
     <div class="clear"></div>
141 141
 </div>
142 142
 <br/>
Please login to merge, or discard this patch.
admin_pages/maintenance/templates/ee_migration_page.template.php 1 patch
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -20,9 +20,9 @@  discard block
 block discarded – undo
20 20
 if ($show_backup_db_text) { ?>
21 21
     <h1><span class="dashicons dashicons-migrate"></span>
22 22
         <?php esc_html_e(
23
-            "Database Update Manager",
24
-            "event_espresso"
25
-        ); ?>
23
+			"Database Update Manager",
24
+			"event_espresso"
25
+		); ?>
26 26
     </h1>
27 27
 <?php } ?>
28 28
 <div class="padding">
@@ -32,43 +32,43 @@  discard block
 block discarded – undo
32 32
             <h3 class="espresso-header">
33 33
                 <span class="dashicons dashicons-flag ee-icon-size-22"></span>
34 34
                 <?php
35
-                echo apply_filters(
36
-                    'FHEE__ee_migration_page__header',
37
-                    sprintf(
38
-                        esc_html__("Your Event Espresso data needs to be updated.", "event_espresso"),
39
-                        $current_db_state,
40
-                        $next_db_state
41
-                    ),
42
-                    $current_db_state,
43
-                    $next_db_state
44
-                );
45
-                ?>
35
+				echo apply_filters(
36
+					'FHEE__ee_migration_page__header',
37
+					sprintf(
38
+						esc_html__("Your Event Espresso data needs to be updated.", "event_espresso"),
39
+						$current_db_state,
40
+						$next_db_state
41
+					),
42
+					$current_db_state,
43
+					$next_db_state
44
+				);
45
+				?>
46 46
             </h3>
47 47
         <?php } elseif ($show_most_recent_migration) { ?>
48 48
             <h3 class="espresso-header">
49 49
                 <span class="dashicons dashicons-awards ee-icon-size-22"></span>
50 50
                 <?php echo apply_filters(
51
-                    'FHEE__ee_migration_page__done_migration_header',
52
-                    sprintf(
53
-                        esc_html__(
54
-                            'Congratulations! Your database is "up-to-date" and you are ready to begin using %s',
55
-                            "event_espresso"
56
-                        ),
57
-                        $ultimate_db_state
58
-                    )
59
-                ); ?>
51
+					'FHEE__ee_migration_page__done_migration_header',
52
+					sprintf(
53
+						esc_html__(
54
+							'Congratulations! Your database is "up-to-date" and you are ready to begin using %s',
55
+							"event_espresso"
56
+						),
57
+						$ultimate_db_state
58
+					)
59
+				); ?>
60 60
             </h3>
61 61
             <p>
62 62
                 <?php echo apply_filters(
63
-                    'FHEE__ee_migration_page__p_after_done_migration_header',
64
-                    sprintf(
65
-                        esc_html__(
66
-                            "Time to find out about all the great new features %s has to offer.",
67
-                            "event_espresso"
68
-                        ),
69
-                        $ultimate_db_state
70
-                    )
71
-                ); ?> &nbsp;
63
+					'FHEE__ee_migration_page__p_after_done_migration_header',
64
+					sprintf(
65
+						esc_html__(
66
+							"Time to find out about all the great new features %s has to offer.",
67
+							"event_espresso"
68
+						),
69
+						$ultimate_db_state
70
+					)
71
+				); ?> &nbsp;
72 72
                 <b><a id="get-started-after-migrate" class="button-primary"
73 73
                       href="<?php echo add_query_arg(array('page' => 'espresso_about'), admin_url('admin.php')); ?>">
74 74
                         <?php esc_html_e("Let's Get Started", "event_espresso"); ?>&nbsp;<span
@@ -79,51 +79,51 @@  discard block
 block discarded – undo
79 79
 
80 80
 
81 81
         <?php
82
-        if ($show_backup_db_text) {
83
-            echo $migration_options_html;
84
-        } ?>
82
+		if ($show_backup_db_text) {
83
+			echo $migration_options_html;
84
+		} ?>
85 85
 
86 86
         <?php
87
-        if ($show_most_recent_migration) {
88
-            if ($most_recent_migration && $most_recent_migration instanceof EE_Data_Migration_Script_Base) {
89
-                if ($most_recent_migration->can_continue()) {
90
-                    // tell the user they should continue their migration because it appears to be unfinished... well, assuming there were no errors ?>
87
+		if ($show_most_recent_migration) {
88
+			if ($most_recent_migration && $most_recent_migration instanceof EE_Data_Migration_Script_Base) {
89
+				if ($most_recent_migration->can_continue()) {
90
+					// tell the user they should continue their migration because it appears to be unfinished... well, assuming there were no errors ?>
91 91
                     <h3 class="espresso-header">
92 92
                         <span class="dashicons dashicons-star-half ee-icon-size-22"></span>
93 93
                         <?php printf(
94
-                            esc_html__(
95
-                                "It appears that your previous Database Update (%s) is incomplete, and should be resumed",
96
-                                "event_espresso"
97
-                            ),
98
-                            $most_recent_migration->pretty_name()
99
-                        ); ?>
94
+							esc_html__(
95
+								"It appears that your previous Database Update (%s) is incomplete, and should be resumed",
96
+								"event_espresso"
97
+							),
98
+							$most_recent_migration->pretty_name()
99
+						); ?>
100 100
                     </h3>
101 101
                 <?php
102
-                } elseif ($most_recent_migration->is_broken()) {
103
-                    // tell the user the migration failed and they should notify EE?>
102
+				} elseif ($most_recent_migration->is_broken()) {
103
+					// tell the user the migration failed and they should notify EE?>
104 104
                     <h3 class="espresso-header">
105 105
                         <span class="dashicons dashicons-no ee-icon-size-22"></span>
106 106
                         <?php echo $most_recent_migration->get_feedback_message() ?>
107 107
                     </h3>
108 108
                 <?php
109
-                }
110
-                // display errors or not of the most recent migration ran
111
-                if ($most_recent_migration->get_errors()) {
112
-                    ?>
109
+				}
110
+				// display errors or not of the most recent migration ran
111
+				if ($most_recent_migration->get_errors()) {
112
+					?>
113 113
                     <div class="ee-attention">
114 114
                         <strong>
115 115
                             <?php printf(
116
-                                esc_html__(
117
-                                    "Warnings occurred during your last Database Update (%s):",
118
-                                    'event_espresso'
119
-                                ),
120
-                                $most_recent_migration->pretty_name()
121
-                            ) ?></strong>
116
+								esc_html__(
117
+									"Warnings occurred during your last Database Update (%s):",
118
+									'event_espresso'
119
+								),
120
+								$most_recent_migration->pretty_name()
121
+							) ?></strong>
122 122
                         <a id="show-hide-migration-warnings" class="display-the-hidden">
123 123
                             <?php esc_html_e(
124
-                                "Show Warnings",
125
-                                'event_espresso'
126
-                            ); ?></a>
124
+								"Show Warnings",
125
+								'event_espresso'
126
+							); ?></a>
127 127
                         <ul class="migration-warnings" style="display:none">
128 128
                             <?php foreach ($most_recent_migration->get_errors() as $error) { ?>
129 129
                                 <li><?php echo htmlentities($error) ?></li>
@@ -131,31 +131,31 @@  discard block
 block discarded – undo
131 131
                         </ul>
132 132
                     </div>
133 133
                 <?php
134
-                } else {
135
-                    // there were no errors during the last migration, just say so?>
134
+				} else {
135
+					// there were no errors during the last migration, just say so?>
136 136
                     <h2>
137 137
                         <?php printf(
138
-                            esc_html__(
139
-                                "The last Database Update (%s) ran successfully without errors.",
140
-                                "event_espresso"
141
-                            ),
142
-                            $most_recent_migration->pretty_name()
143
-                        ) ?></h2>
138
+							esc_html__(
139
+								"The last Database Update (%s) ran successfully without errors.",
140
+								"event_espresso"
141
+							),
142
+							$most_recent_migration->pretty_name()
143
+						) ?></h2>
144 144
                 <?php
145
-                }
146
-            }
147
-        }
148
-        // end of: if ( $show_most_recent_migration )
149
-        ?>
145
+				}
146
+			}
147
+		}
148
+		// end of: if ( $show_most_recent_migration )
149
+		?>
150 150
 
151 151
     </div>
152 152
     <!--end of #migration-prep-->
153 153
 
154 154
     <?php
155
-    if ($show_migration_progress) { ?>
155
+	if ($show_migration_progress) { ?>
156 156
         <div id='migration-monitor' <?php echo $show_backup_db_text ? "style='display:none'" : '' ?>>
157 157
             <?php
158
-            if ($show_backup_db_text) { ?>
158
+			if ($show_backup_db_text) { ?>
159 159
                 <p>
160 160
                     <a class="toggle-migration-monitor small-text" style="cursor: pointer;">
161 161
                         <span class="dashicons dashicons-arrow-left-alt2"
@@ -165,19 +165,19 @@  discard block
 block discarded – undo
165 165
 
166 166
                 </p>
167 167
             <?php
168
-            } ?>
168
+			} ?>
169 169
             <div id='progress-area'>
170 170
                 <h3 class="espresso-header">
171 171
                     <?php
172
-                    echo sprintf(
173
-                        _n(
174
-                            "The following task needs to be performed:",
175
-                            "The following %s tasks need to be performed:",
176
-                            count($script_names),
177
-                            "event_espresso"
178
-                        ),
179
-                        count($script_names)
180
-                    ); ?>
172
+					echo sprintf(
173
+						_n(
174
+							"The following task needs to be performed:",
175
+							"The following %s tasks need to be performed:",
176
+							count($script_names),
177
+							"event_espresso"
178
+						),
179
+						count($script_names)
180
+					); ?>
181 181
                 </h3>
182 182
                 <ul style="list-style: inside;">
183 183
                     <?php foreach ($script_names as $script_name) { ?>
@@ -188,9 +188,9 @@  discard block
 block discarded – undo
188 188
                 <?php if (count($script_names) > 1) { ?>
189 189
                     <p>
190 190
                         <?php esc_html_e(
191
-                            "Please note: after each task is completed you will need to continue the Database Update, or report an error to Event Espresso.",
192
-                            "event_espresso"
193
-                        ); ?></p>
191
+							"Please note: after each task is completed you will need to continue the Database Update, or report an error to Event Espresso.",
192
+							"event_espresso"
193
+						); ?></p>
194 194
                 <?php } ?>
195 195
 
196 196
                 <div class="ee-attention">
@@ -200,19 +200,19 @@  discard block
 block discarded – undo
200 200
                         </span>
201 201
                         <br/>
202 202
                         <?php esc_html_e(
203
-                            "Depending on the number of events and the complexity of the information in your database, this could take a few minutes.",
204
-                            "event_espresso"
205
-                        ); ?>
203
+							"Depending on the number of events and the complexity of the information in your database, this could take a few minutes.",
204
+							"event_espresso"
205
+						); ?>
206 206
                     </p>
207 207
                     <p>
208 208
                         <?php printf(
209
-                            esc_html__(
210
-                                "%sPlease be patient and do NOT navigate away from this page once the migration has begun%s. If any issues arise due to existing malformed data, an itemized report will be made available to you after the migration has completed.",
211
-                                "event_espresso"
212
-                            ),
213
-                            '<strong>',
214
-                            '</strong>'
215
-                        ); ?>
209
+							esc_html__(
210
+								"%sPlease be patient and do NOT navigate away from this page once the migration has begun%s. If any issues arise due to existing malformed data, an itemized report will be made available to you after the migration has completed.",
211
+								"event_espresso"
212
+							),
213
+							'<strong>',
214
+							'</strong>'
215
+						); ?>
216 216
                     </p>
217 217
                     <p>
218 218
                         <?php esc_html_e("Click the button below to begin the migration process.", "event_espresso") ?>
@@ -228,10 +228,10 @@  discard block
 block discarded – undo
228 228
 
229 229
                 <button id='start-migration' class='button-primary'>
230 230
                     <?php echo $show_continue_current_migration_script ? esc_html__(
231
-                        "Continue Database Update",
232
-                        "event_espresso"
233
-                    )
234
-                        : esc_html__("Begin Database Update", "event_espresso"); ?>
231
+						"Continue Database Update",
232
+						"event_espresso"
233
+					)
234
+						: esc_html__("Begin Database Update", "event_espresso"); ?>
235 235
                 </button>
236 236
                 <br class="clear"/>
237 237
 
@@ -247,14 +247,14 @@  discard block
 block discarded – undo
247 247
         </div>
248 248
 
249 249
     <?php
250
-    }
251
-    if ($show_maintenance_switch) {
252
-        ?>
250
+	}
251
+	if ($show_maintenance_switch) {
252
+		?>
253 253
         <h2><span class="dashicons dashicons-admin-tools"></span>
254 254
             <?php esc_html_e(
255
-                'Set Event Espresso Maintenance Mode',
256
-                'event_espresso'
257
-            ); ?></h2>
255
+				'Set Event Espresso Maintenance Mode',
256
+				'event_espresso'
257
+			); ?></h2>
258 258
         <form method='post' action='<?php echo $update_migration_script_page_link ?>'>
259 259
             <div class="ee-table-wrap">
260 260
                 <table>
@@ -262,20 +262,20 @@  discard block
 block discarded – undo
262 262
                         <td width="40px" align="center">
263 263
                             <input type="radio" id="maintenance_mode_level_off" name="maintenance_mode_level"
264 264
                                    value="0" <?php echo EE_Maintenance_Mode::instance()->level()
265
-                                                        == EE_Maintenance_Mode::level_0_not_in_maintenance
266
-                                                        ? 'checked="checked"' : '' ?>>
265
+														== EE_Maintenance_Mode::level_0_not_in_maintenance
266
+														? 'checked="checked"' : '' ?>>
267 267
                         </td>
268 268
                         <th align="left">
269 269
                             <label for="maintenance_mode_level_off">
270 270
                                 <?php esc_html_e(
271
-                                    'Maintenance Mode OFF',
272
-                                    'event_espresso'
273
-                                ); ?></label>
271
+									'Maintenance Mode OFF',
272
+									'event_espresso'
273
+								); ?></label>
274 274
                             <p class='description' style="font-weight: normal;">
275 275
                                 <?php esc_html_e(
276
-                                    "This is the normal operating mode for Event Espresso and allows all functionality to be viewed by all site visitors.",
277
-                                    "event_espresso"
278
-                                ); ?>
276
+									"This is the normal operating mode for Event Espresso and allows all functionality to be viewed by all site visitors.",
277
+									"event_espresso"
278
+								); ?>
279 279
                             </p>
280 280
                         </th>
281 281
                     </tr>
@@ -283,8 +283,8 @@  discard block
 block discarded – undo
283 283
                         <td width="40px" align="center">
284 284
                             <input type="radio" id="maintenance_mode_level_on" name="maintenance_mode_level"
285 285
                                    value="1" <?php echo EE_Maintenance_Mode::instance()->level()
286
-                                                        == EE_Maintenance_Mode::level_1_frontend_only_maintenance
287
-                                                    ? 'checked="checked"' : '' ?>>
286
+														== EE_Maintenance_Mode::level_1_frontend_only_maintenance
287
+													? 'checked="checked"' : '' ?>>
288 288
                         </td>
289 289
                         <th align="left">
290 290
                             <label for="maintenance_mode_level_on">
@@ -292,9 +292,9 @@  discard block
 block discarded – undo
292 292
                             </label>
293 293
                             <p class='description' style="font-weight: normal;">
294 294
                                 <?php esc_html_e(
295
-                                    "This disables Event Espresso frontend functionality for all site visitors that are not administrators, and allows you to configure and/or test things on the frontend of your website before others can see.",
296
-                                    "event_espresso"
297
-                                ); ?>
295
+									"This disables Event Espresso frontend functionality for all site visitors that are not administrators, and allows you to configure and/or test things on the frontend of your website before others can see.",
296
+									"event_espresso"
297
+								); ?>
298 298
                             </p>
299 299
                         </th>
300 300
                     </tr>
@@ -306,6 +306,6 @@  discard block
 block discarded – undo
306 306
             </p>
307 307
         </form>
308 308
         <?php
309
-    } ?>
309
+	} ?>
310 310
 
311 311
 </div>
Please login to merge, or discard this patch.