function change_invitation_state($attendance = null, $event_id = null, $user_id = null) { $from_post_get = $attendance == null || $event_id == null; // Take variables from post if ($attendance == null) $attendance = array_var($_POST, 'event_attendance'); if ($event_id == null) $event_id = array_var($_POST, 'event_id'); if ($user_id == null) $user_id = array_var($_POST, 'user_id'); // If post is empty, take variables from get if ($attendance == null) $attendance = array_var($_GET, 'at'); if ($event_id == null) $event_id = array_var($_GET, 'e'); if ($user_id == null) $user_id = array_var($_GET, 'u'); if ($attendance == null || $event_id == null) { flash_error('Missing parameters'); ajx_current("back"); } else { $conditions = array('conditions' => "`event_id` = " . DB::escape($event_id) . " AND `contact_id` = ". DB::escape($user_id)); $inv = EventInvitations::findOne($conditions); $conditions_all = array('conditions' => "`event_id` = " . DB::escape($event_id)); $invs = EventInvitations::findAll($conditions_all); if ($inv != null) { if ($inv->getContactId() != logged_user()->getId()) { flash_error(lang('no access permissions')); self::view_calendar(); return; } try { DB::beginWork(); $inv->setInvitationState($attendance); $inv->save(); DB::commit(); } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); return; } } if ($from_post_get) { // Notify creator (only when invitation is accepted or declined) $event = ProjectEvents::findById(array('id' => $event_id)); if ($inv->getInvitationState() == 1 || $inv->getInvitationState() == 2) { $user = Contacts::findById(array('id' => $user_id)); session_commit(); Notifier::notifEventAssistance($event, $inv, $user, $invs); if ($inv->getInvitationState() == 1) flash_success(lang('invitation accepted')); else flash_success(lang('invitation rejected')); } else { flash_success(lang('success edit event', $event instanceof ProjectEvent ? clean($event->getObjectName()) : '')); } if (array_var($_GET, 'at')) { self::view_calendar(); } else { ajx_current("reload"); } } } }