public function executeUpdateAjaxCompanion(sfWebRequest $request) { #security if (!$this->getUser()->hasCredential(array('Administrator', 'Staff', 'Coordinator'), false)) { $this->getUser()->setFlash("warning", 'You don\'t have permission to access this url ' . $request->getReferer()); $this->redirect('dashboard/index'); } # id parameter is companion id which then edits if ($request->hasParameter('id')) { $cmp = CompanionPeer::retrieveByPK($request->getParameter('id')); $this->forward404Unless($cmp); } else { #new companion adding to existing passenger $cmpnnPid = $request->getParameter('campnn[passenger_id]'); $cmp = new Companion(); if (isset($cmpnnPid)) { $cmp->setPassengerId($cmpnnPid); } else { $cmp->setPassengerId($request->getParameter('passenger_id')); } } $this->itId = $request->getParameter('itId'); #referer if ($request->hasParameter('referer')) { $this->referer = $request->getParameter('referer'); } else { $this->referer = $request->getReferer() ? $request->getReferer() : $this->generateUrl('companion', array(), true); } $form = new CompanionForm($cmp); if ($request->getParameter('back')) { $this->back = $request->getParameter('back'); } # validate and save if ($request->isMethod('post')) { $form->bind($request->getParameter($form->getName())); if ($form->isValid()) { $is_new = $form->isNew(); if ($is_new) { $person = new Person(); $names = explode(" ", $form->getValue('name')); $person->setFirstName($names[0]); if (isset($names[1])) { $person->setLastName($names[1]); } else { $person->setLastName(NULL); } $person->setDayPhone($form->getValue('companion_phone')); $person->setDayComment($form->getValue('companion_phone_comment')); $person->save(); $comp = $form->getObject(); $comp->setName($form->getValue('name')); $comp->setRelationship($form->getValue('relationship')); $comp->setDateOfBirth($form->getValue('date_of_birth')); $comp->setWeight($form->getValue('weight')); $comp->setCompanionPhone($form->getValue('companion_phone')); $comp->setCompanionPhoneComment($form->getValue('companion_phone_comment')); $comp->setPersonId($person->getId()); $comp->save(); } else { $form->save(); } $this->getUser()->setFlash('success', 'Companion has successfully ' . ($is_new ? 'created' : 'saved') . '!'); $this->companion_saved = $form->getValue('name'); $this->companion_id = $comp->getId(); $this->relationship = $form->getValue('relationship'); } } $passenger = $cmp->getPassenger(); $this->forward404Unless($passenger); $this->passenger = $passenger; $this->form_a = $form; $this->cmp = $cmp; }