diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php index a47caabdd..3ac439e40 100644 --- a/Layout/default/Preordercampaign/Form.php +++ b/Layout/default/Preordercampaign/Form.php @@ -134,22 +134,35 @@
-

API-User

+

API-User

- +
+ Benutzer mit API-Key +
+
+ +
+ +
+ + Website Url oder Hostname; ein Eintrag pro Zeile
- +
+
+ +
+
diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php index 31b6ffbb3..ba29eaf6e 100644 --- a/application/Preordercampaign/Preordercampaign.php +++ b/application/Preordercampaign/Preordercampaign.php @@ -7,6 +7,7 @@ class Preordercampaign extends mfBaseModel { private $setup_products; private $gemeinden; private $apiusers; + private $corsorigins; public function addTypes(Array $types) { @@ -103,6 +104,14 @@ class Preordercampaign extends mfBaseModel { return $this->apiusers; } + if($name == "corsorigins") { + $items = PreordercampaignOriginhostnameModel::search(["preordercampaign_id" => $this->id]); + foreach($items as $origin) { + $this->corsorigins[] = htmlentities($origin->hostname); + } + return $this->corsorigins; + } + if($name == "creator") { $user = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($user) { diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php index 268ae8b0e..55697fe93 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -207,6 +207,25 @@ class PreordercampaignController extends mfBaseController { } } + foreach(PreordercampaignOriginhostnameModel::search(['preordercampaign_id' => $campaign->id]) as $origin) { + $origin->delete(); + } + // var_dump($r->corsorigins);exit; + if($r->corsorigins) { + $origins = str_replace("\r", "\n", $r->corsorigins); + $origins = preg_replace("/\n+/", "\n", $origins); + $origins = explode("\n", $origins); + if(is_array($origins) && count($origins)) { + foreach($origins as $origin) { + $poh = PreordercampaignOriginhostnameModel::getFirst(['preordercampaign_id' => $campaign->id, 'hostname' => $origin]); + if($poh) continue; + + $poh = PreordercampaignOriginhostnameModel::create(['preordercampaign_id' => $campaign->id, 'hostname' => $origin]); + $poh->save(); + } + } + } + $this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success"); //$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]); $this->redirect("Preordercampaign"); diff --git a/application/PreordercampaignOriginhostname/PreordercampaignOriginhostname.php b/application/PreordercampaignOriginhostname/PreordercampaignOriginhostname.php new file mode 100644 index 000000000..5f6de989b --- /dev/null +++ b/application/PreordercampaignOriginhostname/PreordercampaignOriginhostname.php @@ -0,0 +1,5 @@ + $value) { + if(property_exists(get_called_class(), $field)) { + $model->$field = $value; + } + } + + $me = mfValuecache::singleton()->get("me"); + if(!$me) { + $me = new User(); + $me->loadMe(); + mfValuecache::singleton()->set("me", $me); + } + + if($model->create_by === null) { + $model->create_by = $me->id; + } + if($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("PreordercampaignOriginhostname", "*", "ORDER BY preordercampaign_id, hostname"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignOriginhostname($data); + } + } + return $items; + + } + + public static function getFirst($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("PreordercampaignOriginhostname", "*", "$where ORDER BY preordercampaign_id, hostname"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new PreordercampaignOriginhostname($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("PreordercampaignOriginhostname", "*", "$where ORDER BY preordercampaign_id, hostname"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignOriginhostname($data); + } + } + return $items; + } + + private static function getSqlFilter($filter) { + $where = "1=1 "; + + //var_dump($filter);exit; + if(array_key_exists("preordercampaign_id", $filter)) { + $preordercampaign_id = $filter['preordercampaign_id']; + if(is_numeric($preordercampaign_id)) { + $where .= " AND preordercampaign_id=$preordercampaign_id"; + } + } + + if(array_key_exists("hostname", $filter)) { + $hostname = FronkDB::singleton()->escape($filter['hostname']); + if($hostname) { + $where .= " AND hostname like '%$hostname%'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +}