MyMailer.php 6.09 KB
<?php
/*
namespace
{

    class MyMailer extends \core
    {
        public $from_name;
        public $from_email;
        public $to_email    = '';
        public $title       = '';
        public $mailMessage = '';
        public $to_name     = '';
        public $mailer;
        public $deliveryService;


        function __construct(){
            $this->from_name = 'Arenda.com.ua';
            $this->from_email = 'andrey.belyy@gmail.com';
            $this->mailer = new \unisender('5xaiqb1pnuu8jsun4rwxhow4shj11e55zdhjf5do','4940006');

        }

        public function getDelivService()
        {
            $delivery_db = $this->getDi()->get('models')->getDelivery();
            $delivery_email_db = $this->getDi()->get('models')->getDeliveryEmail();
            if($this->deliveryService instanceof \deliveryServ) {
                return $this->deliveryService;
            } else {
                return $this->deliveryService = new \deliveryServ($delivery_db,$delivery_email_db);
            }
        }

        function setFromName($name)
        {
            return $this->from_name = $name;
        }

        function setFromEmail($email)
        {
            return $this->from_email = $email;
        }

        function setToMail($email = array(), $string = false)
        {
           if($string) {
               $sendTo = array();

              foreach($email as $user){
                $sendTo[] = $user['email'];
              }

              $email =implode(",", $sendTo);

              return $this->to_email = $email;
          } else {

             return $this->to_email = $email;
          }


        }

        function setTitle($title)
        {
            return $this->title = $title;
        }

        function setMailMessage($mailMessage)
        {
            return $this->mailMessage = $mailMessage;
        }

        function setToName($to_name)
        {
            return $this->to_name = $to_name;
        }

        function getUsers($id='')
        {
            $model = new \customersEmailList();
            if(!empty($id)){
                $id = implode(",", $id);
                $model = array($model->findFirst("id = '$id'")->toArray());
            } else {
                $model = $model->find()->toArray();
            }

            return $model;
        }


        public function SendForSelect($template, $users)
        {


            foreach($users as $user){
                
                $this->setToMail($user['email']);
                $this->setMailMessage($template->text);
                $this->setTitle($template->title);
                $this->SendEmail();
            }
        }





        public function SendEmail()
        {
            $this->mailer->SendMail($this->to_email, '', $this->from_email, $this->from_name, $this->title, $this->mailMessage);
        }


//send for selected users from list
       public function SendDelivery($model,$template, $data, $users =array() )
        {
            if(!$users) {
                $users = $this->getUsers($data['users_id']);
            }


            $this->setToMail($users, true);
            $this->setMailMessage($template['text']);
            $this->setTitle($template['title']);
            $campaign_id = $this->mailer->createCampaignDelivery($this->to_email,  $this->from_email, $this->from_name, $this->title, $this->mailMessage);


            $delivery = array(
                'campaign_id' => $campaign_id,
                'campaign'    => $data['utm_campaign'],
                'name'        => $data['name'],
                'event_id'    => $data['id'],
                'status'      => '0',
                'project_id'  => $data['project_id']
            );
            $model->save($delivery);
        }



        public function getDeliveryStatus( $campaign_id)
        {
            return $this->mailer->getCampaignStatus($campaign_id);

        }


        public function getCampaignDeliveryStats($campaign_id)
        {
            $status = $this->mailer->getCampaignDeliveryStats($campaign_id);
            return $status;
        }
        public  function  getCampaignAggregateStats( $campaign_id)
        {
            $result = $this->mailer->getCampaignAggregateStats($campaign_id);
            $model = array();
            $model['total']           = $result->result->total;
            $model['ok_unsubscribed'] = isset($result->result->data->ok_unsubscribed) ? $result->result->data->ok_unsubscribed : null;
            $model['ok_delivered']    = isset($result->result->data->ok_delivered) ? $result->result->data->ok_delivered : null;
            $model['ok_read']         = isset($result->result->data->ok_read) ? $result->result->data->ok_read : null;
            $model['ok_fbl']          = isset($result->result->data->ok_fbl) ? $result->result->data->ok_fbl : null;
            $model['ok_link_visited'] = isset($result->result->data->ok_link_visited) ? $result->result->data->ok_link_visited : null;

            $model['delivered']       = $model['ok_delivered']+$model['ok_read']+$model['ok_unsubscribed']+$model['ok_fbl']+$model['ok_link_visited'];
            return $model;

        }

        public function getVisitedLinks($campaign_id)
        {
            $status = $this->mailer->getVisitedLinks($campaign_id);

        }


        public function updateDeliveryData($campaign_id)
        {
            return $this->getDelivService()->save($campaign_id);
        }

        //Send for all users in list
        public function SendDeliveryForAll($model, $template, $data){
           p();
            $this->setMailMessage($template['text']);
            $this->setTitle($template['title']);
            $campaign_id = $this->mailer->createCampaignDelivery(null, $this->from_email, $this->from_name, $this->title, $this->mailMessage);
            $save = array(
                'campaign_id' => $campaign_id,
                'status'      => '0',
                'name'        => $data['name'],
                'campaign'    => $data['utm_campaign'],
                'event_id'    => $data['id'],
                'project_id'  => $data['project_id']

            );
            $model->save($save);
        }
    }
}