2011-01-21 00:30:53 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
class Application_Form_AddShowRepeats extends Zend_Form_SubForm
|
|
|
|
{
|
|
|
|
public function init()
|
|
|
|
{
|
2021-10-11 16:10:47 +02:00
|
|
|
$linked = new Zend_Form_Element_Checkbox('add_show_linked');
|
|
|
|
$linked->setLabel(_('Link:'));
|
2013-04-04 22:30:33 +02:00
|
|
|
$this->addElement($linked);
|
|
|
|
|
2022-03-14 11:15:04 +01:00
|
|
|
// Add type select
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->addElement('select', 'add_show_repeat_type', [
|
2011-02-09 00:22:51 +01:00
|
|
|
'required' => true,
|
2012-11-15 16:59:06 +01:00
|
|
|
'label' => _('Repeat Type:'),
|
2011-02-10 00:47:49 +01:00
|
|
|
'class' => ' input_select',
|
2021-10-11 16:10:47 +02:00
|
|
|
'multiOptions' => [
|
|
|
|
'0' => _('weekly'),
|
|
|
|
'1' => _('every 2 weeks'),
|
|
|
|
'4' => _('every 3 weeks'),
|
|
|
|
'5' => _('every 4 weeks'),
|
|
|
|
'2' => _('monthly'),
|
|
|
|
],
|
|
|
|
]);
|
2011-02-09 00:22:51 +01:00
|
|
|
|
2011-01-21 00:30:53 +01:00
|
|
|
// Add days checkboxes
|
2012-07-11 00:55:44 +02:00
|
|
|
$this->addElement(
|
2011-01-21 00:30:53 +01:00
|
|
|
'multiCheckbox',
|
2011-01-21 19:25:12 +01:00
|
|
|
'add_show_day_check',
|
2021-10-11 16:10:47 +02:00
|
|
|
[
|
2012-11-15 16:59:06 +01:00
|
|
|
'label' => _('Select Days:'),
|
2011-01-21 00:30:53 +01:00
|
|
|
'required' => false,
|
2021-10-11 16:10:47 +02:00
|
|
|
'multiOptions' => [
|
|
|
|
'0' => _('Sun'),
|
|
|
|
'1' => _('Mon'),
|
|
|
|
'2' => _('Tue'),
|
|
|
|
'3' => _('Wed'),
|
|
|
|
'4' => _('Thu'),
|
|
|
|
'5' => _('Fri'),
|
|
|
|
'6' => _('Sat'),
|
|
|
|
],
|
|
|
|
]
|
|
|
|
);
|
|
|
|
|
|
|
|
$repeatMonthlyType = new Zend_Form_Element_Radio('add_show_monthly_repeat_type');
|
|
|
|
$repeatMonthlyType
|
|
|
|
->setLabel(_('Repeat By:'))
|
|
|
|
->setRequired(true)
|
|
|
|
->setMultiOptions(
|
|
|
|
[2 => _('day of the month'), 3 => _('day of the week')]
|
|
|
|
)
|
2022-01-23 19:15:55 +01:00
|
|
|
->setValue(2);
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->addElement($repeatMonthlyType);
|
2013-03-22 20:57:15 +01:00
|
|
|
|
2012-07-11 00:55:44 +02:00
|
|
|
// Add end date element
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->addElement('text', 'add_show_end_date', [
|
|
|
|
'label' => _('Date End:'),
|
|
|
|
'class' => 'input_text',
|
|
|
|
'value' => date('Y-m-d'),
|
|
|
|
'required' => false,
|
|
|
|
'filters' => ['StringTrim'],
|
|
|
|
'validators' => [
|
2012-07-11 00:55:44 +02:00
|
|
|
'NotEmpty',
|
2021-10-11 16:10:47 +02:00
|
|
|
['date', false, ['YYYY-MM-DD']],
|
|
|
|
],
|
|
|
|
]);
|
2011-01-21 00:30:53 +01:00
|
|
|
|
2012-07-11 00:55:44 +02:00
|
|
|
// Add no end element
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->addElement('checkbox', 'add_show_no_end', [
|
|
|
|
'label' => _('No End?'),
|
|
|
|
'required' => false,
|
2012-01-04 23:06:58 +01:00
|
|
|
'checked' => true,
|
2021-10-11 16:10:47 +02:00
|
|
|
]);
|
2011-01-21 00:30:53 +01:00
|
|
|
}
|
2012-07-11 00:55:44 +02:00
|
|
|
|
2012-08-29 05:04:55 +02:00
|
|
|
public function disable()
|
|
|
|
{
|
2012-03-30 21:11:24 +02:00
|
|
|
$elements = $this->getElements();
|
2012-08-29 05:04:55 +02:00
|
|
|
foreach ($elements as $element) {
|
|
|
|
if ($element->getType() != 'Zend_Form_Element_Hidden') {
|
2021-10-11 16:10:47 +02:00
|
|
|
$element->setAttrib('disabled', 'disabled');
|
2012-03-30 21:11:24 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-01-21 00:30:53 +01:00
|
|
|
|
2021-10-11 16:10:47 +02:00
|
|
|
public function isValid($formData)
|
|
|
|
{
|
|
|
|
if (parent::isValid($formData)) {
|
2013-12-11 21:54:13 +01:00
|
|
|
return $this->checkReliantFields($formData);
|
2013-02-25 23:31:43 +01:00
|
|
|
}
|
2021-10-11 16:10:47 +02:00
|
|
|
|
|
|
|
return false;
|
2013-02-25 23:31:43 +01:00
|
|
|
}
|
|
|
|
|
2012-08-29 05:04:55 +02:00
|
|
|
public function checkReliantFields($formData)
|
|
|
|
{
|
|
|
|
if (!$formData['add_show_no_end']) {
|
2011-04-12 06:14:26 +02:00
|
|
|
$start_timestamp = $formData['add_show_start_date'];
|
|
|
|
$end_timestamp = $formData['add_show_end_date'];
|
2013-12-11 21:54:13 +01:00
|
|
|
$showTimeZone = new DateTimeZone($formData['add_show_timezone']);
|
2021-10-11 16:10:47 +02:00
|
|
|
|
2022-03-14 11:15:04 +01:00
|
|
|
// We're assuming all data is valid at this point (timezone, etc.).
|
2021-10-11 16:10:47 +02:00
|
|
|
|
2013-12-11 21:54:13 +01:00
|
|
|
$startDate = new DateTime($start_timestamp, $showTimeZone);
|
|
|
|
$endDate = new DateTime($end_timestamp, $showTimeZone);
|
2021-10-11 16:10:47 +02:00
|
|
|
|
2013-12-11 21:54:13 +01:00
|
|
|
if ($endDate < $startDate) {
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->getElement('add_show_end_date')->setErrors([_('End date must be after start date')]);
|
|
|
|
|
2011-04-12 06:14:26 +02:00
|
|
|
return false;
|
|
|
|
}
|
2021-10-11 16:10:47 +02:00
|
|
|
|
2013-12-11 21:54:13 +01:00
|
|
|
return true;
|
2011-01-31 02:11:18 +01:00
|
|
|
}
|
2011-04-04 19:50:51 +02:00
|
|
|
|
2013-10-01 20:19:02 +02:00
|
|
|
if (!isset($formData['add_show_day_check'])) {
|
2021-10-11 16:10:47 +02:00
|
|
|
$this->getElement('add_show_day_check')->setErrors([_('Please select a repeat day')]);
|
2013-10-01 20:19:02 +02:00
|
|
|
}
|
|
|
|
|
2011-01-31 02:11:18 +01:00
|
|
|
return true;
|
|
|
|
}
|
2011-01-21 00:30:53 +01:00
|
|
|
}
|