/** * Retrieve the array of notification data for parsing simple tokens * * @param int $intNotification * * @return array */ public function getNotificationTokens($intNotification) { /** @type \Isotope\Model\Config $objConfig */ $objConfig = $this->getRelated('config_id'); $arrTokens = deserialize($this->email_data, true); $arrTokens['uniqid'] = $this->uniqid; $arrTokens['order_status_id'] = $this->order_status; $arrTokens['order_status'] = $this->getStatusLabel(); $arrTokens['recipient_email'] = $this->getEmailRecipient(); $arrTokens['order_id'] = $this->id; $arrTokens['order_items'] = $this->sumItemsQuantity(); $arrTokens['order_products'] = $this->countItems(); $arrTokens['order_subtotal'] = Isotope::formatPriceWithCurrency($this->getSubtotal(), false); $arrTokens['order_total'] = Isotope::formatPriceWithCurrency($this->getTotal(), false); $arrTokens['document_number'] = $this->document_number; $arrTokens['cart_html'] = ''; $arrTokens['cart_text'] = ''; $arrTokens['document'] = ''; // Add all the collection fields foreach ($this->row() as $k => $v) { $arrTokens['collection_' . $k] = $v; } // Add billing/customer address fields if (($objAddress = $this->getBillingAddress()) !== null) { foreach ($objAddress->row() as $k => $v) { $arrTokens['billing_address_' . $k] = Format::dcaValue($objAddress->getTable(), $k, $v); // @deprecated (use ##billing_address_*##) $arrTokens['billing_' . $k] = $arrTokens['billing_address_' . $k]; } $arrTokens['billing_address'] = $objAddress->generate($objConfig->getBillingFieldsConfig()); // @deprecated (use ##billing_address##) $arrTokens['billing_address_text'] = $arrTokens['billing_address']; } // Add shipping address fields if (($objAddress = $this->getShippingAddress()) !== null) { foreach ($objAddress->row() as $k => $v) { $arrTokens['shipping_address_' . $k] = Format::dcaValue($objAddress->getTable(), $k, $v); // @deprecated (use ##billing_address_*##) $arrTokens['shipping_' . $k] = $arrTokens['shipping_address_' . $k]; } $arrTokens['shipping_address'] = $objAddress->generate($objConfig->getShippingFieldsConfig()); // Shipping address equals billing address // @deprecated (use ##shipping_address##) if ($objAddress->id == $this->getBillingAddress()->id) { $arrTokens['shipping_address_text'] = $this->requiresPayment() ? $GLOBALS['TL_LANG']['MSC']['useBillingAddress'] : $GLOBALS['TL_LANG']['MSC']['useCustomerAddress']; } else { $arrTokens['shipping_address_text'] = $arrTokens['shipping_address']; } } // Add payment method info if ($this->hasPayment() && ($objPayment = $this->getPaymentMethod()) !== null) { $arrTokens['payment_id'] = $objPayment->id; $arrTokens['payment_label'] = $objPayment->getLabel(); $arrTokens['payment_note'] = $objPayment->note; } // Add shipping method info if ($this->hasShipping() && ($objShipping = $this->getShippingMethod()) !== null) { $arrTokens['shipping_id'] = $objShipping->id; $arrTokens['shipping_label'] = $objShipping->getLabel(); $arrTokens['shipping_note'] = $objShipping->note; } // Add config fields if ($this->getRelated('config_id') !== null) { foreach ($this->getRelated('config_id')->row() as $k => $v) { $arrTokens['config_' . $k] = Format::dcaValue($this->getRelated('config_id')->getTable(), $k, $v); } } // Add member fields if ($this->member > 0 && $this->getRelated('member') !== null) { foreach ($this->getRelated('member')->row() as $k => $v) { $arrTokens['member_' . $k] = Format::dcaValue($this->getRelated('member')->getTable(), $k, $v); } } if ($intNotification > 0 && ($objNotification = Notification::findByPk($intNotification)) !== null) { $objTemplate = new \Isotope\Template($objNotification->iso_collectionTpl); $objTemplate->isNotification = true; $this->addToTemplate($objTemplate, array('gallery' => $objNotification->iso_gallery, 'sorting' => $this->getItemsSortingCallable($objNotification->iso_orderCollectionBy))); $arrTokens['cart_html'] = Haste::getInstance()->call('replaceInsertTags', array($objTemplate->parse(), false)); $objTemplate->textOnly = true; $arrTokens['cart_text'] = strip_tags(Haste::getInstance()->call('replaceInsertTags', array($objTemplate->parse(), true))); // Generate and "attach" document /** @var \Isotope\Interfaces\IsotopeDocument $objDocument */ if ($objNotification->iso_document > 0 && ($objDocument = Document::findByPk($objNotification->iso_document)) !== null) { $strFilePath = $objDocument->outputToFile($this, TL_ROOT . '/system/tmp'); $arrTokens['document'] = str_replace(TL_ROOT . '/', '', $strFilePath); } } // !HOOK: add custom email tokens if (isset($GLOBALS['ISO_HOOKS']['getOrderNotificationTokens']) && is_array($GLOBALS['ISO_HOOKS']['getOrderNotificationTokens'])) { foreach ($GLOBALS['ISO_HOOKS']['getOrderNotificationTokens'] as $callback) { $objCallback = \System::importStatic($callback[0]); $arrTokens = $objCallback->{$callback}[1]($this, $arrTokens); } } return $arrTokens; }
/** * Pass an order to the document * @param DataContainer */ public function printDocument(\DataContainer $dc) { $strRedirectUrl = str_replace('&key=print_document', '', \Environment::get('request')); if (\Input::post('FORM_SUBMIT') == 'tl_iso_print_document') { if (($objOrder = Order::findByPk($dc->id)) === null) { \Message::addError('Could not find order id.'); \Controller::redirect($strRedirectUrl); } if (($objConfig = $objOrder->getRelated('config_id')) === null) { \Message::addError('Could not find config id.'); \Controller::redirect($strRedirectUrl); } // Set current config Isotope::setConfig($objConfig); /** @var \Isotope\Interfaces\IsotopeDocument $objDocument */ if (($objDocument = Document::findByPk(\Input::post('document'))) === null) { \Message::addError('Could not find document id.'); \Controller::redirect($strRedirectUrl); } $objDocument->outputToBrowser($objOrder); } $arrSelect = array('name' => 'document', 'label' => &$GLOBALS['TL_LANG']['tl_iso_product_collection']['document_choice'], 'inputType' => 'select', 'foreignKey' => 'tl_iso_document.name', 'eval' => array('mandatory' => true)); $objSelect = new \SelectMenu(\SelectMenu::getAttributesFromDca($arrSelect, $arrSelect['name'])); $strMessages = \Message::generate(); \Message::reset(); // Return form return ' <div id="tl_buttons"> <a href="' . ampersand($strRedirectUrl) . '" class="header_back" title="' . specialchars($GLOBALS['TL_LANG']['MSC']['backBT']) . '">' . $GLOBALS['TL_LANG']['MSC']['backBT'] . '</a> </div> <h2 class="sub_headline">' . sprintf($GLOBALS['TL_LANG']['tl_iso_product_collection']['print_document'][1], $dc->id) . '</h2>' . $strMessages . ' <form action="' . ampersand(\Environment::get('request'), true) . '" id="tl_iso_product_import" class="tl_form" method="post"> <div class="tl_formbody_edit"> <input type="hidden" name="FORM_SUBMIT" value="tl_iso_print_document"> <input type="hidden" name="REQUEST_TOKEN" value="' . REQUEST_TOKEN . '"> <div class="tl_tbox block"> ' . $objSelect->parse() . ' <p class="tl_help">' . $objSelect->description . '</p> </div> </div> <div class="tl_formbody_submit"> <div class="tl_submit_container"> <input type="submit" name="print" id="print" class="tl_submit" alt="" accesskey="s" value="' . specialchars($GLOBALS['TL_LANG']['tl_iso_product_collection']['print']) . '"> </div> </div> </form>'; }