PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.9.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.9.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 1 year ago BooleanNotice.php 2 years ago CliIntegrationNotice.php 1 day ago DisabledItemsNotice.php 2 years ago DismissNotice.php 1 day ago NextGenEngineNotice.php 1 day ago Notices.php 1 day ago NoticesHandler.php 11 months ago ObjectCacheNotice.php 11 months ago OutdatedWpStagingNotice.php 1 year ago WarningsNotice.php 2 years ago WpVersionCompatNotice.php 3 months ago
OutdatedWpStagingNotice.php
103 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 * @param string $slug
62 * @return null|string
63 */
64 private function getNewestVersionToUpdateBySlug($slug)
65 {
66 $plugins = get_site_transient('update_plugins');
67 if (!is_object($plugins)) {
68 return null;
69 }
70
71 if (!property_exists($plugins, 'response')) {
72 return null;
73 }
74
75 $plugins = $plugins->response;
76
77 if (empty($plugins) || (!is_array($plugins) || (!is_array($plugins) && $plugins instanceof Countable === false))) {
78 return null;
79 }
80
81 foreach ($plugins as $plugin) {
82 if ($plugin->slug === $slug) {
83 return $plugin->new_version;
84 }
85 }
86
87 return null;
88 }
89
90 /**
91 * @return bool
92 */
93 private function isOutdatedWpStagingVersion()
94 {
95 // If latest version is not available there is no need to update
96 if ($this->getLatestWpstgVersion() === null) {
97 return false;
98 }
99
100 return version_compare($this->getLatestWpstgVersion(), $this->getCurrentWpstgVersion(), '>') ? true : false;
101 }
102 }
103