120 lines
3.7 KiB
PHP
Executable File
120 lines
3.7 KiB
PHP
Executable File
<?php
|
|
|
|
class Application_Form_AddShowRepeats extends Zend_Form_SubForm
|
|
{
|
|
|
|
public function init()
|
|
{
|
|
|
|
$linked = new Zend_Form_Element_Checkbox("add_show_linked");
|
|
$linked->setLabel(_("Link:"));
|
|
$this->addElement($linked);
|
|
|
|
//Add type select
|
|
$this->addElement('select', 'add_show_repeat_type', array(
|
|
'required' => true,
|
|
'label' => _('Repeat Type:'),
|
|
'class' => ' input_select',
|
|
'multiOptions' => array(
|
|
"0" => _("weekly"),
|
|
"1" => _("every 2 weeks"),
|
|
"4" => _("every 3 weeks"),
|
|
"5" => _("every 4 weeks"),
|
|
"2" => _("monthly")
|
|
),
|
|
));
|
|
|
|
// Add days checkboxes
|
|
$this->addElement(
|
|
'multiCheckbox',
|
|
'add_show_day_check',
|
|
array(
|
|
'label' => _('Select Days:'),
|
|
'required' => false,
|
|
'multiOptions' => array(
|
|
"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(
|
|
array(2 => _("day of the month"), 3 => _("day of the week")))
|
|
->setValue(2);
|
|
$this->addElement($repeatMonthlyType);
|
|
|
|
// Add end date element
|
|
$this->addElement('text', 'add_show_end_date', array(
|
|
'label' => _('Date End:'),
|
|
'class' => 'input_text',
|
|
'value' => date("Y-m-d"),
|
|
'required' => false,
|
|
'filters' => array('StringTrim'),
|
|
'validators' => array(
|
|
'NotEmpty',
|
|
array('date', false, array('YYYY-MM-DD'))
|
|
)
|
|
));
|
|
|
|
// Add no end element
|
|
$this->addElement('checkbox', 'add_show_no_end', array(
|
|
'label' => _('No End?'),
|
|
'required' => false,
|
|
'checked' => true,
|
|
));
|
|
}
|
|
|
|
public function disable()
|
|
{
|
|
$elements = $this->getElements();
|
|
foreach ($elements as $element) {
|
|
if ($element->getType() != 'Zend_Form_Element_Hidden') {
|
|
$element->setAttrib('disabled','disabled');
|
|
}
|
|
}
|
|
}
|
|
|
|
public function isValid($formData) {
|
|
if (parent::isValid($formData)) {
|
|
return $this->checkReliantFields($formData);
|
|
} else {
|
|
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']);
|
|
|
|
//We're assuming all data is valid at this point (timezone, etc.).
|
|
|
|
$startDate = new DateTime($start_timestamp, $showTimeZone);
|
|
$endDate = new DateTime($end_timestamp, $showTimeZone);
|
|
|
|
if ($endDate < $startDate) {
|
|
$this->getElement('add_show_end_date')->setErrors(array(_('End date must be after start date')));
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
if (!isset($formData['add_show_day_check'])) {
|
|
$this->getElement('add_show_day_check')->setErrors(array(_('Please select a repeat day')));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|