PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.16.23
UpdraftPlus: WP Backup & Migration Plugin v1.16.23
1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 1.9.64 1.11.12 1.4.8 1.11.15 1.4.9 1.11.17 1.5.16 1.11.18 1.5.20 1.11.2 1.5.21 1.11.20 1.5.22 1.11.23 1.5.5 1.11.24 1.5.6 1.11.25 1.5.7 1.11.26 1.5.8 1.11.27 1.5.9 1.11.28 1.6.1 1.11.3 1.6.17 1.11.4 1.6.2 1.11.5 1.6.46 1.11.8 1.7.0 1.11.9 1.7.1 1.12.0 1.7.18 1.12.1 1.7.20 1.12.12 1.7.3 1.12.13 1.7.34 1.12.15 1.7.35 1.12.17 1.7.39 1.12.2 1.7.40 1.12.20 1.7.41 1.12.23 1.8.1 1.12.24 1.8.11 1.12.25 1.8.12 1.12.28 1.8.13 1.12.29 1.8.2 1.12.30 1.8.5 1.12.32 1.8.8 1.12.34 1.9.0 1.12.35 1.9.13 1.12.37 1.9.15 1.12.39 1.9.17 1.12.4 1.12.40 1.12.6 1.13.1 1.13.11 1.13.12 1.13.15 1.13.16 1.13.2 1.13.3 1.13.4 1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.14.10 1.14.11 1.14.12 1.14.13 1.14.2 1.14.3 1.14.4 1.14.5 1.14.7 1.14.9 1.15.0 1.15.2 1.15.3 1.15.5 1.15.6 1.15.7 1.16.0 1.16.10 1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16.16 1.16.17 1.16.20 1.16.21 1.16.22 1.16.23 1.16.24 1.16.25 1.16.26 1.16.28 1.16.29 1.16.32 1.16.34 1.16.35 1.16.36 1.16.37 1.16.4 1.16.40 1.16.41 1.16.42 1.16.43 1.16.44 1.16.45 1.16.46 1.16.47 1.16.48 1.16.49 1.16.5 1.16.50 1.16.51 1.16.53 1.16.55 1.16.56 1.16.59 1.16.6 1.16.60 1.16.61 1.16.62 1.16.63 1.16.64 1.16.65 1.16.66 1.16.67 1.16.68 1.16.69 1.16.7 1.16.8 1.16.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.19 1.2.2 1.2.20 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.33 1.2.35 1.2.36 1.2.38 1.2.39 1.2.4 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.5 1.2.7 1.2.8 1.2.9 1.22.1 1.22.10 1.22.11 1.22.12 1.22.14 1.22.15 1.22.16 1.22.17 1.22.18 1.22.19 1.22.20 1.22.21 1.22.22 1.22.23 1.22.24 1.22.3 1.22.4 1.22.5 1.22.6 1.22.7 1.22.8 1.22.9 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.15 1.23.16 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.1 1.24.10 1.24.11 1.24.12 1.24.2 trunk 1.24.3 0.7.4 1.24.4 0.7.7 1.24.5 0.8.28 1.24.6 0.8.29 1.24.7 0.8.30 1.24.8 0.8.31 1.24.9 0.8.32 1.25.1 0.8.33 1.25.2 0.8.36 1.25.3 0.8.37 1.25.5 0.8.50 1.25.6 0.8.51 1.25.7 0.9.1 1.25.8 0.9.10 1.25.9 0.9.11 1.26.1 0.9.12 1.26.2 0.9.2 1.3.10 0.9.20 1.3.12 0.9.21 1.3.14 0.9.22 1.3.15 1.0.10 1.3.17 1.0.11 1.3.18 1.0.12 1.3.19 1.0.15 1.3.2 1.0.16 1.3.20 1.0.18 1.3.22 1.0.20 1.3.23 1.0.3 1.3.24 1.0.4 1.3.25 1.0.5 1.3.3 1.0.6 1.3.4 1.0.7 1.3.6 1.0.8 1.3.7 1.0.9 1.3.8 1.1.0 1.3.9 1.1.10 1.4.0 1.1.11 1.4.10 1.1.12 1.4.11 1.1.13 1.4.12 1.1.14 1.4.13 1.1.15 1.4.14 1.1.16 1.4.15 1.1.17 1.4.2 1.1.2 1.4.27 1.1.3 1.4.28 1.1.5 1.4.29 1.1.6 1.4.30 1.1.8 1.4.4 1.1.9 1.4.48 1.10.1 1.4.5 1.10.3 1.4.6 1.11.1 1.4.7
updraftplus / includes / updraft-notices.php
updraftplus / includes Last commit date
Dropbox2 6 years ago Google 6 years ago checkout-embed 6 years ago cloudfiles 12 years ago handlebars 6 years ago images 9 years ago jquery.serializeJSON 7 years ago jstree 6 years ago labelauty 6 years ago tether 6 years ago tether-shepherd 7 years ago updraftclone 6 years ago S3.php 6 years ago S3compat.php 6 years ago cacert.pem 6 years ago class-backup-history.php 6 years ago class-commands.php 6 years ago class-database-utility.php 6 years ago class-filesystem-functions.php 6 years ago class-job-scheduler.php 6 years ago class-manipulation-functions.php 7 years ago class-partialfileservlet.php 9 years ago class-remote-send.php 6 years ago class-semaphore.php 6 years ago class-storage-methods-interface.php 6 years ago class-udrpc.php 6 years ago class-updraft-dashboard-news.php 6 years ago class-updraftcentral-updraftplus-commands.php 8 years ago class-updraftplus-encryption.php 6 years ago class-wpadmin-commands.php 6 years ago class-zip.php 6 years ago ftp.class.php 7 years ago get-cpanel-quota-usage.pl 12 years ago google-extensions.php 9 years ago jquery-ui.custom.css 7 years ago jquery-ui.custom.min.css 7 years ago jquery-ui.custom.min.css.map 7 years ago jquery.blockUI.js 8 years ago jquery.blockUI.min.js 8 years ago updraft-admin-common.js 6 years ago updraft-admin-common.min.js 6 years ago updraft-notices.php 6 years ago updraft-restorer-skin-compatibility.php 6 years ago updraft-restorer-skin.php 6 years ago updraftcentral.php 7 years ago updraftplus-clone.php 6 years ago updraftplus-login.php 7 years ago updraftplus-notices.php 6 years ago updraftplus-tour.php 7 years ago updraftvault.php 6 years ago
updraft-notices.php
146 lines
1 <?php
2
3 if (!defined('ABSPATH')) die('No direct access allowed');
4
5 /**
6 * If we ever change the API of the Updraft_Notices class, then we'll need to rename and version it, e.g. Updraft_Notices_1_0, because otherwise a plugin may find that it's loaded an older instance than it wanted from another plugin.
7 */
8 abstract class Updraft_Notices {
9
10 protected $notices_content;
11
12 // These variables are just short-hands to be used in advert content.
13 protected $dashboard_top = array('top');
14
15 protected $dashboard_top_or_report = array('top', 'report', 'report-plain');
16
17 protected $dashboard_bottom_or_report = array('bottom', 'report', 'report-plain');
18
19 protected $anywhere = array('top', 'bottom', 'report', 'report-plain');
20
21 protected $autobackup = array('autobackup');
22
23 protected $autobackup_bottom_or_report = array('autobackup', 'bottom', 'report', 'report-plain');
24
25 protected function populate_notices_content() {
26 // Global adverts that appear in all products will be returned to the child to display
27 return array();
28 }
29
30 /**
31 * Call this method to setup the notices
32 */
33 abstract protected function notices_init();
34
35 protected function translation_needed($plugin_base_dir, $product_name) {
36 $wplang = get_locale();
37 if (strlen($wplang) < 1 || 'en_US' == $wplang || 'en_GB' == $wplang) return false;
38 if (defined('WP_LANG_DIR') && is_file(WP_LANG_DIR.'/plugins/'.$product_name.'-'.$wplang.'.mo')) return false;
39 if (is_file($plugin_base_dir.'/languages/'.$product_name.'-'.$wplang.'.mo')) return false;
40 return true;
41 }
42
43 protected function url_start($html_allowed = false, $url, $https = false, $website_home = null) {
44 $proto = ($https) ? 'https' : 'http';
45 if (strpos($url, $website_home) !== false) {
46 return $html_allowed ? "<a href=".apply_filters(str_replace('.', '_', $website_home).'_link', $proto.'://'.$url).">" : "";
47 } else {
48 return $html_allowed ? "<a href=\"$proto://$url\">" : "";
49 }
50 }
51
52 protected function url_end($html_allowed, $url, $https = false) {
53 $proto = ($https) ? 'https' : 'http';
54 return $html_allowed ? '</a>' : " ($proto://$url)";
55 }
56
57 public function do_notice($notice = false, $position = 'top', $return_instead_of_echo = false) {
58
59 $this->notices_init();
60
61 if (false === $notice) $notice = apply_filters('updraft_notices_force_id', false, $this);
62
63 $notice_content = $this->get_notice_data($notice, $position);
64
65 if (false != $notice_content) {
66 return $this->render_specified_notice($notice_content, $return_instead_of_echo, $position);
67 }
68 }
69
70 /**
71 * This method will return a notice ready for display.
72 *
73 * @param boolean $notice the notice to grab the data
74 * @param string $position position of notice
75 * @return array
76 */
77 protected function get_notice_data($notice = false, $position = 'top') {
78
79 // If a specific notice has been passed to this method then return that notice.
80 if ($notice) {
81 if (!isset($this->notices_content[$notice])) return false;
82
83 // Does the notice support the position specified?
84 if (isset($this->notices_content[$notice]['supported_positions']) && !in_array($position, $this->notices_content[$notice]['supported_positions'])) return false;
85
86 /*
87 First check if the advert passed can be displayed and hasn't been dismissed, we do this by checking what dismissed value we should be checking.
88 */
89 $dismiss_time = $this->notices_content[$notice]['dismiss_time'];
90
91 $dismiss = $this->check_notice_dismissed($dismiss_time);
92
93 if ($dismiss) return false;
94
95 // If the advert has a validity function, then require the advert to be valid
96 if (!empty($this->notices_content[$notice]['validity_function']) && !call_user_func(array($this, $this->notices_content[$notice]['validity_function']))) return false;
97
98 return $this->notices_content[$notice];
99 }
100
101 // create an array to add non-seasonal adverts to so that if a seasonal advert can't be returned we can choose a random advert from this array.
102 $available_notices = array();
103
104 // If Advert wasn't passed then next we should check to see if a seasonal advert can be returned.
105 foreach ($this->notices_content as $notice_id => $notice_data) {
106 // Does the notice support the position specified?
107 if (isset($this->notices_content[$notice_id]['supported_positions']) && !in_array($position, $this->notices_content[$notice_id]['supported_positions'])) continue;
108
109 // If the advert has a validity function, then require the advert to be valid
110 if (!empty($notice_data['validity_function']) && !call_user_func(array($this, $notice_data['validity_function']))) continue;
111
112 if (isset($notice_data['valid_from']) && isset($notice_data['valid_to'])) {
113
114 if ($this->skip_seasonal_notices($notice_data)) return $notice_data;
115
116 } else {
117
118 $dismiss_time = $this->notices_content[$notice_id]['dismiss_time'];
119 $dismiss = $this->check_notice_dismissed($dismiss_time);
120
121 if (!$dismiss) $available_notices[$notice_id] = $notice_data;
122 }
123 }
124
125 if (empty($available_notices)) return false;
126
127 // If a seasonal advert can't be returned then we will return a random advert
128
129 // Here we give a 25% chance for the rate advert to be returned before selecting a random advert from the entire collection which also includes the rate advert
130 if (0 == rand(0, 3) && isset($available_notices['rate'])) return $available_notices['rate'];
131
132 /*
133 Using shuffle here as something like rand which produces a random number and uses that as the array index fails, this is because in future an advert may not be numbered and could have a string as its key which will then cause errors.
134 */
135
136 shuffle($available_notices);
137 return $available_notices[0];
138 }
139
140 protected function skip_seasonal_notices($notice_data) {// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
141 return false;
142 }
143
144 abstract protected function check_notice_dismissed($dismiss_time);
145 }
146