Esempio n. 1
0
 public function executeContactEdit(sfWebRequest $request)
 {
     $petition = PetitionTable::getInstance()->findById($request->getParameter('petition_id'), $this->userIsAdmin());
     /* @var $petition Petition */
     if (!$petition) {
         return $this->notFound();
     }
     if (!$petition->isEditableBy($this->getGuardUser())) {
         return $this->noAccess();
     }
     if ($petition->getKind() != Petition::KIND_PLEDGE) {
         return $this->noAccess();
     }
     $petition_contact = PetitionContactTable::getInstance()->findOneByPetitionIdAndContactId($petition->getId(), $request->getParameter('id'));
     if (!$petition_contact) {
         $contact = ContactTable::getInstance()->find($request->getParameter('id'));
         /* @var $contact Contact */
         if (!$contact) {
             return $this->notFound();
         }
         if ($contact->getMailingListId() != $petition->getMailingListId()) {
             return $this->notFound();
         }
         $petition_contact = new PetitionContact();
         $petition_contact->setPetition($petition);
         $petition_contact->setContact($contact);
     } else {
         $contact = $petition_contact->getContact();
     }
     $form = new PetitionContactForm($petition_contact);
     if ($request->isMethod('post')) {
         $form->bind($request->getPostParameter($form->getName()));
         if ($form->isValid()) {
             $form->save();
             $active_pledge_item_ids = $petition->getActivePledgeItemIds();
             $pledges = PledgeTable::getInstance()->getPledgesForContacts(array($contact), $active_pledge_item_ids);
             $pledge_items = PledgeItemTable::getInstance()->fetchByIds($active_pledge_item_ids);
             return $this->ajax()->remove('#contact_edit_row_' . $contact->getId())->replaceWithPartial('#contact_' . $contact->getId(), 'contact', array('contact' => $contact, 'active_pledge_item_ids' => $active_pledge_item_ids, 'pledges' => $pledges, 'pledge_items' => $pledge_items, 'petition_id' => $petition->getId()))->tooltip('#contact_' . $contact->getId() . ' .add_tooltip')->render();
         } else {
             return $this->ajax()->form($form)->render();
         }
     }
     return $this->ajax()->remove('#contact_edit_row_' . $contact->getId())->afterPartial('#contact_' . $contact->getId(), 'contactEdit', array('form' => $form))->render();
 }