Esempio n. 1
0
 public function render(Am_View $view, $user = null)
 {
     $html = $this->html;
     if (strpos($html, '%user.') !== false) {
         $t = new Am_SimpleTemplate();
         if ($user) {
             $t->assign('user', $user);
         }
         $t->assignStdVars();
         $html = $t->render($html);
     }
     if ($this->use_layout) {
         $view->content = '<div class="am-content-page">' . $html . '</div>';
         $view->title = $this->title;
         $view->meta_title = $this->meta_title ? $this->meta_title : $this->title;
         if ($this->meta_keywords) {
             $view->headMeta()->setName('keywords', $this->meta_keywords);
         }
         if ($this->meta_description) {
             $view->headMeta()->setName('description', $this->meta_description);
         }
         return $view->render($this->tpl ? $this->tpl : 'layout.phtml');
     } else {
         return $html;
     }
 }
Esempio n. 2
0
 function onThanksPage(Am_Event $event)
 {
     if (!$event->getInvoice()) {
         return;
     }
     $url = null;
     foreach ($event->getInvoice()->getProducts() as $pr) {
         if ($url = $pr->data()->get('thanks_redirect_url')) {
             break;
         }
     }
     $t = new Am_SimpleTemplate();
     $t->assignStdVars();
     $t->assign('invoice', $event->getInvoice());
     $t->assign('user', $event->getInvoice()->getUser());
     $url = $t->render($url);
     if ($url) {
         $event->getController()->redirectLocation($url);
     }
 }
Esempio n. 3
0
 protected function _parse($text, $layout = null)
 {
     $tpl = new Am_SimpleTemplate();
     $tpl->assignStdVars();
     $tpl->assign($this->getArrayCopy());
     $tpl->assign(get_object_vars($this));
     $text = $tpl->render($text);
     if ($layout) {
         $tpl->assign('content', $text);
         $text = $tpl->render($layout);
     }
     return $text;
 }
