PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
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 day ago Analytics 1 day ago Assets 1 day ago BackgroundProcessing 1 day ago CloningProcess 1 day ago Collection 1 day ago Command 1 day ago Component 1 day ago DI 1 day ago Database 1 day ago DependencyResolver 1 day ago Exceptions 2 years ago Experiments 1 day ago Facades 1 day ago Filesystem 1 day ago Interfaces 1 day ago Job 1 day ago Language 1 day ago Logger 1 day ago Mails 1 day ago Network 1 day ago Newsfeed 1 day ago Notices 1 day ago Onboarding 1 day ago Performance 1 day ago Permalinks 1 day ago Queue 1 day ago Rest 1 day ago Security 1 day ago Settings 1 day ago TemplateEngine 1 day ago ThirdParty 1 day ago Traits 1 day ago Upgrade 1 day ago Utils 1 day ago AnalyticsServiceProvider.php 1 day ago AssetServiceProvider.php 1 year ago CommonServiceProvider.php 1 day ago ErrorHandler.php 1 day ago NoticeServiceProvider.php 1 year ago SettingsServiceProvider.php 4 months ago SiteInfo.php 1 day ago Url.php 1 day ago
CommonServiceProvider.php
176 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(OnboardingJourney::class, 'abandonActionOnRequest'), 2); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in abandonActionOnRequest()
121 add_action('wp_ajax_wpstg_staging_job_error', $this->container->callback(QueuedBackup::class, 'discardOnStagingRequest'), 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked -- Authorization checked in discardOnStagingRequest()
122 }
123
124
125
126
127
128
129
130
131
132
133 public function addOnboardingBodyClass($classes)
134 {
135 $onboarding = FreeOnboarding::resolve();
136
137 return $onboarding === null ? $classes : $onboarding->addFocusModeBodyClass($classes);
138 }
139
140
141
142
143 public function cleanupLogs()
144 {
145 $this->container->make(LogCleanup::class)->cleanOldLogs();
146 }
147
148
149
150
151 public function cleanupAnalytics()
152 {
153 $this->container->make(AnalyticsCleanup::class)->cleanupOldAnalytics();
154 }
155
156
157
158
159 public function cleanupExpiredOtps()
160 {
161 $this->container->make(Otp::class)->cleanupExpiredOtps();
162 }
163
164
165
166
167 public function ajaxIsUserAuthenticated()
168 {
169 if (!is_user_logged_in()) {
170 wp_send_json(['wpAuthCheck' => false, 'redirectUrl' => wp_login_url()]);
171 }
172
173 wp_send_json(['wpAuthCheck' => true]);
174 }
175 }
176