protected function compile() { $this->Template->formId = $this->strFormId; $arrFieldDcas = array('email' => array('label' => &$GLOBALS['TL_LANG']['tl_module']['email'], 'inputType' => 'text', 'eval' => array('rgxp' => 'email', 'mandatory' => true)), 'submit' => array('inputType' => 'submit', 'label' => &$GLOBALS['TL_LANG']['MSC']['cancel'])); $arrWidgets = array(); foreach ($arrFieldDcas as $strName => $arrData) { if ($strClass = $GLOBALS['TL_FFL'][$arrData['inputType']]) { $arrWidgets[] = new $strClass(\Widget::getAttributesFromDca($arrData, $strName)); } } if (\Input::post('FORM_SUBMIT') == $this->strFormId) { // validate foreach ($arrWidgets as $objWidget) { $objWidget->validate(); if ($objWidget->hasErrors()) { $this->blnDoNotSubmit = true; } } if (!$this->blnDoNotSubmit) { // cancel subscription $strEmail = \Input::post('email'); $arrArchives = deserialize($this->iso_cancellationArchives, true); $blnNoSuccess = false; foreach ($arrArchives as $intArchive) { if (($objSubscription = Subscription::findBy(array('email=?', 'pid=?'), array($strEmail, $intArchive))) === null) { if (count($arrArchives) == 1) { $this->Template->error = sprintf($GLOBALS['TL_LANG']['MSC']['iso_subscriptionDoesNotExist'], $strEmail, SubscriptionArchive::findByPk($intArchive)->title); $blnNoSuccess = true; } break; } $objSubscription->delete(); } if (!$blnNoSuccess) { // success message if (count($arrArchives) > 1) { $this->Template->success = $GLOBALS['TL_LANG']['MSC']['iso_subscriptionsCancelledSuccessfully']; } else { $this->Template->success = sprintf($GLOBALS['TL_LANG']['MSC']['iso_subscriptionCancelledSuccessfully'], $strEmail, SubscriptionArchive::findByPk($arrArchives[0])->title); } // redirect if ($this->jumpTo && ($objPageRedirect = \PageModel::findByPk($this->jumpTo)) !== null) { \Controller::redirect(\Controller::generateFrontendUrl($objPageRedirect->row())); } } } } // parse (validated) widgets $this->Template->fields = implode('', array_map(function ($objWidget) { return $objWidget->parse(); }, $arrWidgets)); }
public static function checkForExistingSubscription(Order $objOrder, $objModule) { $strEmail = $objOrder->getBillingAddress()->email; $arrItems = $objOrder->getItems(); foreach ($arrItems as $item) { switch ($objModule->iso_direct_checkout_product_mode) { case 'product_type': $objFieldpalette = FieldPaletteModel::findBy('iso_direct_checkout_product_type', Standard::findAvailableByIdOrAlias($item->product_id)->type); break; default: $objFieldpalette = FieldPaletteModel::findBy('iso_direct_checkout_product', $item->product_id); break; } if ((!$objFieldpalette->iso_addSubscriptionCheckbox || \Input::post('subscribeToProduct_' . $item->product_id)) && $objFieldpalette->iso_addSubscription && $objFieldpalette->iso_subscriptionArchive && ($objSubscriptionArchive = SubscriptionArchive::findByPk($objFieldpalette->iso_subscriptionArchive)) !== null) { if (Subscription::findBy(array('email=?', 'pid=?', 'disable!=?'), array($strEmail, $objSubscriptionArchive->id, 1)) !== null) { $_SESSION['ISO_ERROR'][] = sprintf($GLOBALS['TL_LANG']['MSC']['iso_subscriptionAlreadyExists'], $strEmail, $item->name); return false; } } } return true; }
/** * Backend modules */ HeimrichHannot\HastePlus\Arrays::insertInArrayByName($GLOBALS['BE_MOD']['isotope'], 'iso_rules', array('iso_subscriptions' => array('tables' => array('tl_iso_subscription_archive', 'tl_iso_subscription'), 'icon' => 'system/modules/isotope_subscriptions/assets/img/icon.png', 'export_xls' => \HeimrichHannot\Exporter\ModuleExporter::getBackendModule()))); /** * Frontend modules */ $GLOBALS['FE_MOD']['isotope_subscriptions'] = array('iso_activation' => 'Isotope\\Module\\Activation', 'iso_cancellation' => 'Isotope\\Module\\Cancellation'); /** * Hooks */ $GLOBALS['ISO_HOOKS']['preCheckout']['setCheckoutModuleIdSubscriptions'] = array('Isotope\\IsotopeSubscriptions', 'setCheckoutModuleIdSubscriptions'); $GLOBALS['ISO_HOOKS']['preCheckout']['checkForExistingSubscription'] = array('Isotope\\IsotopeSubscriptions', 'checkForExistingSubscription'); $GLOBALS['ISO_HOOKS']['postCheckout']['addSubscriptions'] = array('Isotope\\IsotopeSubscriptions', 'addSubscriptions'); /** * Notification center notification types */ $arrNotifications =& $GLOBALS['NOTIFICATION_CENTER']['NOTIFICATION_TYPE']['isotope']; $arrNotifications['iso_subscription_activation'] = $arrNotifications['iso_order_status_change']; $arrNotifications['iso_subscription_activation']['email_text'][] = 'link'; /** * Models */ $GLOBALS['TL_MODELS'][\Isotope\Model\Subscription::getTable()] = 'Isotope\\Model\\Subscription'; $GLOBALS['TL_MODELS'][\Isotope\Model\SubscriptionArchive::getTable()] = 'Isotope\\Model\\SubscriptionArchive'; /** * Add permissions */ $GLOBALS['TL_PERMISSIONS'][] = 'subscriptions'; $GLOBALS['TL_PERMISSIONS'][] = 'subscriptionp';