| 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'">×</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">×</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 — 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 |
|