예제 #1
0
 function executeTodo()
 {
     $page = isset($this->page) ? $this->page : 1;
     $user = $this->getGuardUser();
     if ($user) {
         $query = TicketTable::getInstance()->queryForUser($this->getGuardUser(), array(TicketTable::STATUS_NEW, TicketTable::STATUS_READ));
         if (isset($this->campaign_id)) {
             $query->andWhere($query->getRootAlias() . '.campaign_id = ?', $this->campaign_id);
         }
         if (isset($this->petition_id)) {
             $query->andWhere($query->getRootAlias() . '.petition_id = ?', $this->petition_id);
         }
         $this->tickets = new policatPager($query, $page, 'ticket_todo', array(), true, 10);
         $this->csrf_token = UtilCSRF::gen('tickets');
     }
 }
예제 #2
0
 private function removeOldResignAndCallTickets(Campaign $campaign)
 {
     foreach (TicketTable::getInstance()->queryResignTicketForCampaign($campaign)->execute() as $old_ticket) {
         /* @var $old_ticket Ticket */
         $old_ticket->setStatus(TicketTable::STATUS_DENIED);
         $old_ticket->save();
     }
     foreach (TicketTable::getInstance()->queryCallTicketForCampaign($campaign)->execute() as $old_ticket) {
         /* @var $old_ticket Ticket */
         $old_ticket->setStatus(TicketTable::STATUS_DENIED);
         $old_ticket->save();
     }
 }
예제 #3
0
 public function executePrivacyLang(sfWebRequest $request)
 {
     $this->campaign = CampaignTable::getInstance()->findById($request->getParameter('id'), $this->userIsAdmin());
     /* @var $this->campaign Campaign */
     if (!$this->campaign) {
         return $this->notFound();
     }
     if (!$this->getGuardUser()->isCampaignAdmin($this->campaign)) {
         return $this->noAccess();
     }
     $this->languages = LanguageTable::getInstance()->queryAll()->execute();
     $this->language = LanguageTable::getInstance()->find($request->getParameter('lang'));
     if (!$this->language) {
         return $this->notFound();
     }
     $campaign_store = CampaignStoreTable::getInstance()->findByCampaignLanguageKey($this->campaign, $this->language, CampaignStoreTable::KEY_PRIVACY_POLICY);
     if (!$campaign_store) {
         $campaign_store = new CampaignStore();
         $campaign_store->setCampaign($this->campaign);
         $campaign_store->setLanguage($this->language);
         $campaign_store->setKey(CampaignStoreTable::KEY_PRIVACY_POLICY);
         $store = StoreTable::getInstance()->findByKeyAndLanguage(StoreTable::ACTION_PRIVACY_POLICY, $campaign_store->getLanguage()->getId());
         if (!$store) {
             $store = StoreTable::getInstance()->findByKeyAndLanguage(StoreTable::ACTION_PRIVACY_POLICY, 'en');
         }
         if ($store) {
             $campaign_store->setValue($store->getField('body'));
         }
     }
     $this->form = new CampaignStoreForm($campaign_store);
     if ($request->isMethod('post')) {
         $this->form->bind($request->getPostParameter($this->form->getName()));
         if ($this->form->isValid()) {
             $before = $campaign_store->getValue();
             $this->form->save();
             $data_owner = $this->campaign->getDataOwnerId() ? $this->campaign->getDataOwner() : null;
             /* @var $data_owner sfGuardUser */
             if ($data_owner && $this->getGuardUser()->getId() != $data_owner->getId()) {
                 $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_TO => $data_owner, TicketTable::CREATE_CAMPAIGN => $this->campaign, TicketTable::CREATE_KIND => TicketTable::KIND_PRIVACY_POLICY_CHANGED, TicketTable::CREATE_TEXT => $this->getGuardUser()->getFullName() . ' (' . $this->getGuardUser()->getOrganisation() . ") modified the privacy policy text '" . $this->language->getName() . "'\n" . "BEFORE:\n" . $before . "\n\nAFTER:\n" . $campaign_store->getValue()));
                 $ticket->save();
                 $ticket->notifyAdmin();
             }
             return $this->ajax()->remove('#no_text')->alert('Saved.', '', '#campaign_privacy_form .form-actions', 'before')->render();
         }
         return $this->ajax()->form($this->form)->render();
     }
     $this->includeMarkdown();
     $this->includeHighlight();
 }
