protected function targetListMember(Ticket $ticket) { $tr = TargetListRightsTable::getInstance()->queryByTargetListAndUser($ticket->getTargetList(), $ticket->getFrom())->fetchOne(); if (!$tr) { $tr = new TargetListRights(); $tr->setMailingList($ticket->getTargetList()); $tr->setUser($ticket->getFrom()); } /* @var $tr TargetListRights */ $tr->setActive(1); $tr->save(); }
public function executeEdit(sfWebRequest $request) { $route_params = $this->getRoute()->getParameters(); $this->csrf_token = UtilCSRF::gen('target_activate'); if (isset($route_params['type']) && $route_params['type'] == 'new') { // CREATE $campaign = CampaignTable::getInstance()->findById($request->getParameter('id'), $this->userIsAdmin()); /* @var $campaign Campaign */ if (!$campaign) { return $this->notFound(); } if (!$this->getGuardUser()->isCampaignMember($campaign)) { return $this->noAccess(); } $target_list = new MailingList(); $target_list->setCampaign($campaign); $target_list->setStatus(MailingListTable::STATUS_DRAFT); } else { $target_list = $this->findTargetList(); /* @var $target_list MailingList */ if (!$target_list) { return $this->notFound(); } if (!$this->getGuardUser()->isTargetListMember($target_list, true)) { return $this->noAccess(); } $this->metas = $target_list->getMailingListMeta(); } if ($target_list->getCampaignId()) { $this->campaign = $target_list->getCampaign(); if (!$this->userIsAdmin() && $this->campaign->getStatus() == CampaignTable::STATUS_DELETED) { return $this->notFound(); } } $this->target_list = $target_list; $this->form = new MailingListForm($target_list); if ($request->isMethod('post')) { $form_data = $request->getPostParameter($this->form->getName()); if ($form_data) { $this->form->bind($form_data); if ($this->form->isValid()) { $was_new = $target_list->isNew(); $this->form->save(); $target_list->refresh(); if ($was_new) { if (!$this->getGuardUser()->isCampaignAdmin($target_list->getCampaign())) { $tr = new TargetListRights(); $tr->setUser($this->getGuardUser()); $tr->setMailingList($target_list); $tr->setActive(1); $tr->save(); } return $this->ajax()->redirectRotue('target_edit', array('id' => $target_list->getId()))->render(); } else { return $this->ajax()->replaceWithPartial('#form', 'form', array('form' => new MailingListForm($target_list)))->alert('Name updated', '', '#form', 'after')->render(); } } else { return $this->ajax()->form($this->form)->render(); } } } $this->includeIframeTransport(); $this->includeChosen(); }