|
32 | 32 | )
|
33 | 33 | BEGIN
|
34 | 34 | -- product
|
35 |
| - SELECT pc.*,_.*, |
| 35 | + SELECT pc.*,_.*, _.product_id, |
36 | 36 | mf.slug as manufacturer_slug, mf.name as manufacturer_name,
|
37 | 37 | vd.slug as vendor_slug, vd.name as vendor_name,
|
38 | 38 | st.name as stock_status_name
|
|
144 | 144 |
|
145 | 145 | WHERE 1 = 1
|
146 | 146 |
|
147 |
| - @IF isset(:slug) |
| 147 | + @IF isset(:slug) && !(isset(:product_id) && :product_id) |
148 | 148 | THEN
|
149 | 149 | AND pc.slug = :slug
|
150 | 150 | END @IF
|
151 | 151 |
|
152 |
| - @IF isset(:product_id) |
| 152 | + @IF isset(:product_id) && :product_id > 0 |
153 | 153 | THEN
|
154 | 154 | AND _.product_id = :product_id
|
155 | 155 | END @IF
|
|
741 | 741 | IN taxonomy_item_id INT,
|
742 | 742 | IN manufacturer_id ARRAY,
|
743 | 743 | IN vendor_id ARRAY,
|
| 744 | + IN option_value_id ARRAY, |
744 | 745 | IN related INT,
|
745 | 746 | IN variant INT,
|
746 | 747 | IN status INT,
|
747 | 748 | IN search CHAR,
|
748 | 749 | IN like CHAR,
|
| 750 | + IN sku CHAR, |
| 751 | + IN barcode CHAR, |
| 752 | + IN upc CHAR, |
| 753 | + IN ean CHAR, |
| 754 | + IN isbn CHAR, |
749 | 755 | IN slug ARRAY,
|
750 | 756 |
|
751 | 757 | -- pagination
|
|
940 | 946 | @IF !empty(:variant)
|
941 | 947 | THEN
|
942 | 948 | INNER JOIN product_variant pv ON (pv.product_variant_id = products.product_id)
|
943 |
| - END @IF |
| 949 | + END @IF |
944 | 950 |
|
| 951 | + @IF !empty(:option_value_id) |
| 952 | + THEN |
| 953 | + INNER JOIN product_option_value pov ON (pov.product_id = products.product_id) |
| 954 | + END @IF |
| 955 | + |
| 956 | + @IF !empty(:product_attribute) AND !empty(:product_attribute_id) |
| 957 | + THEN |
| 958 | + INNER JOIN product_attribute pa ON (pa.product_id = products.product_id) |
| 959 | + END @IF |
| 960 | + |
945 | 961 |
|
946 | 962 | WHERE p2s.site_id = :site_id
|
947 | 963 |
|
|
997 | 1013 | @IF isset(:sku) && :sku !== ""
|
998 | 1014 | THEN
|
999 | 1015 | AND products.sku = :sku
|
| 1016 | + END @IF |
| 1017 | + |
| 1018 | + @IF isset(:barcode) && :barcode !== "" |
| 1019 | + THEN |
| 1020 | + AND products.barcode = :barcode |
1000 | 1021 | END @IF
|
1001 | 1022 |
|
1002 | 1023 | @IF isset(:upc) && :upc !== ""
|
|
1048 | 1069 | AND pt.taxonomy_item_id = :taxonomy_item_id
|
1049 | 1070 |
|
1050 | 1071 | END @IF
|
1051 |
| - |
1052 | 1072 |
|
1053 | 1073 | @IF isset(:slug) && count(:slug) > 0
|
1054 | 1074 | THEN
|
|
1057 | 1077 |
|
1058 | 1078 | END @IF
|
1059 | 1079 |
|
1060 |
| - |
| 1080 | + @IF !empty(:option_value_id) |
| 1081 | + THEN |
| 1082 | + AND pov.option_value_id IN (:option_value_id) |
| 1083 | + END @IF |
| 1084 | + |
| 1085 | + |
| 1086 | + @IF !empty(:product_attribute_id) |
| 1087 | + THEN |
| 1088 | + pa.product_attribute_id IN (:product_attribute_id) |
| 1089 | + END @IF |
| 1090 | + |
| 1091 | + |
| 1092 | + @IF !empty(:product_attribute) |
| 1093 | + THEN |
| 1094 | + pa.text IN (:product_attribute) |
| 1095 | + END @IF |
| 1096 | + |
| 1097 | + |
1061 | 1098 | -- ORDER BY parameters can't be binded, because they are added to the query directly they must be properly sanitized by only allowing a predefined set of values
|
1062 | 1099 | @IF isset(:order_by)
|
1063 | 1100 | THEN
|
|
0 commit comments