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); }
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); }
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(); }
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"); } } }
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(); }
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; }