} else { $resp = Calendar_Events::update_admin_event($id, $newTitle, $start, $duration, $newContent, $visibility, $recursion); } } if ($resp['success']) { Session::Messages($langEventModify, 'alert-success'); } else { Session::Messages($resp['message']); } redirect_to_home_page('main/personal_calendar/index.php'); } else { // new event $recursion = null; if (!empty($_POST['frequencyperiod']) && intval($_POST['frequencynumber']) > 0 && !empty($_POST['enddate'])) { $recursion = array('unit' => $_POST['frequencyperiod'], 'repeat' => $_POST['frequencynumber'], 'end' => $_POST['enddate']); } $resp = Calendar_Events::add_event($newTitle, $newContent, $start, $duration, $recursion, $refobjid, $visibility); if ($resp['success']) { Session::Messages($langEventAdd, 'alert-success'); } else { Session::Messages($resp['message']); } redirect_to_home_page('main/personal_calendar/index.php'); } } // end of if $submit /* delete */ if (isset($_GET['delete']) && (isset($_GET['et']) && ($_GET['et'] == 'personal' || $_GET['et'] == 'admin'))) { $thisEventId = intval($_GET['delete']); if(isset($_GET['rep']) && $_GET['rep'] == 'yes'){ $resp = Calendar_Events::delete_recursive_event($thisEventId, $_GET['et']); } else {
/** * Update existing admin event and logs the action * @param int $eventid id in table note * @param string $title note title * @param text $content note body * @param int $visibility_level min user level to show this event to */ public static function update_admin_event($eventid, $title, $start, $duration, $content, $visibility_level, $recursion = NULL, $recursivelly = false) { global $uid, $is_admin, $langNotValidInput, $langNotAllowed; if (!$is_admin) { return array('success' => false, 'message' => $langNotAllowed); } if($recursivelly && !is_null($recursion)){ $oldrec = Calendar_Events::get_event_recursion($eventid, 'admin'); $p = "P".$recursion['repeat'].$recursion['unit']; $e = DateTime::createFromFormat('d-m-Y', $recursion['end'])->format('Y-m-d'); if($oldrec->recursion_period != $p || $oldrec->recursion_end != $e){ Calendar_Events::delete_recursive_event($eventid, 'admin'); return Calendar_Events::add_event($title, $content, $start, $duration, $recursion, null, $visibility_level); } } if(!is_null($recursion) && !Calendar_Events::is_recursive($eventid, 'admin')) { Calendar_Events::delete_event($eventid, 'admin'); return Calendar_Events::add_event($title, $content, $start, $duration, $recursion, null, $visibility_level); } $d1 = DateTime::createFromFormat('d-m-Y H:i', $start); $d2 = DateTime::createFromFormat('d-m-Y H:i:s', $start); $title = trim($title); if (empty($title) || !(($d1 && $d1->format('d-m-Y H:i') == $start) || ($d2 && $d2->format('d-m-Y H:i:s') == $start))) { return array('success' => false, 'message' => $langNotValidInput); } $where_clause = ($recursivelly)? "WHERE source_event_id = ?d":"WHERE id = ?d"; $startdatetimeformatted = ($recursivelly)? $d1->format('H:i'):$d1->format('Y-m-d H:i'); $start_date_update_clause = ($recursivelly)? "start = CONCAT(date_format(start, '%Y-%m-%d '),?t), ":"start = ?t, "; Database::get()->query("UPDATE admin_calendar SET " . "title = ?s, " . $start_date_update_clause . "duration = ?t, " . "content = ?s, " . "visibility_level = ?d " . $where_clause, $title, $startdatetimeformatted, $duration, purify($content), $visibility_level, $eventid); Log::record(0, MODULE_ID_ADMINCALENDAR, LOG_MODIFY, array('user_id' => $uid, 'id' => $eventid, 'title' => $title, 'content' => ellipsize_html(canonicalize_whitespace(strip_tags($content)), 50, '+'))); return array('success' => true, 'message' => '', 'event' => $eventid); }