App\services\TemplateService::processVariables PHP 메소드

processVariables() 공개 메소드

public processVariables ( $template, array $data ) : mixed | string
$template
$data array
리턴 mixed | string
    public function processVariables($template, array $data)
    {
        /** @var \App\Models\Account $account */
        $account = $data['account'];
        /** @var \App\Models\Client $client */
        $client = $data['client'];
        /** @var \App\Models\Invitation $invitation */
        $invitation = $data['invitation'];
        $invoice = $invitation->invoice;
        $passwordHTML = isset($data['password']) ? '<p>' . trans('texts.password') . ': ' . $data['password'] . '<p>' : false;
        $documentsHTML = '';
        if ($account->hasFeature(FEATURE_DOCUMENTS) && $invoice->hasDocuments()) {
            $documentsHTML .= trans('texts.email_documents_header') . '<ul>';
            foreach ($invoice->documents as $document) {
                $documentsHTML .= '<li><a href="' . HTML::entities($document->getClientUrl($invitation)) . '">' . HTML::entities($document->name) . '</a></li>';
            }
            foreach ($invoice->expenses as $expense) {
                foreach ($expense->documents as $document) {
                    $documentsHTML .= '<li><a href="' . HTML::entities($document->getClientUrl($invitation)) . '">' . HTML::entities($document->name) . '</a></li>';
                }
            }
            $documentsHTML .= '</ul>';
        }
        $variables = ['$footer' => $account->getEmailFooter(), '$client' => $client->getDisplayName(), '$account' => $account->getDisplayName(), '$dueDate' => $account->formatDate($invoice->due_date), '$invoiceDate' => $account->formatDate($invoice->invoice_date), '$contact' => $invitation->contact->getDisplayName(), '$firstName' => $invitation->contact->first_name, '$amount' => $account->formatMoney($data['amount'], $client), '$invoice' => $invoice->invoice_number, '$quote' => $invoice->invoice_number, '$link' => $invitation->getLink(), '$password' => $passwordHTML, '$viewLink' => $invitation->getLink() . '$password', '$viewButton' => Form::emailViewButton($invitation->getLink(), $invoice->getEntityType()) . '$password', '$paymentLink' => $invitation->getLink('payment') . '$password', '$paymentButton' => Form::emailPaymentButton($invitation->getLink('payment')) . '$password', '$customClient1' => $account->custom_client_label1, '$customClient2' => $account->custom_client_label2, '$customInvoice1' => $account->custom_invoice_text_label1, '$customInvoice2' => $account->custom_invoice_text_label2, '$documents' => $documentsHTML, '$autoBill' => empty($data['autobill']) ? '' : $data['autobill'], '$portalLink' => $invitation->contact->link, '$portalButton' => Form::emailViewButton($invitation->contact->link, 'portal')];
        // Add variables for available payment types
        foreach (Gateway::$gatewayTypes as $type) {
            if ($type == GATEWAY_TYPE_TOKEN) {
                continue;
            }
            $camelType = Utils::toCamelCase(GatewayType::getAliasFromId($type));
            $variables["\${$camelType}Link"] = $invitation->getLink('payment') . "/{$type}";
            $variables["\${$camelType}Button"] = Form::emailPaymentButton($invitation->getLink('payment') . "/{$type}");
        }
        $includesPasswordPlaceholder = strpos($template, '$password') !== false;
        $str = str_replace(array_keys($variables), array_values($variables), $template);
        if (!$includesPasswordPlaceholder && $passwordHTML) {
            $pos = strrpos($str, '$password');
            if ($pos !== false) {
                $str = substr_replace($str, $passwordHTML, $pos, 9);
            }
        }
        $str = str_replace('$password', '', $str);
        $str = autolink($str, 100);
        return $str;
    }

Usage Example

예제 #1
0
 /**
  * @param Payment $payment
  */
 public function sendPaymentConfirmation(Payment $payment)
 {
     $account = $payment->account;
     $client = $payment->client;
     $account->loadLocalizationSettings($client);
     $invoice = $payment->invoice;
     $accountName = $account->getDisplayName();
     $emailTemplate = $account->getEmailTemplate(ENTITY_PAYMENT);
     $emailSubject = $invoice->account->getEmailSubject(ENTITY_PAYMENT);
     if ($payment->invitation) {
         $user = $payment->invitation->user;
         $contact = $payment->contact;
         $invitation = $payment->invitation;
     } else {
         $user = $payment->user;
         $contact = $client->contacts[0];
         $invitation = $payment->invoice->invitations[0];
     }
     $variables = ['account' => $account, 'client' => $client, 'invitation' => $invitation, 'amount' => $payment->amount];
     $data = ['body' => $this->templateService->processVariables($emailTemplate, $variables), 'link' => $invitation->getLink(), 'invoice' => $invoice, 'client' => $client, 'account' => $account, 'payment' => $payment, 'entityType' => ENTITY_INVOICE];
     if ($account->attachPDF()) {
         $data['pdfString'] = $invoice->getPDFString();
         $data['pdfFileName'] = $invoice->getFileName();
     }
     $subject = $this->templateService->processVariables($emailSubject, $variables);
     $data['invoice_id'] = $payment->invoice->id;
     $view = $account->getTemplateView('payment_confirmation');
     if ($user->email && $contact->email) {
         $this->sendTo($contact->email, $user->email, $accountName, $subject, $view, $data);
     }
     $account->loadLocalizationSettings();
 }
All Usage Examples Of App\services\TemplateService::processVariables
TemplateService