/** * A method to process POST request for editing an existing meeting * @param null $post the $_POST array */ public function editPost($post = null) { if (isset($post)) { # Create an object of existing meeting $meeting = $this->model('Meeting', $post['id']); # Check if we have access to editing $this->checkAuthIsApproved($meeting); $this->checkAuthCancelled($meeting); $this->checkAuthProjectScope($meeting->getProjectId()); # Set googleEventId to the value provided from database (if any) $googleEventId = $meeting->getGoogleEventId(); # Get details from post request $deadline = $post['deadline']; $deadline_time_hours = $post['deadline_time_hours']; $deadline_time_minutes = $post['deadline_time_minutes']; $isApproved = 0; if (isset($post['isApproved'])) { $isApproved = 1; } # If it's the supervisor who edits, it's automatically approved if (HTTPSession::getInstance()->USER_TYPE == User::USER_TYPE_SUPERVISOR) { $isApproved = 1; } $arrivedOnTime = 0; if (isset($post['arrivedOnTime'])) { $arrivedOnTime = 1; } $takenPlace = 0; if (isset($post['takenPlace'])) { $takenPlace = 1; } $isCancelled = 0; if (isset($post['isCancelled'])) { $isCancelled = 1; } # Set correct format of provided date $dateTime = DateTime::createFromFormat('d-m-Y H:i', $deadline . " " . $deadline_time_hours . ":" . $deadline_time_minutes); $date = $dateTime->format('Y-m-d H:i:s'); # Set meeting with provided details $meeting->setDatetime($date); $meeting->setIsApproved($isApproved); $meeting->setTakenPlace($takenPlace); $meeting->setArrivedOnTime($arrivedOnTime); $meeting->setIsCancelled($isCancelled); # Check if meeting is approved by a supervisor and user is logged in as google user # Also check if googleEventId exists for this meeting if ($isApproved && !empty(GoogleAuth::$auth) && !empty($googleEventId)) { # Get google auth format of datetime $datetimeGoogleStart = DatetimeConverter::getGoogleAuthDateTimeFormat($date); $datetimeGoogleEnd = $dateTime; $datetimeGoogleEnd->modify("+1 hour"); $datetimeGoogleEnd = DatetimeConverter::getGoogleAuthDateTimeFormat($datetimeGoogleEnd->format('Y-m-d H:i:s')); # In that case, we can add it to the google calendar and save the id of this event $googleEventId = GoogleAuth::getInstance()->editEventInCalendar($googleEventId, $datetimeGoogleStart, $datetimeGoogleEnd); } if (!empty($googleEventId)) { $meeting->setGoogleEventId($googleEventId); } # Save changes $meeting->Save(); # If meeting has taken place, create a notification if ($takenPlace) { new NotificationMeeting($meeting->getID(), NotificationMeeting::TAKEN_PLACE); } } # Redirect back to meetings header('Location: ' . SITE_URL . 'meetings/' . $post['id']); die; }