<?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;
}
}