Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/job-board.corals.io/Corals/modules/Newsletter/Classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/Newsletter/Classes/Newsletter.php
<?php

namespace Corals\Modules\Newsletter\Classes;

use Corals\Modules\Newsletter\Models\EmailLogger;
use Corals\Modules\Newsletter\Models\Subscriber;
use Corals\Modules\Newsletter\Mail\NewsletterEmail;
use Jenssegers\Agent\Agent;
use Corals\Modules\Newsletter\Models\Email;
use Corals\Modules\Newsletter\Models\MailList;
use Illuminate\Support\Facades\Mail;

class Newsletter
{
    public function getVisitorDetails()
    {
        $details = [];

        return rescue(function () use ($details) {
            $agent = new Agent();
            $details['browser'] = $agent->browser();
            $details['browser_version'] = $agent->version($details['browser']);
            $details['device_type'] = $agent->isPhone() ? 'Phone' : ($agent->isTablet() ? 'Tablet' : 'Desktop');
            $details['device'] = $agent->device();
            $details['platform'] = $agent->platform();
            $details['platform_version'] = $agent->version($details['platform']);
            $details['languages'] = $agent->languages();

            return $details;
        }, function () use ($details) {
            return $details;
        });
    }

    /**
     * @param Email $email
     * @param EmailLogger|null $emailLogger
     */
    public function sendEmail(Email $email, EmailLogger $emailLogger = null)
    {
        try {
            $emailLoggersStatus = [];

            if (!is_null($emailLogger)) {
                $subscribers = $email->subscribers()->where('newsletter_email_logger.id', $emailLogger->id)->get();
            } else {
                $subscribers = $email->subscribers()->where('newsletter_email_logger.status', 'draft')->get();
            }

            foreach ($subscribers as $subscriber) {
                try {
                    Mail::to($subscriber->email)
                        ->queue(new NewsletterEmail($email, $subscriber->pivot->api_call_id));

                    $emailLoggersStatus[$subscriber->id] = [
                        'status' => 'sent',
                    ];

                } catch (\Exception $e) {
                    $emailLoggersStatus[$subscriber->id] = [
                        'status' => 'failed',
                        'failure_message' => $e->getMessage(),
                    ];

                    logger($e->getMessage());
                }
            }

            if (is_null($emailLogger)) {
                $email->subscribers()->sync($emailLoggersStatus);
                $email->update(['status' => 'sent']);
            } else {
                $emailLogger->update($emailLoggersStatus[$emailLogger->subscriber_id]);
            }
        } catch (\Exception $exception) {
            log_exception($exception, Newsletter::class, 'sendEmail');
        }
    }

    /**
     * @return array
     */
    public function getAllSubscribers()
    {
        return Subscriber::query()
            ->pluck('email', 'id')
            ->toArray();
    }

    /**
     * @return array
     */
    public function getAllMailLists()
    {
        return MailList::query()
            ->pluck('name', 'id')
            ->toArray();
    }
}

Spamworldpro Mini