Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 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();
 }