function update($values, $object) { if (!defined('SYS_FORMS')) { require_once BASE . 'subsystems/forms.php'; } exponent_forms_initialize(); $object->title = $values['title']; $object->internal_name = preg_replace('/--+/', '-', preg_replace('/[^A-Za-z0-9_]/', '-', $values['int'])); $object->body = $values['body']; $object->publish = PopupDateTimeControl::parseData('publish', $values); $object->unpublish = PopupDateTimeControl::parseData('unpublish', $values); return $object; }
function form($object) { global $user; $i18n = exponent_lang_loadFile('datatypes/calendar.php'); if (!defined('SYS_FORMS')) { require_once BASE . 'subsystems/forms.php'; } exponent_forms_initialize(); $form = new form(); if (!isset($object->id)) { $object->title = ''; $object->body = ''; $object->eventdate = null; $object->eventdate->id = 0; $object->eventdate->date = time(); $object->eventstart = time(); $object->eventend = time() + 3600; $object->is_allday = 0; $object->is_recurring = 0; } else { $form->meta('id', $object->id); } $form->addScript("switchControl", exponent_core_abs2rel(array_shift(exponent_core_resolveFilePaths("forms", "", "js", "switchControl")))); $form->register('title', $i18n['title'], new textcontrol($object->title)); $form->register('body', $i18n['body'], new htmleditorcontrol($object->body)); $form->register(null, '', new htmlcontrol('<hr size="1" />')); if ($object->is_recurring == 1) { $form->register(null, '', new htmlcontrol($i18n['remove_warning'], false)); } $form->register('eventdate', $i18n['eventdate'], new PopupDateTimeControl($object->eventdate->date, '', false)); $cb = new checkboxcontrol($object->is_allday, true); #Warning: when the box returns true, we have to switch OFF the time controls $cb->jsHooks = array('onClick' => 'Exponent.Forms.switchControl(\'eventstart_TimeControl\', this.checked ? false : true); Exponent.Forms.switchControl(\'eventend_TimeControl\', this.checked ? false : true);'); $form->register('is_allday', $i18n['is_allday'], $cb); #Warning: when the box returns true, we have to switch OFF the time controls $form->register('eventstart', $i18n['eventstart'], new TimeControl($object->eventstart, $object->is_allday ? false : true)); $form->register('eventend', $i18n['eventend'], new TimeControl($object->eventend, $object->is_allday ? false : true)); if (!isset($object->id)) { $customctl = file_get_contents(BASE . 'modules/CalendarModule/form.part'); $datectl = new PopupDateTimeControl($object->eventstart + 365 * 86400, '', false); $customctl = str_replace('%%UNTILDATEPICKER%%', $datectl->controlToHTML('untildate'), $customctl); $form->register('recur', $i18n['recurrence'], new customcontrol($customctl)); } else { if ($object->is_recurring == 1) { // Edit applies to one or more... $template = new template('CalendarModule', '_recur_dates'); global $db; $eventdates = $db->selectObjects('eventdate', 'event_id=' . $object->id); if (!defined('SYS_SORTING')) { require_once BASE . 'subsystems/sorting.php'; } if (!function_exists('exponent_sorting_byDateAscending')) { function exponent_sorting_byDateAscending($a, $b) { return $a->date > $b->date ? 1 : -1; } } //Pathos Compatibility::this is deprecated if (@defined(PATHOS)) { if (!function_exists('pathos_sorting_byDateAscending')) { function pathos_sorting_byDateAscending($a, $b) { return exponent_sorting_byDateAscending($a, $b); } } } //End Pathos Compatibility usort($eventdates, 'exponent_sorting_byDateAscending'); if (isset($object->eventdate)) { $template->assign('checked_date', $object->eventdate); } $template->assign('dates', $eventdates); $form->register(null, '', new htmlcontrol('<hr size="1"/>' . $i18n['recurrence_warning'])); $form->register(null, '', new htmlcontrol('<table cellspacing="0" cellpadding="2" width="100%">' . $template->render() . '</table>')); $form->meta('date_id', $object->eventdate->id); // Will be 0 if we are creating. } } $form->register('submit', '', new buttongroupcontrol($i18n['save'], '', $i18n['cancel'])); return $form; }
$eventdate = $db->selectObject('eventdate', 'id=' . intval($_POST['date_id'])); $eventdate->date = exponent_datetime_startOfDayTimestamp(PopupDateTimeControl::parseData("eventdate", $_POST)); $db->updateObject($eventdate, 'eventdate'); } else { $item->approved = 1; $db->updateObject($item, "calendar"); // There should be only one eventdate $eventdate = $db->selectObject('eventdate', 'event_id = ' . $item->id); $eventdate->date = exponent_datetime_startOfDayTimestamp(PopupDateTimeControl::parseData("eventdate", $_POST)); $db->updateObject($eventdate, 'eventdate'); } CalendarModule::spiderContent($item); } else { exponent_forms_initialize(); $start_recur = exponent_datetime_startOfDayTimestamp(PopupDateTimeControl::parseData("eventdate", $_POST)); $stop_recur = exponent_datetime_startOfDayTimestamp(PopupDateTimeControl::parseData("untildate", $_POST)); if ($_POST['recur'] != "recur_none") { // Do recurrence $freq = $_POST['recur_freq_' . $_POST['recur']]; ###echo $_POST['recur'] . "<br />"; switch ($_POST['recur']) { case "recur_daily": $dates = exponent_datetime_recurringDailyDates($start_recur, $stop_recur, $freq); break; case "recur_weekly": $dates = exponent_datetime_recurringWeeklyDates($start_recur, $stop_recur, $freq, isset($_POST['day']) ? array_keys($_POST['day']) : array($dateinfo['wday'])); break; case "recur_monthly": $dates = exponent_datetime_recurringMonthlyDates($start_recur, $stop_recur, $freq, $_POST['month_type']); break; case "recur_yearly":