/** * Fill the object's arrProducts array * @param array|null * @return array */ protected function findProducts($arrCacheIds = null) { $t = Product::getTable(); $arrColumns = array(); $arrCategories = $this->findCategories(); $arrProductIds = \Database::getInstance()->query("SELECT pid FROM " . ProductCategory::getTable() . " WHERE page_id IN (" . implode(',', $arrCategories) . ")")->fetchEach('pid'); $arrTypes = \Database::getInstance()->query("SELECT id FROM " . ProductType::getTable() . " WHERE variants='1'")->fetchEach('id'); if (empty($arrProductIds)) { return array(); } list($arrFilters, $arrSorting, $strWhere, $arrValues) = $this->getFiltersAndSorting(); if (!is_array($arrValues)) { $arrValues = array(); } $arrColumns[] = "(\n ({$t}.id IN (" . implode(',', $arrProductIds) . ") AND {$t}.type NOT IN (" . implode(',', $arrTypes) . "))\n OR {$t}.pid IN (" . implode(',', $arrProductIds) . ")\n )"; if (!empty($arrCacheIds) && is_array($arrCacheIds)) { $arrColumns[] = Product::getTable() . ".id IN (" . implode(',', $arrCacheIds) . ")"; } // Apply new/old product filter if ($this->iso_newFilter == 'show_new') { $arrColumns[] = Product::getTable() . ".dateAdded>=" . Isotope::getConfig()->getNewProductLimit(); } elseif ($this->iso_newFilter == 'show_old') { $arrColumns[] = Product::getTable() . ".dateAdded<" . Isotope::getConfig()->getNewProductLimit(); } if ($this->iso_list_where != '') { $arrColumns[] = Haste::getInstance()->call('replaceInsertTags', $this->iso_list_where); } if ($strWhere != '') { $arrColumns[] = $strWhere; } $objProducts = Product::findAvailableBy($arrColumns, $arrValues, array('order' => 'c.sorting', 'filters' => $arrFilters, 'sorting' => $arrSorting)); return null === $objProducts ? array() : $objProducts->getModels(); }
public function initializeWizard($strName, $strLanguage) { if ($strName == 'explain') { $objTypes = ProductType::findAll(); if (null !== $objTypes) { foreach ($objTypes as $objType) { $GLOBALS['TL_LANG']['XPL']['tl_iso_product.type'][$objType->id] = array($objType->name, $objType->description); } } } }
/** * Copy or paste a single variant * @return string */ protected function pasteVariant($objProduct, $table, $row, $arrClipboard) { // Can't copy variant into it's current product if ($table == 'tl_iso_product' && $objProduct->pid == $row['id'] && $arrClipboard['mode'] == 'copy') { return $this->getPasteButton(false); } elseif ($table == 'tl_iso_product' && $row['id'] > 0) { $objType = ProductType::findByPk($row['type']); if (null === $objType || !$objType->hasVariants()) { return $this->getPasteButton(false); } } return $this->getPasteButton(true, $this->addToUrl('act=' . $arrClipboard['mode'] . '&mode=2&pid=' . $row['id']), $table, $row['id']); }
/** * Generate a product label and return it as HTML string * @param array * @param string * @param object * @param array * @return string */ public function generate($row, $label, $dc, $args) { $objProduct = Product::findByPk($row['id']); foreach ($GLOBALS['TL_DCA'][$dc->table]['list']['label']['fields'] as $i => $field) { switch ($field) { // Add an image case 'images': $arrImages = deserialize($objProduct->images); $args[$i] = ' '; if (is_array($arrImages) && !empty($arrImages)) { foreach ($arrImages as $image) { $strImage = 'isotope/' . strtolower(substr($image['src'], 0, 1)) . '/' . $image['src']; if (!is_file(TL_ROOT . '/' . $strImage)) { continue; } $size = @getimagesize(TL_ROOT . '/' . $strImage); $args[$i] = sprintf('<a href="%s" onclick="Backend.openModalImage({\'width\':%s,\'title\':\'%s\',\'url\':\'%s\'});return false"><img src="%s" alt="%s" align="left"></a>', $strImage, $size[0], str_replace("'", "\\'", $objProduct->name), $strImage, \Image::get($strImage, 50, 50, 'proportional'), $image['alt']); break; } } break; case 'name': $args[$i] = $objProduct->name; /** @var \Isotope\Model\ProductType $objProductType */ if ($row['pid'] == 0 && ($objProductType = ProductType::findByPk($row['type'])) !== null && $objProductType->hasVariants()) { // Add a variants link $args[$i] = sprintf('<a href="%s" title="%s">%s</a>', ampersand(\Environment::get('request')) . '&id=' . $row['id'], specialchars($GLOBALS['TL_LANG'][$dc->table]['showVariants']), $args[$i]); } break; case 'price': $objPrice = ProductPrice::findPrimaryByProductId($row['id']); if (null !== $objPrice) { /** @var \Isotope\Model\TaxClass $objTax */ $objTax = $objPrice->getRelated('tax_class'); $strTax = null === $objTax ? '' : ' (' . $objTax->getName() . ')'; $args[$i] = $objPrice->getValueForTier(1) . $strTax; } break; case 'variantFields': $attributes = array(); foreach ($GLOBALS['TL_DCA'][$dc->table]['list']['label']['variantFields'] as $variantField) { $attributes[] = '<strong>' . Format::dcaLabel($dc->table, $variantField) . ':</strong> ' . Format::dcaValue($dc->table, $variantField, $objProduct->{$variantField}); } $args[$i] = ($args[$i] ? $args[$i] . '<br>' : '') . implode(', ', $attributes); break; } } return $args; }
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Table tl_iso_payment */ $GLOBALS['TL_DCA']['tl_iso_payment'] = array('config' => array('dataContainer' => 'Table', 'enableVersioning' => true, 'closed' => true, 'onload_callback' => array(array('Isotope\\Backend', 'initializeSetupModule'), array('Isotope\\Backend\\Payment\\Callback', 'checkPermission'), array('Isotope\\Backend\\Payment\\Callback', 'loadShippingModules')), 'sql' => array('keys' => array('id' => 'primary'))), 'list' => array('sorting' => array('mode' => 1, 'fields' => array('name'), 'flag' => 1, 'panelLayout' => 'sort,filter;search,limit'), 'label' => array('fields' => array('name', 'type'), 'format' => '%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>'), 'global_operations' => array('back' => array('label' => &$GLOBALS['TL_LANG']['MSC']['backBT'], 'href' => 'mod=&table=', 'class' => 'header_back', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'new' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new'], 'href' => 'act=create', 'class' => 'header_new', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['copy'], 'href' => 'act=copy', 'icon' => 'copy.gif', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'copyPaymentModule')), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'deletePaymentModule')), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset();return AjaxRequest.toggleVisibility(this,%s)"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'toggleIcon')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('__selector__' => array('type', 'protected'), 'default' => '{type_legend},name,label,type', 'cash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'paybyway' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},paybyway_merchant_id,paybyway_private_key;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'paypal' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},paypal_account;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'postfinance' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'viveum' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'datatrans' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,trans_type,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},datatrans_id,datatrans_sign;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sparkasse' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},sparkasse_paymentmethod,trans_type,sparkasse_sslmerchant,sparkasse_sslpassword,sparkasse_merchantref;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sofortueberweisung' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,sofortueberweisung_user_id,sofortueberweisung_project_id,sofortueberweisung_project_password;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'saferpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},saferpay_accountid,trans_type,saferpay_description,saferpay_vtconfig,saferpay_paymentmethods;{price_legend:hide},price,tax_class;{enabled_legend},enabled', 'billpay_saferpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},saferpay_accountid,trans_type,saferpay_description,saferpay_vtconfig,saferpay_paymentmethods;{price_legend:hide},price,tax_class;{enabled_legend},enabled', 'expercash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},expercash_popupId,expercash_profile,expercash_popupKey,expercash_paymentMethod;{price_legend:hide},price,tax_class;{template_legend},expercash_css;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'epay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,epay_windowstate,epay_merchantnumber,epay_secretkey;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'payone' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,payone_clearingtype,payone_aid,payone_portalid,payone_key;{price_legend:hide},price,tax_class;{enabled_legend},debug,enabled', 'worldpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},worldpay_instId,worldpay_callbackPW,worldpay_signatureFields,worldpay_md5secret,worldpay_description;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled'), 'subpalettes' => array('protected' => 'groups'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['name'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'label' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['label'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['type'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'default' => 'cash', 'options_callback' => function () { return \Isotope\Model\Payment::getModelTypeOptions(); }, 'eval' => array('includeBlankOption' => true, 'helpwizard' => true, 'submitOnChange' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'note' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['note'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('rte' => 'tinyMCE'), 'sql' => "text NULL"), 'new_order_status' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new_order_status'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\OrderStatus::getTable() . '.name', 'options_callback' => array('\\Isotope\\Backend', 'getOrderStatus'), 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['price'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 16, 'rgxp' => 'surcharge', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'tax_class' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['tax_class'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'options_callback' => array('\\Isotope\\Model\\TaxClass', 'getOptionsWithSplit'), 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'allowed_cc_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['allowed_cc_types'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'options_callback' => array('Isotope\\Backend\\Payment\\Callback', 'getAllowedCCTypes'), 'eval' => array('multiple' => true, 'tl_class' => 'clr'), 'sql' => "text NULL"), 'trans_type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['trans_type'], 'exclude' => true, 'default' => 'capture', 'inputType' => 'select', 'options' => array('capture', 'auth'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50', 'helpwizard' => true), 'reference' => $GLOBALS['TL_LANG']['tl_iso_payment'], 'sql' => "varchar(8) NOT NULL default ''"), 'minimum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['minimum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'clr w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'maximum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['maximum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'countries' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['countries'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function () { return \System::getCountries(); }, 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'shipping_modules' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['shipping_modules'], 'exclude' => true, 'inputType' => 'select', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'product_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['product_types'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'product_types_condition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['product_types_condition'], 'exclude' => true, 'inputType' => 'select', 'options' => array('onlyAvailable', 'allAvailable', 'oneAvailable'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'config_ids' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['config_ids'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\Config::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'paybyway_merchant_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paybyway_merchant_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'"), 'paybyway_private_key' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paybyway_private_key'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'paypal_account' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paypal_account'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'rgxp' => 'email', 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_pspid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_pspid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_http_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_http_method'], 'exclude' => true, 'inputType' => 'select', 'default' => 'POST', 'options' => array('POST', 'GET'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(4) NOT NULL default ''"), 'psp_hash_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'exclude' => true, 'default' => 'sha1', 'inputType' => 'select', 'options' => array('sha1', 'sha256', 'sha512'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'psp_hash_in' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_in'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_hash_out' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_out'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_dynamic_template' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_dynamic_template'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 128, 'rgxp' => 'url', 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'datatrans_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 100, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'datatrans_sign' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_sign'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'sparkasse_paymentmethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('creditcard', 'maestro', 'directdebit'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'sparkasse_sslmerchant' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslmerchant'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sparkasse_sslpassword' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslpassword'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'sparkasse_merchantref' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_merchantref'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'decodeEntities' => true, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'sofortueberweisung_user_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_user_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_password' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_password'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_accountid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_accountid'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'saferpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_description'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_vtconfig' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_vtconfig'], 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_paymentmethods' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_paymentmethods'], 'inputType' => 'select', 'options' => array(1 => 'MasterCard', 2 => 'Visa', 3 => 'American Express', 4 => 'Diners Club', 5 => 'JCB', 6 => 'Saferpay Testkarte', 7 => 'Laser Card', 8 => 'Bonus Card', 9 => 'PostFinance E-Finance', 10 => 'PostFinance Card', 11 => 'Maestro International', 12 => 'MyOne', 13 => 'Lastschrift', 14 => 'Rechnung', 15 => 'Sofortüberweisung', 16 => 'PayPal', 17 => 'giropay', 18 => 'iDEAL', 19 => 'ClickandBuy', 20 => 'Homebanking AT (eps)', 21 => 'Mpass', 22 => 'ePrzelewy'), 'eval' => array('multiple' => true, 'size' => 5, 'chosen' => true, 'csv' => ',', 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'expercash_popupId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'expercash_profile' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_profile'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 3, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(3) NOT NULL default '0'"), 'expercash_popupKey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupKey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 32, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_paymentMethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('automatic_payment_method', 'elv_buy', 'elv_authorize', 'cc_buy', 'cc_authorize', 'giropay', 'sofortueberweisung'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_css' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_css'], 'exclude' => true, 'inputType' => 'fileTree', 'eval' => array('fieldType' => 'radio', 'files' => true, 'filesOnly' => true, 'extensions' => 'css', 'tl_class' => 'clr'), 'sql' => "binary(16) NULL"), 'epay_windowstate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_windowstate'], 'exclude' => true, 'default' => '3', 'inputType' => 'select', 'options' => array('3', '4'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_windowstate_options'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "char(1) NOT NULL default ''"), 'epay_merchantnumber' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_merchantnumber'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'epay_secretkey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_secretkey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'payone_clearingtype' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_clearingtype'], 'exclude' => true, 'inputType' => 'select', 'options' => array('elv', 'cc', 'dc', 'vor', 'rec', 'sb', 'wlt'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone'], 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "varchar(3) NOT NULL default ''"), 'payone_aid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_aid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'payone_portalid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_portalid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 7, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(7) NOT NULL default ''"), 'payone_key' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_key'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_instId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_instId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(6) NOT NULL default '0'"), 'worldpay_callbackPW' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_callbackPW'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'worldpay_signatureFields' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_signatureFields'], 'exclude' => true, 'default' => 'instId:cartId:amount:currency', 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_md5secret' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_md5secret'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_description'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'requireCCV' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['requireCCV'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'guests' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['guests'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'protected' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['protected'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['groups'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('multiple' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'debug' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['debug'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'enabled' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['enabled'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''")));
/** * Generate query string for native filters * * @param array $arrFilters */ private function buildSqlFilters(array $arrFilters) { $strWhere = ''; $arrWhere = array(); $arrValues = array(); $arrGroups = array(); // Initiate native SQL filtering /** @var \Isotope\RequestCache\Filter $objFilter */ foreach ($arrFilters as $k => $objFilter) { if ($objFilter->hasGroup() && $arrGroups[$objFilter->getGroup()] !== false) { if ($objFilter->isDynamicAttribute()) { $arrGroups[$objFilter->getGroup()] = false; } else { $arrGroups[$objFilter->getGroup()][] = $k; } } elseif (!$objFilter->hasGroup() && !$objFilter->isDynamicAttribute()) { $arrWhere[] = $objFilter->sqlWhere(); $arrValues[] = $objFilter->sqlValue(); unset($arrFilters[$k]); } } if (!empty($arrGroups)) { foreach ($arrGroups as $arrGroup) { $arrGroupWhere = array(); // Skip dynamic attributes if (false === $arrGroup) { continue; } foreach ($arrGroup as $k) { $objFilter = $arrFilters[$k]; $arrGroupWhere[] = $objFilter->sqlWhere(); $arrValues[] = $objFilter->sqlValue(); unset($arrFilters[$k]); } $arrWhere[] = '(' . implode(' OR ', $arrGroupWhere) . ')'; } } if (!empty($arrWhere)) { $strWhere = implode(' AND ', $arrWhere); if (ProductType::countByVariants() > 0) { $time = \Date::floorToMinute(); $t = Product::getTable(); $protected = ''; if (BE_USER_LOGGED_IN === true) { $protected = "\n AND {$t}.published='1'\n AND ({$t}.start='' OR {$t}.start<'{$time}')\n AND ({$t}.stop='' OR {$t}.stop>'" . ($time + 60) . "')"; } $strWhere = "\n (\n ({$strWhere})\n OR {$t}.id IN (\n SELECT {$t}.pid\n FROM tl_iso_product AS {$t}\n WHERE {$t}.language='' AND " . implode(' AND ', $arrWhere) . "\n {$protected}\n )\n OR {$t}.pid IN (\n SELECT {$t}.id\n FROM tl_iso_product AS {$t}\n WHERE {$t}.language='' AND " . implode(' AND ', $arrWhere) . "\n {$protected}\n )\n )\n "; $arrValues = array_merge($arrValues, $arrValues, $arrValues); } } $this->filters = $arrFilters; $this->sqlWhere = $strWhere; $this->sqlValues = $arrValues; }
* * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ \System::loadLanguageFile(\Isotope\Model\Group::getTable()); /** * Extend tl_user palettes */ $GLOBALS['TL_DCA']['tl_user']['palettes']['extend'] = str_replace('{account_legend}', '{isotope_legend},iso_modules,iso_product_types,iso_product_typep,iso_payment_modules,iso_payment_modulep,iso_shipping_modules,iso_shipping_modulep,iso_tax_classes,iso_tax_classp,iso_tax_rates,iso_tax_ratep,iso_configs,iso_configp,iso_groups,iso_groupp;{account_legend}', $GLOBALS['TL_DCA']['tl_user']['palettes']['extend']); $GLOBALS['TL_DCA']['tl_user']['palettes']['custom'] = str_replace('{account_legend}', '{isotope_legend},iso_modules,iso_product_types,iso_product_typep,iso_payment_modules,iso_payment_modulep,iso_shipping_modules,iso_shipping_modulep,iso_tax_classes,iso_tax_classp,iso_tax_rates,iso_tax_ratep,iso_configs,iso_configp,iso_groups,iso_groupp;{account_legend}', $GLOBALS['TL_DCA']['tl_user']['palettes']['custom']); /** * Add fields to tl_user */ $GLOBALS['TL_DCA']['tl_user']['fields']['iso_modules'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_modules'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'options_callback' => array('Isotope\\Backend', 'getIsotopeModules'), 'reference' => &$GLOBALS['TL_LANG']['IMD'], 'eval' => array('multiple' => true, 'helpwizard' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_product_types'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_product_types'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('multiple' => true, 'helpwizard' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_product_typep'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_product_typep'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_payment_modules'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_payment_modules'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\Payment::getTable() . '.name', 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_payment_modulep'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_payment_modulep'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_shipping_modules'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_shipping_modules'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\Shipping::getTable() . '.name', 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_shipping_modulep'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_shipping_modulep'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_tax_classes'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_tax_classes'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_tax_classp'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_tax_classp'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_tax_rates'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_tax_rates'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\TaxRate::getTable() . '.name', 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_tax_ratep'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_tax_ratep'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_configs'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_configs'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\Config::getTable() . '.name', 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_configp'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_configp'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_groups'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_groups'], 'exclude' => true, 'inputType' => 'checkbox', 'options_callback' => array('\\Isotope\\Backend\\User\\Callback', 'getGroups'), 'eval' => array('multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => 'blob NULL'); $GLOBALS['TL_DCA']['tl_user']['fields']['iso_groupp'] = array('label' => &$GLOBALS['TL_LANG']['tl_user']['iso_groupp'], 'exclude' => true, 'inputType' => 'checkbox', 'options' => array('create', 'delete', 'rootPaste'), 'reference' => &$GLOBALS['TL_LANG']['MSC'], 'eval' => array('multiple' => true, 'tl_class' => 'w50 w50h'), 'sql' => 'blob NULL');
protected function compile() { $periodFactory = new PeriodFactory(); $arrSession = \Session::getInstance()->get('iso_reports'); $strPeriod = (string) $arrSession[$this->name]['period']; $intColumns = (int) $arrSession[$this->name]['columns']; $blnVariants = (bool) $arrSession[$this->name]['variants']; $intStatus = (int) $arrSession[$this->name]['iso_status']; if ($arrSession[$this->name]['from'] == '') { $intStart = strtotime('-' . ($intColumns - 1) . ' ' . $strPeriod); } else { $intStart = (int) $arrSession[$this->name]['from']; } $period = $periodFactory->create($strPeriod); $intStart = $period->getPeriodStart($intStart); $dateFrom = $period->getKey($intStart); $dateTo = $period->getKey(strtotime('+ ' . ($intColumns - 1) . ' ' . $strPeriod, $intStart)); $arrData = array('rows' => array()); $arrData['header'] = $this->getHeader($period, $intStart, $intColumns); $groupVariants = $blnVariants ? 'p1.id' : 'IF(p1.pid=0, p1.id, p1.pid)'; $objProducts = \Database::getInstance()->query("\n SELECT\n IFNULL({$groupVariants}, i.product_id) AS product_id,\n IFNULL(p1.name, i.name) AS variant_name,\n IFNULL(p2.name, i.name) AS product_name,\n p1.sku AS product_sku,\n p2.sku AS variant_sku,\n IF(p1.pid=0, p1.type, p2.type) AS type,\n i.configuration AS product_configuration,\n SUM(i.quantity) AS quantity,\n SUM(i.tax_free_price * i.quantity) AS total,\n " . $period->getSqlField($this->strDateField) . " AS dateGroup\n FROM " . ProductCollectionItem::getTable() . " i\n LEFT JOIN " . ProductCollection::getTable() . " o ON i.pid=o.id\n LEFT JOIN " . OrderStatus::getTable() . " os ON os.id=o.order_status\n LEFT OUTER JOIN " . Product::getTable() . " p1 ON i.product_id=p1.id\n LEFT OUTER JOIN " . Product::getTable() . " p2 ON p1.pid=p2.id\n WHERE o.type='order' AND o.order_status>0 AND o.locked!=''\n " . ($intStatus > 0 ? " AND o.order_status=" . $intStatus : '') . "\n " . $this->getProductProcedure('p1') . "\n " . $this->getConfigProcedure('o', 'config_id') . "\n GROUP BY dateGroup, product_id\n HAVING dateGroup>={$dateFrom} AND dateGroup<={$dateTo}\n "); // Cache product types so call to findByPk() will trigger the registry ProductType::findMultipleByIds($objProducts->fetchEach('type')); $arrRaw = array(); $objProducts->reset(); // Prepare product data while ($objProducts->next()) { $arrAttributes = array(); $arrVariantAttributes = array(); $blnHasVariants = false; // Can't use it without a type if ($objProducts->type > 0 && ($objType = ProductType::findByPk($objProducts->type)) !== null) { /** @type ProductType $objType */ $arrAttributes = $objType->getAttributes(); $arrVariantAttributes = $objType->getVariantAttributes(); $blnHasVariants = $objType->hasVariants(); $product_type_name = $objType->name; } $arrOptions = array('name' => $objProducts->variant_name); // Use product title if name is not a variant attribute if ($blnHasVariants && !in_array('name', $arrVariantAttributes)) { $arrOptions['name'] = $objProducts->product_name; } $strSku = $blnHasVariants ? $objProducts->variant_sku : $objProducts->product_sku; if (in_array('sku', $arrAttributes) && $strSku != '') { $arrOptions['name'] = sprintf('%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>', $arrOptions['name'], $strSku); } if ($blnVariants && $blnHasVariants) { if (in_array('sku', $arrVariantAttributes) && $objProducts->product_sku != '') { $arrOptions['name'] = sprintf('%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>', $arrOptions['name'], $objProducts->product_sku); } foreach (deserialize($objProducts->product_configuration, true) as $strName => $strValue) { if (isset($GLOBALS['TL_DCA']['tl_iso_product']['fields'][$strName])) { $strValue = $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$strName]['options'][$strValue] ? $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$strName]['options'][$strValue] : $strValue; $strName = $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$strName]['label'][0] ? $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$strName]['label'][0] : $strName; } $arrOptions[] = '<span class="variant">' . $strName . ': ' . $strValue . '</span>'; } } $arrOptions['name'] = '<span class="product">' . $arrOptions['name'] . '</span>'; $arrRaw[$objProducts->product_id]['name'] = implode('<br>', $arrOptions); $arrRaw[$objProducts->product_id]['product_type_name'] = $product_type_name; $arrRaw[$objProducts->product_id][$objProducts->dateGroup] = (double) $arrRaw[$objProducts->product_id][$objProducts->dateGroup] + (double) $objProducts->total; $arrRaw[$objProducts->product_id][$objProducts->dateGroup . '_quantity'] = (int) $arrRaw[$objProducts->product_id][$objProducts->dateGroup . '_quantity'] + (int) $objProducts->quantity; $arrRaw[$objProducts->product_id]['total'] = (double) $arrRaw[$objProducts->product_id]['total'] + (double) $objProducts->total; $arrRaw[$objProducts->product_id]['quantity'] = (int) $arrRaw[$objProducts->product_id]['quantity'] + (int) $objProducts->quantity; } // Prepare columns $arrColumns = array(); for ($i = 0; $i < $intColumns; $i++) { $arrColumns[] = $period->getKey($intStart); $intStart = $period->getNext($intStart); } $arrFooter = array(); // Sort the data if ($arrSession[$this->name]['tl_sort'] == 'product_name') { usort($arrRaw, function ($a, $b) { return strcasecmp($a['name'], $b['name']); }); } else { usort($arrRaw, function ($a, $b) { return $a['total'] == $b['total'] ? 0 : ($a['total'] < $b['total'] ? 1 : -1); }); } // Generate data foreach ($arrRaw as $arrProduct) { $arrRow = array(array('value' => array($arrProduct['name'], sprintf('<span style="color:#b3b3b3;">[%s]</span>', $arrProduct['product_type_name'])))); $arrFooter[0] = array('value' => $GLOBALS['TL_LANG']['ISO_REPORT']['sums']); foreach ($arrColumns as $i => $column) { $arrRow[$i + 1] = array('value' => Isotope::formatPriceWithCurrency($arrProduct[$column]) . ($arrProduct[$column . '_quantity'] !== null ? '<br><span class="variant">' . Isotope::formatItemsString($arrProduct[$column . '_quantity']) . '</span>' : '')); $arrFooter[$i + 1] = array('total' => $arrFooter[$i + 1]['total'] + $arrProduct[$column], 'quantity' => $arrFooter[$i + 1]['quantity'] + $arrProduct[$column . '_quantity']); } $arrRow[$i + 2] = array('value' => Isotope::formatPriceWithCurrency($arrProduct['total']) . ($arrProduct['quantity'] !== null ? '<br><span class="variant">' . Isotope::formatItemsString($arrProduct['quantity']) . '</span>' : '')); $arrFooter[$i + 2] = array('total' => $arrFooter[$i + 2]['total'] + $arrProduct['total'], 'quantity' => $arrFooter[$i + 2]['quantity'] + $arrProduct['quantity']); $arrData['rows'][] = array('columns' => $arrRow); } for ($i = 1; $i < count($arrFooter); $i++) { $arrFooter[$i]['value'] = Isotope::formatPriceWithCurrency($arrFooter[$i]['total']) . '<br><span class="variant">' . Isotope::formatItemsString($arrFooter[$i]['quantity']) . '</span>'; unset($arrFooter[$i]['total']); } $arrData['footer'] = $arrFooter; $this->Template->data = $arrData; }
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Table tl_iso_group */ $GLOBALS['TL_DCA']['tl_iso_group'] = array('config' => array('dataContainer' => 'Table', 'label' => &$GLOBALS['TL_LANG']['tl_iso_group']['label'], 'backlink' => \Input::get('popup') ? null : 'do=iso_products', 'enableVersioning' => true, 'onload_callback' => array(array('Isotope\\Backend\\Group\\Callback', 'checkPermission')), 'ondelete_callback' => array(array('Isotope\\Backend\\Group\\Callback', 'deleteGroup')), 'sql' => array('keys' => array('id' => 'primary', 'pid' => 'index'))), 'list' => array('sorting' => array('mode' => 5, 'fields' => array('sorting'), 'flag' => 1, 'icon' => 'system/modules/isotope/assets/images/folders.png'), 'label' => array('fields' => array('name'), 'format' => '%s', 'label_callback' => array('Isotope\\Backend\\Group\\Callback', 'addIcon')), 'global_operations' => array('all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['edit'], 'href' => 'table=tl_iso_group&act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['copy'], 'href' => 'table=tl_iso_group&act=paste&mode=copy', 'icon' => 'copy.gif', 'attributes' => 'onclick="Backend.getScrollOffset()"', 'button_callback' => array('Isotope\\Backend\\Group\\Callback', 'copyButton')), 'copyChilds' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['copyChilds'], 'href' => 'table=tl_iso_group&act=paste&mode=copy&childs=1', 'icon' => 'copychilds.gif', 'attributes' => 'onclick="Backend.getScrollOffset()"', 'button_callback' => array('Isotope\\Backend\\Group\\Callback', 'copyButton')), 'cut' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['cut'], 'href' => 'table=tl_iso_group&act=paste&mode=cut', 'icon' => 'cut.gif', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['delete'], 'href' => 'table=tl_iso_group&act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Group\\Callback', 'deleteButton')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('default' => '{group_legend},name,product_type;'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'pid' => array('foreignKey' => 'tl_iso_group.name', 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type' => 'belongsTo', 'load' => 'lazy')), 'sorting' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['name'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'product_type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_group']['product_type'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'options_callback' => array('Isotope\\Backend\\ProductType\\Callback', 'getOptions'), 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'eager'))));
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Table tl_iso_payment */ $GLOBALS['TL_DCA']['tl_iso_payment'] = array('config' => array('dataContainer' => 'Table', 'enableVersioning' => true, 'closed' => true, 'onload_callback' => array(array('Isotope\\Backend', 'initializeSetupModule'), array('Isotope\\Backend\\Payment\\Callback', 'checkPermission'), array('Isotope\\Backend\\Payment\\Callback', 'loadShippingModules')), 'sql' => array('keys' => array('id' => 'primary'))), 'list' => array('sorting' => array('mode' => 1, 'fields' => array('name'), 'flag' => 1, 'panelLayout' => 'sort,filter;search,limit'), 'label' => array('fields' => array('name', 'type'), 'format' => '%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>'), 'global_operations' => array('back' => array('label' => &$GLOBALS['TL_LANG']['MSC']['backBT'], 'href' => 'mod=&table=', 'class' => 'header_back', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'new' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new'], 'href' => 'act=create', 'class' => 'header_new', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['copy'], 'href' => 'act=copy', 'icon' => 'copy.gif', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'copyPaymentModule')), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'deletePaymentModule')), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset();return AjaxRequest.toggleVisibility(this,%s)"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'toggleIcon')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('__selector__' => array('type', 'protected'), 'default' => '{type_legend},name,label,type', 'cash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'paybyway' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},paybyway_merchant_id,paybyway_private_key;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'paypal' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},paypal_account;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'postfinance' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template,psp_payment_method;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'viveum' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'datatrans' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,trans_type,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},datatrans_id,datatrans_sign;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'innopay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},vads_site_id,vads_certificate;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sparkasse' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},sparkasse_paymentmethod,trans_type,sparkasse_sslmerchant,sparkasse_sslpassword,sparkasse_merchantref;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sofortueberweisung' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,sofortueberweisung_user_id,sofortueberweisung_project_id,sofortueberweisung_project_password;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'saferpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},saferpay_accountid,trans_type,saferpay_description,saferpay_vtconfig,saferpay_paymentmethods;{price_legend:hide},price,tax_class;{enabled_legend},enabled', 'billpay_saferpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},saferpay_accountid,trans_type,saferpay_description,saferpay_vtconfig,saferpay_paymentmethods;{price_legend:hide},price,tax_class;{enabled_legend},enabled', 'expercash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},expercash_popupId,expercash_profile,expercash_popupKey,expercash_paymentMethod;{price_legend:hide},price,tax_class;{template_legend},expercash_css;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'epay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,epay_windowstate,epay_merchantnumber,epay_secretkey;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'payone' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},trans_type,payone_clearingtype,payone_aid,payone_portalid,payone_key;{price_legend:hide},price,tax_class;{enabled_legend},debug,enabled', 'worldpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},worldpay_instId,worldpay_callbackPW,worldpay_signatureFields,worldpay_md5secret,worldpay_description;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'quickpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,trans_type,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,countries,shipping_modules,product_types,product_types_condition,config_ids;{gateway_legend},quickpay_merchantId,quickpay_agreementId,quickpay_apiKey,quickpay_privateKey,quickpay_paymentMethods;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled'), 'subpalettes' => array('protected' => 'groups'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['name'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'label' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['label'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['type'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'default' => 'cash', 'options_callback' => function () { return \Isotope\Model\Payment::getModelTypeOptions(); }, 'eval' => array('includeBlankOption' => true, 'helpwizard' => true, 'submitOnChange' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'note' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['note'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('rte' => 'tinyMCE'), 'sql' => "text NULL"), 'new_order_status' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new_order_status'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\OrderStatus::getTable() . '.name', 'options_callback' => array('\\Isotope\\Backend', 'getOrderStatus'), 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['price'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 16, 'rgxp' => 'surcharge', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'tax_class' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['tax_class'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'options_callback' => array('\\Isotope\\Model\\TaxClass', 'getOptionsWithSplit'), 'eval' => array('includeBlankOption' => true, 'blankOptionLabel' => &$GLOBALS['TL_LANG']['MSC']['taxFree'], 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'allowed_cc_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['allowed_cc_types'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'options_callback' => array('Isotope\\Backend\\Payment\\Callback', 'getAllowedCCTypes'), 'eval' => array('multiple' => true, 'tl_class' => 'clr'), 'sql' => "text NULL"), 'trans_type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['trans_type'], 'exclude' => true, 'default' => 'capture', 'inputType' => 'select', 'options' => array('capture', 'auth'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50', 'helpwizard' => true), 'reference' => $GLOBALS['TL_LANG']['tl_iso_payment'], 'sql' => "varchar(8) NOT NULL default ''"), 'minimum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['minimum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'clr w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'maximum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['maximum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'quantity_mode' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quantity_mode'], 'exclude' => true, 'inputType' => 'select', 'options' => array('cart_items', 'cart_products'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quantity_mode'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'minimum_quantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['minimum_quantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'clr w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'maximum_quantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['maximum_quantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'countries' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['countries'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function () { return \System::getCountries(); }, 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'shipping_modules' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['shipping_modules'], 'exclude' => true, 'inputType' => 'select', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'product_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['product_types'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'product_types_condition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['product_types_condition'], 'exclude' => true, 'inputType' => 'select', 'options' => array('onlyAvailable', 'allAvailable', 'oneAvailable'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'config_ids' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['config_ids'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\Config::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'paybyway_merchant_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paybyway_merchant_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'"), 'paybyway_private_key' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paybyway_private_key'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'paypal_account' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paypal_account'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'rgxp' => 'email', 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_pspid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_pspid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_http_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_http_method'], 'exclude' => true, 'inputType' => 'select', 'default' => 'POST', 'options' => array('POST', 'GET'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(4) NOT NULL default ''"), 'psp_hash_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'exclude' => true, 'default' => 'sha1', 'inputType' => 'select', 'options' => array('sha1', 'sha256', 'sha512'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'psp_hash_in' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_in'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_hash_out' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_out'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_dynamic_template' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_dynamic_template'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 128, 'rgxp' => 'url', 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_payment_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_payment_method'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function ($dc) { $payment = \Isotope\Model\Payment::findByPk($dc->id); if ($payment === null || !$payment instanceof \Isotope\Model\Payment\PSP) { return array(); } return $payment->getPaymentMethods(); }, 'eval' => array('includeBlankOption' => true, 'tl_class' => 'clr'), 'sql' => "varchar(128) NOT NULL default ''"), 'datatrans_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'datatrans_sign' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_sign'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'vads_site_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['vads_site_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 8, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(8) NOT NULL default ''"), 'vads_certificate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['vads_certificate'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sparkasse_paymentmethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('creditcard', 'maestro', 'directdebit'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'sparkasse_sslmerchant' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslmerchant'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sparkasse_sslpassword' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslpassword'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'sparkasse_merchantref' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_merchantref'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'decodeEntities' => true, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'sofortueberweisung_user_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_user_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_password' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_password'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_accountid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_accountid'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'saferpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_description'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_vtconfig' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_vtconfig'], 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_paymentmethods' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_paymentmethods'], 'inputType' => 'select', 'options' => array(1 => 'MasterCard', 2 => 'Visa', 3 => 'American Express', 4 => 'Diners Club', 5 => 'JCB', 6 => 'Saferpay Testkarte', 7 => 'Laser Card', 8 => 'Bonus Card', 9 => 'PostFinance E-Finance', 10 => 'PostFinance Card', 11 => 'Maestro International', 12 => 'MyOne', 13 => 'Lastschrift', 14 => 'Rechnung', 15 => 'Sofortüberweisung', 16 => 'PayPal', 17 => 'giropay', 18 => 'iDEAL', 19 => 'ClickandBuy', 20 => 'Homebanking AT (eps)', 21 => 'Mpass', 22 => 'ePrzelewy'), 'eval' => array('multiple' => true, 'size' => 5, 'chosen' => true, 'csv' => ',', 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'expercash_popupId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'expercash_profile' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_profile'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 3, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(3) NOT NULL default '0'"), 'expercash_popupKey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupKey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 32, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_paymentMethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('automatic_payment_method', 'elv_buy', 'elv_authorize', 'cc_buy', 'cc_authorize', 'giropay', 'sofortueberweisung'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_css' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_css'], 'exclude' => true, 'inputType' => 'fileTree', 'eval' => array('fieldType' => 'radio', 'files' => true, 'filesOnly' => true, 'extensions' => 'css', 'tl_class' => 'clr'), 'sql' => "binary(16) NULL"), 'epay_windowstate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_windowstate'], 'exclude' => true, 'default' => '3', 'inputType' => 'select', 'options' => array('3', '4'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_windowstate_options'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "char(1) NOT NULL default ''"), 'epay_merchantnumber' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_merchantnumber'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'epay_secretkey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['epay_secretkey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'payone_clearingtype' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_clearingtype'], 'exclude' => true, 'inputType' => 'select', 'options' => array('elv', 'cc', 'dc', 'vor', 'rec', 'sb', 'wlt', 'fnc'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone'], 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "varchar(3) NOT NULL default ''"), 'payone_aid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_aid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'payone_portalid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_portalid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 7, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(7) NOT NULL default ''"), 'payone_key' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_key'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_instId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_instId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(6) NOT NULL default '0'"), 'worldpay_callbackPW' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_callbackPW'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'worldpay_signatureFields' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_signatureFields'], 'exclude' => true, 'default' => 'instId:cartId:amount:currency', 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_md5secret' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_md5secret'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'worldpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_description'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'quickpay_merchantId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quickpay_merchantId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgpx' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) NULL"), 'quickpay_agreementId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quickpay_agreementId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'rgpx' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) NULL"), 'quickpay_apiKey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quickpay_apiKey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'quickpay_privateKey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quickpay_privateKey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'quickpay_paymentMethods' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['quickpay_paymentMethods'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('decodeEntities' => true, 'tl_class' => 'clr long'), 'sql' => "text NULL"), 'requireCCV' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['requireCCV'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'guests' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['guests'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'protected' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['protected'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['groups'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('multiple' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'debug' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['debug'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'enabled' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['enabled'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''")));
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ \System::loadLanguageFile(\Isotope\Model\ProductType::getTable()); /** * Table tl_iso_product */ $GLOBALS['TL_DCA']['tl_iso_product'] = array('config' => array('label' => &$GLOBALS['TL_LANG']['MOD']['iso_products'][0], 'dataContainer' => 'ProductData', 'enableVersioning' => true, 'switchToEdit' => true, 'ctable' => array(\Isotope\Model\Download::getTable(), \Isotope\Model\ProductCategory::getTable(), \Isotope\Model\ProductPrice::getTable(), \Isotope\Model\AttributeOption::getTable()), 'onload_callback' => array(array('Isotope\\Backend\\Product\\DcaManager', 'load'), array('Isotope\\Backend\\Product\\Permission', 'check'), array('Isotope\\Backend\\Product\\Panel', 'applyAdvancedFilters'), array('Isotope\\Backend\\Product\\XmlSitemap', 'generate')), 'oncreate_callback' => array(array('Isotope\\Backend\\Product\\DcaManager', 'updateNewRecord')), 'oncopy_callback' => array(array('Isotope\\Backend\\Product\\Category', 'updateSorting'), array('Isotope\\Backend\\Product\\DcaManager', 'updateDateAdded')), 'onsubmit_callback' => array(array('Isotope\\Backend', 'truncateProductCache'), array('Isotope\\Backend\\Product\\XmlSitemap', 'scheduleUpdate')), 'onversion_callback' => array(array('Isotope\\Backend\\Product\\Category', 'createVersion')), 'onrestore_callback' => array(array('Isotope\\Backend\\Product\\Category', 'restoreVersion')), 'sql' => array('keys' => array('id' => 'primary', 'gid' => 'index', 'pid,language' => 'index', 'language,published,start,stop,pid' => 'index', 'start' => 'index'))), 'select' => array('buttons_callback' => array(array('Isotope\\Backend\\Product\\Button', 'forSelect'))), 'list' => array('sorting' => array('mode' => 2, 'fields' => array('name'), 'headerFields' => array('name', 'sku', 'price', 'published'), 'flag' => 1, 'panelLayout' => 'iso_buttons,iso_filter;filter;sort,iso_sorting,search,limit', 'icon' => 'system/modules/isotope/assets/images/store-open.png', 'paste_button_callback' => array('Isotope\\Backend\\Product\\PasteButton', 'generate'), 'panel_callback' => array('iso_buttons' => array('Isotope\\Backend\\Product\\Panel', 'generateFilterButtons'), 'iso_filter' => array('Isotope\\Backend\\Product\\Panel', 'generateAdvancedFilters'), 'iso_sorting' => array('Isotope\\Backend\\Product\\Panel', 'generateSortingIcon'))), 'label' => array('fields' => array('images', 'name', 'sku', 'price'), 'showColumns' => true, 'label_callback' => array('Isotope\\Backend\\Product\\Label', 'generate')), 'global_operations' => array('generate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['generate'], 'href' => 'key=generate', 'icon' => 'new.gif'), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['product_groups'], 'href' => 'table=' . \Isotope\Model\Group::getTable(), 'icon' => 'system/modules/isotope/assets/images/folders.png', 'attributes' => 'onclick="Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forGroups')), 'import' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['import'], 'href' => 'key=import', 'icon' => 'system/modules/isotope/assets/images/image--plus.png', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['copy'], 'href' => 'act=copy&childs=1', 'icon' => 'copy.gif', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forCopy')), 'cut' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['cut'], 'href' => 'act=cut', 'icon' => 'cut.gif', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forCut')), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forDelete')), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset(); return AjaxRequest.toggleVisibility(this, %s);"', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forVisibilityToggle')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['show'], 'href' => 'act=show', 'icon' => 'show.gif'), 'break' => array('button_callback' => function () { return '<br>'; }), 'variants' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['variants'], 'href' => '', 'icon' => 'system/modules/isotope/assets/images/table--pencil.png', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forVariants')), 'related' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['related'], 'href' => 'table=' . \Isotope\Model\RelatedProduct::getTable(), 'icon' => 'system/modules/isotope/assets/images/sitemap.png', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forRelated')), 'downloads' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['downloads'], 'href' => 'table=' . \Isotope\Model\Download::getTable(), 'icon' => 'system/modules/isotope/assets/images/paper-clip.png', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forDownloads')), 'group' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['group'], 'href' => 'act=cut', 'icon' => 'system/modules/isotope/assets/images/folder-network.png', 'button_callback' => array('Isotope\\Backend\\Product\\Button', 'forGroup')))), 'palettes' => array('__selector__' => array('type', 'protected'), 'default' => '{general_legend},type'), 'subpalettes' => array('protected' => 'groups'), 'fields' => array('id' => array('attributes' => array('systemColumn' => true), 'sql' => "int(10) unsigned NOT NULL auto_increment"), 'pid' => array('eval' => array('submitOnChange' => true), 'attributes' => array('systemColumn' => true), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'gid' => array('foreignKey' => \Isotope\Model\Group::getTable() . '.name', 'eval' => array('doNotShow' => true), 'attributes' => array('systemColumn' => true, 'inherit' => true), 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'tstamp' => array('attributes' => array('systemColumn' => true), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'language' => array('eval' => array('doNotShow' => true), 'attributes' => array('systemColumn' => true, 'inherit' => true), 'sql' => "varchar(5) NOT NULL default ''"), 'dateAdded' => array('label' => &$GLOBALS['TL_LANG']['MSC']['dateAdded'], 'eval' => array('rgxp' => 'datim', 'doNotCopy' => true), 'attributes' => array('fe_sorting' => true, 'systemColumn' => true), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['type'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'options_callback' => array('Isotope\\Backend\\ProductType\\Callback', 'getOptions'), 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('mandatory' => true, 'submitOnChange' => true, 'includeBlankOption' => true, 'tl_class' => 'clr', 'helpwizard' => true), 'attributes' => array('legend' => 'general_legend', 'fixed' => true, 'inherit' => true, 'systemColumn' => true), 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy'), 'explanation' => 'tl_iso_product.type'), 'pages' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['pages'], 'exclude' => true, 'inputType' => 'pageTree', 'foreignKey' => 'tl_page.title', 'eval' => array('doNotSaveEmpty' => true, 'multiple' => true, 'fieldType' => 'checkbox', 'orderField' => 'orderPages', 'tl_class' => 'clr hide_sort_hint'), 'relation' => array('type' => 'hasMany', 'load' => 'lazy'), 'attributes' => array('legend' => 'general_legend', 'fixed' => true, 'inherit' => true, 'systemColumn' => true), 'load_callback' => array(array('Isotope\\Backend\\Product\\Category', 'load')), 'save_callback' => array(array('Isotope\\Backend\\Product\\Category', 'save'))), 'orderPages' => array('eval' => array('doNotShow' => true), 'attributes' => array('systemColumn' => true, 'inherit' => true), 'sql' => "text NULL"), 'inherit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['inherit'], 'exclude' => true, 'inputType' => 'inheritCheckbox', 'eval' => array('multiple' => true), 'attributes' => array('systemColumn' => true), 'sql' => "blob NULL"), 'alias' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['alias'], 'exclude' => true, 'search' => true, 'sorting' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'alnum', 'doNotCopy' => true, 'spaceToUnderscore' => true, 'maxlength' => 128, 'tl_class' => 'w50'), 'attributes' => array('legend' => 'general_legend', 'fixed' => true, 'inherit' => true), 'sql' => "varchar(128) NOT NULL default ''", 'save_callback' => array(array('Isotope\\Backend\\Product\\Alias', 'save'))), 'sku' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['sku'], 'exclude' => true, 'search' => true, 'sorting' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'unique' => true, 'tl_class' => 'w50'), 'attributes' => array('legend' => 'general_legend', 'fe_sorting' => true, 'fe_search' => true), 'sql' => "varchar(128) NOT NULL default ''"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['name'], 'exclude' => true, 'search' => true, 'sorting' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'tl_class' => 'clr long'), 'attributes' => array('legend' => 'general_legend', 'multilingual' => true, 'fixed' => true, 'fe_sorting' => true, 'fe_search' => true), 'sql' => "varchar(255) NOT NULL default ''"), 'teaser' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['teaser'], 'exclude' => true, 'search' => true, 'inputType' => 'textarea', 'eval' => array('style' => 'height:80px', 'tl_class' => 'clr'), 'attributes' => array('legend' => 'general_legend', 'multilingual' => true), 'sql' => "text NULL"), 'description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['description'], 'exclude' => true, 'search' => true, 'inputType' => 'textarea', 'eval' => array('mandatory' => true, 'rte' => 'tinyMCE', 'tl_class' => 'clr'), 'attributes' => array('legend' => 'general_legend', 'multilingual' => true, 'fe_search' => true), 'sql' => "text NULL"), 'meta_title' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['meta_title'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'clr long'), 'attributes' => array('legend' => 'meta_legend', 'multilingual' => true), 'sql' => "varchar(255) NOT NULL default ''"), 'meta_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['meta_description'], 'exclude' => true, 'search' => true, 'inputType' => 'textarea', 'eval' => array('style' => 'height:60px', 'tl_class' => 'clr'), 'attributes' => array('legend' => 'meta_legend', 'multilingual' => true), 'sql' => "text NULL"), 'meta_keywords' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['meta_keywords'], 'exclude' => true, 'search' => true, 'inputType' => 'textarea', 'eval' => array('style' => 'height:40px', 'tl_class' => 'clr'), 'attributes' => array('legend' => 'meta_legend', 'multilingual' => true), 'sql' => "text NULL"), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['price'], 'exclude' => true, 'inputType' => 'timePeriod', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'eval' => array('mandatory' => true, 'maxlength' => 13, 'rgxp' => 'price', 'includeBlankOption' => true, 'blankOptionLabel' => &$GLOBALS['TL_LANG']['MSC']['taxFree'], 'doNotSaveEmpty' => true, 'tl_class' => 'w50'), 'attributes' => array('legend' => 'pricing_legend', 'fe_sorting' => true, 'dynamic' => true, 'systemColumn' => true, 'type' => '\\Isotope\\Model\\Attribute\\Price'), 'load_callback' => array(array('\\Isotope\\Backend\\Product\\Price', 'load')), 'save_callback' => array(array('\\Isotope\\Backend\\Product\\Price', 'save'))), 'prices' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['prices'], 'inputType' => 'dcaWizard', 'foreignTable' => \Isotope\Model\ProductPrice::getTable(), 'attributes' => array('systemColumn' => true), 'eval' => array('listCallback' => array('Isotope\\Backend\\ProductPrice\\Callback', 'generateWizardList'), 'applyButtonLabel' => &$GLOBALS['TL_LANG']['tl_iso_product']['prices']['apply_and_close'], 'tl_class' => 'clr')), 'price_tiers' => array('attributes' => array('type' => '\\Isotope\\Model\\Attribute\\PriceTiers'), 'tableformat' => array('min' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['price_tiers']['min'], 'format' => &$GLOBALS['TL_LANG']['tl_iso_product']['price_tiers']['min_format']), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['price_tiers']['price'], 'rgxp' => 'price'), 'tax_class' => array('doNotShow' => true))), 'baseprice' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['baseprice'], 'exclude' => true, 'inputType' => 'timePeriod', 'foreignKey' => 'tl_iso_baseprice.name', 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50'), 'attributes' => array('type' => '\\Isotope\\Model\\Attribute\\BasePrice', 'legend' => 'pricing_legend'), 'sql' => "varchar(255) NOT NULL default ''"), 'shipping_weight' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['shipping_weight'], 'exclude' => true, 'inputType' => 'timePeriod', 'default' => array('', 'kg'), 'options' => array('mg', 'g', 'kg', 't', 'ct', 'oz', 'lb', 'st', 'grain'), 'reference' => &$GLOBALS['TL_LANG']['WGT'], 'eval' => array('rgxp' => 'digit', 'tl_class' => 'w50', 'helpwizard' => true), 'attributes' => array('legend' => 'shipping_legend'), 'sql' => "varchar(255) NOT NULL default ''"), 'shipping_exempt' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['shipping_exempt'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class' => 'w50'), 'attributes' => array('legend' => 'shipping_legend', 'systemColumn' => true), 'sql' => "char(1) NOT NULL default ''"), 'images' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['images'], 'exclude' => true, 'inputType' => 'mediaManager', 'explanation' => 'mediaManager', 'eval' => array('extensions' => 'jpeg,jpg,png,gif', 'helpwizard' => true, 'tl_class' => 'clr'), 'attributes' => array('legend' => 'media_legend', 'fixed' => true, 'multilingual' => true, 'dynamic' => true, 'systemColumn' => true, 'fetch_fallback' => true), 'sql' => "blob NULL"), 'protected' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['protected'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true, 'tl_class' => 'clr'), 'attributes' => array('legend' => 'expert_legend', 'systemColumn' => true), 'sql' => "char(1) NOT NULL default ''"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['groups'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('mandatory' => true, 'multiple' => true, 'systemColumn' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'guests' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['guests'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class' => 'w50'), 'attributes' => array('legend' => 'expert_legend', 'systemColumn' => true), 'sql' => "char(1) NOT NULL default ''"), 'cssID' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['cssID'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('multiple' => true, 'size' => 2, 'tl_class' => 'w50'), 'attributes' => array('legend' => 'expert_legend'), 'sql' => "varchar(255) NOT NULL default ''"), 'published' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['published'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'eval' => array('doNotCopy' => true, 'tl_class' => 'clr'), 'attributes' => array('legend' => 'publish_legend', 'fixed' => true, 'variant_fixed' => true, 'systemColumn' => true), 'sql' => "char(1) NOT NULL default ''", 'save_callback' => array(array('Isotope\\Backend', 'truncateProductCache'))), 'start' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['start'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'date', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'attributes' => array('legend' => 'publish_legend', 'fixed' => true, 'variant_fixed' => true, 'systemColumn' => true), 'sql' => "varchar(10) NOT NULL default ''"), 'stop' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['stop'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'date', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'attributes' => array('legend' => 'publish_legend', 'fixed' => true, 'variant_fixed' => true, 'systemColumn' => true), 'sql' => "varchar(10) NOT NULL default ''"), 'variantFields' => array('label' => &$GLOBALS['TL_LANG'][\Isotope\Model\ProductType::getTable()]['variant_attributes']), 'source' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_product']['source'], 'eval' => array('mandatory' => true, 'required' => true, 'fieldType' => 'radio')))); /** * Adjust the data configuration array in variants view */ if (\Input::get('id')) { $GLOBALS['TL_LANG']['tl_iso_product']['new'] = $GLOBALS['TL_LANG']['tl_iso_product']['new_variant']; $GLOBALS['TL_DCA']['tl_iso_product']['config']['switchToEdit'] = false; unset($GLOBALS['TL_DCA']['tl_iso_product']['list']['global_operations']['import']); unset($GLOBALS['TL_DCA']['tl_iso_product']['list']['global_operations']['groups']); } else { unset($GLOBALS['TL_DCA']['tl_iso_product']['list']['global_operations']['generate']); }
/** * Returns all allowed product types as array * * @return array */ public function getOptions() { /** @type \BackendUser $objUser */ $objUser = \BackendUser::getInstance(); $arrTypes = $objUser->iso_product_types; if (!$objUser->isAdmin && (!is_array($arrTypes) || empty($arrTypes))) { $arrTypes = array(0); } $t = ProductType::getTable(); $arrProductTypes = array(); $objProductTypes = \Database::getInstance()->execute("\n SELECT id,name FROM {$t}\n WHERE tstamp>0" . ($objUser->isAdmin ? '' : " AND id IN (" . implode(',', $arrTypes) . ")") . "\n ORDER BY name\n "); while ($objProductTypes->next()) { $arrProductTypes[$objProductTypes->id] = $objProductTypes->name; } return $arrProductTypes; }
/** * Get product type IDs with given attribute enabled * * @param string $attributeName * @param bool $forVariants * * @return array */ private function getProductTypeIdsByAttribute($attributeName, $forVariants = false) { static $cache; if (null === $cache) { /** @type ProductType[] $productTypes */ $productTypes = ProductType::findAll(); $cache = array(); if (null !== $productTypes) { foreach ($productTypes as $type) { foreach ($type->attributes as $attribute => $config) { if ($config['enabled']) { $cache['attributes'][$attribute][] = $type->id; } } if ($type->variants) { foreach ($type->variant_attributes as $attribute => $config) { if ($config['enabled']) { $cache['variant_attributes'][$attribute][] = $type->id; } } } } } foreach ($cache as $property => $attributes) { foreach ($attributes as $attribute => $values) { $cache[$property][$attribute] = array_unique($values); } } } if ($forVariants) { return (array) $cache['variant_attributes'][$attributeName]; } else { return (array) $cache['attributes'][$attributeName]; } }
/** * Show/hide the downloads button * * @param array $row * @param string $href * @param string $label * @param string $title * @param string $icon * @param string $attributes * * @return string */ public function forDownloads($row, $href, $label, $title, $icon, $attributes) { if (($objProductType = ProductType::findByProductData($row)) === null || !$objProductType->hasDownloads()) { return ''; } return '<a href="' . \Backend::addToUrl($href . '&id=' . $row['id']) . '" title="' . specialchars($title . '<br>' . sprintf($GLOBALS['TL_DCA']['tl_iso_product']['list']['operations']['downloads']['label'][2], $this->getNumberOfDownloadsForProduct($row['id']))) . '"' . $attributes . '>' . \Image::getHtml($icon, $label) . '</a> '; }
/** * Build a query based on the given options to count the number of products. * * @param array $arrOptions The options array * * @return string */ protected static function buildCountQuery(array $arrOptions) { $hasTranslations = static::countTranslatedProducts() > 0; $hasVariants = ProductType::countByVariants() > 0; $arrJoins = array(); $arrFields = array($arrOptions['table'] . ".*", "'" . str_replace('-', '_', $GLOBALS['TL_LANGUAGE']) . "' AS language"); if ($hasVariants) { $arrFields[] = sprintf("IF(%s.pid>0, parent.type, %s.type) AS type", $arrOptions['table'], $arrOptions['table']); } if ($hasTranslations) { foreach (Attribute::getMultilingualFields() as $attribute) { $arrFields[] = "IFNULL(translation.{$attribute}, " . $arrOptions['table'] . ".{$attribute}) AS {$attribute}"; } } $arrJoins[] = sprintf(" LEFT OUTER JOIN %s c ON %s.id=c.pid", ProductCategory::getTable(), $arrOptions['table']); if ($hasTranslations) { $arrJoins[] = sprintf(" LEFT OUTER JOIN %s translation ON %s.id=translation.pid AND translation.language='%s'", $arrOptions['table'], $arrOptions['table'], str_replace('-', '_', $GLOBALS['TL_LANGUAGE'])); } if ($hasVariants) { $arrJoins[] = sprintf(" LEFT OUTER JOIN %s parent ON %s.pid=parent.id", $arrOptions['table'], $arrOptions['table']); } // Generate the query $strWhere = ''; $strQuery = "\n SELECT\n " . implode(', ', $arrFields) . ",\n COUNT(DISTINCT " . $arrOptions['table'] . ".id) AS count\n FROM " . $arrOptions['table'] . implode("", $arrJoins); // Where condition if (!empty($arrOptions['column'])) { if (!is_array($arrOptions['column'])) { $arrOptions['column'] = array($arrOptions['table'] . '.' . $arrOptions['column'] . '=?'); } $strWhere = " AND " . implode(" AND ", $arrOptions['column']); } // The model must never find a language record $strQuery .= " WHERE {$arrOptions['table']}.language=''" . $strWhere; // Group by if ($arrOptions['group'] !== null) { $strQuery .= " GROUP BY " . $arrOptions['group']; } return $strQuery; }
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Table tl_iso_payment */ $GLOBALS['TL_DCA']['tl_iso_payment'] = array('config' => array('dataContainer' => 'Table', 'enableVersioning' => true, 'closed' => true, 'onload_callback' => array(array('Isotope\\Backend', 'initializeSetupModule'), array('Isotope\\Backend\\Payment\\Callback', 'checkPermission'), array('Isotope\\Backend\\Payment\\Callback', 'loadShippingModules')), 'sql' => array('keys' => array('id' => 'primary'))), 'list' => array('sorting' => array('mode' => 1, 'fields' => array('name'), 'flag' => 1, 'panelLayout' => 'sort,filter;search,limit'), 'label' => array('fields' => array('name', 'type'), 'format' => '%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>'), 'global_operations' => array('back' => array('label' => &$GLOBALS['TL_LANG']['MSC']['backBT'], 'href' => 'mod=&table=', 'class' => 'header_back', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'new' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new'], 'href' => 'act=create', 'class' => 'header_new', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['copy'], 'href' => 'act=copy', 'icon' => 'copy.gif', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'copyPaymentModule')), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'deletePaymentModule')), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset();return AjaxRequest.toggleVisibility(this,%s)"', 'button_callback' => array('Isotope\\Backend\\Payment\\Callback', 'toggleIcon')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('__selector__' => array('type', 'protected'), 'default' => '{type_legend},name,label,type', 'cash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'paypal' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},paypal_account;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'postfinance' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'viveum' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},psp_pspid,psp_http_method,psp_hash_method,psp_hash_in,psp_hash_out,psp_dynamic_template;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'datatrans' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,trans_type,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},datatrans_id,datatrans_sign;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sparkasse' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},sparkasse_paymentmethod,trans_type,sparkasse_sslmerchant,sparkasse_sslpassword,sparkasse_merchantref;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled', 'sofortueberweisung' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend:hide},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},trans_type,sofortueberweisung_user_id,sofortueberweisung_project_id,sofortueberweisung_project_password;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'saferpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},saferpay_accountid,trans_type,saferpay_description,saferpay_vtconfig;{price_legend:hide},price,tax_class;{enabled_legend},enabled', 'expercash' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},expercash_popupId,expercash_profile,expercash_popupKey,expercash_paymentMethod;{price_legend:hide},price,tax_class;{template_legend},expercash_css;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'payone' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},trans_type,payone_clearingtype,payone_aid,payone_portalid,payone_key;{price_legend:hide},price,tax_class;{enabled_legend},debug,enabled', 'worldpay' => '{type_legend},name,label,type;{note_legend:hide},note;{config_legend},new_order_status,minimum_total,maximum_total,countries,shipping_modules,product_types;{gateway_legend},worldpay_instId,worldpay_callbackPW,worldpay_signatureFields,worldpay_md5secret,worldpay_description;{price_legend:hide},price,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},debug,enabled'), 'subpalettes' => array('protected' => 'groups'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['name'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'label' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['label'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['type'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'default' => 'cash', 'options_callback' => function () { return \Isotope\Model\Payment::getModelTypeOptions(); }, 'eval' => array('includeBlankOption' => true, 'helpwizard' => true, 'submitOnChange' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'note' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['note'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('rte' => 'tinyMCE'), 'sql' => "text NULL"), 'new_order_status' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['new_order_status'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\OrderStatus::getTable() . '.name', 'options_callback' => array('\\Isotope\\Backend', 'getOrderStatus'), 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['price'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 16, 'rgxp' => 'surcharge', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'tax_class' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['tax_class'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'options_callback' => array('\\Isotope\\Model\\TaxClass', 'getOptionsWithSplit'), 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'allowed_cc_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['allowed_cc_types'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'options_callback' => array('Isotope\\Backend\\Payment\\Callback', 'getAllowedCCTypes'), 'eval' => array('multiple' => true, 'tl_class' => 'clr'), 'sql' => "text NULL"), 'trans_type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['trans_type'], 'exclude' => true, 'default' => 'capture', 'inputType' => 'select', 'options' => array('capture', 'auth'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50', 'helpwizard' => true), 'reference' => $GLOBALS['TL_LANG']['tl_iso_payment'], 'sql' => "varchar(8) NOT NULL default ''"), 'minimum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['minimum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'clr w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'maximum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['maximum_total'], 'exclude' => true, 'inputType' => 'text', 'default' => 0, 'eval' => array('maxlength' => 255, 'rgxp' => 'price', 'tl_class' => 'w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'countries' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['countries'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function () { return \System::getCountries(); }, 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'shipping_modules' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['shipping_modules'], 'exclude' => true, 'inputType' => 'select', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'product_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['product_types'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'paypal_account' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['paypal_account'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'rgxp' => 'email', 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_pspid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_pspid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'psp_http_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_http_method'], 'exclude' => true, 'inputType' => 'select', 'default' => 'POST', 'options' => array('POST', 'GET'), 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(4) NOT NULL default ''"), 'psp_hash_method' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'exclude' => true, 'default' => 'sha1', 'inputType' => 'select', 'options' => array('sha1', 'sha256', 'sha512'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_method'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'psp_hash_in' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_in'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_hash_out' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_hash_out'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 128, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'psp_dynamic_template' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['psp_dynamic_template'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 128, 'rgxp' => 'url', 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'datatrans_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_id'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 100, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'datatrans_sign' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['datatrans_sign'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(128) NOT NULL default ''"), 'sparkasse_paymentmethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('creditcard', 'maestro', 'directdebit'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_paymentmethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'sparkasse_sslmerchant' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslmerchant'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sparkasse_sslpassword' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_sslpassword'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'hideInput' => true, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'sparkasse_merchantref' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sparkasse_merchantref'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'decodeEntities' => true, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'sofortueberweisung_user_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_user_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_id' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_id'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'sofortueberweisung_project_password' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['sofortueberweisung_project_password'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_accountid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_accountid'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'saferpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_description'], 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'saferpay_vtconfig' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['saferpay_vtconfig'], 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'expercash_popupId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 10, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'expercash_profile' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_profile'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 3, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(3) NOT NULL default '0'"), 'expercash_popupKey' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_popupKey'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 32, 'decodeEntities' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_paymentMethod' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'exclude' => true, 'inputType' => 'select', 'options' => array('automatic_payment_method', 'elv_buy', 'elv_authorize', 'cc_buy', 'cc_authorize', 'giropay', 'sofortueberweisung'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_paymentMethod'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'expercash_css' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['expercash_css'], 'exclude' => true, 'inputType' => 'fileTree', 'eval' => array('fieldType' => 'radio', 'files' => true, 'filesOnly' => true, 'extensions' => 'css', 'tl_class' => 'clr'), 'sql' => "binary(16) NULL"), 'payone_clearingtype' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_clearingtype'], 'exclude' => true, 'inputType' => 'select', 'options' => array('elv', 'cc', 'dc', 'vor', 'rec', 'sb', 'wlt'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone'], 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "varchar(3) NOT NULL default ''"), 'payone_aid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_aid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(6) NOT NULL default ''"), 'payone_portalid' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_portalid'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 7, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(7) NOT NULL default ''"), 'payone_key' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['payone_key'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_instId' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_instId'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 6, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(6) NOT NULL default '0'"), 'worldpay_callbackPW' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_callbackPW'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'worldpay_signatureFields' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_signatureFields'], 'exclude' => true, 'default' => 'instId:cartId:amount:currency', 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_md5secret' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_md5secret'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 64, 'decodeEntities' => true, 'hideInput' => true, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'worldpay_description' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['worldpay_description'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr long'), 'sql' => "varchar(255) NOT NULL default ''"), 'requireCCV' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['requireCCV'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'guests' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['guests'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'protected' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['protected'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['groups'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('multiple' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'debug' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['debug'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'enabled' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_payment']['enabled'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''")));
public static function getProducts() { $objProducts = \Isotope\Model\Product::findPublished(); $arrProductTypeLabels = array(); $arrProducts = array(); while ($objProducts->next()) { // check for label cache if (isset($arrProductTypeLabels[$objProducts->type])) { $strProductTypeLabel = $arrProductTypeLabels[$objProducts->type]; } else { if (($objProductType = \Isotope\Model\ProductType::findByPk($objProducts->type)) !== null) { $strProductTypeLabel = $objProductType->name; $arrProductTypeLabels[$objProductType->id] = $objProductType->name; } } $arrProducts[$objProducts->id] = $strProductTypeLabel . ' - ' . $objProducts->name; } asort($arrProducts); return $arrProducts; }
/** * Validate data and remove non-available attributes * * @param array $arrData * * @return $this */ public function setRow(array $arrData) { if ($arrData['pid'] > 0) { // Do not use the model, it would trigger setRow and generate too much // @deprecated use static::buildFindQuery once we drop BC support for buildQueryString /** @type object $objParent */ $objParent = \Database::getInstance()->prepare(static::buildQueryString(array('table' => static::$strTable, 'column' => 'id')))->execute($arrData['pid']); if (null === $objParent) { throw new \UnderflowException('Parent record of product variant ID ' . $arrData['id'] . ' not found'); } $this->setRow($objParent->row()); // Must be set before call to getInheritedFields() $this->arrData['id'] = $arrData['id']; $this->arrData['pid'] = $arrData['pid']; $this->arrData['inherit'] = $arrData['inherit']; // Set all variant attributes, except if they are inherited $arrFallbackFields = Attribute::getFetchFallbackFields(); $arrVariantFields = array_diff($this->getVariantAttributes(), $this->getInheritedFields()); foreach ($arrData as $attribute => $value) { if (in_array($attribute, $arrVariantFields) || $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$attribute]['attributes']['legend'] == '' && !in_array(str_replace('_fallback', '', $attribute), $arrFallbackFields)) { $this->arrData[$attribute] = $arrData[$attribute]; if (in_array($attribute, $arrFallbackFields)) { $this->arrData[$attribute . '_fallback'] = $arrData[$attribute . '_fallback']; } } } // Make sure publishing settings match product and variant (see #1120) $this->arrData['published'] = $objParent->published ? $arrData['published'] : ''; $this->arrData['start'] = $objParent->start != '' && ($arrData['start'] == '' || $objParent->start > $arrData['start']) ? $objParent->start : $arrData['start']; $this->arrData['stop'] = $objParent->stop != '' && ($arrData['stop'] == '' || $objParent->stop < $arrData['stop']) ? $objParent->stop : $arrData['stop']; return $this; } // Empty cache $this->objPrice = false; $this->arrAttributes = null; $this->arrVariantAttributes = null; $this->arrVariantIds = null; $this->arrCategories = null; $this->arrRelated = array(); // Must initialize product type to have attributes etc. if (($this->arrRelated['type'] = ProductType::findByPk($arrData['type'])) === null) { throw new \UnderflowException('Product type for product ID ' . $arrData['id'] . ' not found'); } $this->strFormId = 'iso_product_' . $arrData['id']; // Remove attributes not in this product type foreach ($arrData as $attribute => $value) { if (!in_array($attribute, $this->getAttributes()) && !in_array($attribute, $this->getVariantAttributes()) && isset($GLOBALS['TL_DCA']['tl_iso_product']['fields'][$attribute]['attributes']['legend']) && $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$attribute]['attributes']['legend'] != '' || in_array($attribute, Attribute::getVariantOptionFields())) { unset($arrData[$attribute]); } } return parent::setRow($arrData); }
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Table tl_iso_rule */ $GLOBALS['TL_DCA']['tl_iso_rule'] = array('config' => array('dataContainer' => 'Table', 'ctable' => array('tl_iso_rule_restriction'), 'enableVersioning' => false, 'onload_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadAttributeValues')), 'sql' => array('keys' => array('id' => 'primary'))), 'list' => array('sorting' => array('mode' => 1, 'panelLayout' => 'filter;search,limit', 'fields' => array('type', 'name')), 'label' => array('fields' => array('name', 'code'), 'format' => '%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>'), 'global_operations' => array('all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();" accesskey="e"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['copy'], 'href' => 'act=copy', 'icon' => 'copy.gif'), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"'), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset(); return AjaxRequest.toggleVisibility(this, %s);"', 'button_callback' => array('\\Isotope\\Backend\\Rule\\Callback', 'toggleIcon')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('__selector__' => array('type', 'applyTo', 'enableCode', 'configRestrictions', 'memberRestrictions', 'productRestrictions'), 'default' => '{basic_legend},type', 'product' => '{basic_legend},type,name,discount;{limit_legend:hide},limitPerMember,limitPerConfig,minItemQuantity,maxItemQuantity,quantityMode;{datim_legend:hide},startDate,endDate,startTime,endTime;{advanced_legend:hide},configRestrictions,memberRestrictions,productRestrictions;{enabled_legend},enabled', 'cart' => '{basic_legend},type,applyTo,name,label,discount;{coupon_legend:hide},enableCode;{limit_legend:hide},limitPerMember,limitPerConfig,minSubtotal,maxSubtotal,minItemQuantity,maxItemQuantity,quantityMode;{datim_legend:hide},startDate,endDate,startTime,endTime;{advanced_legend:hide},configRestrictions,memberRestrictions,productRestrictions;{enabled_legend},enabled', 'cartsubtotal' => '{basic_legend},type,applyTo,name,label,discount,tax_class;{coupon_legend:hide},enableCode;{limit_legend:hide},limitPerMember,limitPerConfig,minSubtotal,maxSubtotal,minItemQuantity,maxItemQuantity,quantityMode;{datim_legend:hide},startDate,endDate,startTime,endTime;{advanced_legend:hide},configRestrictions,memberRestrictions,productRestrictions;{enabled_legend},enabled'), 'subpalettes' => array('enableCode' => 'code', 'configRestrictions' => 'configs,configCondition', 'memberRestrictions_guests' => 'memberCondition', 'memberRestrictions_groups' => 'memberCondition,groups', 'memberRestrictions_members' => 'memberCondition,members', 'productRestrictions_producttypes' => 'productCondition,producttypes', 'productRestrictions_pages' => 'productCondition,pages', 'productRestrictions_products' => 'productCondition,products', 'productRestrictions_variants' => 'productCondition,variants', 'productRestrictions_attribute' => 'attributeName,attributeCondition,attributeValue'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['type'], 'exclude' => true, 'filter' => true, 'default' => 'product', 'inputType' => 'select', 'options' => array('product', 'cart'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['type'], 'eval' => array('mandatory' => true, 'submitOnChange' => true, 'tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['name'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'clr w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'label' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['label'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'discount' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['discount'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 16, 'rgxp' => 'discount', 'tl_class' => 'clr w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'tax_class' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['tax_class'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'options_callback' => array('\\Isotope\\Model\\TaxClass', 'getOptionsWithSplit'), 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'applyTo' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['applyTo'], 'exclude' => true, 'default' => 'products', 'inputType' => 'select', 'options' => array('products', 'items', 'subtotal'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['applyTo'], 'eval' => array('mandatory' => true, 'submitOnChange' => true, 'tl_class' => 'w50'), 'sql' => "varchar(8) NOT NULL default ''"), 'enableCode' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['enableCode'], 'exclude' => true, 'filter' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''"), 'code' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['code'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255), 'sql' => "varchar(255) NOT NULL default ''"), 'limitPerMember' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['limitPerMember'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'digit', 'maxlength' => 10, 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'limitPerConfig' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['limitPerConfig'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'digit', 'maxlength' => 10, 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'minSubtotal' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['minSubtotal'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'maxSubtotal' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['maxSubtotal'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'minItemQuantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['minItemQuantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'maxItemQuantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['maxItemQuantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'quantityMode' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['quantityMode'], 'exclude' => true, 'inputType' => 'select', 'default' => 'product_quantity', 'options' => array('product_quantity', 'cart_products', 'cart_items'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['quantityMode'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'startDate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['startDate'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'date', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'sql' => "varchar(10) NOT NULL default ''"), 'endDate' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['endDate'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'date', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'sql' => "varchar(10) NOT NULL default ''"), 'startTime' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['startTime'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'time', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'sql' => "varchar(10) NOT NULL default ''"), 'endTime' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['endTime'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp' => 'time', 'datepicker' => true, 'tl_class' => 'w50 wizard'), 'sql' => "varchar(10) NOT NULL default ''"), 'configRestrictions' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['configRestrictions'], 'inputType' => 'checkbox', 'exclude' => true, 'filter' => true, 'eval' => array('submitOnChange' => true, 'tl_class' => 'clr'), 'sql' => "char(1) NOT NULL default ''"), 'configCondition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['configCondition'], 'exclude' => true, 'default' => '1', 'inputType' => 'radio', 'options' => array('1' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_true'], '0' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_false']), 'eval' => array('isAssociative' => true, 'tl_class' => 'w50'), 'sql' => "tinyint(1) NOT NULL default '0'"), 'configs' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['configs'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\Config::getTable() . '.name', 'eval' => array('mandatory' => true, 'multiple' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr w50 w50h'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'memberRestrictions' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['memberRestrictions'], 'inputType' => 'radio', 'default' => 'none', 'exclude' => true, 'filter' => true, 'options' => array('none', 'guests', 'groups', 'members'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['memberRestrictions'], 'eval' => array('submitOnChange' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => "varchar(32) NOT NULL default ''"), 'memberCondition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['memberCondition'], 'exclude' => true, 'default' => '1', 'inputType' => 'radio', 'options' => array('1' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_true'], '0' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_false']), 'eval' => array('isAssociative' => true, 'tl_class' => 'w50'), 'sql' => "tinyint(1) NOT NULL default '0'"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['groups'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('mandatory' => true, 'multiple' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'members' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['members'], 'exclude' => true, 'inputType' => 'tableLookup', 'eval' => array('mandatory' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr', 'foreignTable' => 'tl_member', 'fieldType' => 'checkbox', 'listFields' => array('firstname', 'lastname', 'username', 'email'), 'searchFields' => array('firstname', 'lastname', 'username', 'email'), 'sqlWhere' => '', 'searchLabel' => 'Search members'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'productRestrictions' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['productRestrictions'], 'inputType' => 'radio', 'default' => 'none', 'exclude' => true, 'filter' => true, 'options' => array('none', 'producttypes', 'pages', 'products', 'variants', 'attribute'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['productRestrictions'], 'eval' => array('submitOnChange' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => "varchar(32) NOT NULL default ''"), 'productCondition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['productCondition'], 'exclude' => true, 'default' => '1', 'inputType' => 'radio', 'options' => array('1' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_true'], '0' => $GLOBALS['TL_LANG']['tl_iso_rule']['condition_false']), 'eval' => array('isAssociative' => true, 'tl_class' => 'w50'), 'sql' => "tinyint(1) NOT NULL default '0'"), 'producttypes' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['producttypes'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('mandatory' => true, 'multiple' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'pages' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['pages'], 'exclude' => true, 'inputType' => 'pageTree', 'foreignKey' => 'tl_page.title', 'eval' => array('mandatory' => true, 'multiple' => true, 'fieldType' => 'checkbox', 'doNotSaveEmpty' => true, 'tl_class' => 'clr'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'products' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['products'], 'exclude' => true, 'inputType' => 'tableLookup', 'eval' => array('mandatory' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr', 'foreignTable' => 'tl_iso_product', 'fieldType' => 'checkbox', 'listFields' => array('type' => "(SELECT name FROM " . \Isotope\Model\ProductType::getTable() . " WHERE " . \Isotope\Model\Product::getTable() . ".type=" . \Isotope\Model\ProductType::getTable() . ".id)", 'name', 'sku'), 'searchFields' => array('name', 'alias', 'sku', 'description'), 'sqlWhere' => 'pid=0', 'searchLabel' => 'Search products'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'variants' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['variants'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'doNotSaveEmpty' => true, 'csv' => ',', 'tl_class' => 'clr long'), 'load_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'loadRestrictions')), 'save_callback' => array(array('\\Isotope\\Backend\\Rule\\Callback', 'saveRestrictions'))), 'attributeName' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['attributeName'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => array('\\Isotope\\Backend\\Rule\\Callback', 'getAttributeNames'), 'eval' => array('mandatory' => true, 'includeBlankOption' => true, 'submitOnChange' => true, 'tl_class' => 'clr w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'attributeCondition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['attributeCondition'], 'exclude' => true, 'inputType' => 'select', 'options' => array('eq', 'neq', 'lt', 'gt', 'elt', 'egt', 'starts', 'ends', 'contains'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_rule']['attributeCondition'], 'eval' => array('mandatory' => true, 'tl_class' => 'w50'), 'sql' => "varchar(8) NOT NULL default ''"), 'attributeValue' => array('exclude' => true, 'eval' => array('decodeEntities' => true, 'tl_class' => 'clr'), 'sql' => "varchar(255) NOT NULL default ''"), 'enabled' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_rule']['enabled'], 'exclude' => true, 'inputType' => 'checkbox', 'filter' => true, 'sql' => "char(1) NOT NULL default ''")));
/** * Build palette for the current product type/variant */ public function buildPaletteString() { $this->loadDataContainer(Attribute::getTable()); if (\Input::get('act') == '' && \Input::get('key') == '' || \Input::get('act') == 'select') { return; } $arrTypes = array(); $arrFields =& $GLOBALS['TL_DCA']['tl_iso_product']['fields']; /** @var IsotopeAttribute[] $arrAttributes */ $arrAttributes =& $GLOBALS['TL_DCA']['tl_iso_product']['attributes']; $blnVariants = false; $act = \Input::get('act'); $blnSingleRecord = $act === 'edit' || $act === 'show'; if (\Input::get('id') > 0) { /** @type object $objProduct */ $objProduct = \Database::getInstance()->prepare("SELECT p1.pid, p1.type, p2.type AS parent_type FROM tl_iso_product p1 LEFT JOIN tl_iso_product p2 ON p1.pid=p2.id WHERE p1.id=?")->execute(\Input::get('id')); if ($objProduct->numRows) { $objType = ProductType::findByPk($objProduct->pid > 0 ? $objProduct->parent_type : $objProduct->type); $arrTypes = null === $objType ? array() : array($objType); if ($objProduct->pid > 0 || $act != 'edit' && $act != 'copyFallback' && $act != 'show') { $blnVariants = true; } } } else { $arrTypes = ProductType::findAllUsed() ?: array(); } /** @var \Isotope\Model\ProductType $objType */ foreach ($arrTypes as $objType) { // Enable advanced prices if ($blnSingleRecord && $objType->hasAdvancedPrices()) { $arrFields['prices']['exclude'] = $arrFields['price']['exclude']; $arrFields['prices']['attributes'] = $arrFields['price']['attributes']; $arrFields['price'] = $arrFields['prices']; } else { $GLOBALS['TL_DCA']['tl_iso_product']['config']['onversion_callback'][] = array('Isotope\\Backend\\Product\\Price', 'createVersion'); $GLOBALS['TL_DCA']['tl_iso_product']['config']['onrestore_callback'][] = array('Isotope\\Backend\\Product\\Price', 'restoreVersion'); } $arrInherit = array(); $arrPalette = array(); $arrLegends = array(); $arrLegendOrder = array(); $arrCanInherit = array(); if ($blnVariants) { $arrConfig = $objType->variant_attributes; $arrEnabled = $objType->getVariantAttributes(); $arrCanInherit = $objType->getAttributes(); } else { $arrConfig = $objType->attributes; $arrEnabled = $objType->getAttributes(); } // Go through each enabled field and build palette foreach ($arrFields as $name => $arrField) { if (in_array($name, $arrEnabled)) { if ($arrField['inputType'] == '') { continue; } // Variant fields can only be edited in variant mode if (null !== $arrAttributes[$name] && !$blnVariants && $arrAttributes[$name]->isVariantOption()) { continue; } // Field cannot be edited in variant if ($blnVariants && $arrAttributes[$name]->inherit) { continue; } $arrLegendOrder[$arrConfig[$name]['position']] = $arrConfig[$name]['legend']; $arrPalette[$arrConfig[$name]['legend']][$arrConfig[$name]['position']] = $name; // Apply product type attribute config if ($arrConfig[$name]['tl_class'] != '') { $arrFields[$name]['eval']['tl_class'] = $arrConfig[$name]['tl_class']; } if ($arrConfig[$name]['mandatory'] > 0) { $arrFields[$name]['eval']['mandatory'] = $arrConfig[$name]['mandatory'] == 1 ? false : true; } if ($blnVariants && in_array($name, $arrCanInherit) && null !== $arrAttributes[$name] && !$arrAttributes[$name]->isVariantOption() && !in_array($name, array('price', 'published', 'start', 'stop'))) { $arrInherit[$name] = Format::dcaLabel('tl_iso_product', $name); } } else { // Hide field from "show" option if (!isset($arrField['attributes']) || $arrField['inputType'] != '' && $name != 'inherit') { $arrFields[$name]['eval']['doNotShow'] = true; } } } ksort($arrLegendOrder); $arrLegendOrder = array_unique($arrLegendOrder); // Build foreach ($arrLegendOrder as $legend) { $fields = $arrPalette[$legend]; ksort($fields); $arrLegends[] = '{' . $legend . '},' . implode(',', $fields); } // Set inherit options $arrFields['inherit']['options'] = $arrInherit; // Add palettes $GLOBALS['TL_DCA']['tl_iso_product']['palettes'][$blnVariants ? 'default' : $objType->id] = ($blnVariants ? 'inherit,' : '') . implode(';', $arrLegends); } // Remove non-active fields from multi-selection if ($blnVariants && !$blnSingleRecord) { $arrInclude = empty($arrPalette) ? array() : call_user_func_array('array_merge', $arrPalette); foreach ($arrFields as $name => $config) { if ($arrFields[$name]['attributes']['legend'] != '' && !in_array($name, $arrInclude)) { $arrFields[$name]['exclude'] = true; } } } }
public static function getOverridableStockProperty($strProperty, $objProduct) { // at first check for product and product type if ($objProduct->overrideStockShopConfig) { return $objProduct->{$strProperty}; } else { if (($objProductType = ProductType::findByPk($objProduct->type)) !== null && $objProductType->overrideStockShopConfig) { return $objProductType->{$strProperty}; } } // nothing returned? $objConfig = Isotope::getConfig(); // global $objPage; // // if ($objPage->iso_config) // { // $objConfig = Config::findByPk($objPage->iso_config); // } // defaultly return the value defined in the global config return $objConfig->{$strProperty}; }
$GLOBALS['TL_MODELS'][\Isotope\Model\Document::getTable()] = 'Isotope\\Model\\Document'; $GLOBALS['TL_MODELS'][\Isotope\Model\Download::getTable()] = 'Isotope\\Model\\Download'; $GLOBALS['TL_MODELS'][\Isotope\Model\Gallery::getTable()] = 'Isotope\\Model\\Gallery'; $GLOBALS['TL_MODELS'][\Isotope\Model\Group::getTable()] = 'Isotope\\Model\\Group'; $GLOBALS['TL_MODELS'][\Isotope\Model\Label::getTable()] = 'Isotope\\Model\\Label'; $GLOBALS['TL_MODELS'][\Isotope\Model\OrderStatus::getTable()] = 'Isotope\\Model\\OrderStatus'; $GLOBALS['TL_MODELS'][\Isotope\Model\Payment::getTable()] = 'Isotope\\Model\\Payment'; $GLOBALS['TL_MODELS'][\Isotope\Model\Product::getTable()] = 'Isotope\\Model\\Product'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCategory::getTable()] = 'Isotope\\Model\\ProductCategory'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCollection::getTable()] = 'Isotope\\Model\\ProductCollection'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCollectionDownload::getTable()] = 'Isotope\\Model\\ProductCollectionDownload'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCollectionItem::getTable()] = 'Isotope\\Model\\ProductCollectionItem'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCollectionSurcharge::getTable()] = 'Isotope\\Model\\ProductCollectionSurcharge'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductPrice::getTable()] = 'Isotope\\Model\\ProductPrice'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductCache::getTable()] = 'Isotope\\Model\\ProductCache'; $GLOBALS['TL_MODELS'][\Isotope\Model\ProductType::getTable()] = 'Isotope\\Model\\ProductType'; $GLOBALS['TL_MODELS'][\Isotope\Model\RelatedCategory::getTable()] = 'Isotope\\Model\\RelatedCategory'; $GLOBALS['TL_MODELS'][\Isotope\Model\RelatedProduct::getTable()] = 'Isotope\\Model\\RelatedProduct'; $GLOBALS['TL_MODELS'][\Isotope\Model\RequestCache::getTable()] = 'Isotope\\Model\\RequestCache'; $GLOBALS['TL_MODELS'][\Isotope\Model\Shipping::getTable()] = 'Isotope\\Model\\Shipping'; $GLOBALS['TL_MODELS'][\Isotope\Model\TaxClass::getTable()] = 'Isotope\\Model\\TaxClass'; $GLOBALS['TL_MODELS'][\Isotope\Model\TaxRate::getTable()] = 'Isotope\\Model\\TaxRate'; /** * Checkout steps */ $GLOBALS['ISO_CHECKOUTSTEP'] = array('address' => array('\\Isotope\\CheckoutStep\\BillingAddress', '\\Isotope\\CheckoutStep\\ShippingAddress'), 'shipping' => array('\\Isotope\\CheckoutStep\\ShippingMethod'), 'payment' => array('\\Isotope\\CheckoutStep\\PaymentMethod'), 'review' => array('\\Isotope\\CheckoutStep\\OrderConditionsOnTop', '\\Isotope\\CheckoutStep\\OrderInfo', '\\Isotope\\CheckoutStep\\OrderConditionsBeforeProducts', '\\Isotope\\CheckoutStep\\OrderProducts', '\\Isotope\\CheckoutStep\\OrderConditionsAfterProducts')); /** * Permissions are access settings for user and groups (fields in tl_user and tl_user_group) */ $GLOBALS['TL_PERMISSIONS'][] = 'iso_modules'; $GLOBALS['TL_PERMISSIONS'][] = 'iso_product_types';
<?php /** * Isotope "simple stock management" for Contao Open Source CMS * * Copyright (c) 2016 Richard Henkenjohann * * @package Isotope * @author Richard Henkenjohann <*****@*****.**> */ use Isotope\Model\ProductType; use NotificationCenter\Model\Notification; /** @noinspection PhpUndefinedMethodInspection */ $table = ProductType::getTable(); /** * Palettes */ $GLOBALS['TL_DCA'][$table]['palettes']['__selector__'][] = 'stockmanagement_active'; $GLOBALS['TL_DCA'][$table]['palettes']['__selector__'][] = 'stockmanagement_notification'; $GLOBALS['TL_DCA'][$table]['palettes']['standard'] .= ';{stockmanagement_legend},stockmanagement_active'; /** * SubPalettes */ $GLOBALS['TL_DCA'][$table]['subpalettes']['stockmanagement_active'] = 'stockmanagement_disableProduct,stockmanagement_notification'; $GLOBALS['TL_DCA'][$table]['subpalettes']['stockmanagement_notification'] = 'stockmanagement_notifications'; /** * Fields */ $GLOBALS['TL_DCA'][$table]['fields']['stockmanagement_active'] = ['label' => &$GLOBALS['TL_LANG'][$table]['stockmanagement_active'], 'inputType' => 'checkbox', 'eval' => ['tl_class' => 'w50', 'submitOnChange' => true], 'sql' => "char(1) NOT NULL default ''"]; $GLOBALS['TL_DCA'][$table]['fields']['stockmanagement_notification'] = ['label' => &$GLOBALS['TL_LANG'][$table]['stockmanagement_notification'], 'inputType' => 'checkbox', 'eval' => ['tl_class' => 'w50', 'submitOnChange' => true], 'sql' => "char(1) NOT NULL default ''"]; $GLOBALS['TL_DCA'][$table]['fields']['stockmanagement_notifications'] = ['label' => &$GLOBALS['TL_LANG'][$table]['stockmanagement_notifications'], 'inputType' => 'multiColumnWizard', 'eval' => ['tl_class' => 'clr', 'columnFields' => ['threshold' => ['inputType' => 'text', 'label' => &$GLOBALS['TL_LANG'][$table]['stockmanagement_notifications_threshold'], 'eval' => ['rgxp' => 'digit', 'mandatory' => true, 'style' => 'width:60px;text-align:right']], 'nc_id' => ['inputType' => 'select', 'label' => &$GLOBALS['TL_LANG'][$table]['stockmanagement_notifications_nc_id'], 'eval' => ['mandatory' => true], 'options_callback' => function () {
<?php /** * Isotope eCommerce for Contao Open Source CMS * * Copyright (C) 2009-2014 terminal42 gmbh & Isotope eCommerce Workgroup * * @package Isotope * @link http://isotopeecommerce.org * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Load tl_iso_product data container and language files */ $this->loadDataContainer('tl_iso_product'); \System::loadLanguageFile('tl_iso_product'); /** * Table tl_iso_shipping */ $GLOBALS['TL_DCA']['tl_iso_shipping'] = array('config' => array('dataContainer' => 'Table', 'enableVersioning' => true, 'closed' => true, 'onload_callback' => array(array('Isotope\\Backend', 'initializeSetupModule'), array('Isotope\\Backend\\Shipping\\Callback', 'checkPermission')), 'sql' => array('keys' => array('id' => 'primary'))), 'list' => array('sorting' => array('mode' => 1, 'fields' => array('name'), 'flag' => 1, 'panelLayout' => 'sort,filter;search,limit'), 'label' => array('fields' => array('name', 'type'), 'format' => '%s <span style="color:#b3b3b3; padding-left:3px;">[%s]</span>'), 'global_operations' => array('back' => array('label' => &$GLOBALS['TL_LANG']['MSC']['backBT'], 'href' => 'mod=&table=', 'class' => 'header_back', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'new' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['new'], 'href' => 'act=create', 'class' => 'header_new', 'attributes' => 'onclick="Backend.getScrollOffset();"'), 'all' => array('label' => &$GLOBALS['TL_LANG']['MSC']['all'], 'href' => 'act=select', 'class' => 'header_edit_all', 'attributes' => 'onclick="Backend.getScrollOffset();"')), 'operations' => array('edit' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['edit'], 'href' => 'act=edit', 'icon' => 'edit.gif'), 'copy' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['copy'], 'href' => 'act=copy', 'icon' => 'copy.gif', 'button_callback' => array('Isotope\\Backend\\Shipping\\Callback', 'copyShippingModule')), 'delete' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['delete'], 'href' => 'act=delete', 'icon' => 'delete.gif', 'attributes' => 'onclick="if (!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\')) return false; Backend.getScrollOffset();"', 'button_callback' => array('Isotope\\Backend\\Shipping\\Callback', 'deleteShippingModule')), 'toggle' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['toggle'], 'icon' => 'visible.gif', 'attributes' => 'onclick="Backend.getScrollOffset();return AjaxRequest.toggleVisibility(this,%s)"', 'button_callback' => array('Isotope\\Backend\\Shipping\\Callback', 'toggleIcon')), 'show' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['show'], 'href' => 'act=show', 'icon' => 'show.gif'))), 'palettes' => array('__selector__' => array('type', 'protected'), 'default' => '{title_legend},name,label,type', 'flat' => '{title_legend},name,label,type;{note_legend:hide},note;{price_legend},price,tax_class,flatCalculation;{config_legend},countries,subdivisions,postalCodes,quantity_mode,minimum_quantity,maximum_quantity,minimum_total,maximum_total,minimum_weight,maximum_weight,product_types,product_types_condition,config_ids;{expert_legend:hide},guests,protected;{enabled_legend},enabled', 'group' => '{title_legend},name,label,type;{note_legend:hide},note;{config_legend},group_methods;{price_legend},group_calculation,tax_class;{expert_legend:hide},guests,protected;{enabled_legend},enabled'), 'subpalettes' => array('protected' => 'groups'), 'fields' => array('id' => array('sql' => "int(10) unsigned NOT NULL auto_increment"), 'tstamp' => array('sql' => "int(10) unsigned NOT NULL default '0'"), 'name' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['name'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('mandatory' => true, 'maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'label' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['label'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 255, 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'type' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['type'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'default' => 'flat', 'options_callback' => function () { return \Isotope\Model\Shipping::getModelTypeOptions(); }, 'eval' => array('helpwizard' => true, 'submitOnChange' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "varchar(64) NOT NULL default ''"), 'note' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['note'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('rte' => 'tinyMCE', 'decodeEntities' => true), 'sql' => "text NULL"), 'countries' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['countries'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function () { return \System::getCountries(); }, 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'w50 w50h', 'chosen' => true), 'sql' => "blob NULL"), 'subdivisions' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['subdivisions'], 'exclude' => true, 'sorting' => true, 'inputType' => 'conditionalselect', 'options_callback' => array('Isotope\\Backend', 'getSubdivisions'), 'eval' => array('multiple' => true, 'size' => 8, 'conditionField' => 'countries', 'tl_class' => 'w50 w50h'), 'sql' => "longblob NULL"), 'postalCodes' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['postalCodes'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('style' => 'height:40px', 'tl_class' => 'clr'), 'sql' => "text NULL"), 'minimum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['minimum_total'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 13, 'rgxp' => 'price', 'tl_class' => 'w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'maximum_total' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['maximum_total'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 13, 'rgxp' => 'price', 'tl_class' => 'w50'), 'sql' => "decimal(12,2) NOT NULL default '0.00'"), 'minimum_weight' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['minimum_weight'], 'exclude' => true, 'default' => array('unit' => 'kg'), 'inputType' => 'timePeriod', 'options' => array('mg', 'g', 'kg', 't', 'ct', 'oz', 'lb', 'st', 'grain'), 'reference' => &$GLOBALS['TL_LANG']['WGT'], 'eval' => array('rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'maximum_weight' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['maximum_weight'], 'exclude' => true, 'default' => array('unit' => 'kg'), 'inputType' => 'timePeriod', 'options' => array('mg', 'g', 'kg', 't', 'ct', 'oz', 'lb', 'st', 'grain'), 'reference' => &$GLOBALS['TL_LANG']['WGT'], 'eval' => array('rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "varchar(255) NOT NULL default ''"), 'quantity_mode' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['quantity_mode'], 'exclude' => true, 'inputType' => 'select', 'options' => array('cart_items', 'cart_products'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['quantity_mode'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(32) NOT NULL default ''"), 'minimum_quantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['minimum_quantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'clr w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'maximum_quantity' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['maximum_quantity'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 10, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"), 'product_types' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['product_types'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\ProductType::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'chosen' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'product_types_condition' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['product_types_condition'], 'exclude' => true, 'inputType' => 'select', 'options' => array('onlyAvailable', 'allAvailable', 'oneAvailable', 'calculation'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_shipping'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'config_ids' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['config_ids'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\Config::getTable() . '.name', 'eval' => array('multiple' => true, 'size' => 8, 'tl_class' => 'clr w50 w50h', 'chosen' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'price' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['price'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength' => 16, 'rgxp' => 'surcharge', 'tl_class' => 'w50'), 'sql' => "varchar(16) NOT NULL default ''"), 'tax_class' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['tax_class'], 'exclude' => true, 'filter' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\TaxClass::getTable() . '.name', 'options_callback' => array('\\Isotope\\Model\\TaxClass', 'getOptionsWithSplit'), 'eval' => array('includeBlankOption' => true, 'blankOptionLabel' => &$GLOBALS['TL_LANG']['MSC']['taxFree'], 'tl_class' => 'w50'), 'sql' => "int(10) NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy')), 'flatCalculation' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['flatCalculation'], 'exclude' => true, 'inputType' => 'select', 'options' => array('flat', 'perProduct', 'perItem'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_shipping'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'group_methods' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['group_methods'], 'exclude' => true, 'inputType' => 'checkboxWizard', 'options_callback' => function ($dc) { $objShipping = \Isotope\Model\Shipping::findBy(array($dc->table . '.id!=?'), $dc->id); return null === $objShipping ? array() : $objShipping->fetchEach('name'); }, 'eval' => array('mandatory' => true, 'multiple' => true, 'tl_class' => 'clr w50 w50h'), 'sql' => "blob NULL"), 'group_calculation' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['group_calculation'], 'exclude' => true, 'inputType' => 'select', 'options' => array('first', 'lowest', 'highest', 'summarize'), 'reference' => &$GLOBALS['TL_LANG']['tl_iso_shipping'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(10) NOT NULL default ''"), 'guests' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['guests'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''"), 'protected' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['protected'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange' => true), 'sql' => "char(1) NOT NULL default ''"), 'groups' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['groups'], 'exclude' => true, 'inputType' => 'checkbox', 'foreignKey' => 'tl_member_group.name', 'eval' => array('multiple' => true), 'sql' => "blob NULL", 'relation' => array('type' => 'hasMany', 'load' => 'lazy')), 'enabled' => array('label' => &$GLOBALS['TL_LANG']['tl_iso_shipping']['enabled'], 'exclude' => true, 'inputType' => 'checkbox', 'sql' => "char(1) NOT NULL default ''")));
<?php /** * Quick Product Content Element for Isotope eCommerce and Contao Open Source CMS * * Copyright (C) 2014 HB Agency * * @package Isotope_Quickproducts * @link http://www.hbagency.com * @license http://opensource.org/licenses/lgpl-3.0.html */ /** * Palettes */ $GLOBALS['TL_DCA']['tl_content']['palettes']['isotope_quick'] = '{type_legend},type,headline;{include_legend},iso_products;{config_legend},iso_listingSortField,iso_listingSortDirection,iso_cols,iso_use_quantity,iso_buttons;{template_settings},iso_gallery,iso_list_layout;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop'; /** * Fields */ $GLOBALS['TL_DCA']['tl_content']['fields']['iso_products'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_products'], 'exclude' => true, 'inputType' => 'tableLookup', 'sql' => "blob NULL", 'eval' => array('mandatory' => true, 'doNotSaveEmpty' => true, 'tl_class' => 'clr', 'foreignTable' => 'tl_iso_product', 'fieldType' => 'checkbox', 'listFields' => array('type' => "(SELECT name FROM " . \Isotope\Model\ProductType::getTable() . " WHERE " . \Isotope\Model\Product::getTable() . ".type=" . \Isotope\Model\ProductType::getTable() . ".id)", 'name', 'sku'), 'searchFields' => array('name', 'alias', 'sku', 'description'), 'sqlWhere' => 'pid=0', 'searchLabel' => 'Search products')); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_gallery'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_gallery'], 'exclude' => true, 'inputType' => 'select', 'foreignKey' => \Isotope\Model\Gallery::getTable() . '.name', 'eval' => array('includeBlankOption' => true, 'chosen' => true, 'tl_class' => 'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_list_layout'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_list_layout'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => function (\DataContainer $dc) { return \Isotope\Backend::getTemplates('iso_list_'); }, 'eval' => array('includeBlankOption' => true, 'tl_class' => 'w50', 'chosen' => true), 'sql' => "varchar(64) NOT NULL default ''"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_use_quantity'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_use_quantity'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class' => 'w50'), 'sql' => "char(1) NOT NULL default ''"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_cols'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_cols'], 'exclude' => true, 'default' => 1, 'inputType' => 'text', 'eval' => array('maxlength' => 1, 'rgxp' => 'digit', 'tl_class' => 'w50'), 'sql' => "int(1) unsigned NOT NULL default '1'"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_buttons'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_buttons'], 'exclude' => true, 'inputType' => 'checkboxWizard', 'default' => array('add_to_cart'), 'options_callback' => array('Isotope\\Backend\\Module\\Callback', 'getButtons'), 'eval' => array('multiple' => true, 'tl_class' => 'clr'), 'sql' => "blob NULL"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_listingSortField'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_listingSortField'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => array('Isotope\\Backend\\Module\\Callback', 'getSortingFields'), 'eval' => array('includeBlankOption' => true, 'tl_class' => 'clr w50'), 'sql' => "varchar(255) NOT NULL default ''"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_listingSortDirection'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_listingSortDirection'], 'exclude' => true, 'default' => 'DESC', 'inputType' => 'select', 'options' => array('DESC', 'ASC'), 'reference' => &$GLOBALS['TL_LANG']['tl_content']['sortingDirection'], 'eval' => array('tl_class' => 'w50'), 'sql' => "varchar(8) NOT NULL default ''"); $GLOBALS['TL_DCA']['tl_content']['fields']['iso_cart_jumpTo'] = array('label' => &$GLOBALS['TL_LANG']['tl_content']['iso_cart_jumpTo'], 'exclude' => true, 'inputType' => 'pageTree', 'foreignKey' => 'tl_page.title', 'eval' => array('fieldType' => 'radio', 'tl_class' => 'clr'), 'explanation' => 'jumpTo', 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type' => 'hasOne', 'load' => 'lazy'));