public function notifyAdmin() { $tos = array(); if ($this->getToId()) { $email = $this->getTo()->getSwiftEmail(); if ($email) { $tos[] = $email; } } if (!$tos && $this->getPetitionId()) { $prs = PetitionRightsTable::getInstance()->queryByPetitionAndAdmin($this->getPetition())->execute(); foreach ($prs as $pr) { /* @var $pr PetitionRights */ if ($pr->getUser()->isCampaignMember($this->getPetition()->getCampaign())) { $email = $pr->getUser()->getSwiftEmail(); if ($email) { $tos[] = $email; } } } } if (!$tos && $this->getCampaignId()) { $crs = CampaignRightsTable::getInstance()->queryByCampaignAndAdmin($this->getCampaign())->execute(); foreach ($crs as $cr) { /* @var $cr CampaignRights */ $email = $cr->getUser()->getSwiftEmail(); if ($email) { $tos[] = $email; } } } if ($tos) { $subject = 'Ticket-Notification'; $body = "A new ticket about the following subject has been created:\n\n"; $body .= " Topic: " . $this->getKindName() . "\n"; if ($this->getCampaignId()) { $body .= "Campaign: " . $this->getCampaign()->getName() . "\n"; } if ($this->getPetitionId()) { $body .= " Action: " . $this->getPetition()->getName() . "\n"; } if ($this->getWidgetId()) { $body .= " Widget: " . $this->getWidgetId() . "\n"; } if ($this->getFromId()) { $body .= " User: "******"\n"; } $body .= "\n\n" . sfContext::getInstance()->getRouting()->generate('dashboard', array(), true); foreach ($tos as $to) { UtilMail::send(null, null, $to, $subject, $body); } } }
protected function joinCampaign(Ticket $ticket) { $cr = CampaignRightsTable::getInstance()->queryByCampaignAndUser($ticket->getCampaign(), $ticket->getFrom())->fetchOne(); if ($cr) { /* @var $cr CampaignRights */ if (!$cr->getActive()) { $cr->setActive(1); $cr->setMember(1); $cr->setAdmin(0); $cr->save(); } return; } $cr = new CampaignRights(); $cr->setCampaignId($ticket->getCampaignId()); $cr->setUserId($ticket->getFromId()); $cr->setActive(1); $cr->setMember(1); $cr->setAdmin(0); $cr->save(); }
public function executeEditMembers(sfWebRequest $request) { $this->ajax()->setAlertTarget('#campaign_members', 'append'); $campaign = CampaignTable::getInstance()->findById($request->getParameter('id'), $this->userIsAdmin()); /* @var $campaign Campaign */ if (!$campaign) { return $this->ajax()->alert('Campaign not found', 'Error')->render(); } if ($request->getPostParameter('csrf_token') !== UtilCSRF::gen('revoke', $campaign->getId())) { return $this->ajax()->alert('CSRF Attack detected, please relogin.', 'Error')->render(); } if (!$campaign->isEditableBy($this->getGuardUser())) { return $this->ajax()->alert('You are not admin of this campaign', 'Error')->render(); } $ids = $request->getPostParameter('ids'); $method = $request->getPostParameter('method'); if (!in_array($method, array('block', 'member', 'admin'))) { return $this->ajax()->alert('Something is wrong.', 'Error')->render(); } $self_message = ''; if (is_array($ids)) { foreach (CampaignRightsTable::getInstance()->queryByCampaignAndUsers($campaign->getId(), $ids)->execute() as $campaign_rights) { /* @var $campaign_rights CampaignRights */ if ($this->isSelfUser($campaign_rights->getUserId())) { if ($method === 'enable') { $campaign_rights->setActive(1); } elseif ($method === 'block') { $self_message = 'You can not block yourself.'; } elseif ($method === 'member') { $self_message = 'You can not revoke your own admin-status.'; } elseif ($method === 'admin') { $campaign_rights->setActive(1); $campaign_rights->setMember(1); $campaign_rights->setAdmin(1); } } else { if ($method === 'block') { $campaign_rights->setActive(0); } elseif ($method === 'member') { $campaign_rights->setActive(1); $campaign_rights->setMember(1); $campaign_rights->setAdmin(0); } elseif ($method === 'admin') { $campaign_rights->setActive(1); $campaign_rights->setMember(1); $campaign_rights->setAdmin(1); } } $campaign_rights->save(); } } $this->ajax()->replaceWithComponent('#campaign_members', 'd_campaign', 'members', array('campaign' => $campaign)); if ($self_message) { $this->ajax()->alert($self_message); } return $this->ajax()->render(); }
public function executeMembers() { $this->campaign_rights_list = CampaignRightsTable::getInstance()->queryByCampaign($this->campaign)->execute(); $this->admin = $this->getGuardUser()->isCampaignAdmin($this->campaign); $this->csrf_token = UtilCSRF::gen('revoke', $this->campaign->getId()); }
/** * * @param Campaign $campaign * @return CampaignRights */ public function getRightsByCampaign(Campaign $campaign) { if (array_key_exists($campaign->getId(), $this->cr_cache)) { return $this->cr_cache[$campaign->getId()]; } return $this->cr_cache[$campaign->getId()] = CampaignRightsTable::getInstance()->queryByCampaignAndUser($campaign, $this)->fetchOne(); }
public function executeEdit(sfWebRequest $request) { $id = $request->getParameter('id'); if (is_numeric($id)) { $user = sfGuardUserTable::getInstance()->find($id); /* @var $user sfGuardUser */ if (!$user) { return $this->notFound(); } } else { $user = new sfGuardUser(); $user->setIsActive(false); } if (!$this->getGuardUser()->getIsSuperAdmin() && $user->getIsSuperAdmin()) { $this->noAccess(); } if ($user->isNew()) { $this->form = new UserNewForm($user); } else { $this->form = new UserForm($user); } if ($request->isMethod('post')) { $this->form->bind($request->getPostParameter($this->form->getName())); if ($this->form->isValid()) { $con = sfGuardUserTable::getInstance()->getConnection(); $con->beginTransaction(); try { $this->form->updateGroupsList($this->form->getValues()); $user = $this->form->updateObject(); $user->setUsername($user->getEmailAddress()); if ($user->isNew()) { $user->setValidationKind(sfGuardUserTable::VALIDATION_KIND_BACKEND_LINK); $user->randomValidationCode(); $user->save(); $subject = 'validate activation'; $body = "#VALIDATION-URL#"; $store = StoreTable::getInstance()->findByKeyAndLanguageWithFallback(StoreTable::NEW_USER_ADMIN_MAIL, $user->getLanguageId()); if ($store) { $subject = $store->getField('subject'); $body = $store->getField('body'); } $subst = array('#VALIDATION-URL#' => $this->generateUrl('user_validation', array('id' => $user->getId(), 'code' => $user->getValidationCode()), true), '#USER-NAME#' => $user->getFullName()); UtilMail::send(null, null, $user->getEmailAddress(), $subject, $body, null, $subst); } else { $user->save(); } $con->commit(); } catch (Exception $e) { $con->rollback(); throw $e; } return $this->ajax()->redirectRotue('user_idx')->render(); } else { return $this->ajax()->form($this->form)->render(); } } if (!$user->isNew()) { $this->campaign_rights_list = CampaignRightsTable::getInstance()->queryByUser($user)->execute(); $this->petition_rights_list = PetitionRightsTable::getInstance()->queryByUser($user)->execute(); } }