PluginProbe
phpinfo() WP – Site Health, PHP Compatibility & Server Audit / 7.2.5
phpinfo() WP – Site Health, PHP Compatibility & Server Audit v7.2.5
7.2.7 7.2.6 7.2.5 7.2.4 7.2.3 7.2.0 7.2.1 7.2.2 7.1.0 7.0.3 7.0.4 7.0.5 trunk 6.0 7.0.0 7.0.1 7.0.2
phpinfo-wp / views / pro / license.php

license.php in phpinfo() WP – Site Health, PHP Compatibility & Server Audit 7.2.5, at views/pro/license.php

429 lines 25.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 defined('ABSPATH') or die('Unauthorized Access');
3
4 $is_valid = Phpinfo_WP_License::is_valid();
5 $is_locked = Phpinfo_WP_License::is_locked();
6 $key = Phpinfo_WP_License::get_key();
7 $message = '';
8 $msg_type = 'success';
9
10 if (isset($_POST['phpinfowp_license_action']) && check_admin_referer('phpinfowp_license_nonce')) {
11 $action = sanitize_text_field($_POST['phpinfowp_license_action']);
12
13 if ($action === 'activate' && !empty($_POST['license_key'])) {
14 $submitted = sanitize_text_field(trim($_POST['license_key']));
15 $ok = Phpinfo_WP_License::activate($submitted);
16 if ($ok) {
17 $message = 'License activated successfully. Pro features are now unlocked.';
18 $is_valid = true;
19 $key = $submitted;
20 } else {
21 $message = 'License key invalid, expired, or revoked. If you just purchased, allow a moment for activation to propagate, then try again. Contact <a href="mailto:support@exeebit.com">support@exeebit.com</a> if the problem persists.';
22 $msg_type = 'error';
23 }
24 } elseif ($action === 'deactivate') {
25 Phpinfo_WP_License::deactivate();
26 delete_option('phpinfowp_free_trial_expires');
27 delete_option('phpinfowp_free_trial_email');
28 $message = 'License deactivated. Pro features are disabled.';
29 $msg_type = 'info';
30 $is_valid = false;
31 $key = '';
32 }
33 }
34
35 $pillars = [
36 [
37 'icon' => 'dashicons-shield',
38 'name' => 'Safeguard',
39 'tag' => "Don't break your site.",
40 'items' => [
41 'Update Guard (Core audit)',
42 'PHP Compatibility Scanner',
43 'Config Snapshots & diff',
44 'Security Headers audit',
45 ],
46 ],
47 [
48 'icon' => 'dashicons-performance',
49 'name' => 'Optimize',
50 'tag' => 'Performance & Best Practices.',
51 'items' => [
52 'Full Config Grader with fixes',
53 'Web Server Snippet Library',
54 'Database health & autoload',
55 'OPcache dashboard',
56 ],
57 ],
58 [
59 'icon' => 'dashicons-visibility',
60 'name' => 'Monitor',
61 'tag' => "Know what's wrong before clients call.",
62 'items' => [
63 'SSL certificate monitor',
64 'External API Monitor',
65 'Error Log viewer',
66 'WP Cron monitor',
67 'Mail deliverability',
68 ],
69 ],
70 [
71 'icon' => 'dashicons-portfolio',
72 'name' => 'Deliver',
73 'tag' => 'Look professional to clients.',
74 'items' => [
75 'White-label PDF Audit Report',
76 'Email alerts on issues',
77 'Weekly health digest',
78 'Slack / Discord webhooks',
79 'Multi-site (Network) support',
80 ],
81 ],
82 ];
83 ?>
84
85 <div class="phpinfowp-pro-page">
86
87 <div class="phpinfowp-page-header">
88 <div>
89 <h1>License <span class="phpinfowp-pro-badge"><?php _e('PRO', 'phpinfo-wp'); ?></span></h1>
90 <p class="phpinfowp-page-subtitle"><?php _e('Activate your license to unlock Pro features on this site', 'phpinfo-wp'); ?></p>
91 </div>
92 </div>
93
94 <?php if ($message): ?>
95 <div class="notice notice-<?php echo $msg_type; ?> inline is-dismissible" style="margin:0 0 20px">
96 <p><?php echo wp_kses($message, ['strong' => [], 'a' => ['href' => []]]); ?></p>
97 </div>
98 <?php endif; ?>
99
100 <?php if ($is_locked): ?>
101 <div class="notice notice-error inline" style="margin:0 0 20px">
102 <p><strong><?php _e('License locked.', 'phpinfo-wp'); ?></strong> Your license could not be verified for 14+ days. Re-enter your key to unlock, or contact support at <a href="mailto:support@exeebit.com">support@exeebit.com</a>.</p>
103 </div>
104 <?php endif; ?>
105
106 <?php if (!$is_valid): ?>
107 <div class="phpinfowp-price-alert-banner" style="position:relative; background:#fff3cd; border-left:4px solid #ffc107; padding:12px 40px 12px 16px; margin: 0 0 24px; border-radius: 0 4px 4px 0; font-size:13.5px; color:#664d03; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; box-shadow:0 1px 2px rgba(0,0,0,0.02);">
108 <button type="button" onclick="try{localStorage.setItem('phpinfowp_price_alert_dismissed','1')}catch(e){} this.closest('.phpinfowp-price-alert-banner').style.display='none';" aria-label="<?php esc_attr_e('Dismiss', 'phpinfo-wp'); ?>" style="position:absolute; top:6px; right:8px; background:none; border:none; cursor:pointer; color:#664d03; opacity:0.5; font-size:20px; line-height:1; padding:2px 4px;" onmouseover="this.style.opacity='1'" onmouseout="this.style.opacity='0.5'">&times;</button>
109 <span>
110 <strong> <?php _e('Price Increase Alert:', 'phpinfo-wp'); ?></strong>
111 <?php _e('On August 31st, the Single Site Pro license increases from $29 to $39/year. Upgrade today to secure the current $29/year rate before the price goes up.', 'phpinfo-wp'); ?>
112 </span>
113 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" rel="noopener" style="background:#777BB3; color:#fff; padding:6px 14px; border-radius:4px; font-size:12.5px; font-weight:600; text-decoration:none; display:inline-block;">
114 <?php _e('Lock in $29 Now →', 'phpinfo-wp'); ?>
115 </a>
116 </div>
117 <script>if(localStorage.getItem('phpinfowp_price_alert_dismissed')==='1'){document.querySelectorAll('.phpinfowp-price-alert-banner').forEach(function(e){e.style.display='none';});}</script>
118 <?php endif; ?>
119
120 <!-- License status card -->
121 <div class="phpinfowp-license-card <?php echo $is_valid ? 'is-active' : 'is-inactive'; ?>">
122 <div class="phpinfowp-license-status">
123 <?php if ($is_valid): ?>
124 <span class="dashicons dashicons-yes-alt" style="color:#00a32a"></span>
125 <div>
126 <div class="phpinfowp-license-status-title"><?php _e('Pro license is active', 'phpinfo-wp'); ?></div>
127 <div class="phpinfowp-license-status-sub"><?php _e('All Pro features are unlocked on this site.', 'phpinfo-wp'); ?></div>
128 </div>
129 <?php else: ?>
130 <span class="dashicons dashicons-dismiss" style="color:#d63638"></span>
131 <div>
132 <div class="phpinfowp-license-status-title"><?php _e('No active license', 'phpinfo-wp'); ?></div>
133 <div class="phpinfowp-license-status-sub"><?php _e('Enter a valid license key to unlock Pro features.', 'phpinfo-wp'); ?></div>
134 </div>
135 <?php endif; ?>
136 </div>
137
138 <?php if ($is_valid): ?>
139 <?php $meta = Phpinfo_WP_License::payload(); ?>
140 <div class="phpinfowp-license-key-display">
141 <span class="phpinfowp-license-key-label"><?php _e('License key', 'phpinfo-wp'); ?></span>
142 <code><?php echo esc_html(substr($key, 0, 12) . str_repeat('', 20)); ?></code>
143 </div>
144 <?php if ($meta): ?>
145 <div class="phpinfowp-license-meta">
146 <div class="phpinfowp-license-meta-row">
147 <span class="phpinfowp-license-meta-label"><?php _e('Registered to', 'phpinfo-wp'); ?></span>
148 <span class="phpinfowp-license-meta-value"><?php echo esc_html($meta['email']); ?></span>
149 </div>
150 <div class="phpinfowp-license-meta-row">
151 <span class="phpinfowp-license-meta-label"><?php _e('Expires', 'phpinfo-wp'); ?></span>
152 <span class="phpinfowp-license-meta-value">
153 <?php echo esc_html($meta['expiry_human']); ?>
154 <?php if (!$meta['is_lifetime']): ?>
155 <span style="color:<?php echo $meta['days_left'] < 30 ? '#d63638' : ($meta['days_left'] < 90 ? '#dba617' : '#666'); ?>;font-size:12px;margin-left:6px">
156 (<?php echo (int) $meta['days_left']; ?> days left)
157 </span>
158 <?php endif; ?>
159 </span>
160 </div>
161 <?php if (!empty($meta['iat'])): ?>
162 <div class="phpinfowp-license-meta-row">
163 <span class="phpinfowp-license-meta-label"><?php _e('Activated', 'phpinfo-wp'); ?></span>
164 <span class="phpinfowp-license-meta-value"><?php echo esc_html(date_i18n(get_option('date_format'), $meta['iat'])); ?></span>
165 </div>
166 <?php endif; ?>
167 </div>
168 <?php endif; ?>
169 <form id="phpinfowp-license-deactivate-form" method="post" style="margin-top:14px">
170 <?php wp_nonce_field('phpinfowp_license_nonce'); ?>
171 <input type="hidden" name="phpinfowp_license_action" value="deactivate">
172 <button type="button" class="button button-secondary" id="phpinfowp-license-deactivate-btn"><?php _e('Deactivate License', 'phpinfo-wp'); ?></button>
173 </form>
174
175 <!-- License deactivation retention modal. Reuses .phpinfowp-dm CSS
176 from the Plugins-screen modal (same look). Only renders when
177 a Pro license is active. -->
178 <div id="phpinfowp-license-dm" class="phpinfowp-dm" aria-hidden="true" role="dialog" aria-labelledby="phpinfowp-license-dm-title">
179 <div class="phpinfowp-dm-backdrop"></div>
180 <div class="phpinfowp-dm-dialog" role="document">
181 <button type="button" class="phpinfowp-dm-close" aria-label="Close">&times;</button>
182
183 <div class="phpinfowp-dm-header">
184 <div style="width:48px;height:48px;border-radius:10px;background:rgba(124,58,237,0.12);display:flex;align-items:center;justify-content:center;flex-shrink:0">
185 <span class="dashicons dashicons-shield-alt" style="font-size:26px;width:26px;height:26px;color:#7c3aed"></span>
186 </div>
187 <div>
188 <h2 id="phpinfowp-license-dm-title" class="phpinfowp-dm-title"><?php _e('Deactivate your Pro license?', 'phpinfo-wp'); ?></h2>
189 <p class="phpinfowp-dm-sub"><?php _e('The plugin keeps running, but every Pro feature below stops the moment you confirm.', 'phpinfo-wp'); ?></p>
190 </div>
191 </div>
192
193 <div class="phpinfowp-dm-body">
194 <div class="phpinfowp-dm-col phpinfowp-dm-col-pro">
195 <div class="phpinfowp-dm-col-label"><?php _e('Pro features that will lock', 'phpinfo-wp'); ?></div>
196 <ul class="phpinfowp-dm-list">
197 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>White-label PDF Audit Report</li>
198 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>One-click Config Auto-Fix with rollback</li>
199 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>Security Headers + SSL Certificate monitors</li>
200 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>OPcache Dashboard + PHP Error Log viewer</li>
201 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>Database Health + Autoload bloat detection</li>
202 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>WP-Cron Monitor + orphan-hook purge</li>
203 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>Email Alerts, Weekly Digest, Slack/Discord webhooks</li>
204 <li><span class="dashicons dashicons-no-alt phpinfowp-dm-x"></span>Multi-site (Network) support</li>
205 </ul>
206 </div>
207 </div>
208
209 <div class="phpinfowp-dm-warn">
210 <span class="dashicons dashicons-info-outline" style="color:#0073aa"></span>
211 <div>
212 <strong><?php _e('Nothing is deleted.', 'phpinfo-wp'); ?></strong> Your license key, white-label branding, snapshots, and alert settings stay on this site. Paste your key back in to restore Pro instantly your license remains valid on Exeebit's servers.
213 </div>
214 </div>
215
216 <div class="phpinfowp-dm-actions">
217 <button type="button" class="button button-primary button-large phpinfowp-dm-keep"><?php _e('Keep Pro active', 'phpinfo-wp'); ?></button>
218 <button type="button" class="phpinfowp-dm-confirm" id="phpinfowp-license-dm-confirm" style="background:none;border:none;cursor:pointer"><?php _e('Deactivate anyway ', 'phpinfo-wp'); ?></button>
219 </div>
220 </div>
221 </div>
222
223 <script>
224 (function () {
225 var modal = document.getElementById('phpinfowp-license-dm');
226 var openBtn = document.getElementById('phpinfowp-license-deactivate-btn');
227 var confirm = document.getElementById('phpinfowp-license-dm-confirm');
228 var form = document.getElementById('phpinfowp-license-deactivate-form');
229 if (!modal || !openBtn || !confirm || !form) return;
230
231 function open() { modal.classList.add('is-open'); modal.setAttribute('aria-hidden','false'); document.body.style.overflow = 'hidden'; }
232 function close() { modal.classList.remove('is-open'); modal.setAttribute('aria-hidden','true'); document.body.style.overflow = ''; }
233
234 openBtn.addEventListener('click', open);
235 modal.querySelectorAll('.phpinfowp-dm-close, .phpinfowp-dm-keep, .phpinfowp-dm-backdrop').forEach(function (b) {
236 b.addEventListener('click', close);
237 });
238 document.addEventListener('keydown', function (e) {
239 if (e.key === 'Escape' && modal.classList.contains('is-open')) close();
240 });
241 confirm.addEventListener('click', function () { form.submit(); });
242 }());
243 </script>
244 <?php else: ?>
245 <form method="post" class="phpinfowp-license-form">
246 <?php wp_nonce_field('phpinfowp_license_nonce'); ?>
247 <input type="hidden" name="phpinfowp_license_action" value="activate">
248 <label for="license_key" class="phpinfowp-license-input-label"><?php _e('Enter your license key', 'phpinfo-wp'); ?></label>
249 <div class="phpinfowp-license-input-row">
250 <input type="text" id="license_key" name="license_key"
251 placeholder="<?php echo esc_attr__('PIWP-xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'phpinfo-wp'); ?>"
252 autocomplete="off" spellcheck="false"
253 value="<?php echo esc_attr($key); ?>">
254 <button type="submit" class="button button-primary"><?php _e('Activate', 'phpinfo-wp'); ?></button>
255 </div>
256 <p class="description" style="margin-top:10px">
257 This site: <strong><?php echo esc_html(get_site_url()); ?></strong><br>
258 Don't have a license? <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank"><?php _e('Get phpinfo() WP Pro →', 'phpinfo-wp'); ?></a>
259 </p>
260 </form>
261 <?php endif; ?>
262 </div>
263
264 <!-- Plan comparison table -->
265 <?php
266 // Cell values: true / false / string. Keep in sync with the frontend
267 // comparison table at exeebit.com/phpinfo-wp.
268 $compare_rows = [
269 // Sites & licensing
270 ['Sites', '1', '1', 'Unlimited', 'Unlimited'],
271 ['Updates', 'While free version is supported', '1 year', '1 year', 'Lifetime'],
272 ['Support', 'Community (WP.org forum)', 'Email', 'Priority email', 'Priority forever'],
273 // Free-tier
274 ['phpinfo() viewer', true, true, true, true],
275 ['.htaccess editor', true, true, true, true],
276 ['PHP EOL Timeline', true, true, true, true],
277 ['Config Grade & Score', true, true, true, true],
278 // Pro depth
279 ['Update Guard (Core pre-update audit)', true, true, true, true],
280 ['PHP Compatibility Scanner', true, true, true, true],
281 ['Detailed Directives & Fixes', false, true, true, true],
282 ['Web Server Snippet Library', false, true, true, true],
283 ['Security Headers audit', false, true, true, true],
284 ['SSL certificate monitor', false, true, true, true],
285 ['OPcache dashboard', false, true, true, true],
286 ['Database health & autoload', false, true, true, true],
287 ['Error Log viewer', false, true, true, true],
288 ['WP-Cron monitor', false, true, true, true],
289 ['Mail deliverability check', false, true, true, true],
290 // Deliverable & integrations
291 ['Email alerts on issues', false, true, true, true],
292 ['External API Monitor', false, '1 Endpoint', true, true],
293 ['Config Snapshots & diff', false, 'Latest 3', true, true],
294 ['PDF Audit Reports', false, 'Branded', 'White-label', 'White-label'],
295 ['Weekly health digest', false, false, true, true],
296 ['Slack / Discord webhooks', false, false, true, true],
297 ['Multi-site (Network) support', false, false, true, true],
298 ];
299
300 $compare_cols = [
301 ['name' => 'Free', 'price' => '$0', 'cadence' => 'WP.org'],
302 ['name' => 'Single Site', 'price' => '$29', 'cadence' => '/year'],
303 ['name' => 'Unlimited', 'price' => '$69', 'cadence' => '/year', 'featured' => true],
304 ['name' => 'Lifetime', 'price' => '$149', 'cadence' => 'once'],
305 ];
306
307 $render_cell = static function ($v) {
308 if ($v === true) return '<span class="dashicons dashicons-yes-alt" style="color:#7c3aed" aria-label="Included"></span>';
309 if ($v === false) return '<span class="dashicons dashicons-minus" style="color:#c8c8d0" aria-label="Not included"></span>';
310 return '<span style="font-size:12px;color:#3c434a">' . esc_html((string) $v) . '</span>';
311 };
312 ?>
313 <h2 class="phpinfowp-section-heading" style="margin-top:36px"><?php _e('Compare plans', 'phpinfo-wp'); ?></h2>
314 <p style="color:#646970;margin:0 0 14px;max-width:560px"><?php _e('Everything in Free, plus the Pro depth — see exactly what you get at each tier.', 'phpinfo-wp'); ?></p>
315 <div class="phpinfowp-compare-wrap">
316 <table class="phpinfowp-compare">
317 <thead>
318 <tr>
319 <th scope="col" class="phpinfowp-compare-feat"><?php _e('Feature', 'phpinfo-wp'); ?></th>
320 <?php foreach ($compare_cols as $col): ?>
321 <th scope="col" class="<?php echo !empty($col['featured']) ? 'is-featured' : ''; ?>">
322 <div class="phpinfowp-compare-tier"><?php echo esc_html($col['name']); ?></div>
323 <div class="phpinfowp-compare-price">
324 <span class="phpinfowp-compare-amount"><?php echo esc_html($col['price']); ?></span>
325 <span class="phpinfowp-compare-cadence"><?php echo esc_html($col['cadence']); ?></span>
326 </div>
327 </th>
328 <?php endforeach; ?>
329 </tr>
330 </thead>
331 <tbody>
332 <?php foreach ($compare_rows as $row): ?>
333 <tr>
334 <th scope="row" class="phpinfowp-compare-feat"><?php echo esc_html($row[0]); ?></th>
335 <td><?php echo $render_cell($row[1]); ?></td>
336 <td><?php echo $render_cell($row[2]); ?></td>
337 <td class="is-featured"><?php echo $render_cell($row[3]); ?></td>
338 <td><?php echo $render_cell($row[4]); ?></td>
339 </tr>
340 <?php endforeach; ?>
341 </tbody>
342 <?php if (!$is_valid): ?>
343 <tfoot>
344 <tr>
345 <td></td>
346 <td></td>
347 <td>
348 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" rel="noopener" class="button"><?php _e('Get Single', 'phpinfo-wp'); ?></a>
349 </td>
350 <td class="is-featured">
351 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" rel="noopener" class="button button-primary"><?php _e('Get Unlimited', 'phpinfo-wp'); ?></a>
352 </td>
353 <td>
354 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" rel="noopener" class="button"><?php _e('Get Lifetime', 'phpinfo-wp'); ?></a>
355 </td>
356 </tr>
357 </tfoot>
358 <?php endif; ?>
359 </table>
360 </div>
361
362 <!-- 3-pillar features -->
363 <h2 class="phpinfowp-section-heading" style="margin-top:36px"><?php _e('What Pro unlocks', 'phpinfo-wp'); ?></h2>
364 <div class="phpinfowp-pillars">
365 <?php foreach ($pillars as $p): ?>
366 <div class="phpinfowp-pillar">
367 <div class="phpinfowp-pillar-header">
368 <div class="phpinfowp-pillar-icon-box">
369 <span class="dashicons <?php echo esc_attr($p['icon']); ?>"></span>
370 </div>
371 <div>
372 <div class="phpinfowp-pillar-name"><?php echo esc_html($p['name']); ?></div>
373 <div class="phpinfowp-pillar-tag"><?php echo esc_html($p['tag']); ?></div>
374 </div>
375 </div>
376 <ul class="phpinfowp-pillar-items">
377 <?php foreach ($p['items'] as $item): ?>
378 <li><?php echo esc_html($item); ?></li>
379 <?php endforeach; ?>
380 </ul>
381 </div>
382 <?php endforeach; ?>
383 </div>
384
385 <?php if (!$is_valid): ?>
386 <!-- Pricing -->
387 <h2 class="phpinfowp-section-heading" style="margin-top:36px"><?php _e('Pricing', 'phpinfo-wp'); ?></h2>
388 <div class="phpinfowp-pricing">
389 <div class="phpinfowp-pricing-tier">
390 <div class="phpinfowp-pricing-name"><?php _e('Single Site', 'phpinfo-wp'); ?></div>
391 <div class="phpinfowp-pricing-price">$29<span>/year</span></div>
392 <ul class="phpinfowp-pricing-list">
393 <li><?php _e('Essential Pro features on 1 site', 'phpinfo-wp'); ?></li>
394 <li><?php _e('Standard PDF reports (Branded)', 'phpinfo-wp'); ?></li>
395 <li><?php _e('1 API monitor & 3 snapshots', 'phpinfo-wp'); ?></li>
396 <li><?php _e('1 year of updates & support', 'phpinfo-wp'); ?></li>
397 </ul>
398 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" class="button button-secondary"><?php _e('Get Single', 'phpinfo-wp'); ?></a>
399 </div>
400 <div class="phpinfowp-pricing-tier is-featured">
401 <div class="phpinfowp-pricing-flag"><?php _e('Most Popular', 'phpinfo-wp'); ?></div>
402 <div class="phpinfowp-pricing-name"><?php _e('Unlimited', 'phpinfo-wp'); ?></div>
403 <div class="phpinfowp-pricing-price">$69<span>/year</span></div>
404 <ul class="phpinfowp-pricing-list">
405 <li><?php _e('All Pro features on unlimited sites', 'phpinfo-wp'); ?></li>
406 <li><?php _e('White-labeled PDF reports (Logo)', 'phpinfo-wp'); ?></li>
407 <li><?php _e('Weekly digests & Slack/Discord', 'phpinfo-wp'); ?></li>
408 <li><?php _e('Priority support & Multi-site', 'phpinfo-wp'); ?></li>
409 </ul>
410 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" class="button button-primary"><?php _e('Get Unlimited', 'phpinfo-wp'); ?></a>
411 </div>
412 <div class="phpinfowp-pricing-tier">
413 <div class="phpinfowp-pricing-flag is-warn"><?php _e('Founders &mdash; First 50', 'phpinfo-wp'); ?></div>
414 <div class="phpinfowp-pricing-name"><?php _e('Lifetime', 'phpinfo-wp'); ?></div>
415 <div class="phpinfowp-pricing-price">$149<span><?php _e('once', 'phpinfo-wp'); ?></span></div>
416 <ul class="phpinfowp-pricing-list">
417 <li><?php _e('All Pro features on unlimited sites', 'phpinfo-wp'); ?></li>
418 <li><?php _e('White-labeled PDF reports (Logo)', 'phpinfo-wp'); ?></li>
419 <li><?php _e('Weekly digests & Slack/Discord', 'phpinfo-wp'); ?></li>
420 <li><?php _e('Lifetime updates & priority support', 'phpinfo-wp'); ?></li>
421 </ul>
422 <a href="https://exeebit.com/phpinfo-wp#pricing" target="_blank" class="button button-secondary"><?php _e('Get Lifetime', 'phpinfo-wp'); ?></a>
423 </div>
424 </div>
425 <p class="phpinfowp-pricing-foot"><?php _e('14-day money-back guarantee · Instant license delivery · Cancel anytime', 'phpinfo-wp'); ?></p>
426 <?php endif; ?>
427
428 </div>
429