Current File : //home/lastyfjz/dermalaserclinic.co.uk/wp-content/plugins/boxzilla/src/licensing/class-poller.php
<?php

namespace Boxzilla\Licensing;

class Poller
{
    /**
     * @var API
     */
    protected $api;

    /**
     * @var License
     */
    protected $license;

    /**
     * Poller constructor.
     *
     * @param API $api
     * @param License $license
     */
    public function __construct(API $api, License $license)
    {
        $this->api     = $api;
        $this->license = $license;
    }

    /**
     * Add hooks.
     */
    public function init()
    {
        if (! wp_next_scheduled('boxzilla_check_license_status')) {
            wp_schedule_event(time(), 'daily', 'boxzilla_check_license_status');
        }

        add_action('boxzilla_check_license_status', [ $this, 'run' ]);
    }

    /**
     * Run!
     */
    public function run()
    {
        // don't run if license not active
        if (! $this->license->activated) {
            return;
        }

        // assume valid by default, in case of server errors on our side.
        $license_still_valid = true;

        try {
            $remote_license      = $this->api->get_license();
            $license_still_valid = $remote_license->valid;
        } catch (API_Exception $e) {
            // license key wasn't found or expired
            if (in_array($e->getApiCode(), [ 'license_invalid', 'license_expired' ], true)) {
                $license_still_valid = false;
            }
        }

        if (! $license_still_valid) {
            $this->license->activated = false;
            $this->license->save();
        }
    }
}