libretime/legacy/application/forms/AddShowRepeats.php

122 lines
3.6 KiB
PHP
Raw Permalink Normal View History

<?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);
// Add type select
2021-10-11 16:10:47 +02:00
$this->addElement('select', 'add_show_repeat_type', [
'required' => true,
'label' => _('Repeat Type:'),
'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'),
],
]);
// Add days checkboxes
$this->addElement(
'multiCheckbox',
2011-01-21 19:25:12 +01:00
'add_show_day_check',
2021-10-11 16:10:47 +02:00
[
'label' => _('Select Days:'),
'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')]
)
->setValue(2);
2021-10-11 16:10:47 +02:00
$this->addElement($repeatMonthlyType);
// 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' => [
'NotEmpty',
2021-10-11 16:10:47 +02:00
['date', false, ['YYYY-MM-DD']],
],
]);
// Add no end element
2021-10-11 16:10:47 +02:00
$this->addElement('checkbox', 'add_show_no_end', [
'label' => _('No End?'),
'required' => false,
'checked' => true,
2021-10-11 16:10:47 +02:00
]);
}
public function disable()
{
$elements = $this->getElements();
foreach ($elements as $element) {
if ($element->getType() != 'Zend_Form_Element_Hidden') {
2021-10-11 16:10:47 +02:00
$element->setAttrib('disabled', 'disabled');
}
}
}
2021-10-11 16:10:47 +02:00
public function isValid($formData)
{
if (parent::isValid($formData)) {
return $this->checkReliantFields($formData);
}
2021-10-11 16:10:47 +02:00
return false;
}
public function checkReliantFields($formData)
{
if (!$formData['add_show_no_end']) {
$start_timestamp = $formData['add_show_start_date'];
$end_timestamp = $formData['add_show_end_date'];
$showTimeZone = new DateTimeZone($formData['add_show_timezone']);
2021-10-11 16:10:47 +02:00
// We're assuming all data is valid at this point (timezone, etc.).
2021-10-11 16:10:47 +02:00
$startDate = new DateTime($start_timestamp, $showTimeZone);
$endDate = new DateTime($end_timestamp, $showTimeZone);
2021-10-11 16:10:47 +02: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')]);
return false;
}
2021-10-11 16:10:47 +02:00
return true;
2011-01-31 02:11:18 +01: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')]);
}
2011-01-31 02:11:18 +01:00
return true;
}
}