diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php
index 1cd8b6658..69a71a0e6 100644
--- a/Layout/default/Preordercampaign/Form.php
+++ b/Layout/default/Preordercampaign/Form.php
@@ -198,6 +198,27 @@
+
+
+
+
+
diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php
index 554c28b99..56f4c7e9e 100644
--- a/application/Preorder/Preorder.php
+++ b/application/Preorder/Preorder.php
@@ -358,7 +358,7 @@ class Preorder extends mfBaseModel {
public function createCiftoken() {
$ciftoken = $this->generateNewCiftoken();
- while(PreorderModel::search(['ciftoken' => $ciftoken])) {
+ while(PreorderModel::getFirst(['ciftoken' => $ciftoken])) {
$ciftoken = $this->generateNewCiftoken();
}
$this->ciftoken = $ciftoken;
@@ -375,6 +375,24 @@ class Preorder extends mfBaseModel {
return $ciftoken;
}
+ public function generateCifUrl() {
+ $campaign = $this->getProperty("campaign");
+
+ $cifurl = $campaign->cifurl;
+ str_replace("{{CIFTOKEN}}", $this->ciftoken, $cifurl);
+
+ return $cifurl;
+ }
+
+ public function generateCifCableUrl() {
+ $campaign = $this->getProperty("campaign");
+
+ $cifcableurl = $campaign->cifcableurl;
+ str_replace("{{}}", $this->ciftoken, $cifcableurl);
+
+ return $cifcableurl;
+ }
+
public function getCifdataApiArray() {
if(!$this->id) {
return false;
diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php
index 6a981d15f..070cab60d 100644
--- a/application/Preorder/PreorderModel.php
+++ b/application/Preorder/PreorderModel.php
@@ -676,6 +676,13 @@ class PreorderModel {
}
}
+ if(array_key_exists("gemeinde_id", $filter)) {
+ $gemeinde_id = FronkDB::singleton()->escape($filter['gemeinde_id']);
+ if($gemeinde_id) {
+ $where .= " AND `".ADDRESSDB_DBNAME."`.adb_hausnummer.gemeinde_id = $gemeinde_id";
+ }
+ }
+
if(array_key_exists("gemeinde", $filter)) {
$gemeinde = FronkDB::singleton()->escape($filter['gemeinde']);
if($gemeinde) {
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index f2ece6110..19d57acbf 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -229,11 +229,13 @@ class PreordercampaignController extends mfBaseController {
$data = [];
$data['network_id'] = $r->network_id;
- $data['name'] = $r->name;
- $data['description'] = $r->description;
- $data['area'] = $r->area;
- $data['note'] = $r->note;
+ $data['name'] = trim($r->name);
+ $data['description'] = trim($r->description);
+ $data['area'] = trim($r->area);
+ $data['note'] = trim($r->note);
$data['homes_total'] = (int)$r->homes_total;
+ $data["cifurl"] = trim($r->cifurl);
+ $data["cifcableurl"] = trim($r->cifcableurl);
if($r->from) {
$data['from'] = self::dateToTimestamp($r->from);
diff --git a/db/migrations/20240223140814_preordercampaign_add_cif_urls.php b/db/migrations/20240223140814_preordercampaign_add_cif_urls.php
new file mode 100644
index 000000000..9d1c83669
--- /dev/null
+++ b/db/migrations/20240223140814_preordercampaign_add_cif_urls.php
@@ -0,0 +1,36 @@
+getEnvironment() == "thetool") {
+ $table = $this->table("Preordercampaign");
+ $table->addColumn("cifurl", "string", ["null" => true, "default" => null, "limit" => 255, "after" => "allow_unit_update"]);
+ $table->addColumn("cifcableurl", "string", ["null" => true, "default" => null, "limit" => 255, "after" => "cifurl"]);
+ $table->update();
+ }
+
+ if($this->getEnvironment() == "addressdb") {
+
+ }
+ }
+
+ public function down(): void
+ {
+ if($this->getEnvironment() == "thetool") {
+ $table = $this->table("Preordercampaign");
+ $table->removeColumn("cifcableurl");
+ $table->removeColumn("cifurl");
+ $table->save();
+
+ }
+
+ if($this->getEnvironment() == "addressdb") {
+
+ }
+ }
+}
diff --git a/lib/mvcfronk/mfBase/mfBaseController.php b/lib/mvcfronk/mfBase/mfBaseController.php
index 4aa1cef52..800477617 100644
--- a/lib/mvcfronk/mfBase/mfBaseController.php
+++ b/lib/mvcfronk/mfBase/mfBaseController.php
@@ -287,8 +287,6 @@ class mfBaseController {
// Helper functions
public static function dateToTimestamp($date) {
- $t = array(0,0,0);
-
// extract day, month, year
if (!preg_match('/^(\d{1,2})\.(\d{1,2})\.(\d{2,4})/',$date,$d)) {
return false;
@@ -298,6 +296,8 @@ class mfBaseController {
if (!$t[3]) {
$t[3] = 0;
}
+ } else {
+ $t = array(0,0,0);
}
// make and return timestamp
$ts = mktime($t[1],$t[2],$t[3],$d[2],$d[1],$d[3]);
diff --git a/scripts/preorder/create-ciftoken.php b/scripts/preorder/create-ciftoken.php
new file mode 100755
index 000000000..a5c36b368
--- /dev/null
+++ b/scripts/preorder/create-ciftoken.php
@@ -0,0 +1,31 @@
+#!/usr/bin/php
+id);
+define("INTERNAL_USER_USERNAME", $me->username);
+
+$cifurl_base = "";
+
+foreach(PreorderModel::search(["status_code" => 145]) as $preorder) {
+ if($preorder->ciftoken) continue;
+
+ $preorder->createCiftoken();
+ if(!$preorder->ciftoken) {
+ die("Ciftoken konnte nicht erstellt werden.\n");
+ }
+ $preorder->cifurl = $preorder->generateCifUrl();
+ $preorder->cifcableurl = $preorder->generateCifCableUrl();
+ //var_dump($preorder);exit;
+ $preorder->save();
+}
\ No newline at end of file