diff --git a/Layout/default/Preordercampaign/Index.php b/Layout/default/Preordercampaign/Index.php
index 6f0b0d5f6..3dabd9b0b 100644
--- a/Layout/default/Preordercampaign/Index.php
+++ b/Layout/default/Preordercampaign/Index.php
@@ -36,6 +36,18 @@
+ is("Admin")): ?>
+
+
+
+
+
+
diff --git a/application/Network/NetworkModel.php b/application/Network/NetworkModel.php
index 341dc2640..03e3c7bf2 100644
--- a/application/Network/NetworkModel.php
+++ b/application/Network/NetworkModel.php
@@ -115,9 +115,11 @@ class NetworkModel {
}
if(array_key_exists("owner_id", $filter)) {
- $ownerid= $filter['owner_id'];
- if(is_numeric($ownerid)) {
- $where .= " AND owner_id=$ownerid";
+ $owner_id = $filter['owner_id'];
+ if(is_numeric($owner_id)) {
+ $where .= " AND owner_id=$owner_id";
+ } elseif(is_array($owner_id) && count($owner_id)) {
+ $where .= " AND owner_id IN (". implode(",", $owner_id).")";
}
}
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index 3a013a230..cf2db55cd 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -19,6 +19,7 @@ class PreordercampaignController extends mfBaseController {
$this->layout->set("filter", $this->request->filter);
+ $filter = [];
if($this->request->filter) {
$filter = $this->getPreparedFilter($this->request->filter);
}
@@ -34,14 +35,18 @@ class PreordercampaignController extends mfBaseController {
}
$my_networks = [];
-
+ //var_dump($filter);exit;
if($this->me->is("Admin")) {
- if($filter['network_id']) {
+ if(!is_array($filter['network_id']) && $filter['network_id']) {
$my_networks[] = new Network($filter['network_id']);
} else {
$my_networks = NetworkModel::getAll();
}
$this->layout()->set("mynetworks", NetworkModel::getAll());
+
+ $netowners = $this->getNetworkOwners($my_network_ids);
+ $this->layout()->set("netowners", $netowners);
+
} else {
$use_filter_network = false;
$my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
@@ -53,31 +58,52 @@ class PreordercampaignController extends mfBaseController {
}
}
+ $this->layout()->set("mynetworks", $my_networks);
+
if($use_filter_network) {
$my_networks = [];
$my_networks[] = new Network($filter['network_id']);
}
- $this->layout()->set("mynetworks", $this->me->my_networks);
-
- }
- unset($filter['network_id']);
-
- //var_dump($this->me->my_networks);exit;
-
- $my_network_ids = [];
- foreach($my_networks as $network) {
- $my_network_ids[] = $network->id;
+ $my_network_ids = [];
+ foreach($my_networks as $network) {
+ $my_network_ids[] = $network->id;
+ }
+ $filter['network_id'] = $my_network_ids;
}
- $campaigns = PreordercampaignModel::search(['network_id' => $my_network_ids]);
+
+
+ $campaigns = PreordercampaignModel::search($filter);
$this->layout()->set("campaigns", $campaigns);
+
}
private function getPreparedFilter($filter) {
$new_filter = [];
+ if(array_key_exists("netowner", $filter) && $filter['netowner']) {
+ if($this->me->is("Admin")) {
+ $owner_id = $filter['netowner'];
+ foreach(NetworkModel::search(['owner_id' => $owner_id]) as $network) {
+ $new_filter['network_id'][] = $network->id;
+ }
+ unset($filter['network_id']);
+ } else {
+ unset($filter['netowner']);
+ }
+ }
+
+ if(array_key_exists("name", $filter) && $filter['name']) {
+ $new_filter['name%'] = "%".$filter['name'];
+ unset($filter['name']);
+ }
+ if(array_key_exists("area", $filter) && $filter['area']) {
+ $new_filter['area%'] = "%".$filter['area'];
+ unset($filter['area']);
+ }
+
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
@@ -85,6 +111,25 @@ class PreordercampaignController extends mfBaseController {
return $new_filter;
}
+ private function getNetworkOwners() {
+ $owners = [];
+
+ $sql = "SELECT Address.* FROM Preordercampaign
+ LEFT JOIN Network ON (Preordercampaign.network_id = Network.id)
+ LEFT JOIN Address ON (Network.owner_id = Address.id)
+ GROUP BY Address.id
+ ORDER BY Address.company, Address.lastname, Address.firstname
+ ";
+ $res = $this->db()->query($sql);
+ if($this->db()->num_rows($reso)) {
+ while($data = $this->db()->fetch_object($res)) {
+ $owners[] = new Address($data->id);
+ }
+ }
+
+ return $owners;
+ }
+
protected function addAction() {
if(!$this->me->is("Admin")) {
$this->redirect("Preordercampaign");
diff --git a/application/Preordercampaign/PreordercampaignModel.php b/application/Preordercampaign/PreordercampaignModel.php
index 974fe0cc8..c57dd4902 100644
--- a/application/Preordercampaign/PreordercampaignModel.php
+++ b/application/Preordercampaign/PreordercampaignModel.php
@@ -83,6 +83,12 @@ class PreordercampaignModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
+
+ $sql = "SELECT Preordercampaign.* FROM Preordercampaign
+ LEFT JOIN Network on (Preordercampaign.network_id = Network.id)
+ WHERE $where ORDER BY name,`create`
+ ";
+ mfLoghandler::singleton()->debug($sql);
$res = $db->select("Preordercampaign", "*", "$where ORDER BY name,`create`");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
@@ -105,6 +111,15 @@ class PreordercampaignModel {
}
}
+ if(array_key_exists("owner_id", $filter)) {
+ $owner_id = $filter['owner_id'];
+ if(is_numeric($owner_id)) {
+ $where .= " AND Network.owner_id=$owner_id";
+ } elseif(is_array($owner_id) && count($owner_id)) {
+ $where .= " AND Network.owner_id IN (". implode(",", $owner_id).")";
+ }
+ }
+
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
@@ -119,6 +134,20 @@ class PreordercampaignModel {
}
}
+ if(array_key_exists("area", $filter)) {
+ $area = FronkDB::singleton()->escape($filter['area']);
+ if($area) {
+ $where .= " AND `area` = '$area'";
+ }
+ }
+
+ if(array_key_exists("area%", $filter)) {
+ $area = FronkDB::singleton()->escape($filter['area%']);
+ if($area) {
+ $where .= " AND `area` LIKE '$area%'";
+ }
+ }
+
//var_dump($filter, $where);exit;
return $where;
}