<?php/** * Boxmaker extension for Contao Open Source CMS * * Copyright (C) 2013-2014 bekanntmacher * * @author Yanick Witschi <yanick.witschi@terminal42.ch> * @license commercial */namespace Bekanntmacher\BoxmakerBundle\Module;use Bekanntmacher\BoxmakerBundle\Classes\Config;use Bekanntmacher\BoxmakerBundle\Classes\FormHelper;use Bekanntmacher\BoxmakerBundle\Model\ConfigModel;use Haste\Form\Form;use Haste\Util\Url;class CalcForm extends TypeUtil{ /** * Template * @var string */ protected $strTemplate = 'mod_boxmaker_calcform'; /** * Display a wildcard in the back end * @return string */ public function generate() { if (TL_MODE == 'BE') { $objTemplate = new \BackendTemplate('be_wildcard'); $objTemplate->wildcard = '### USER INPUT FORMULAR ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; return $objTemplate->parse(); } return parent::generate(); } /** * Generate the module */ protected function compile() { // Boxmaker Konfiguration $objConfig = new Config(ConfigModel::findByPk($this->boxmaker_config)->row()); $objForm = new Form('boxmaker_calcform', 'POST', function($objHaste) { return \Input::post('FORM_SUBMIT') === $objHaste->getFormId(); }); $arrFields = FormHelper::getUserInputFormFields($objConfig); // Default values foreach ($arrFields as $name => $arrField) { $arrFields[$name]['value'] = ((int) \Input::get($name) > 0) ? (int) \Input::get($name) : $objConfig->$name; } $objForm->addFormFields($arrFields); $objForm->addSubmitFormField('submit', $GLOBALS['TL_LANG']['MSC']['boxmaker_calcform_submit']); if ($objForm->validate()) { $arrData = $objForm->fetchAll(); unset($arrData['submit']); unset($arrData['icon']); $strUrl = http_build_query($arrData, null, '&'); \Controller::redirect(Url::addQueryString($strUrl)); } $this->Template->form = $objForm->generate(); } /** * Sanitize the user input * @param array * @return array */ private function sanitizeData($arrData) { // Make sure the values are sane foreach ($arrData as $k => $v) { $arrData[$k] = (int) $v; } return $arrData; }}