-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathshop-filters.php
executable file
·71 lines (60 loc) · 2.17 KB
/
shop-filters.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
require_once 'utils/functions.php';
class ShopFilters{
private $filtered_authors;
private $filtered_categories;
private $order;
public function setFilteredAuthors($authors){
$this->filtered_authors = $authors;
}
public function setFilteredCategories($categories){
$this->filtered_categories = $categories;
}
public function setOrderFilter($order){
$this->order = $order;
}
function filter_pictures_by_authors($pictures){
$pictures = array_filter($pictures, function($picture){
return in_array($picture["Author"], $this->filtered_authors);
});
return $pictures;
}
function filter_pictures_by_categories($pictures){
$pictures = array_filter($pictures, function($picture){
return in_array($picture["Category_name"], $this->filtered_categories);
});
return $pictures;
}
function filter_pictures_in_sale($pictures){
$pictures = array_filter($pictures, function($picture){
return $picture["Discount"] > 0;
});
return $pictures;
}
function filter_order($pictures){
switch($this->order){
case "none":
break;
case "publish_date":
usort($pictures, function($a, $b) {
return strtotime($b['Publish_date']) - strtotime($a['Publish_date']);
});
break;
case "cost_rising":
usort($pictures, function($a, $b) {
return discounted_price($a['Base_price'], $a["Discount"]) - discounted_price($b['Base_price'], $b["Discount"]);
});
break;
case "cost_decreasing":
usort($pictures, function($a, $b) {
return discounted_price($b['Base_price'], $b["Discount"]) - discounted_price($a['Base_price'], $a["Discount"]);
});
break;
default:
throw new BadMethodCallException('unexpected value provided as order name');
break;
}
return $pictures;
}
}
?>