HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/tests/headless/subscriber-service-fixture.php
<?php

require __DIR__ . '/../../vendor/autoload.php';

$app = require __DIR__ . '/../../bootstrap/app.php';
$app->instance('request', Illuminate\Http\Request::create('/'));
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$kernel->bootstrap();

use App\Model\Contact;
use App\Model\Customer;
use App\Model\Form;
use App\Model\MailList;
use App\Model\MailListTemplate;
use App\Model\Role;
use App\Model\Subscriber;
use App\Model\Template;
use App\Model\User;
use App\Services\SubscriberService;

config([
    'sharding.enabled' => false,
    'app.url' => rtrim(env('BASE_URL', config('app.url')), '/'),
]);

$prefix = 'hss' . substr(uniqid(), -6);

$contact = Contact::forceCreate([
    'uid' => "{$prefix}_contact",
    'first_name' => 'Headless',
    'last_name' => 'Subscriber',
    'email' => "{$prefix}@example.test",
]);

$customer = Customer::forceCreate([
    'uid' => "{$prefix}_customer",
    'contact_id' => $contact->id,
    'status' => 'active',
    'timezone' => 'UTC',
]);

$user = User::forceCreate([
    'email' => "{$prefix}[email protected]",
    'password' => bcrypt('123456'),
    'status' => User::STATUS_ACTIVE,
    'activated' => true,
    'first_name' => 'Headless',
    'last_name' => 'Operator',
    'customer_id' => $customer->id,
]);

$role = Role::getDefaultAdminRole();
if ($role) {
    $user->setRole($role);
}

$list = MailList::forceCreate([
    'uid' => "{$prefix}_list",
    'name' => 'Headless Subscriber Service List',
    'customer_id' => $customer->id,
    'from_email' => '[email protected]',
    'from_name' => 'Sender',
    'subscribe_confirmation' => false,
]);

$signUpTemplate = Template::forceCreate([
    'uid' => "{$prefix}_tpl_signup",
    'name' => 'Headless Sign Up Form',
    'content' => '<html><body><label>Email<input type="email" name="EMAIL" /></label><button type="submit">Subscribe</button></body></html>',
    'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);

MailListTemplate::forceCreate([
    'uid' => "{$prefix}_mltpl_signup",
    'mail_list_id' => $list->id,
    'customer_id' => $customer->id,
    'template_id' => $signUpTemplate->id,
    'alias' => 'sign_up_form',
]);

$thankYouTemplate = Template::forceCreate([
    'uid' => "{$prefix}_tpl_thanks",
    'name' => 'Headless Thank You',
    'content' => '<html><body><p>Thanks for confirming.</p></body></html>',
    'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);

MailListTemplate::forceCreate([
    'uid' => "{$prefix}_mltpl_thanks",
    'mail_list_id' => $list->id,
    'customer_id' => $customer->id,
    'template_id' => $thankYouTemplate->id,
    'alias' => 'sign_up_thankyou_page',
]);

$confirmationPageTemplate = Template::forceCreate([
    'uid' => "{$prefix}_tpl_confirm_page",
    'name' => 'Headless Check Inbox',
    'content' => '<html><body><p>Please check your inbox.</p></body></html>',
    'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);

MailListTemplate::forceCreate([
    'uid' => "{$prefix}_mltpl_confirm_page",
    'mail_list_id' => $list->id,
    'customer_id' => $customer->id,
    'template_id' => $confirmationPageTemplate->id,
    'alias' => 'sign_up_confirmation_page',
]);

$popupTemplate = Template::forceCreate([
    'uid' => "{$prefix}_tpl_popup",
    'name' => 'Headless Popup Form',
    'content' => '<div builder-wrapper><label>Email<input type="email" name="EMAIL" /></label><button type="submit">Join popup</button></div><message-section style="display:none"><p>Done</p></message-section>',
    'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);

$form = Form::forceCreate([
    'uid' => "{$prefix}_form",
    'name' => 'Headless Popup Form',
    'status' => Form::STATUS_PUBLISHED,
    'customer_id' => $customer->id,
    'mail_list_id' => $list->id,
    'template_id' => $popupTemplate->id,
    'metadata' => json_encode([
        'display' => 'immediately',
        'overlay_opacity' => 20,
    ]),
]);

$unconfirmedSubscriber = Subscriber::forceCreate([
    'uid' => "{$prefix}_subscriber_confirm",
    'email' => "{$prefix}[email protected]",
    'status' => Subscriber::STATUS_UNCONFIRMED,
    'mail_list_id' => $list->id,
]);

$subscriberService = app(SubscriberService::class);
$signedConfirmUrl = $subscriberService->generateSignedConfirmationUrl($unconfirmedSubscriber);

echo json_encode([
    'prefix' => $prefix,
    'customer_uid' => $customer->uid,
    'list_uid' => $list->uid,
    'form_uid' => $form->uid,
    'customer_user_autologin_path' => "/autologin/{$user->api_token}",
    'add_by_customer_create_path' => "/lists/{$list->uid}/subscribers/create",
    'add_by_customer_index_path' => "/lists/{$list->uid}/subscribers",
    'sign_up_path' => "/frontend/lists/{$list->uid}/{$customer->uid}/sign-up",
    'embedded_subscribe_path' => "/lists/{$list->uid}/{$customer->uid}/embedded-form-subscribe",
    'popup_content_path' => "/frontend/forms/{$form->uid}/content",
    'popup_save_path' => "/frontend/forms/{$form->uid}/save",
    'signed_confirm_url' => $signedConfirmUrl,
    'tampered_confirm_url' => $signedConfirmUrl . '&tampered=1',
]);