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); } } }
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(); }