$body = json_decode(wp_remote_retrieve_body($response), true); $is_valid = isset($body['is_valid']) && $body['is_valid'] === true;
add_action('admin_init', 'gf_schedule_license_alert'); function gf_schedule_license_alert() if (!wp_next_scheduled('gf_check_license_alert')) wp_schedule_event(time(), 'daily', 'gf_check_license_alert');
if (is_wp_error($response)) return false; gravity forms license key
if ($result['expiration']) $now = new DateTime(); $exp = new DateTime($result['expiration']); $result['days_left'] = $now->diff($exp)->days;
function gf_license_manager_page() if (isset($_POST['gf_license_key'])) update_option('gf_license_key', sanitize_text_field($_POST['gf_license_key'])); echo '<div class="notice notice-success"><p>License key saved.</p></div>'; gf_check_license_status(true); // force check $license_key = get_option('gf_license_key', ''); $status = gf_check_license_status(); ?> <div class="wrap"> <h1>Gravity Forms License Manager</h1> <form method="post"> <table class="form-table"> <tr><th>License Key</th> <td><input type="text" name="gf_license_key" value="<?php echo esc_attr($license_key); ?>" class="regular-text" /></td> </tr> <tr><th>Status</th> <td> <?php if ($status && isset($status['is_valid'])) if ($status['is_valid']) echo '<span style="color:green;">✔ Valid</span><br>'; echo 'Expires: ' . date('F j, Y', strtotime($status['expiration'])) . '<br>'; echo 'Days left: ' . $status['days_left']; else echo '<span style="color:red;">✘ Invalid or Expired</span>'; else echo '<span style="color:orange;">Not checked yet</span>'; ?> </td> </tr> </table> <?php submit_button('Save License Key'); ?> </form> </div> <?php else echo '<
set_transient('gf_license_status', $result, DAY_IN_SECONDS); return $result;
add_action('gf_check_license_alert', 'gf_send_expiry_alert'); function gf_send_expiry_alert() !$status['is_valid'] ✘ Invalid or Expired<
$result = [ 'is_valid' => $is_valid, 'expiration' => $body['expiration'] ?? null, 'days_left' => null ];