PluginProbe ʕ •ᴥ•ʔ
Akismet Anti-spam: Spam Protection / 5.7
Akismet Anti-spam: Spam Protection v5.7
5.7 3.0.4 3.0.5 3.1 3.1.1 3.1.10 3.1.11 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 4.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1 4.1.1 4.1.10 4.1.11 4.1.12 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 5.0 5.0.1 5.0.2 5.1 5.2 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4 5.5 5.6 trunk 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.4.0 2.4.1 2.5.0 2.5.1 2.5.10 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 3.0.0 3.0.0-RC1 3.0.1 3.0.2 3.0.3
akismet / views / config.php
akismet / views Last commit date
activate.php 7 months ago compatible-plugins.php 2 months ago config.php 1 month ago connect-jp.php 7 months ago enter.php 2 years ago footer.php 1 month ago get.php 7 months ago logo.php 2 years ago notice.php 3 months ago predefined.php 2 months ago setup-jetpack.php 7 months ago setup.php 7 months ago start.php 1 month ago stats.php 1 month ago
config.php
354 lines
1 <?php
2
3 //phpcs:disable VariableAnalysis
4 // There are "undefined" variables here because they're defined in the code that includes this file as a template.
5 $kses_allow_link_href = array(
6 'a' => array(
7 'href' => true,
8 ),
9 );
10 ?>
11 <div id="akismet-plugin-container">
12 <?php if ( has_action( 'akismet_header' ) ) : ?>
13 <?php do_action( 'akismet_header' ); ?>
14 <?php else : ?>
15 <div class="akismet-masthead">
16 <div class="akismet-masthead__inside-container">
17 <?php Akismet::view( 'logo' ); ?>
18 </div>
19 </div>
20 <?php endif; ?>
21 <div class="akismet-lower">
22 <?php if ( Akismet::get_api_key() ) { ?>
23 <?php Akismet_Admin::display_status(); ?>
24 <?php } ?>
25 <?php if ( ! empty( $notices ) ) { ?>
26 <?php foreach ( $notices as $notice ) { ?>
27 <?php Akismet::view( 'notice', array_merge( $notice, array( 'parent_view' => $name ) ) ); ?>
28 <?php } ?>
29 <?php } ?>
30
31 <?php if ( isset( $stat_totals['all'] ) && isset( $stat_totals['6-months'] ) ) : ?>
32 <div class="akismet-card">
33 <div class="akismet-section-header">
34 <h2 class="akismet-section-header__label">
35 <span><?php esc_html_e( 'Statistics', 'akismet' ); ?></span>
36 </h2>
37 </div> <!-- close akismet-section-header -->
38
39 <div class="akismet-new-snapshot">
40 <?php /* name attribute on iframe is used as a cache-buster here to force Firefox to load the new style charts: https://bugzilla.mozilla.org/show_bug.cgi?id=356558 */ ?>
41 <div class="akismet-new-snapshot__chart">
42 <iframe id="stats-iframe" allowtransparency="true" scrolling="no" frameborder="0" style="width: 100%; height: 220px; overflow: hidden;" src="<?php echo esc_url( sprintf( 'https://tools.akismet.com/1.0/snapshot.php?blog=%s&token=%s&height=200&locale=%s&is_redecorated=1', rawurlencode( get_option( 'home' ) ), rawurlencode( Akismet::get_access_token() ), get_user_locale() ) ); ?>" name="<?php echo esc_attr( 'snapshot-' . filemtime( __FILE__ ) ); ?>" title="<?php echo esc_attr__( 'Akismet stats', 'akismet' ); ?>"></iframe>
43 </div>
44
45 <ul class="akismet-new-snapshot__list">
46 <li class="akismet-new-snapshot__item">
47 <h3 class="akismet-new-snapshot__header"><?php esc_html_e( 'Past six months', 'akismet' ); ?></h3>
48 <span class="akismet-new-snapshot__number"><?php echo number_format( $stat_totals['6-months']->spam ); ?></span>
49 <span class="akismet-new-snapshot__text"><?php echo esc_html( _n( 'Spam blocked', 'Spam blocked', $stat_totals['6-months']->spam, 'akismet' ) ); ?></span>
50 </li>
51 <li class="akismet-new-snapshot__item">
52 <h3 class="akismet-new-snapshot__header"><?php esc_html_e( 'All time', 'akismet' ); ?></h3>
53 <span class="akismet-new-snapshot__number"><?php echo number_format( $stat_totals['all']->spam ); ?></span>
54 <span class="akismet-new-snapshot__text"><?php echo esc_html( _n( 'Spam blocked', 'Spam blocked', $stat_totals['all']->spam, 'akismet' ) ); ?></span>
55 </li>
56 <li class="akismet-new-snapshot__item">
57 <h3 class="akismet-new-snapshot__header"><?php esc_html_e( 'Accuracy', 'akismet' ); ?></h3>
58 <span class="akismet-new-snapshot__number"><?php echo floatval( $stat_totals['all']->accuracy ); ?>%</span>
59 <span class="akismet-new-snapshot__text">
60 <?php
61 /* translators: %s: number of spam missed by Akismet */
62 echo esc_html( sprintf( _n( '%s missed spam', '%s missed spam', $stat_totals['all']->missed_spam, 'akismet' ), number_format( $stat_totals['all']->missed_spam ) ) ) . ', ';
63 /* translators: %s: number of false positive spam flagged by Akismet */
64 echo esc_html( sprintf( _n( '%s false positive', '%s false positives', $stat_totals['all']->false_positives, 'akismet' ), number_format( $stat_totals['all']->false_positives ) ) );
65 ?>
66 </span>
67 </li>
68 </ul>
69 </div> <!-- close akismet-new-snapshot -->
70
71 <a href="<?php echo esc_url( Akismet_Admin::get_page_url( 'stats' ) ); ?>" class="akismet-stats-footer">
72 <?php esc_html_e( 'View detailed stats', 'akismet' ); ?>
73 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
74 <polyline points="9 18 15 12 9 6"/>
75 </svg>
76 </a>
77 </div> <!-- close akismet-card -->
78 <?php endif; ?>
79
80 <?php if ( apply_filters( 'akismet_show_compatible_plugins', true ) ) : ?>
81 <?php Akismet::view( 'compatible-plugins' ); ?>
82 <?php endif; ?>
83
84 <?php if ( $akismet_user ) : ?>
85 <div class="akismet-card">
86 <div class="akismet-section-header">
87 <h2 class="akismet-section-header__label">
88 <span><?php esc_html_e( 'Settings', 'akismet' ); ?></span>
89 </h2>
90 </div>
91
92 <div class="inside">
93 <form action="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>" autocomplete="off" method="POST" id="akismet-settings-form">
94
95 <div class="akismet-settings">
96 <?php if ( ! Akismet::predefined_api_key() ) : ?>
97 <div class="akismet-settings__row">
98 <h3 class="akismet-settings__row-title">
99 <label class="akismet-settings__row-label" for="key"><?php esc_html_e( 'API key', 'akismet' ); ?></label>
100 </h3>
101 <div class="akismet-settings__row-input">
102 <div class="akismet-api-key-wrapper">
103 <input id="key" name="key" type="text" size="15" value="<?php echo esc_attr( get_option( 'wordpress_api_key' ) ); ?>" class="<?php echo esc_attr( 'regular-text code ' . $akismet_user->status ); ?>">
104 <button type="button" class="akismet-api-key-copy" aria-label="<?php esc_attr_e( 'Copy API key', 'akismet' ); ?>">
105 <?php include plugin_dir_path( __FILE__ ) . '../_inc/img/copy.svg'; ?>
106 </button>
107 </div>
108 </div>
109 </div>
110 <?php endif; ?>
111
112 <?php
113 //phpcs:ignore WordPress.Security.NonceVerification.Recommended
114 if ( isset( $_GET['ssl_status'] ) ) :
115 ?>
116 <div class="akismet-settings__row">
117 <div class="akismet-settings__row-text">
118 <h3 class="akismet-settings__row-title"><?php esc_html_e( 'SSL status', 'akismet' ); ?></h3>
119 <div class="akismet-settings__row-description">
120 <?php if ( ! wp_http_supports( array( 'ssl' ) ) ) : ?>
121 <strong><?php esc_html_e( 'Disabled.', 'akismet' ); ?></strong>
122 <?php esc_html_e( 'Your Web server cannot make SSL requests; contact your Web host and ask them to add support for SSL requests.', 'akismet' ); ?>
123 <?php else : ?>
124 <?php $ssl_disabled = get_option( 'akismet_ssl_disabled' ); ?>
125
126 <?php if ( $ssl_disabled ) : ?>
127 <strong><?php esc_html_e( 'Temporarily disabled.', 'akismet' ); ?></strong>
128 <?php esc_html_e( 'Akismet encountered a problem with a previous SSL request and disabled it temporarily. It will begin using SSL for requests again shortly.', 'akismet' ); ?>
129 <?php else : ?>
130 <strong><?php esc_html_e( 'Enabled.', 'akismet' ); ?></strong>
131 <?php esc_html_e( 'All systems functional.', 'akismet' ); ?>
132 <?php endif; ?>
133 <?php endif; ?>
134 </div>
135 </div>
136 </div>
137 <?php endif; ?>
138
139 <div class="akismet-settings__row">
140 <div class="akismet-settings__row-text">
141 <h3 class="akismet-settings__row-title"><?php esc_html_e( 'Comments', 'akismet' ); ?></h3>
142 </div>
143 <div class="akismet-settings__row-input">
144 <label class="akismet-settings__row-input-label" for="akismet_show_user_comments_approved">
145 <input
146 name="akismet_show_user_comments_approved"
147 id="akismet_show_user_comments_approved"
148 value="1"
149 type="checkbox"
150 <?php
151 // If the option isn't set, or if it's enabled ('1'), or if it was enabled a long time ago ('true'), check the checkbox.
152 checked( true, ( in_array( get_option( 'akismet_show_user_comments_approved' ), array( false, '1', 'true' ), true ) ) );
153 ?>
154 />
155 <span class="akismet-settings__row-label-text">
156 <?php esc_html_e( 'Show the number of approved comments beside each comment author.', 'akismet' ); ?>
157 </span>
158 </label>
159 </div>
160 </div>
161
162 <div class="akismet-settings__row is-radio">
163 <div class="akismet-settings__row-text">
164 <h3 class="akismet-settings__row-title"><?php esc_html_e( 'Spam filtering', 'akismet' ); ?></h3>
165 </div>
166 <div class="akismet-settings__row-input">
167 <fieldset>
168 <legend class="screen-reader-text">
169 <span><?php esc_html_e( 'Akismet Anti-spam strictness', 'akismet' ); ?></span>
170 </legend>
171 <div>
172 <label class="akismet-settings__row-input-label" for="akismet_strictness_1">
173 <input type="radio" name="akismet_strictness" id="akismet_strictness_1" value="1" <?php checked( '1', get_option( 'akismet_strictness' ) ); ?> />
174 <span class="akismet-settings__row-label-text">
175 <?php esc_html_e( 'Silently discard the worst and most pervasive spam so I never see it.', 'akismet' ); ?>
176 </span>
177 </label>
178 </div>
179 <div>
180 <label class="akismet-settings__row-input-label" for="akismet_strictness_0">
181 <input type="radio" name="akismet_strictness" id="akismet_strictness_0" value="0" <?php checked( true, get_option( 'akismet_strictness' ) !== '1' ); ?> />
182 <span class="akismet-settings__row-label-text">
183 <?php esc_html_e( 'Always put spam in the Spam folder for review.', 'akismet' ); ?>
184 </span>
185 </label>
186 </div>
187 </fieldset>
188
189 <div class="akismet-settings__row-note">
190 <strong><?php esc_html_e( 'Note:', 'akismet' ); ?></strong>
191 <?php
192 $delete_interval = max( 1, intval( apply_filters( 'akismet_delete_comment_interval', 15 ) ) );
193
194 $spam_folder_link = sprintf(
195 '<a href="%s">%s</a>',
196 esc_url( admin_url( 'edit-comments.php?comment_status=spam' ) ),
197 esc_html__( 'spam folder', 'akismet' )
198 );
199
200 // The _n() needs to be on one line so the i18n tooling can extract the translator comment.
201 /* translators: %1$s: spam folder link, %2$d: delete interval in days */
202 $delete_message = _n( 'Spam in the %1$s older than %2$d day is deleted automatically.', 'Spam in the %1$s older than %2$d days is deleted automatically.', $delete_interval, 'akismet' );
203
204 printf(
205 wp_kses( $delete_message, $kses_allow_link_href ),
206 wp_kses( $spam_folder_link, $kses_allow_link_href ),
207 esc_html( $delete_interval )
208 );
209 ?>
210 </div>
211 </div>
212 </div>
213
214 <div class="akismet-settings__row is-radio">
215 <div class="akismet-settings__row-text">
216 <h3 class="akismet-settings__row-title"><?php esc_html_e( 'Privacy', 'akismet' ); ?></h3>
217 </div>
218 <div class="akismet-settings__row-input">
219 <fieldset>
220 <legend class="screen-reader-text">
221 <span><?php esc_html_e( 'Akismet privacy notice', 'akismet' ); ?></span>
222 </legend>
223 <div>
224 <label class="akismet-settings__row-input-label" for="akismet_comment_form_privacy_notice_display">
225 <input type="radio" name="akismet_comment_form_privacy_notice" id="akismet_comment_form_privacy_notice_display" value="display" <?php checked( 'display', get_option( 'akismet_comment_form_privacy_notice' ) ); ?> />
226 <span class="akismet-settings__row-label-text">
227 <?php esc_html_e( 'Display a privacy notice under your comment forms.', 'akismet' ); ?>
228 </span>
229 </label>
230 </div>
231 <div>
232 <label class="akismet-settings__row-input-label" for="akismet_comment_form_privacy_notice_hide">
233 <input type="radio" name="akismet_comment_form_privacy_notice" id="akismet_comment_form_privacy_notice_hide" value="hide" <?php echo in_array( get_option( 'akismet_comment_form_privacy_notice' ), array( 'display', 'hide' ), true ) ? checked( 'hide', get_option( 'akismet_comment_form_privacy_notice' ), false ) : 'checked="checked"'; ?> />
234 <span class="akismet-settings__row-label-text">
235 <?php esc_html_e( 'Do not display privacy notice.', 'akismet' ); ?>
236 </span>
237 </label>
238 </div>
239 </fieldset>
240
241 <div class="akismet-settings__row-note">
242 <?php esc_html_e( 'To help your site with transparency under privacy laws like the GDPR, Akismet can display a notice to your users under your comment forms.', 'akismet' ); ?>
243 </div>
244 </div>
245 </div>
246
247 <?php if ( apply_filters( 'akismet_show_mcp_setting', true ) ) : ?>
248 <div class="akismet-settings__row">
249 <div class="akismet-settings__row-text">
250 <h3 class="akismet-settings__row-title">
251 <?php esc_html_e( 'Tool access', 'akismet' ); ?>
252 </h3>
253 </div>
254 <div class="akismet-settings__row-input">
255 <label class="akismet-settings__row-input-label" for="akismet_enable_mcp_access">
256 <input
257 name="akismet_enable_mcp_access"
258 id="akismet_enable_mcp_access"
259 value="1"
260 type="checkbox"
261 <?php checked( '1', get_option( 'akismet_enable_mcp_access' ) ); ?>
262 />
263 <span class="akismet-settings__row-label-text">
264 <?php esc_html_e( 'Allow ', 'akismet' ); ?><abbr title="<?php esc_attr_e( 'Model Context Protocol', 'akismet' ); ?>"><?php esc_html_e( 'MCP', 'akismet' ); ?></abbr><?php esc_html_e( ' clients to access Akismet data and functionality', 'akismet' ); ?>
265 </span>
266 </label>
267 <div class="akismet-settings__row-note">
268 <?php esc_html_e( 'MCP (Model Context Protocol) allows AI assistants to access Akismet statistics and spam checking features.', 'akismet' ); ?>
269 </div>
270 </div>
271 </div>
272 <?php endif; ?>
273 </div>
274
275 <div class="akismet-card-actions">
276 <?php if ( ! Akismet::predefined_api_key() ) : ?>
277 <div id="delete-action" class="akismet-card-actions__secondary-action">
278 <a class="submitdelete deletion" href="<?php echo esc_url( Akismet_Admin::get_page_url( 'delete_key' ) ); ?>"><?php esc_html_e( 'Disconnect this account', 'akismet' ); ?></a>
279 </div>
280 <?php endif; ?>
281
282 <?php wp_nonce_field( Akismet_Admin::NONCE ); ?>
283
284 <div id="publishing-action">
285 <input type="hidden" name="action" value="enter-key">
286 <input type="submit" name="submit" id="submit" class="akismet-button akismet-could-be-primary" value="<?php esc_attr_e( 'Save changes', 'akismet' ); ?>">
287 </div>
288 </div>
289 </form>
290 </div>
291 </div>
292
293 <?php if ( ! Akismet::predefined_api_key() ) : ?>
294 <div class="akismet-card">
295 <div class="akismet-section-header">
296 <h2 class="akismet-section-header__label">
297 <span><?php esc_html_e( 'Account', 'akismet' ); ?></span>
298 </h2>
299 </div>
300
301 <div class="inside">
302 <dl class="akismet-account">
303 <dt class="akismet-account__label"><?php esc_html_e( 'Subscription type', 'akismet' ); ?></dt>
304 <dd class="akismet-account__value"><?php echo esc_html( $akismet_user->account_name ); ?></dd>
305
306 <dt class="akismet-account__label"><?php esc_html_e( 'Status', 'akismet' ); ?></dt>
307 <dd class="akismet-account__value">
308 <?php
309 if ( Akismet::USER_STATUS_CANCELLED === $akismet_user->status ) :
310 esc_html_e( 'Cancelled', 'akismet' );
311 elseif ( Akismet::USER_STATUS_SUSPENDED === $akismet_user->status ) :
312 esc_html_e( 'Suspended', 'akismet' );
313 elseif ( Akismet::USER_STATUS_MISSING === $akismet_user->status ) :
314 esc_html_e( 'Missing', 'akismet' );
315 elseif ( Akismet::USER_STATUS_NO_SUB === $akismet_user->status ) :
316 esc_html_e( 'No subscription found', 'akismet' );
317 else :
318 esc_html_e( 'Active', 'akismet' );
319 endif;
320 ?>
321 </dd>
322
323 <?php if ( $akismet_user->next_billing_date ) : ?>
324 <dt class="akismet-account__label"><?php esc_html_e( 'Next billing date', 'akismet' ); ?></dt>
325 <dd class="akismet-account__value"><?php echo esc_html( gmdate( 'F j, Y', $akismet_user->next_billing_date ) ); ?></dd>
326 <?php endif; ?>
327 </dl>
328 <div class="akismet-card-actions">
329 <?php if ( $akismet_user->status === Akismet::USER_STATUS_ACTIVE ) : ?>
330 <div class="akismet-card-actions__secondary-action">
331 <a href="https://akismet.com/account?utm_source=akismet_plugin&amp;utm_campaign=plugin_static_link&amp;utm_medium=in_plugin&amp;utm_content=account_overview" class="akismet-external-link" aria-label="Account overview on akismet.com"><?php esc_html_e( 'Account overview', 'akismet' ); ?></a>
332 </div>
333 <?php endif; ?>
334 <div id="publishing-action">
335 <?php
336 Akismet::view(
337 'get',
338 array(
339 'text' => ( $akismet_user->account_type === 'free-api-key' && $akismet_user->status === Akismet::USER_STATUS_ACTIVE ? __( 'Upgrade', 'akismet' ) : __( 'Change', 'akismet' ) ),
340 'redirect' => 'upgrade',
341 'utm_content' => ( $akismet_user->account_type === 'free-api-key' && $akismet_user->status === Akismet::USER_STATUS_ACTIVE ? 'config_upgrade' : 'config_change' ),
342 )
343 );
344 ?>
345 </div>
346 </div>
347 </div>
348 </div>
349 <?php endif; ?>
350 <?php endif; ?>
351 </div>
352 <?php Akismet::view( 'footer' ); ?>
353 </div>
354