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 / Notices / OutdatedWpStagingNotice.php
wp-staging / Framework / Notices Last commit date
BackupPluginsNotice.php 2 years ago BooleanNotice.php 2 years ago DisabledItemsNotice.php 2 years ago DismissNotice.php 2 years ago FreeBackupUpdateNotice.php 2 years ago Notices.php 2 years ago NoticesHandler.php 2 years ago ObjectCacheNotice.php 2 years ago OutdatedWpStagingNotice.php 3 years ago WarningsNotice.php 2 years ago
OutdatedWpStagingNotice.php
125 lines
1 <?php
2
3 namespace WPStaging\Framework\Notices;
4
5 use WPStaging\Core\WPStaging;
6 use Countable;
7
8 /**
9 * Class OutdatedWpStagingNotice
10 *
11 * Show a notification if installed WP STAGING free or pro version is outdated and if there is a new plugin update available
12 * @see \WPStaging\Framework\Notices\Notices
13 */
14 class OutdatedWpStagingNotice
15 {
16 /**
17 * @var string
18 */
19 private $currentWpstgVersion = null;
20
21 /**
22 * @var string
23 */
24 private $latestWpstgVersion = null;
25
26 public function showNotice($viewsNoticesPath)
27 {
28 // Early bail if it's PRO version and not an outdated version
29 if (!Notices::SHOW_ALL_NOTICES && (WPStaging::isPro() || !$this->isOutdatedWpStagingVersion())) {
30 return;
31 }
32
33 require "{$viewsNoticesPath}outdated-wp-staging-version.php";
34 }
35
36 /**
37 * @return string
38 */
39 public function getCurrentWpstgVersion()
40 {
41 if ($this->currentWpstgVersion === null) {
42 $this->currentWpstgVersion = WPStaging::getVersion();
43 }
44
45 return $this->currentWpstgVersion;
46 }
47
48 /**
49 * @return string
50 */
51 public function getLatestWpstgVersion()
52 {
53 if ($this->latestWpstgVersion === null) {
54 $this->latestWpstgVersion = $this->getNewestVersionToUpdateBySlug('wp-staging');
55 }
56
57 return $this->latestWpstgVersion;
58 }
59
60 /**
61 * @return boolean
62 */
63 public function isOutdatedWpStagingProVersion()
64 {
65 // If latest pro version is not available there is no need to update
66 if ($this->getLatestWpstgProVersion() === null) {
67 return false;
68 }
69
70 return version_compare($this->getLatestWpstgProVersion(), $this->getCurrentWpstgVersion(), '>') ? true : false;
71 }
72
73 /**
74 * Get the latest available WP STAGING PRO version
75 * @return string
76 */
77 public function getLatestWpstgProVersion()
78 {
79 return $this->getNewestVersionToUpdateBySlug('wp-staging-pro');
80 }
81
82 /**
83 * @param string $slug
84 * @return null|string
85 */
86 private function getNewestVersionToUpdateBySlug($slug)
87 {
88 $plugins = get_site_transient('update_plugins');
89 if (!is_object($plugins)) {
90 return null;
91 }
92
93 if (!property_exists($plugins, 'response')) {
94 return null;
95 }
96
97 $plugins = $plugins->response;
98
99 if (empty($plugins) || (!is_array($plugins) || (!is_array($plugins) && $plugins instanceof Countable === false))) {
100 return null;
101 }
102
103 foreach ($plugins as $plugin) {
104 if ($plugin->slug === $slug) {
105 return $plugin->new_version;
106 }
107 }
108
109 return null;
110 }
111
112 /**
113 * @return bool
114 */
115 private function isOutdatedWpStagingVersion()
116 {
117 // If latest version is not available there is no need to update
118 if ($this->getLatestWpstgVersion() === null) {
119 return false;
120 }
121
122 return version_compare($this->getLatestWpstgVersion(), $this->getCurrentWpstgVersion(), '>') ? true : false;
123 }
124 }
125