[ 'class' => VerbFilter::class, 'actions' => [ 'delete' => ['post'], ], ], 'access' => [ 'class' => AccessControl::class, 'rules' => [ [ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return $this->getUserModule() ->getAuthorizationChecker() ->isGrantedAsProducer($this->getUserCurrent()); } ] ], ], ]; } public function actionEmail( $idPointSale = 0, $sectionSubscribers = 0, $sectionInactiveUsers = 0, $usersPointSaleLink = 0, $usersPointSaleHasOrder = 0, $idDistribution = 0, $newsletterType = null ) { $emailModule = $this->getEmailModule(); $mailForm = new MailForm(); // Sujet et message par défaut $mailForm->subject = $this->getProducerModule()->getSolver()->getConfig('option_communicate_email_default_subject'); $mailForm->message = $this->getProducerModule()->getSolver()->getConfig('option_communicate_email_default_message'); $pointSale = $idPointSale ? $this->getPointSaleModule()->getRepository()->findOnePointSaleById($idPointSale) : null; $distribution = $idDistribution ? $this->getDistributionModule()->getRepository()->findOneDistributionById($idDistribution) : null; if($distribution) { $mailForm->id_distribution = $distribution->id; } $usersArray = $emailModule->getContactListResolver()->search( $this->getProducerCurrent(), $newsletterType, $distribution, $pointSale, $usersPointSaleLink, $usersPointSaleHasOrder, $sectionSubscribers, $sectionInactiveUsers ); if ($mailForm->load(\Yii::$app->request->post()) && $mailForm->validate()) { if($this->getProducerCurrent()->isDemoAccount()) { $this->setFlash('error', "Fonctionnalité désactivée sur le compte de démo."); } else { $distribution = $mailForm->id_distribution ? $this->getDistributionModule()->getRepository()->findOneDistributionById($mailForm->id_distribution) : null; $email = $emailModule->getGenerator()->createEmail( $mailForm->subject, $mailForm->message, (bool) $mailForm->integrate_product_list, $this->getProducerCurrent(), $distribution ); $emailModule->getBulkMailer()->sendEmail($email, $usersArray); $this->setFlash('success', 'Votre email a bien été envoyé.'); } return $this->redirect(['email', 'idPointSale' => $idPointSale]); } $pointsSaleArray = PointSale::find()->where(['id_producer' => GlobalParam::getCurrentProducerId(), 'status' => 1])->all(); $incomingDistributionsArray = $this->getDistributionModule()->getRepository()->findDistributionsIncoming(); $incomingDistributionsDatesArray = ['0' => '--']; foreach ($incomingDistributionsArray as $distribution) { $incomingDistributionsDatesArray[$distribution->id] = strftime('%A %d %B %Y', strtotime($distribution->date)); } return $this->render('email', [ 'usersArray' => $usersArray, 'pointsSaleArray' => $pointsSaleArray, 'pointSale' => $pointSale, 'mailForm' => $mailForm, 'idPointSaleActive' => $idPointSale, 'idDistributionActive' => $idDistribution, 'incomingDistributionsArray' => $incomingDistributionsArray, 'incomingDistributionsDatesArray' => $incomingDistributionsDatesArray, 'sectionSubscribers' => $sectionSubscribers, 'sectionInactiveUsers' => $sectionInactiveUsers, 'usersPointSaleLink' => $usersPointSaleLink, 'usersPointSaleHasOrder' => $usersPointSaleHasOrder, 'newsletterType' => $newsletterType, ]); } public function actionPaper() { $producer = $this->getProducerCurrent(); return $this->render('paper', [ 'producer' => $producer, ]); } /** * Génére un PDF contenant le mode d'emploi d'utilisation de la plateforme * à destination des clients des producteurs. * * @return string */ public function actionInstructions() { $producer = $this->getProducerCurrent(); // get your HTML raw content without any layouts or scripts $content = $this->renderPartial('instructions_multi', [ 'pdf' => true, 'producer' => $producer ]); $pdf = new Pdf([ // set to use core fonts only 'mode' => Pdf::MODE_UTF8, // A4 paper format 'format' => Pdf::FORMAT_A4, // portrait orientation 'orientation' => Pdf::ORIENT_PORTRAIT, // stream to browser inline 'destination' => Pdf::DEST_BROWSER, // your html content input 'content' => $content, 'marginRight' => 0, 'marginLeft' => 0, 'marginTop' => 0, 'marginBottom' => 0, // format content from your own css file if needed or use the // enhanced bootstrap css built by Krajee for mPDF formatting //'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 'cssFile' => '@app/web/css/screen.css', // any css to be embedded if required //'cssInline' => '.kv-heading-1{font-size:18px}', // set mPDF properties on the fly //'options' => ['title' => 'Krajee Report Title'], // call mPDF methods on the fly /* 'methods' => [ 'SetHeader'=>['Commandes du '.$date_str], 'SetFooter'=>['{PAGENO}'], ] */ ]); // return the pdf output as per the destination setting return $pdf->render(); } }