public function executeIndex(sfWebRequest $request) { $this->form = new ReservationDeleteForm(array(), array(), false); $formName = $this->form->getName(); $this->formConfirm = new ReservationDeleteConfirmForm(array(), array(), false); $nameConfirm = $this->formConfirm->getName(); $this->getUser()->syncParameters($this, 'reservationDelete', 'index', array('offset', 'limit', $formName, 'sort_column', 'sort_direction'), $request); $this->step = sfConfig::get('app_max_reservations_on_reporting'); $search = $request->getPostParameter($nameConfirm); $deletion_choice = $search['deletion_choices']; $this->displayInfo = true; if ($request->getParameter('id') != null) { $this->forward404Unless($reservation = ReservationPeer::retrieveByPk($request->getParameter('id')), sprintf('Object reservation does not exist (%s).', $request->getParameter('id'))); $this->reservationId = $request->getParameter('id'); $this->formConfirm = new ReservationDeleteConfirmForm(array(), array(), false); $nameConfirm = $this->formConfirm->getName(); $search = $request->getPostParameter($nameConfirm); $deletion_choice = $search['deletion_choices']; } else { $this->reservationId = null; } if (is_null($this->sort_column)) { $this->sort_column = 'date'; $this->sort_direction = 'up'; } if (is_null($this->offset)) { $this->offset = 0; } if (is_null($this->limit) || $this->limit <= 0) { $this->limit = $this->step; } $c = new Criteria(); SortCriteria::addSortCriteria($c, $this->sort_column, ReservationPeer::getSortAliases(), $this->sort_direction); if ($request->getParameter('id') != null) { $this->forward404Unless($reservation = ReservationPeer::retrieveByPk($request->getParameter('id')), sprintf('Object reservation does not exist (%s).', $request->getParameter('id'))); switch ($deletion_choice) { case 'this': $room_id = $reservation->getRoomProfile()->getRoomId(); if (!$this->isAdmin() || !$reservation->isEditable()) { if (!$this->getUser()->canDeleteReservation($reservation)) { $this->getUser()->setFlash('deleteError', true); $this->redirect('reservation/index?roomId=' . $room_id); } } $this->deleteAReservation($reservation); $this->redirect('reservation/index?roomId=' . $room_id); break; case 'next': $this->reservation_list = ReservationPeer::reportRepeatNext($reservation); break; case 'previous': $this->reservation_list = ReservationPeer::reportRepeatPrevious($reservation); break; case 'all': $this->reservation_list = ReservationPeer::reportRepeatAll($reservation); break; } } $this->getUser()->syncParameters($this, 'reservationDelete', 'index', array('offset', 'limit', $formName, 'sort_column', 'sort_direction'), $request); $this->filtered = false; if (!is_null($this->{$formName}) && is_null($request->getParameter('id'))) { $this->filtered = true; $this->form->bind($this->{$formName}, $request->getFiles($formName)); if ($this->form->isValid()) { $this->reservation_list = ReservationPeer::reportTime($this->form->getValue('activity'), $this->form->getValue('rooms'), strtotime($this->form->getValue('start_date')), strtotime($this->form->getValue('end_date')), strtotime($this->form->getValue('start_hour')), strtotime($this->form->getValue('end_hour')), $this->form->getValue('periodicity'), $this->form->getValue('number'), $c); // $this->getUser()->setAttribute('stop_on_error_tmp', $this->form->getValue('stop_on_error')); // ----------------------------------- $this->count = count($this->reservation_list); $this->reservation_list = array_slice($this->reservation_list, $this->offset, $this->limit); } else { $this->count = 0; $this->reservation_list = array(); } } else { if (!isset($this->reservation_list)) { $this->count = 0; $this->reservation_list = array(); } $this->displayInfo = false; } // $this->getUser()->setAttribute('list_delete_tmp', $this->reservation_list); // ----------------------------------- if ($this->offset < 0 || $this->offset >= $this->count && $this->count > 0) { $this->forward404('Invalid offset/count values.'); } }