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; }