PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Service / PluginUpdate.php
codepress-admin-columns / classes / Service Last commit date
AdminBar.php 1 day ago AdminBarEditColumns.php 1 day ago Colors.php 1 day ago CommonAssets.php 1 day ago CurrentTable.php 1 day ago ManageHeadings.php 1 day ago ManageValue.php 1 day ago NoticeChecks.php 1 day ago PluginUpdate.php 1 day ago PromoChecks.php 1 day ago QuickEdit.php 1 day ago SaveHeadings.php 1 day ago Setup.php 1 day ago TableRows.php 1 day ago Tooltips.php 1 day ago View.php 1 day ago
PluginUpdate.php
133 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Service;
6
7 use AC\Entity\Plugin;
8 use AC\Plugin\Version;
9 use AC\Registerable;
10 use AC\Type\Url\Site;
11
12 final class PluginUpdate implements Registerable
13 {
14 private Plugin $plugin;
15
16 private Site $upgrade_url_template;
17
18 public function __construct(Plugin $plugin, Site $upgrade_url_template)
19 {
20 $this->plugin = $plugin;
21 $this->upgrade_url_template = $upgrade_url_template;
22 }
23
24 public function register(): void
25 {
26 add_action(
27 'in_plugin_update_message-' . $this->plugin->get_basename(),
28 [$this, 'render_additional_message'],
29 10,
30 2
31 );
32
33 // Use wp_clean_update_cache() to bypass cache
34 add_filter('pre_set_site_transient_update_plugins', [$this, 'add_upgrade_notice_to_response'], 20);
35
36 add_action('admin_head', function () {
37 $screen = get_current_screen();
38
39 if (! $screen || $screen->base !== 'plugins') {
40 return;
41 }
42
43 ?>
44
45 <style>
46 p.ac-plugin-icon-upgrade::before {
47 content: '\f534' !important;
48 }
49 </style>
50
51 <?php
52 });
53 }
54
55 private function get_general_warning_message(): string
56 {
57 return __(
58 'You are upgrading to a new a major version of Admin Columns, which can include <strong>breaking changes</strong>.',
59 'codepress-admin-columns'
60 );
61 }
62
63 public function render_additional_message(array $data, object $response): void
64 {
65 $new_version = $response->new_version ?? '';
66
67 $version = new Version((string)$new_version);
68
69 if ($this->plugin->get_version()->get_major_version() >= $version->get_major_version()) {
70 return;
71 }
72
73 $tpl = $this->get_general_warning_message() . ' ' . _x(
74 'Please review the %s for details.',
75 '%s contains the link to upgrade guide. Label is translated separately.',
76 'codepress-admin-columns'
77 );
78
79 $tpl = wp_kses(
80 $tpl,
81 [
82 'strong' => [],
83 ]
84 );
85
86 $url = sprintf((string)$this->upgrade_url_template, $version->get_major_version());
87
88 $url = sprintf(
89 '<a href="%s" target="_blank">%s</a>',
90 $url,
91 esc_html_x('upgrade guide', 'Anchor text to upgrade guide.', 'codepress-admin-columns')
92 );
93
94 $message = sprintf(
95 $tpl,
96 $url
97 );
98
99 echo '</p><p class="ac-plugin-icon-upgrade">' . $message;
100 }
101
102 /**
103 * Add upgrade notice to the update message on the updates page in the WordPress admin
104 */
105 public function add_upgrade_notice_to_response($transient): ?object
106 {
107 $basename = $this->plugin->get_basename();
108
109 if (
110 is_object($transient) &&
111 isset($transient->checked, $transient->response) &&
112 ! empty($transient->checked[$basename]) &&
113 ! empty($transient->response[$basename])
114 ) {
115 $update_major = (new Version($transient->response[$basename]->new_version))->get_major_version();
116
117 if ($update_major > $this->plugin->get_version()->get_major_version()) {
118 $notice = sprintf(
119 '%s: %s %s',
120 esc_html__('Warning'),
121 strip_tags($this->get_general_warning_message()),
122 esc_html__('See the Plugins page for details.', 'codepress-admin-columns')
123 );
124
125 $transient->response[$basename]->upgrade_notice = $notice;
126 }
127 }
128
129 return $transient;
130 }
131
132 }
133