You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.6 KiB
66 lines
1.6 KiB
<?php
|
|
|
|
namespace Zoomyboy\Stepper;
|
|
|
|
use GuzzleHttp\Client;
|
|
use Dotenv\Dotenv;
|
|
|
|
class Stepper
|
|
{
|
|
|
|
public string $url;
|
|
public string $scriptUrl;
|
|
|
|
public function loadEnv(string $dir): void
|
|
{
|
|
$env = Dotenv::createImmutable($dir);
|
|
$env->safeLoad();
|
|
}
|
|
|
|
public function initFrontend()
|
|
{
|
|
add_action('wp_enqueue_scripts', [$this, 'enqueue']);
|
|
add_action('wp_ajax_nopriv_stepper_submit', [$this, 'onSubmit']);
|
|
add_action('wp_ajax_stepper_submit', [$this, 'onSubmit']);
|
|
|
|
if (!is_admin()) {
|
|
add_action('wp_footer', [$this, 'enqueueOverwrite']);
|
|
add_shortcode('stepper', [$this, 'handle']);
|
|
}
|
|
}
|
|
|
|
public function enqueueOverwrite(): void
|
|
{
|
|
ob_start();
|
|
require(__DIR__ . '/../templates/overwrite.htm');
|
|
echo ob_get_clean();
|
|
}
|
|
|
|
public function enqueue()
|
|
{
|
|
wp_enqueue_script('stepper-js', $this->scriptUrl . 'app.js', [], false, true);
|
|
wp_enqueue_style('stepper-css', $this->scriptUrl . 'app.css');
|
|
}
|
|
|
|
public function handle()
|
|
{
|
|
ob_start();
|
|
require(__DIR__ . '/../templates/stepper.htm');
|
|
return ob_get_clean();
|
|
}
|
|
|
|
public function onSubmit()
|
|
{
|
|
$client = new Client();
|
|
|
|
$payload = json_decode(file_get_contents('php://input'), true);
|
|
$client->post(STEPPER_URL, [
|
|
'json' => $payload,
|
|
'headers' => [
|
|
'Accept' => 'application/json',
|
|
'Content-Type' => 'application/json',
|
|
'Authorization' => 'Bearer ' . STEPPER_TOKEN,
|
|
]
|
|
]);
|
|
}
|
|
}
|