/** * Exports team employee leaves in iCalendar format * * @Route("/secured/calendar/team/leaves/export", name="OpitOpitHrmLeaveBundle_calendar_team_leaves_export") * @Method({"POST"}) * @Secure(roles="ROLE_USER") * @Template() */ public function exportTeamEmployeeLeavesAction(Request $request) { $entityManager = $this->getDoctrine()->getManager(); $securityContext = $this->container->get('security.context'); $employee = $securityContext->getToken()->getUser()->getEmployee(); $statusManager = $this->get('opit.manager.leave_status_manager'); $teamsEmployees = $this->getTeamsEmployees($employee, $request->request->get('team')); // get all approved leave requests employees are in $leaveRequests = $entityManager->getRepository('OpitOpitHrmLeaveBundle:LeaveRequest')->findEmployeesLeaveRequests($teamsEmployees, $request->request->get('start'), $request->request->get('end'), Status::APPROVED); $iCal = new ICal\ICalendar(); // loop through all leave requests foreach ($leaveRequests as $leaveRequest) { // loop through all leave request leaves $employee = $leaveRequest->getEmployee(); $currentStatus = $statusManager->getCurrentStatusMetaData($leaveRequest); foreach ($leaveRequest->getLeaves() as $leave) { $iCalEvent = new ICal\ICalendarEvent(); $iCalEvent->setDtStamp($currentStatus->getCreated()); $iCalEvent->setSummary(ucwords($employee->getEmployeeName()) . ' - ' . $leave->getCategory()->getName()); $iCalEvent->setDtStart($leave->getStartDate()); $iCalEvent->setDtEnd($leave->getEndDate()); $iCalEvent->addCategory($leave->getCategory()->getName()); $iCal->addEvent($iCalEvent); } } $iCalContent = $iCal->render(); $filename = Utils::sanitizeString($this->container->getParameter('application_name') . '-' . $request->request->get('title')) . '.ics'; $response = new Response(); $response->headers->set('Cache-Control', 'private'); $response->headers->set('Content-type', 'text/calendar'); $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '";'); $response->headers->set('Content-Transfer-Encoding', 'binary'); $response->headers->set('Content-length', strlen(utf8_decode($iCalContent))); $response->sendHeaders(); $response->setContent($iCalContent); return $response; }
public function testSanitizeString() { $input = "Opit-HRM - December 2014"; $result = Utils::sanitizeString($input); $this->assertEquals('opit-hrm-december2014', $result, 'Utils::sanitizeString Content does not match.'); $input2 = "Opit-HRM Sven Henneböle - December ?! 2014"; $result2 = Utils::sanitizeString($input2); $this->assertEquals('opit-hrmsvenhenneble-december2014', $result2, 'Utils::sanitizeString Content including special chars does not match.'); }