예제 #4
0
 public function executeDataOwner(sfWebRequest $request)
 {
     $this->ajax()->setAlertTarget('#widget_list table', 'after');
     if ($request->getPostParameter('csrf_token') !== UtilCSRF::gen('widget_data_owner')) {
         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();
     }
     $widget = WidgetTable::getInstance()->find($id);
     /* @var $widget Widget */
     if (!$widget) {
         return $this->ajax()->alert('Widget not found', 'Error')->render();
     }
     if (!$this->userIsAdmin() && ($widget->getCampaign()->getStatus() == CampaignTable::STATUS_DELETED || $widget->getPetition()->getStatus() == Petition::STATUS_DELETED)) {
         return $this->ajax()->alert('Widget not found', 'Error')->render();
     }
     if (!$widget->getCampaign()->getOwnerRegister()) {
         return $this->ajax()->alert('Disabled function', 'Error')->render();
     }
     if (!$widget->getUserId() || $widget->getUserId() != $this->getGuardUser()->getId()) {
         return $this->ajax()->alert('You are not owner of this widget', '')->render();
     }
     if ($widget->getDataOwner() == WidgetTable::DATA_OWNER_YES) {
         return $this->ajax()->alert('You are already Data-owner of this widget', '')->render();
     }
     $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_WIDGET => $widget, TicketTable::CREATE_KIND => TicketTable::KIND_WIDGET_DATA_OWNER, 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();
 }
예제 #5
0
 public function executeActivate(sfWebRequest $request)
 {
     $this->ajax()->setAlertTarget('#form .form-actions', 'before');
     if ($request->getPostParameter('csrf_token') !== UtilCSRF::gen('target_activate')) {
         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();
     }
     $target_list = $this->findTargetList($id);
     /* @var $target_list MailingList */
     if (!$target_list) {
         return $this->ajax()->alert('Target-list not found', 'Error')->render();
     }
     if ($target_list->getStatus() == MailingListTable::STATUS_ACTIVE) {
         return $this->ajax()->alert('Target-list is already active.', 'Error')->render();
     }
     if ($this->getGuardUser()->isCampaignAdmin($target_list->getCampaignId())) {
         $target_list->setStatus(MailingListTable::STATUS_ACTIVE);
         $target_list->save();
         $petition_id = $request->getPostParameter('petition_id');
         if (is_numeric($petition_id) && $petition_id) {
             return $this->ajax()->redirectRotue('petition_target', array('id' => $petition_id))->render();
         } else {
             return $this->ajax()->redirectRotue('target_edit', array('id' => $target_list->getId()))->render();
         }
     }
     if (!$this->getGuardUser()->isTargetListMember($target_list)) {
         return $this->noAccess();
     }
     $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_TARGET_LIST => $target_list, TicketTable::CREATE_KIND => TicketTable::KIND_TARGET_LIST_ACTIVATE, 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();
 }
예제 #6
0
 public function executeJoinAdmin(sfWebRequest $request)
 {
     $this->ajax()->setAlertTarget('#petition_members table', 'after');
     if ($request->getPostParameter('csrf_token') !== UtilCSRF::gen('action_join_admin')) {
         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();
     }
     if (!$petition->getCampaign()->getBecomePetitionAdmin()) {
         return $this->ajax()->alert('Disabled function', 'Error')->render();
     }
     $pr = $this->getGuardUser()->getRightsByPetition($petition);
     if (!$pr || !$pr->getActive() || !$pr->getMember()) {
         return $this->ajax()->alert('You are not member of this action', '')->render();
     }
     if ($pr->getAdmin()) {
         return $this->ajax()->alert('You are already member-manager.', '')->render();
     }
     $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_PETITION => $petition, TicketTable::CREATE_KIND => TicketTable::KIND_JOIN_PETITION_ADMIN, 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();
 }
예제 #7
0
 public function executeUnblock(sfWebRequest $request)
 {
     if ($this->getUser()->isNotBlocked()) {
         return $this->ajax()->redirectRotue('dashboard')->render();
     }
     if (TicketTable::getInstance()->checkOpenUnblockTicketForUser($this->getGuardUser())) {
         return $this->ajax()->alert('There is already a pending ticket for your request.', 'Sorry.')->render();
     }
     $form = new UnblockForm();
     if ($request->isMethod('post')) {
         $form->bind($request->getParameter($form->getName()));
         if ($form->isValid()) {
             $ticket = TicketTable::getInstance()->generate(array(TicketTable::CREATE_AUTO_FROM => true, TicketTable::CREATE_CHECK_DUPLICATE => true, TicketTable::CREATE_KIND => TicketTable::KIND_USER_UNBLOCK, TicketTable::CREATE_TEXT => $form->getValue('reason')));
             if ($ticket) {
                 $ticket->save();
                 return $this->ajax()->modal('#unblock_modal', 'hide')->remove('#unblock_modal')->alert('Message sent.')->render();
             } else {
                 return $this->ajax()->alert('There is already a pending ticket for your request.', 'Sorry')->render();
             }
         } else {
             return $this->ajax()->form($form)->render();
         }
     }
     return $this->ajax()->appendPartial('body', 'unblock', array('form' => $form))->modal('#unblock_modal')->render();
 }