Esempio n. 4
0
 public function batchSend(&$context, Am_BatchProcessor $batch)
 {
     if ($this->saved->count_users <= $this->saved->sent_users) {
         return true;
     }
     // we are done;
     $q = $this->searchUi->query($this->saved->sent_users, 10);
     $i = 0;
     $db = $this->getDi()->db;
     $foundrows = false;
     while ($r = $db->fetchRow($q)) {
         $foundrows = true;
         if (!$batch->checkLimits()) {
             return false;
         }
         $r['name'] = $r['name_f'] . ' ' . $r['name_l'];
         $this->saved->updateQuick(array('last_email' => $r['email'], 'sent_users' => $this->saved->sent_users + 1));
         if ($r['email'] == '') {
             continue;
         }
         $m = $this->getDi()->mail;
         $m->setPeriodic(Am_Mail::ADMIN_REQUESTED);
         $m->addHeader('X-Amember-Queue-Id', $this->_request->getFiltered('queue_id'));
         $m->addUnsubscribeLink(Am_Mail::LINK_USER);
         $m->addTo($r['email'], $r['name']);
         if ($reply_to = $this->getParam('reply_to')) {
             switch ($reply_to) {
                 case 'default':
                     $email = false;
                     break;
                 case 'other':
                     $email = $this->getParam('reply_to_other');
                     $name = null;
                     break;
                 default:
                     preg_match('/^admin-(\\d+)$/', $reply_to, $match);
                     $admin = $this->getDi()->adminTable->load($match[1], false);
                     if ($admin) {
                         $email = $admin->email;
                         $name = $admin->getName();
                     }
                     break;
             }
             if ($email = filter_var($email, FILTER_VALIDATE_EMAIL)) {
                 $m->setReplyTo($email, $name);
             }
         }
         $subject = $this->getParam('subject');
         $body = $this->getParam('body');
         $tpl = new Am_SimpleTemplate();
         $tpl->assignStdVars();
         if (strpos($body, '%user.unsubscribe_link%') !== false || strpos($subject, '%user.unsubscribe_link%') !== false) {
             $r['unsubscribe_link'] = Am_Mail::getUnsubscribeLink($r['email'], Am_Mail::LINK_USER);
         }
         $tpl->user = $r;
         $this->getDi()->hook->call(Am_Event::MAIL_SIMPLE_TEMPLATE_BEFORE_PARSE, array('template' => $tpl, 'body' => $body, 'subject' => $subject, 'mail' => $m, 'request' => $this->getRequest()));
         $subject = $tpl->render($subject);
         $body = $tpl->render($body);
         if ($this->getParam('email_template_layout_id') && ($layout = $this->getDi()->emailTemplateLayoutTable->load($this->getParam('email_template_layout_id', false)))) {
             $tpl->assign('content', $body);
             $body = $tpl->render($layout->layout);
         }
         $m->setSubject($subject);
         if ($this->getParam('format') == 'text') {
             $m->setBodyText($body);
         } else {
             $text = strip_tags($body);
             $html = strpos($body, '<html') === false ? "<html><head><title>{$subject}</title></head><body>{$body}</body></html>" : $body;
             $m->setBodyHtml($html);
             $m->setBodyText($text);
         }
         foreach ($this->getAttachments() as $at) {
             $m->addAttachment($at);
         }
         try {
             $m->send();
         } catch (Zend_Mail_Exception $e) {
             trigger_error("Error happened while sending e-mail to {$r['email']} : " . $e->getMessage(), E_USER_WARNING);
         }
     }
     $this->getDi()->db->freeResult($q);
     if (!$foundrows) {
         return true;
     }
     if ($this->saved->count_users <= $this->saved->sent_users) {
         return true;
     }
     // we are done;
 }
 public function batchSend(&$context, Am_BatchProcessor $batch)
 {
     if ($this->saved->count_users <= $this->saved->sent_users) {
         return true;
     }
     // we are done;
     $q = $this->searchUi->query($this->saved->sent_users, 10);
     $t = new Am_View();
     $i = 0;
     $db = $this->getDi()->db;
     while ($r = $db->fetchRow($q)) {
         $r['name'] = $r['name_f'] . ' ' . $r['name_l'];
         if (!empty($r['user_id'])) {
             $isUser = true;
         } else {
             $isUser = false;
         }
         $this->saved->updateQuick(array('last_email' => $r['email'], 'sent_users' => $this->saved->sent_users + 1));
         if ($r['email'] == '') {
             continue;
         }
         $subject = $this->getParam('subject');
         $body = $this->getParam('body');
         // assign variables
         $tpl = new Am_SimpleTemplate();
         $tpl->assignStdVars();
         $tpl->user = $r;
         $subject = $tpl->render($subject);
         $body = $tpl->render($body);
         //
         $m = new Am_Mail();
         $m->addUnsubscribeLink($isUser ? Am_Mail::LINK_USER : Am_Mail::LINK_GUEST);
         $m->addTo($r['email'], $r['name'])->setSubject($subject);
         //->setFrom($this->getDi()->config->get('admin_email'), $this->getDi()->config->get('site_title') . ' Admin');
         if ($this->getParam('format') == 'text') {
             $m->setBodyText($body);
         } else {
             $m->setBodyHtml($body);
         }
         $m->setPeriodic(Am_Mail::ADMIN_REQUESTED);
         $m->addHeader('X-Amember-Queue-Id', $this->_request->getFiltered('queue_id'));
         foreach ($this->getAttachments() as $at) {
             $m->addAttachment($at);
         }
         try {
             $m->send();
         } catch (Zend_Mail_Exception $e) {
             trigger_error("Error happened while sending e-mail to {$r['email']} : " . $e->getMessage(), E_USER_WARNING);
         }
     }
     $this->getDi()->db->freeResult($q);
     if ($this->saved->count_users <= $this->saved->sent_users) {
         return true;
     }
     // we are done;
 }
