protected function joinPetition(Ticket $ticket) { $pr = PetitionRightsTable::getInstance()->queryByPetitionAndUser($ticket->getPetition(), $ticket->getFrom())->fetchOne(); if ($pr) { /* @var $pr PetitionRights */ if (!$pr->getActive()) { $pr->setActive(1); $pr->setMember(1); $pr->setAdmin(0); $pr->save(); } return; } $pr = new PetitionRights(); $pr->setPetitionId($ticket->getPetitionId()); $pr->setUserId($ticket->getFromId()); $pr->setActive(1); $pr->setMember(1); $pr->setAdmin(0); $pr->save(); }
public function executeJoin(sfWebRequest $request) { $this->ajax()->setAlertTarget('#action_list table', 'after'); if ($request->getPostParameter('csrf_token') !== UtilCSRF::gen('action_join')) { return $this->ajax()->alert('CSRF Attack detected, please relogin.', 'Error')->render(); } $id = $request->getPostParameter('id'); if (!is_numeric($id)) { return $this->ajax()->alert('invalid data', 'Error')->render(); } $petition = PetitionTable::getInstance()->findById($id); /* @var $petition Petition */ if (!$petition) { return $this->ajax()->alert('Petition not found', 'Error')->render(); } $pr = $this->getGuardUser()->getRightsByPetition($petition); if ($pr && $pr->getActive() && $pr->getMember()) { return $this->ajax()->alert('You are already action member', '')->render(); } if ($this->getGuardUser()->isCampaignAdmin($petition->getCampaignId())) { if (!$pr) { $pr = new PetitionRights(); $pr->setUserId($this->getGuardUser()->getId()); $pr->setPetitionId($petition->getId()); } $pr->setActive(1); $pr->setMember(1); $pr->save(); return $this->ajax()->alert('Directly joined because you are Campaign-Admin', '')->render(); } $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_PETITION => $petition, TicketTable::CREATE_KIND => TicketTable::KIND_JOIN_PETITION, TicketTable::CREATE_CHECK_DUPLICATE => true)); if ($ticket) { $ticket->save(); $ticket->notifyAdmin(); } else { return $this->ajax()->alert('Application already pending', '')->render(); } return $this->ajax()->alert('Application has been sent to Campaign admin', '')->render(); }