Example #1
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $site = $runData->getTemp("site");
     // get the petition campaign...
     $campaignId = $pl->getParameterValue("id");
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("deleted", false);
     $c->add("identifier", $campaignId);
     $camp = DB_PetitionCampaignPeer::instance()->selectOne($c);
     if (!$camp) {
         throw new ProcessException(_("The campaign can not be found."));
     }
     // get signatures!
     $limit = $pl->getParameterValue("limit");
     if ($limit === null || !is_numeric($limit)) {
         $limit = 50;
     }
     $c = new Criteria();
     $c->add("campaign_id", $camp->getCampaignId());
     $c->add("confirmed", true);
     $c->addOrderDescending("signature_id");
     if ($limit > 0) {
         $c->setLimit($limit);
     }
     $signatures = DB_PetitionSignaturePeer::instance()->select($c);
     $runData->contextAdd("signatures", $signatures);
     $runData->contextAdd("campaign", $camp);
 }
Example #2
0
 public function updateNumberSignatures()
 {
     $c = new Criteria();
     $c->add("campaign_id", $this->getCampaignId());
     $c->add("confirmed", true);
     $count = DB_PetitionSignaturePeer::instance()->selectCount($c);
     $this->setNumberSignatures($count);
 }
Example #3
0
 public function cancelEvent($runData)
 {
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $campaignId = $pl->getParameterValue("campaignId");
     $hash = $pl->getParameterValue("hash");
     $db = Database::connection();
     $db->begin();
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("deleted", false);
     $c->add("campaign_id", $campaignId);
     $camp = DB_PetitionCampaignPeer::instance()->selectOne($c);
     if (!$camp) {
         throw new ProcessException(_("The campaign can not be found."));
     }
     $c = new Criteria();
     $c->add("campaign_id", $camp->getCampaignId());
     $c->add("confirmation_hash", $hash);
     $c->add("confirmed", false);
     $pet = DB_PetitionSignaturePeer::instance()->selectOne($c);
     if (!$pet) {
         throw new ProcessException(_("The petition signature can not be found."));
     }
     DB_PetitionSignaturePeer::instance()->deleteByPrimaryKey($pet->getSignatureId());
     $runData->setModuleTemplate("extra/petition/SignatureCancelledModule");
     $db->commit();
 }
Example #4
0
 public function build($runData)
 {
     require WIKIDOT_ROOT . '/php/unclassified/country_codes.php';
     $runData->contextAdd("coutryCodes", $iso3166_country_codes);
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $id = $pl->getParameterValue("id");
     if (!$id) {
         throw new ProcessException(_("The campaign identifier is not valid."));
     }
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("deleted", false);
     $c->add("identifier", $id);
     $camp = DB_PetitionCampaignPeer::instance()->selectOne($c);
     if (!$camp) {
         throw new ProcessException(_("The campaign can not be found."));
     }
     if (!$camp->getActive()) {
         throw new ProcessException(_("This petition campaign is paused."));
     }
     $runData->contextAdd("campaign", $camp);
     $confirm = $pl->getParameterValue("confirm");
     if ($confirm) {
         //			// working in the CONFIRMATION mode!
         //
         //			// get the petition
         //
         //
         $db = Database::connection();
         $db->begin();
         // get the petition
         $hash = $confirm;
         $c = new Criteria();
         $c->add("campaign_id", $camp->getCampaignId());
         $c->add("confirmation_hash", $hash);
         $pet = DB_PetitionSignaturePeer::instance()->selectOne($c);
         if (!$pet) {
             throw new ProcessException(_("The petition signature can not be found."));
         }
         if ($pet->getConfirmed()) {
             throw new ProcessException(_("This signature has been already confirmed."));
         }
         // confirm it and redirect to a "thank you" page or display "thank you".
         $pet->setConfirmed(true);
         $pet->setConfirmationUrl(null);
         $pet->save();
         $camp->updateNumberSignatures();
         $camp->save();
         $db->commit();
         $thankYouPage = $camp->getThankYouPage();
         if ($thankYouPage) {
             // simply REDIRECT!
             header("HTTP/1.1 301 Moved Permanently");
             header("Location: /" . $thankYouPage);
             exit;
         } else {
             $runData->setModuleTemplate("extra/petition/SignatureConfirmedModule");
         }
     }
 }
Example #5
0
 public function removeSignaturesEvent($runData)
 {
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $campaignId = $pl->getParameterValue("campaignId");
     $ids = $pl->getParameterValue("ids");
     $db = Database::connection();
     $db->begin();
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("deleted", false);
     $c->add("campaign_id", $campaignId);
     $camp = DB_PetitionCampaignPeer::instance()->selectOne($c);
     if (!$camp) {
         throw new ProcessException(_("The campaign can not be found."));
     }
     $ids = explode(',', $ids);
     // create a delete query.
     $c1 = new Criteria();
     foreach ($ids as $id) {
         $c1->addOr("signature_id", $id);
     }
     $c = new Criteria();
     $c->add("campaign_id", $camp->getCampaignId());
     $c->addCriteriaAnd($c1);
     DB_PetitionSignaturePeer::instance()->delete($c);
     $camp->updateNumberSignatures();
     $camp->save();
     $db->commit();
 }
Example #6
0
 public function render($runData)
 {
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $campaignId = $pl->getParameterValue("campaignId");
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("deleted", false);
     $c->add("campaign_id", $campaignId);
     $camp = DB_PetitionCampaignPeer::instance()->selectOne($c);
     if (!$camp) {
         throw new ProcessException(_("The campaign can not be found."));
     }
     $out = '';
     $header = array();
     $header[] = "First name";
     $header[] = "Last name";
     $header[] = "Email";
     if ($camp->getCollectAddress()) {
         $header[] = "Address1";
         $header[] = "Address2";
     }
     if ($camp->getCollectCity()) {
         $header[] = "City";
     }
     if ($camp->getCollectState()) {
         $header[] = "State";
     }
     if ($camp->getCollectZip()) {
         $header[] = "Zip";
     }
     if ($camp->getCollectCountry()) {
         $header[] = "Country";
         $header[] = "CountryCode";
     }
     $header[] = "Date";
     if ($camp->getCollectComments()) {
         $header[] = "Comments";
     }
     $out .= $this->formatCsvRow($header);
     // get the signatures now
     $c = new Criteria();
     $c->add("campaign_id", $camp->getCampaignId());
     $c->add("confirmed", true);
     $c->addOrderAscending("signature_id");
     $signatures = DB_PetitionSignaturePeer::instance()->select($c);
     $q = "SELECT * FROM petition_signature WHERE campaign_id={$camp->getCampaignId()} AND confirmed=TRUE ORDER BY signature_id";
     $db = Database::connection();
     $rr = $db->query($q);
     while ($r = $rr->nextRow()) {
         $row = array();
         $row[] = $r['first_name'];
         $row[] = $r['last_name'];
         $row[] = $r['email'];
         if ($camp->getCollectAddress()) {
             $row[] = $r['address1'];
             $row[] = $r['address2'];
         }
         if ($camp->getCollectCity()) {
             $row[] = $r['city'];
         }
         if ($camp->getCollectState()) {
             $row[] = $r['state'];
         }
         if ($camp->getCollectZip()) {
             $row[] = $r['zip'];
         }
         if ($camp->getCollectCountry()) {
             $row[] = $r['country'];
             $row[] = $r['country_code'];
         }
         $row[] = date($r['date']);
         if ($camp->getCollectComments()) {
             $row[] = $r['comments'];
         }
         $out .= $this->formatCsvRow($row);
     }
     //
     //
     header('Content-type: text/plain;');
     return $out;
 }