Esempio n. 6
0
 public function render()
 {
     $invoice = $this->invoice;
     $payment = $this->payment;
     $user = $invoice->getUser();
     $pdf = $this->createPdfTemplate();
     $event = new Am_Event(Am_Event::PDF_INVOICE_BEFORE_RENDER, array('amPdfInvoice' => $this, 'pdf' => $pdf, 'invoice' => $invoice, 'payment' => $payment, 'user' => $user));
     $event->setReturn(false);
     $this->getDi()->hook->call($event);
     // If event processing already rendered the Pdf.
     if ($event->getReturn() === true) {
         return $pdf->render();
     }
     $width_num = 30;
     $width_qty = 40;
     $width_price = 80;
     $width_total = 120;
     $padd = 20;
     $left = $padd;
     $right = $this->getPaperWidth() - $padd;
     $fontH = $this->getFontRegular();
     $fontHB = $this->getFontBold();
     $styleBold = array('font' => array('face' => $fontHB, 'size' => 10));
     $page = new Am_Pdf_Page_Decorator($pdf->pages[0]);
     $page->setFont($fontH, 10);
     $pointer = $this->getPointer();
     $pointerL = $pointerR = $pointer;
     $leftCol = new stdClass();
     $leftCol->invoiceNumber = ___('Corrective Invoice Number: ') . $payment->getDisplayInvoiceId();
     $leftCol->recInvoiceNumber = ___('Rectifies Invoice Number: ') . $this->getOrigPayment()->getDisplayInvoiceId();
     $leftCol->date = ___('Date: ') . amDate($payment->dattm);
     if ($user->tax_id) {
         $leftCol->taxId = ___('EU VAT ID: ') . $user->tax_id;
     }
     $this->getDi()->hook->call(Am_Event::PDF_INVOICE_COL_LEFT, array('col' => $leftCol, 'invoice' => $invoice, 'payment' => $payment, 'user' => $user));
     foreach ($leftCol as $line) {
         $page->drawText($line, $left, $pointerL);
         $page->nl($pointerL);
     }
     $rightCol = new stdClass();
     $rightCol->name = $invoice->getName();
     $rightCol->email = $invoice->getEmail();
     $rightCol->address = implode(', ', array_filter(array($invoice->getStreet(), $invoice->getCity())));
     $rightCol->country = implode(', ', array_filter(array($this->getState($invoice), $invoice->getZip(), $this->getCountry($invoice))));
     $this->getDi()->hook->call(Am_Event::PDF_INVOICE_COL_RIGHT, array('col' => $rightCol, 'invoice' => $invoice, 'payment' => $payment, 'user' => $user));
     foreach ($rightCol as $line) {
         $page->drawText($line, $right, $pointerR, 'UTF-8', Am_Pdf_Page_Decorator::ALIGN_RIGHT);
         $page->nl($pointerR);
     }
     $pointer = min($pointerR, $pointerL);
     $p = new stdClass();
     $p->value =& $pointer;
     $this->getDi()->hook->call(Am_Event::PDF_INVOICE_BEFORE_TABLE, array('page' => $page, 'pointer' => $p, 'invoice' => $invoice, 'payment' => $payment, 'user' => $user));
     $table = new Am_Pdf_Table();
     $table->setMargin($padd, $padd, $padd, $padd);
     $table->setStyleForRow(1, array('shape' => array('type' => Zend_Pdf_Page::SHAPE_DRAW_STROKE, 'color' => new Zend_Pdf_Color_Html("#cccccc")), 'font' => array('face' => $fontHB, 'size' => 10)));
     $table->setStyleForColumn(1, array('align' => 'right', 'width' => $width_num));
     $table->setStyleForColumn(3, array('align' => 'right', 'width' => $width_qty));
     $table->setStyleForColumn(4, array('align' => 'right', 'width' => $width_price));
     $table->setStyleForColumn(5, array('align' => 'right', 'width' => $width_total));
     $table->addRow(array(___('#'), ___('Subscription/Product Title'), ___('Qty'), ___('Unit Price'), ___('Total Price')));
     $num = 0;
     foreach ($invoice->getItems() as $p) {
         /* @var $p InvoiceItem */
         $table->addRow(array(++$num . '.', $p->item_title, $p->qty, $invoice->getCurrency($this->isFirstPayment() ? $p->first_price : $p->second_price), $invoice->getCurrency($this->isFirstPayment() ? $p->getFirstSubtotal() : $p->getSecondSubtotal())));
     }
     $pointer = $page->drawTable($table, 0, $pointer);
     $table = new Am_Pdf_Table();
     $table->setMargin($padd, $padd, $padd, $padd);
     $table->setStyleForColumn(2, array('align' => 'right', 'width' => $width_total));
     $subtotal = $this->isFirstPayment() ? $invoice->first_subtotal : $invoice->second_subtotal;
     $total = $this->isFirstPayment() ? $invoice->first_total : $invoice->second_total;
     if ($subtotal != $total) {
         $table->addRow(array(___('Subtotal'), $invoice->getCurrency($subtotal)))->addStyle($styleBold);
     }
     if ($this->isFirstPayment() && $invoice->first_discount > 0 || !$this->isFirstPayment() && $invoice->second_discount > 0) {
         $table->addRow(array(___('Coupon Discount'), $invoice->getCurrency($this->isFirstPayment() ? $invoice->first_discount : $invoice->second_discount)));
     }
     $table->addRow(array(___('Total'), $invoice->getCurrency($total)))->addStyle($styleBold);
     $table->addRow(array(___('Taxable Income'), "-" . $invoice->getCurrency($this->getOrigPayment()->amount - $this->getOrigPayment()->tax)))->addStyle($styleBold);
     if ($this->getOrigPayment()->tax > 0) {
         $table->addRow(array(___('Tax') . " " . $invoice->tax_rate . "%", "-" . $invoice->getCurrency($this->getOrigPayment()->tax)))->addStyle($styleBold);
     }
     $table->addRow(array(___('Amount Paid'), $invoice->getCurrency(sprintf("%.2f", $this->getOrigPayment()->amount - $this->payment->amount))))->addStyle(array('font' => array('face' => $fontHB, 'size' => 10)));
     $x = $this->getPaperWidth() - ($width_qty + $width_price + $width_total) - 2 * $padd;
     $pointer = $page->drawTable($table, $x, $pointer);
     $page->nl($pointer);
     $page->nl($pointer);
     if (!$this->getDi()->config->get('invoice_do_not_include_terms')) {
         $termsText = new Am_TermsText($invoice);
         $page->drawTextWithFixedWidth(___('Subscription Terms') . ': ' . $termsText, $left, $pointer, $this->getPaperWidth() - 2 * $padd);
         $page->nl($pointer);
     }
     $p = new stdClass();
     $p->value =& $pointer;
     $this->getDi()->hook->call(Am_Event::PDF_INVOICE_AFTER_TABLE, array('page' => $page, 'pointer' => $p, 'invoice' => $invoice, 'payment' => $payment, 'user' => $user));
     if (!$this->getDi()->config->get('invoice_custom_template') || !$this->getDi()->uploadTable->load($this->getDi()->config->get('invoice_custom_template'))) {
         if ($ifn = $this->getDi()->config->get('invoice_footer_note')) {
             $tmpl = new Am_SimpleTemplate();
             $tmpl->assignStdVars();
             $tmpl->assign('user', $user);
             $tmpl->assign('invoice', $invoice);
             $ifn = $tmpl->render($ifn);
             $page->nl($pointer);
             $page->drawTextWithFixedWidth($ifn, $left, $pointer, $this->getPaperWidth() - 2 * $padd);
         }
     }
     return $pdf->render();
 }
Esempio n. 7
0
 protected function _parse($text)
 {
     $tpl = new Am_SimpleTemplate();
     $tpl->assignStdVars();
     $tpl->assign($this->getArrayCopy());
     $tpl->assign(get_object_vars($this));
     return $tpl->render($text);
 }