src/bekanntmacher/boxmaker-bundle/src/Module/CalcForm.php line 60

Open in your IDE?
  1. <?php
  2. /**
  3.  * Boxmaker extension for Contao Open Source CMS
  4.  *
  5.  * Copyright (C) 2013-2014 bekanntmacher
  6.  *
  7.  * @author     Yanick Witschi <yanick.witschi@terminal42.ch>
  8.  * @license    commercial
  9.  */
  10. namespace Bekanntmacher\BoxmakerBundle\Module;
  11. use Bekanntmacher\BoxmakerBundle\Classes\Config;
  12. use Bekanntmacher\BoxmakerBundle\Classes\FormHelper;
  13. use Bekanntmacher\BoxmakerBundle\Model\ConfigModel;
  14. use Haste\Form\Form;
  15. use Haste\Util\Url;
  16. class CalcForm extends TypeUtil
  17. {
  18.     /**
  19.      * Template
  20.      * @var string
  21.      */
  22.     protected $strTemplate 'mod_boxmaker_calcform';
  23.     /**
  24.      * Display a wildcard in the back end
  25.      * @return string
  26.      */
  27.     public function generate()
  28.     {
  29.         if (TL_MODE == 'BE') {
  30.             $objTemplate = new \BackendTemplate('be_wildcard');
  31.             $objTemplate->wildcard '### USER INPUT FORMULAR ###';
  32.             $objTemplate->title $this->headline;
  33.             $objTemplate->id $this->id;
  34.             $objTemplate->link $this->name;
  35.             $objTemplate->href 'contao/main.php?do=themes&amp;table=tl_module&amp;act=edit&amp;id=' $this->id;
  36.             return $objTemplate->parse();
  37.         }
  38.         return parent::generate();
  39.     }
  40.     /**
  41.      * Generate the module
  42.      */
  43.     protected function compile()
  44.     {
  45.         // Boxmaker Konfiguration
  46.         $objConfig = new Config(ConfigModel::findByPk($this->boxmaker_config)->row());
  47.         $objForm = new Form('boxmaker_calcform''POST', function($objHaste) {
  48.             return \Input::post('FORM_SUBMIT') === $objHaste->getFormId();
  49.         });
  50.         $arrFields FormHelper::getUserInputFormFields($objConfig);
  51.         // Default values
  52.         foreach ($arrFields as $name => $arrField) {
  53.            $arrFields[$name]['value'] = ((int) \Input::get($name) > 0) ? (int) \Input::get($name) : $objConfig->$name;
  54.         }
  55.         $objForm->addFormFields($arrFields);
  56.         $objForm->addSubmitFormField('submit'$GLOBALS['TL_LANG']['MSC']['boxmaker_calcform_submit']);
  57.         if ($objForm->validate()) {
  58.             $arrData $objForm->fetchAll();
  59.             unset($arrData['submit']);
  60.             unset($arrData['icon']);
  61.             $strUrl http_build_query($arrDatanull'&');
  62.             \Controller::redirect(Url::addQueryString($strUrl));
  63.         }
  64.         $this->Template->form $objForm->generate();
  65.     }
  66.     /**
  67.      * Sanitize the user input
  68.      * @param   array
  69.      * @return  array
  70.      */
  71.     private function sanitizeData($arrData)
  72.     {
  73.         // Make sure the values are sane
  74.         foreach ($arrData as $k => $v) {
  75.             $arrData[$k] = (int) $v;
  76.         }
  77.         return $arrData;
  78.     }