コード例 #1
0
 protected function doSave($con = null)
 {
     if (null === $con) {
         $con = $this->getConnection();
     }
     parent::doSave($con);
     $petition_contact = $this->getObject();
     $petition = $petition_contact->getPetition();
     $contact = $petition_contact->getContact();
     $pledge_items = PledgeItemTable::getInstance()->fetchByIds($petition->getActivePledgeItemIds());
     $pledge_table = PledgeTable::getInstance();
     foreach ($pledge_items as $pledge_item) {
         /* @var $pledge_item PledgeItem */
         $pledge = $pledge_table->findOneByPledgeItemAndContact($pledge_item, $contact);
         if (!$pledge) {
             $pledge = new Pledge();
             $pledge->setPledgeItem($pledge_item);
             $pledge->setContact($contact);
         }
         $status = $this->getValue('pledge_' . $pledge_item->getId());
         if ($status != $pledge->getStatus()) {
             $pledge->setStatus($status);
             $pledge->setStatusAt(gmdate('Y-m-d H:i:s'));
             $pledge->save($con);
         }
     }
 }
コード例 #2
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();
 }