PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.1
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.1
4.11.1 4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / CommonServiceProvider.php
wp-staging / Framework Last commit date
Adapter 1 week ago Analytics 1 week ago Assets 1 week ago BackgroundProcessing 1 week ago CloningProcess 5 days ago Collection 1 week ago Command 1 week ago Component 1 week ago DI 1 week ago Database 5 days ago DependencyResolver 1 week ago Exceptions 2 years ago Experiments 1 week ago Facades 1 week ago Filesystem 1 week ago Interfaces 1 week ago Job 5 days ago Language 1 week ago Logger 1 week ago Mails 1 week ago Network 1 week ago Newsfeed 1 week ago Notices 5 days ago Onboarding 5 days ago Performance 1 week ago Permalinks 1 week ago Queue 1 week ago Rest 1 week ago Security 1 week ago Settings 1 week ago TemplateEngine 1 week ago ThirdParty 1 week ago Traits 5 days ago Upgrade 1 week ago Utils 5 days ago AnalyticsServiceProvider.php 1 week ago AssetServiceProvider.php 1 year ago CommonServiceProvider.php 5 days ago ErrorHandler.php 1 week ago NoticeServiceProvider.php 1 year ago SettingsServiceProvider.php 4 months ago SiteInfo.php 5 days ago Url.php 1 week ago
CommonServiceProvider.php
177 lines
1 <?php
2
3 namespace WPStaging\Framework;
4
5 use WPStaging\Backup\Task\Tasks\JobBackup\FinishBackupTask;
6 use WPStaging\Core\Cron\Cron;
7 use WPStaging\Core\Cron\CronIntegrity;
8 use WPStaging\Framework\Analytics\AnalyticsCleanup;
9 use WPStaging\Framework\BackgroundProcessing\Job\PrepareJob;
10 use WPStaging\Framework\DI\ServiceProvider;
11 use WPStaging\Framework\Filesystem\DebugLogReader;
12 use WPStaging\Framework\Filesystem\DiskWriteCheck;
13 use WPStaging\Framework\Filesystem\LogCleanup;
14 use WPStaging\Framework\Mails\MailSender;
15 use WPStaging\Framework\Notices\BackupPluginsNotice;
16 use WPStaging\Framework\Notices\CliIntegrationNotice;
17 use WPStaging\Framework\Notices\WpVersionCompatNotice;
18 use WPStaging\Framework\Onboarding\FreeOnboarding;
19 use WPStaging\Framework\Onboarding\OnboardingAjax;
20 use WPStaging\Framework\Onboarding\OnboardingJourney;
21 use WPStaging\Framework\Onboarding\QueuedBackup;
22 use WPStaging\Framework\Performance\MemoryExhaust;
23 use WPStaging\Framework\Security\Otp\Otp;
24 use WPStaging\Staging\Jobs\StagingSiteCreate;
25 use WPStaging\Framework\Settings\DarkMode;
26 use WPStaging\Framework\Traits\EventLoggerTrait;
27 use WPStaging\Framework\Utils\DBPermissions;
28 use WPStaging\Staging\Ajax\StagingSiteDataChecker;
29
30
31
32
33
34
35
36
37 class CommonServiceProvider extends ServiceProvider
38 {
39 use EventLoggerTrait;
40
41 protected function registerClasses()
42 {
43 $this->container->singleton(DiskWriteCheck::class);
44 $this->container->make(DebugLogReader::class)->listenDeleteLogRequest();
45
46 add_action(Cron::ACTION_DAILY_EVENT, [$this, 'cleanupLogs'], 25, 0);
47 add_action(Cron::ACTION_DAILY_EVENT, [$this, 'cleanupAnalytics'], 25, 0);
48 add_action(Cron::ACTION_DAILY_EVENT, [$this, 'cleanupExpiredOtps'], 25, 0);
49
50
51
52
53
54
55
56
57 $container = $this->container;
58 add_action('init', function () use ($container) {
59
60
61 if (defined('WP_INSTALLING') && WP_INSTALLING) {
62 return;
63 }
64
65 if (defined('DOING_CRON') && DOING_CRON) {
66 return;
67 }
68
69 try {
70 $container->make(CronIntegrity::class)->checkAndRepair();
71 } catch (\Throwable $e) {
72
73 }
74 }, 20, 0);
75 add_action("wp_ajax_wpstg_is_writable_clone_destination_dir", $this->container->callback(StagingSiteDataChecker::class, "ajaxIsWritableCloneDestinationDir")); // phpcs:ignore WPStaging.Security.AuthorizationChecked
76 add_action("wp_ajax_wpstg_check_user_permissions", $this->container->callback(DBPermissions::class, 'ajaxCheckDBPermissions')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
77 add_action("wp_ajax_wpstg_check_user_is_authenticated", [$this, "ajaxIsUserAuthenticated"]);// phpcs:ignore WPStaging.Security.AuthorizationChecked
78 add_action("wp_ajax_nopriv_wpstg_check_user_is_authenticated", [$this, "ajaxIsUserAuthenticated"]);// phpcs:ignore WPStaging.Security.AuthorizationChecked
79 add_action('wp_ajax_wpstg_backup_plugin_notice_close', $this->container->callback(BackupPluginsNotice::class, 'ajaxBackupPluginNoticeClose')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
80 add_action('wp_ajax_wpstg_backup_plugin_notice_remind_me', $this->container->callback(BackupPluginsNotice::class, 'ajaxBackupPluginNoticeRemindMe')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
81 add_action('wp_ajax_wpstg_cli_notice_close', $this->container->callback(CliIntegrationNotice::class, 'ajaxCliNoticeClose')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
82 add_action('wp_ajax_wpstg_cli_notice_hide_forever', $this->container->callback(CliIntegrationNotice::class, 'ajaxCliNoticeHideForever')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
83 add_action('wp_ajax_wpstg_cli_get_backup_list', $this->container->callback(CliIntegrationNotice::class, 'ajaxGetCliBackupList')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
84 add_action('admin_init', $this->container->callback(DarkMode::class, 'mayBeShowDarkMode'), 10, 1);
85 add_action('wp_ajax_wpstg_set_dark_mode', $this->container->callback(DarkMode::class, 'ajaxEnableDefaultColorMode')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
86 add_action('wp_ajax_wpstg_set_default_os_color_mode', $this->container->callback(DarkMode::class, 'ajaxSetDefaultOsMode')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
87 add_action("wp_ajax_wpstg_log_event_failure", [$this, "ajaxLogEventFailure"]); // phpcs:ignore WPStaging.Security.AuthorizationChecked
88 add_action("wp_ajax_nopriv_wpstg_log_event_failure", [$this, "ajaxLogEventFailure"]); // phpcs:ignore WPStaging.Security.AuthorizationChecked
89 add_action('wp_ajax_wpstg--detect-memory-exhaust', $this->container->callback(MemoryExhaust::class, 'ajaxResponse')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
90 add_action("wp_ajax_wpstg_log_event_success", [$this, "ajaxLogEventSuccess"]); // phpcs:ignore WPStaging.Security.AuthorizationChecked
91 add_action("wp_ajax_nopriv_wpstg_log_event_success", [$this, "ajaxLogEventSuccess"]); // phpcs:ignore WPStaging.Security.AuthorizationChecked
92 add_action('wp_ajax_wpstg_send_mail_notification', $this->container->callback(MailSender::class, 'ajaxSendEmailNotification')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
93 add_action('wp_ajax_nopriv_wpstg_send_mail_notification', $this->container->callback(MailSender::class, 'ajaxSendEmailNotification')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
94 add_action('wp_ajax_wpstg_dismiss_compat_notice', $this->container->callback(WpVersionCompatNotice::class, 'ajaxDismissCompatNotice')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
95 add_action('wp_ajax_wpstg_onboarding_select_action', $this->container->callback(OnboardingAjax::class, 'ajaxSelectAction')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
96 add_filter('admin_body_class', [$this, 'addOnboardingBodyClass']);
97 add_action('wp_ajax_wpstg_onboarding_action_started', $this->container->callback(OnboardingAjax::class, 'ajaxActionStarted')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
98 add_action('wp_ajax_wpstg_onboarding_offer_shown', $this->container->callback(OnboardingAjax::class, 'ajaxOfferShown')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
99 add_action('wp_ajax_wpstg_onboarding_restart', $this->container->callback(OnboardingAjax::class, 'ajaxRestart')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
100 add_action('wp_ajax_wpstg_onboarding_next_step', $this->container->callback(OnboardingAjax::class, 'ajaxNextStep')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
101 add_action('wp_ajax_wpstg_onboarding_cancel_action', $this->container->callback(OnboardingAjax::class, 'ajaxCancelAction')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
102 add_action('wp_ajax_wpstg_onboarding_finish', $this->container->callback(OnboardingAjax::class, 'ajaxFinish')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
103 add_action('wp_ajax_wpstg_onboarding_queue_backup', $this->container->callback(OnboardingAjax::class, 'ajaxQueueBackup')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
104 add_action('wp_ajax_wpstg_onboarding_backup_status', $this->container->callback(OnboardingAjax::class, 'ajaxQueuedBackupStatus')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
105
106
107 add_action(StagingSiteCreate::ACTION_STAGING_SITE_CREATED, $this->container->callback(OnboardingJourney::class, 'completeStaging'), 5);
108 add_action(StagingSiteCreate::ACTION_STAGING_SITE_CREATED, $this->container->callback(QueuedBackup::class, 'startAfterStagingCreated'));
109 add_action(FinishBackupTask::ACTION_BACKUP_CREATED, $this->container->callback(OnboardingJourney::class, 'completeBackup'), 5);
110 add_action(FinishBackupTask::ACTION_BACKUP_CREATED, $this->container->callback(QueuedBackup::class, 'markCompleted'));
111
112
113 add_action(PrepareJob::ACTION_JOB_FAILURE, $this->container->callback(QueuedBackup::class, 'onBackgroundJobFailure'));
114
115 add_action('wp_ajax_wpstg_cancel_clone', $this->container->callback(QueuedBackup::class, 'discardOnStagingRequest'), 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in discardOnStagingRequest()
116
117
118
119 add_action('wp_ajax_wpstg_cancel_clone', $this->container->callback(OnboardingJourney::class, 'abandonActionOnRequest'), 2); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in abandonActionOnRequest()
120 add_action('wp_ajax_wpstg--job--cancel', $this->container->callback(QueuedBackup::class, 'discardOnStagingRequest'), 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in discardOnStagingRequest()
121 add_action('wp_ajax_wpstg--job--cancel', $this->container->callback(OnboardingJourney::class, 'abandonActionOnRequest'), 2); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in abandonActionOnRequest()
122 add_action('wp_ajax_wpstg_staging_job_error', $this->container->callback(QueuedBackup::class, 'discardOnStagingRequest'), 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in discardOnStagingRequest()
123 }
124
125
126
127
128
129
130
131
132
133
134 public function addOnboardingBodyClass($classes)
135 {
136 $onboarding = FreeOnboarding::resolve();
137
138 return $onboarding === null ? $classes : $onboarding->addFocusModeBodyClass($classes);
139 }
140
141
142
143
144 public function cleanupLogs()
145 {
146 $this->container->make(LogCleanup::class)->cleanOldLogs();
147 }
148
149
150
151
152 public function cleanupAnalytics()
153 {
154 $this->container->make(AnalyticsCleanup::class)->cleanupOldAnalytics();
155 }
156
157
158
159
160 public function cleanupExpiredOtps()
161 {
162 $this->container->make(Otp::class)->cleanupExpiredOtps();
163 }
164
165
166
167
168 public function ajaxIsUserAuthenticated()
169 {
170 if (!is_user_logged_in()) {
171 wp_send_json(['wpAuthCheck' => false, 'redirectUrl' => wp_login_url()]);
172 }
173
174 wp_send_json(['wpAuthCheck' => true]);
175 }
176 }
177