PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.8.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.8.2
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 / Staging / FirstRun.php
wp-staging / Framework / Staging Last commit date
Ajax 2 years ago CloneOptions.php 2 years ago FirstRun.php 2 years ago Sites.php 2 years ago
FirstRun.php
90 lines
1 <?php
2
3 namespace WPStaging\Framework\Staging;
4
5 use WPStaging\Frontend\LoginNotice;
6 use WPStaging\Framework\Notices\DisabledItemsNotice;
7 use WPStaging\Core\WPStaging;
8 use WPStaging\Framework\SiteInfo;
9 use WPStaging\Framework\ThirdParty\WordFence;
10 use WPStaging\Framework\ThirdParty\ThirdPartyCacheHandler;
11 use WPStaging\Framework\Filesystem\OPcache;
12
13 /**
14 * Class FirstRun
15 *
16 * This class is executed only on first run when the cloned site is loaded initially
17 *
18 * @package WPStaging\Framework\Staging
19 */
20 class FirstRun
21 {
22
23 /**
24 * The option_name that is stored in the database to check first run is executed or not
25 */
26 const FIRST_RUN_KEY = 'wpstg_execute';
27
28 /**
29 * The option_name that is stored in the database to check whether mails are disabled or not
30 */
31 const MAILS_DISABLED_KEY = 'wpstg_emails_disabled';
32
33 public function init()
34 {
35 if (!(new SiteInfo())->isStagingSite()) {
36 return;
37 }
38
39 if (!get_option(self::FIRST_RUN_KEY)) {
40 return;
41 }
42
43 $this->initActions();
44
45 $this->removeInitialRunOption();
46 }
47
48 /**
49 * Initialize actions and classes which can be hooked in by custom functions
50 * Add all classes here that you want to run on first time loading.
51 */
52 private function initActions()
53 {
54 // Show one time login notice on staging site.
55 (new LoginNotice())->setTransient();
56
57 // Enable the notice which show what WP Staging Disabled on staging site admin.
58 WPStaging::make(DisabledItemsNotice::class)->enable();
59
60 // Enable the notice which show what WP Staging Disabled on staging site admin.
61 // This notice is disabled at the moment. Code below can be uncommented and notice can be tweaked if needed later.
62 // WPStaging::make(WarningsNotice::class)->enable();
63
64 // If user.ini present rename it to user.ini.bak and enable notice
65 (new WordFence())->renameUserIni();
66
67 if (class_exists('\WPStaging\Pro\Staging\NetworkClone')) {
68 (new \WPStaging\Pro\Staging\NetworkClone())->init();
69 }
70
71 /** @var ThirdPartyCacheHandler $cacheHandler */
72 $cacheHandler = WPStaging::make(ThirdPartyCacheHandler::class);
73 $cacheHandler->purgeEnduranceCache();
74
75 // Allow users to attach custom actions by using this hook
76 do_action('wpstg.clone_first_run');
77
78 // Flush OPcache
79 WPStaging::make(OPcache::class)->maybeInvalidate();
80 }
81
82 /**
83 * Remove the first run flag from database
84 */
85 private function removeInitialRunOption()
86 {
87 delete_option(static::FIRST_RUN_KEY);
88 }
89 }
90