PluginProbe
Activity Logs, User Activity Tracking, Multisite Activity Log from Logtivity / 3.3.9
Activity Logs, User Activity Tracking, Multisite Activity Log from Logtivity v3.3.9
3.3.9 3.3.8 trunk 1.0 1.1.0 1.10.0 1.11.0 1.11.1 1.12.0 1.13.0 1.14.0 1.15.0 1.16.0 1.17.0 1.17.1 1.18.0 1.19.0 1.2.0 1.20.0 1.20.1 1.3.0 1.3.1 1.4.0 1.5.0 1.6.0 All 67 releases
← All changes | views/settings.php +405 -165 1.16.0 → 3.3.9 View file →
@@ -1,195 +1,435 @@
1 -<?php echo logtivity_view('_admin-header'); ?>
1 +<?php
2 2
3 +/**
4 + * @package Logtivity
5 + * @contact logtivity.io, [email protected]
6 + * @copyright 2024-2026 Logtivity. All rights reserved
7 + * @license https://www.gnu.org/licenses/gpl.html GNU/GPL
8 + *
9 + * This file is part of Logtivity.
10 + *
11 + * Logtivity is free software: you can redistribute it and/or modify
12 + * it under the terms of the GNU General Public License as published by
13 + * the Free Software Foundation, either version 2 of the License, or
14 + * (at your option) any later version.
15 + *
16 + * Logtivity is distributed in the hope that it will be useful,
17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 + * GNU General Public License for more details.
20 + *
21 + * You should have received a copy of the GNU General Public License
22 + * along with Logtivity. If not, see <https://www.gnu.org/licenses/>.
23 + */
24 +
25 +/**
26 + * @var string $fileName
27 + * @var array $vars
28 + * @var array $value
29 + * @var string $key
30 + * @var array $options
31 + */
32 +
33 +$api = new Logtivity_Api();
34 +$apiKey = $api->getApiKey();
35 +$latestResponse = $api->getLatestResponse();
36 +$status = $api->getConnectionStatus();
37 +
38 +echo logtivity_view('_admin-header', compact('options'));
39 +?>
40 +
3 41 <div class="postbox logtivity-settings">
4 - <?php if (logtivity_has_site_url_changed()): ?>
5 - <div style="background: #DC3232;color: #fff;padding: 1em">
6 - <h2 style="color: white; padding-left: 0" class="title">We've detected a change in your site URL.</h2>
7 - <p>Is this a dev or staging environment? As a precaution, we've stopped logging. To start recording logs, again click the 'Update Settings' button below.</p>
8 - </div>
9 - <?php endif ?>
42 + <div class="inside">
43 + <h1 style="padding-top: 20px;">Settings</h1>
10 44
11 - <div class="inside">
12 - <h1 style="padding-top: 20px;">Settings</h1>
45 + <?php if (logtivity_has_site_url_changed()): ?>
46 + <div class="logtivity-notice logtivity-notice-danger">
47 + <h2>We've detected a change in your site URL.</h2>
48 + <div>
49 + As a precaution, we've stopped logging. To start recording
50 + logs, again click the 'Update Settings' button below.
51 + </div>
52 + </div>
53 + <?php endif;
13 54
14 - <form action="<?php echo admin_url( 'admin-ajax.php' ); ?>?action=logtivity_update_settings" method="post">
55 + if (logtivity_url_environment_mismatch()) : ?>
56 + <div class="logtivity-notice logtivity-notice-danger">
57 + <h2>Logtivity is misconfigured and logging has stopped.</h2>
58 + <div>
59 + Your App URL (<?php echo esc_html(logtivity_get_app_url()); ?>)
60 + and API URL (<?php echo esc_html(logtivity_get_api_url()); ?>)
61 + point to different environments. Neither
62 + <code>LOGTIVITY_APP_URL</code> or <code>LOGTIVITY_API_URL</code>
63 + constant should be set, or both must be set to the same
64 + non-production environment. No logs will be sent until this is
65 + corrected.
66 + </div>
67 + </div>
68 + <?php elseif (logtivity_is_production() == false) : ?>
69 + <div class="logtivity-notice logtivity-notice-warning">
70 + <h2>This site is not sending logs to the production application.</h2>
71 + <div>
72 + See your dashboard at
73 + <a target="_blank"
74 + href="<?php echo logtivity_get_app_url(); ?>">
75 + <?php esc_html_e('Logtivity dashboard', 'logtivity'); ?>
76 + </a>
77 + </div>
78 + </div>
79 + <?php endif; ?>
15 80
16 - <?php wp_nonce_field( 'logtivity_update_settings', 'logtivity_update_settings' ) ?>
81 + <form action="<?php echo admin_url('admin-ajax.php'); ?>?action=logtivity_update_settings" method="post">
17 82
18 - <table class="form-table">
19 - <tbody>
20 - <tr class="user-user-login-wrap">
21 - <th>
22 - <label for="logtivity_site_api_key">Site API Key</label>
23 - <?php if (has_filter('logtivity_site_api_key')): ?>
24 - <div class="logtivity-constant">This option has been set in code.</div>
25 - <?php endif ?>
26 - </th>
27 - <td>
28 - <input <?php echo ( has_filter('logtivity_site_api_key') ? 'readonly' : ''); ?> type="text" name="logtivity_site_api_key" id="logtivity_site_api_key" value="<?php echo sanitize_text_field($options['logtivity_site_api_key']); ?>" class="regular-text">
29 - <?php if ($options['logtivity_api_key_check']): ?>
30 - <p>Status: <?php echo ( sanitize_text_field($options['logtivity_api_key_check']) != 'fail' ? '<span style="color: #4caf50; font-weight: bold;">Connected</span>' : '<span style="color: #ff3232; font-weight: bold;">Not connected. Please check API key.</span>'); ?></p>
31 - <?php endif ?>
32 - </td>
33 - <td>
34 - <span class="description">You can find this value by logging into your account and navigating to/creating this site settings page.</span>
35 - </td>
36 - </tr>
37 - <tr class="user-user-login-wrap">
38 - <th>
39 - <label for="logtivity_disable_default_logging">Disable built in Event Logging.</label>
40 - <?php if (has_filter('logtivity_disable_default_logging')): ?>
41 - <div class="logtivity-constant">This option has been set in code.</div>
42 - <?php endif ?>
43 - </th>
44 - <td>
45 - <input type="hidden" name="logtivity_disable_default_logging" id="logtivity_disable_default_logging" value="0">
83 + <?php wp_nonce_field('logtivity_update_settings', 'logtivity_update_settings') ?>
46 84
47 - <input <?php echo ( has_filter('logtivity_disable_default_logging') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_disable_default_logging" id="logtivity_disable_default_logging" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_disable_default_logging']) ? 'checked' : ''); ?>>
48 - </td>
49 - <td>
50 - <span class="description">Check this box if you do not want the plugin to log actions automatically and you would prefer to manually log specific actions with code.</span>
51 - </td>
52 - </tr>
53 - <tr class="user-user-login-wrap">
54 - <th>
55 - <label for="logtivity_should_store_user_id">Store User ID</label>
56 - <?php if (has_filter('logtivity_should_store_user_id')): ?>
57 - <div class="logtivity-constant">This option has been set in code.</div>
58 - <?php endif ?>
59 - </th>
60 - <td>
61 - <input type="hidden" name="logtivity_should_store_user_id" id="logtivity_should_store_user_id" value="0">
85 + <table class="form-table">
86 + <tbody>
87 + <tr class="user-user-login-wrap">
88 + <th scope="row">
89 + <label for="logtivity_site_api_key">Site API Key</label>
90 + <?php if (has_filter('logtivity_site_api_key')): ?>
91 + <div class="logtivity-constant">This option has been set in code.</div>
92 + <?php endif ?>
93 + </th>
62 94
63 - <input <?php echo ( has_filter('logtivity_should_store_user_id') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_should_store_user_id" id="logtivity_should_store_user_id" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_should_store_user_id']) ? 'checked' : ''); ?>>
64 - </td>
65 - <td>
66 - <span class="description">If you check this box, when logging an action, we will include the users User ID in the logged action.</span>
67 - </td>
68 - </tr>
69 - <tr class="user-user-login-wrap">
70 - <th>
71 - <label for="logtivity_should_log_profile_link">Store Users Profile Link</label>
72 - <?php if (has_filter('logtivity_should_log_profile_link')): ?>
73 - <div class="logtivity-constant">This option has been set in code.</div>
74 - <?php endif ?>
75 - </th>
76 - <td>
77 - <input type="hidden" name="logtivity_should_log_profile_link" id="logtivity_should_log_profile_link" value="0">
95 + <td>
96 + <input id="logtivity_site_api_key"
97 + name="logtivity_site_api_key"
98 + type="text"
99 + <?php echo has_filter('logtivity_site_api_key') ? 'readonly' : ''; ?>
100 + value="<?php echo sanitize_text_field($apiKey); ?>"
101 + class="regular-text">
102 + <p>
103 + Status:
104 + <?php
105 + switch ($status) {
106 + case 'success':
107 + echo '<span style="color: #4caf50; font-weight: bold;">Connected</span>';
108 + break;
78 109
79 - <input <?php echo ( has_filter('logtivity_should_log_profile_link') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_should_log_profile_link" id="logtivity_should_log_profile_link" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_should_log_profile_link']) ? 'checked' : ''); ?>>
80 - </td>
81 - <td>
82 - <span class="description">If you check this box, when logging an action, we will include the users profile link in the logged action.</span>
83 - </td>
84 - </tr>
85 - <tr class="user-user-login-wrap">
86 - <th>
87 - <label for="logtivity_should_log_username">Store Users Username</label>
88 - <?php if (has_filter('logtivity_should_log_username')): ?>
89 - <div class="logtivity-constant">This option has been set in code.</div>
90 - <?php endif ?>
91 - </th>
92 - <td>
93 - <input type="hidden" name="logtivity_should_log_username" id="logtivity_should_log_username" value="0">
110 + case 'paused':
111 + echo '<span style="color: #dbbf24; font-weight: bold;">Logging is paused</span>';
112 + echo '<br>' . $api->getConnectionMessage();
113 + break;
94 114
95 - <input <?php echo ( has_filter('logtivity_should_log_username') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_should_log_username" id="logtivity_should_log_username" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_should_log_username']) ? 'checked' : ''); ?>>
96 - </td>
97 - <td>
98 - <span class="description">If you check this box, when logging an action, we will include the users username in the logged action.</span>
99 - </td>
100 - </tr>
101 - <tr class="user-user-login-wrap">
102 - <th>
103 - <label for="logtivity_should_store_ip">Store Users IP Address</label>
104 - <?php if (has_filter('logtivity_should_store_ip')): ?>
105 - <div class="logtivity-constant">This option has been set in code.</div>
106 - <?php endif ?>
107 - </th>
108 - <td>
109 - <input type="hidden" name="logtivity_should_store_ip" id="logtivity_should_store_ip" value="0">
115 + case 'staging':
116 + echo '<span style="color: #dbbf24; font-weight: bold;">' . $api->getConnectionMessage() . '</span>';
117 + break;
110 118
111 - <input <?php echo ( has_filter('logtivity_should_store_ip') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_should_store_ip" id="logtivity_should_store_ip" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_should_store_ip']) ? 'checked' : ''); ?>>
112 - </td>
113 - <td>
114 - <span class="description">If you check this box, when logging an action, we will include the users IP address in the logged action.</span>
115 - </td>
116 - </tr>
117 - <tr class="user-user-login-wrap">
118 - <th>
119 - <label for="logtivity_enable_debug_mode">Enable debug mode (recommended off by default)</label>
120 - <?php if (has_filter('logtivity_enable_debug_mode')): ?>
121 - <div class="logtivity-constant">This option has been set in code.</div>
122 - <?php endif ?>
123 - </th>
124 - <td>
125 - <input type="hidden" name="logtivity_enable_debug_mode" id="logtivity_enable_debug_mode" value="0">
119 + case 'fail':
120 + echo '<span style="color: #ff3232; font-weight: bold;">' . $api->getConnectionMessage() . '</span>';
121 + break;
126 122
127 - <input <?php echo ( has_filter('logtivity_enable_debug_mode') ? 'readonly' : ''); ?> type="checkbox" name="logtivity_enable_debug_mode" id="logtivity_enable_debug_mode" value="1" class="regular-checkbox" <?php echo ( absint($options['logtivity_enable_debug_mode']) ? 'checked' : ''); ?>>
128 - </td>
129 - <td>
130 - <span class="description">This will log the latest response from the Logtivity API. This can be useful for debugging the result from an API call when storing a log. We <strong>recommend setting this to off by default</strong> as this will allow us to send logs asynchronously and not wait for a response from the API. This will be more performant.</span>
131 - </td>
132 - </tr>
133 - <tr class="user-user-login-wrap">
134 - <th>
135 - <label for="logtivity_disable_individual_logs">Disable Individual Logs</label>
136 - <?php if (has_filter('logtivity_disable_individual_logs')): ?>
137 - <div class="logtivity-constant">This option has been set in code.</div>
138 - <?php endif ?>
139 - </th>
140 - <td>
141 - <textarea style="width: 100%;" rows="10" <?php echo ( has_filter('logtivity_disable_individual_logs') ? 'readonly' : ''); ?> name="logtivity_disable_individual_logs" id="logtivity_disable_individual_logs" class="regular-checkbox" placeholder="User Logged In&#10;User Created && subscriber"><?php echo esc_html($options['logtivity_disable_individual_logs']); ?></textarea>
142 - </td>
143 - <td>
123 + default:
124 + if ($apiKey) {
125 + echo '<span style="color: #ffdd32; font-weight: bold;">Unknown error</span>';
126 + } else {
127 + echo '<span style="font-weight: bold;">Enter this site\'s API Key</span>';
128 + }
129 + break;
130 + }
131 + ?>
132 + </p>
133 + </td>
134 +
135 + <td style="vertical-align: top;">
136 + <span class="description">
137 + You can find this value by logging into your account
138 + and navigating to this site's settings page.
139 + </span>
140 + </td>
141 + </tr>
142 +
143 + <tr class="user-user-login-wrap">
144 + <th scope="row">
145 + <label for="logtivity_should_store_user_id">Store User ID</label>
146 + <?php if (has_filter('logtivity_should_store_user_id')): ?>
147 + <div class="logtivity-constant">This option has been set in code.</div>
148 + <?php endif ?>
149 + </th>
150 +
151 + <td>
152 + <input name="logtivity_should_store_user_id"
153 + type="hidden"
154 + value="0">
155 +
156 + <input id="logtivity_should_store_user_id"
157 + name="logtivity_should_store_user_id"
158 + type="checkbox"
159 + <?php echo $options['logtivity_should_store_user_id'] ? 'checked' : ''; ?>
160 + <?php echo has_filter('logtivity_should_store_user_id') ? 'readonly' : ''; ?>
161 + value="1"
162 + class="regular-checkbox">
163 + </td>
164 +
165 + <td>
166 + <span class="description">
167 + If you check this box, when logging an action,
168 + we will include the users User ID in the logged action.
169 + </span>
170 + </td>
171 + </tr>
172 +
173 + <tr class="user-user-login-wrap">
174 + <th scope="row">
175 + <label for="logtivity_should_log_profile_link">Store Users Profile Link</label>
176 + <?php if (has_filter('logtivity_should_log_profile_link')): ?>
177 + <div class="logtivity-constant">This option has been set in code.</div>
178 + <?php endif ?>
179 + </th>
180 +
181 + <td>
182 + <input name="logtivity_should_log_profile_link"
183 + type="hidden"
184 + value="0">
185 +
186 + <input id="logtivity_should_log_profile_link"
187 + name="logtivity_should_log_profile_link"
188 + type="checkbox"
189 + <?php echo $options['logtivity_should_log_profile_link'] ? 'checked' : ''; ?>
190 + <?php echo has_filter('logtivity_should_log_profile_link') ? 'readonly' : ''; ?>
191 + value="1"
192 + class="regular-checkbox">
193 + </td>
194 +
195 + <td>
196 + <span class="description">
197 + If you check this box, when logging an action,
198 + we will include the users profile link in the logged action.
199 + </span>
200 + </td>
201 + </tr>
202 +
203 + <tr class="user-user-login-wrap">
204 + <th scope="row">
205 + <label for="logtivity_should_log_username">Store Users Username</label>
206 + <?php if (has_filter('logtivity_should_log_username')): ?>
207 + <div class="logtivity-constant">This option has been set in code.</div>
208 + <?php endif ?>
209 + </th>
210 +
211 + <td>
212 + <input name="logtivity_should_log_username"
213 + type="hidden"
214 + value="0">
215 +
216 + <input id="logtivity_should_log_username"
217 + name="logtivity_should_log_username"
218 + type="checkbox"
219 + <?php echo has_filter('logtivity_should_log_username') ? 'readonly' : ''; ?>
220 + <?php echo $options['logtivity_should_log_username'] ? 'checked' : ''; ?>
221 + value="1"
222 + class="regular-checkbox">
223 + </td>
224 +
225 + <td>
226 + <span class="description">
227 + If you check this box, when logging an action,
228 + we will include the users username in the logged action.
229 + </span>
230 + </td>
231 + </tr>
232 +
233 + <tr class="user-user-login-wrap">
234 + <th scope="row">
235 + <label for="logtivity_should_store_ip">Store Users IP Address</label>
236 + <?php if (has_filter('logtivity_should_store_ip')): ?>
237 + <div class="logtivity-constant">This option has been set in code.</div>
238 + <?php endif ?>
239 + </th>
240 +
241 + <td>
242 + <input name="logtivity_should_store_ip"
243 + type="hidden"
244 + value="0">
245 +
246 + <input id="logtivity_should_store_ip"
247 + name="logtivity_should_store_ip"
248 + type="checkbox"
249 + <?php echo $options['logtivity_should_store_ip'] ? 'checked' : ''; ?>
250 + <?php echo has_filter('logtivity_should_store_ip') ? 'readonly' : ''; ?>
251 + value="1"
252 + class="regular-checkbox">
253 + </td>
254 +
255 + <td>
256 + <span class="description">
257 + If you check this box, when logging an action,
258 + we will include the users IP address in the logged action.
259 + </span>
260 + </td>
261 + </tr>
262 +
263 + <tr class="user-user-login-wrap">
264 + <th scope="row">
265 + <label for="logtivity_app_verify_url">
266 + Verify Site URL
267 + </label>
268 + <?php if (has_filter('logtivity_app_verify_url')): ?>
269 + <div class="logtivity-constant">This option has been set in code.</div>
270 + <?php endif ?>
271 + </th>
272 +
273 + <td>
274 + <input name="logtivity_app_verify_url"
275 + type="hidden"
276 + value="0">
277 +
278 + <input id="logtivity_app_verify_url"
279 + name="logtivity_app_verify_url"
280 + type="checkbox"
281 + <?php echo $options['logtivity_app_verify_url'] ? 'checked' : ''; ?>
282 + <?php echo has_filter('logtivity_app_verify_url') ? 'readonly' : ''; ?>
283 + value="1"
284 + class="regular-checkbox">
285 + </td>
286 +
287 + <td>
288 + <span class="description">
289 + When messages are sent to Logtivity, the site URL will be checked
290 + against the URL Logtivity has on file for this API Key. If they do
291 + not match, logging will be paused.
292 + </span>
293 + </td>
294 + </tr>
295 +
296 + <tr class="user-user-login-wrap">
297 + <th scope="row">
298 + <label for="logtivity_enable_debug_mode">
299 + Enable debug mode (recommended off by default)
300 + </label>
301 + <?php if (has_filter('logtivity_enable_debug_mode')): ?>
302 + <div class="logtivity-constant">This option has been set in code.</div>
303 + <?php endif ?>
304 + </th>
305 +
306 + <td>
307 + <input name="logtivity_enable_debug_mode"
308 + type="hidden"
309 + value="0">
310 +
311 + <input id="logtivity_enable_debug_mode"
312 + name="logtivity_enable_debug_mode"
313 + type="checkbox"
314 + <?php echo $options['logtivity_enable_debug_mode'] ? 'checked' : ''; ?>
315 + <?php echo has_filter('logtivity_enable_debug_mode') ? 'readonly' : ''; ?>
316 + value="1"
317 + class="regular-checkbox">
318 + </td>
319 +
320 + <td>
321 + <span class="description">
322 + This will log the latest response from the API.
323 + This can be useful for debugging the result from an API call when storing a log.
324 + We <strong>recommend setting this to off by default</strong> as this will allow
325 + us to send logs asynchronously and not wait for a response from the API.
326 + This will be more performant.
327 + </span>
328 + </td>
329 + </tr>
330 +
331 + <tr class="user-user-login-wrap">
332 + <th scope="row">
333 + <label for="logtivity_disable_individual_logs">Disable Individual Logs</label>
334 + <?php if (has_filter('logtivity_disable_individual_logs')): ?>
335 + <div class="logtivity-constant">This option has been set in code.</div>
336 + <?php endif ?>
337 + </th>
338 + <td>
339 + <textarea id="logtivity_disable_individual_logs"
340 + name="logtivity_disable_individual_logs"
341 + class="regular-checkbox"
342 + style="width: 100%;"
343 + <?php echo has_filter('logtivity_disable_individual_logs') ? 'readonly' : ''; ?>
344 + rows="10"
345 + placeholder="User Logged In&#10;User Created && subscriber"
346 + ><?php echo esc_html($options['logtivity_disable_individual_logs']); ?></textarea>
347 + </td>
348 +
349 + <td>
144 350 <span class="description">
145 351 You can disable individual logged actions here by listing the action names, one per line.
146 -
147 - <br> <br>
148 -
149 - To specify the context field as well, separate the action and context keywords with an && symbol.
352 + <br>
353 + <br>
354 + To specify the context field as well,
355 + separate the action and context keywords with an && symbol.
356 + <br>
357 + <br>
358 + <?php
359 + if (
360 + isset($options['logtivity_enable_white_label_mode']) == false
361 + || $options['logtivity_enable_white_label_mode'] != 1
362 + ):
363 + ?>
364 + If you have multiple sites on Logtivity and would rather control disabled
365 + logs globally you can go to the
366 + <?php
367 + echo sprintf(
368 + '<a href="%s" target="_blank" rel="nofollow">%s</a>',
369 + logtivity_get_app_url() . '/team-settings/activity-log-settings',
370 + 'Activity Log Settings page'
371 + );
372 + ?>
373 + in your Logtivity dashboard.
374 + <?php endif; ?>
150 375 </span>
151 - </td>
152 - </tr>
153 - </tbody>
154 - </table>
376 + </td>
377 + </tr>
378 + </tbody>
379 + </table>
155 380
156 - <p class="submit">
157 - <input type="submit" name="submit" id="submit" class="button button-primary" value="Update Settings">
158 - </p>
381 + <p class="submit">
382 + <input id="submit"
383 + name="submit"
384 + type="submit"
385 + class="button button-primary"
386 + value="Update Settings">
387 + </p>
388 + </form>
159 389
160 - </form>
161 -
162 - </div>
390 + </div>
163 391 </div>
164 392
165 -<?php if (absint( $options['logtivity_enable_debug_mode'] )): ?>
393 +<?php if ($options['logtivity_enable_debug_mode']): ?>
166 394
167 - <div class="postbox">
168 - <div class="inside">
395 + <div class="postbox">
396 + <div class="inside">
169 397
170 - <h3>Latest Response</h3>
398 + <h3>Latest Response</h3>
171 399
172 - <?php if ($latest_response = $options['logtivity_latest_response']): ?>
400 + <?php
401 + if ($latestResponse) :
402 + $date = $latestResponse['date'] ?? null;
403 + $code = $latestResponse['code'] ?? null;
404 + $message = $latestResponse['message'] ?? null;
405 + $body = $latestResponse['body'] ?? null;
173 406
174 - <h4>Date: <?php echo sanitize_text_field($latest_response['date']); ?></h4>
407 + if ($date) : ?>
408 + <h4>Date: <?php echo $date; ?></h4>
409 + <?php
410 + endif;
175 411
176 - <?php if ($latest_response['response']): ?>
177 - <code style="display: block; padding: 20px;">
178 -
179 - <?php echo sanitize_text_field($latest_response['response']); ?>
412 + if ($code || $message) : ?>
413 + <h4>
414 + Response: <?php echo sprintf('%s - %s', $code ?: 'NA', $message ?: 'No Message'); ?>
415 + </h4>
416 + <?php
417 + endif;
180 418
181 - </code>
182 - <?php endif ?>
183 -
184 - <?php else: ?>
419 + if ($body) : ?>
420 + <code style="display: block; padding: 20px; overflow-x: auto;">
421 + <?php echo json_encode($body); ?>
422 + </code>
423 + <?php
424 + endif;
185 425
186 - <p>The latest logging response will appear here after an event has been logged.</p>
426 + else : ?>
427 + <p>The latest logging response will appear here after an event has been logged.</p>
187 428
188 - <?php endif ?>
189 -
190 - </div>
191 - </div>
429 + <?php endif ?>
430 + </div>
431 + </div>
192 432
193 433 <?php endif ?>
194 434
195 -<?php echo logtivity_view('_admin-footer', compact('options')); ?>
435 +<?php echo logtivity_view('_admin-footer', compact('options')); ?>