Last active
December 11, 2015 11:49
-
-
Save jblac/4596912 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function get_catalog_new($column=1, $storeID=0, $parentID=0, $isFront=0) { | |
if ($isFront != 0) { | |
// information is being pulled from the new front end. | |
$newJoin = "LEFT JOIN ic_product_stores as st ON $storeID = st.storeID AND prod.productID = st.productID"; | |
$extsql = " AND st.oos = 0"; | |
} else { | |
// information is being pulled from the administration panel. | |
$newJoin = ''; | |
$extsql = ''; | |
} | |
if ($storeID != 0) { | |
$extrapro = " AND productID IN ( SELECT productID FROM ic_product_stores WHERE storeID = $storeID)"; | |
$extrasql = " WHERE storeID = $storeID"; | |
} else { | |
$extrapro = ''; | |
$extrasql = ''; | |
} | |
$query = "SELECT DISTINCT cat.categoryID, cat.catalogID, cat.storeID, cat.categoryID, cat.parentID, group_concat(cat.productID SEPARATOR ',') AS productID, | |
cat.title, cat.column, cat.the_order, cat.cat_order, prod.title AS product, cat1.title AS category, | |
(SELECT DISTINCT GROUP_CONCAT(t.productID SEPARATOR ',') FROM ic_products t WHERE t.productID | |
NOT IN (SELECT productID FROM ic_store_catalog WHERE storeID=$storeID AND categoryID=cat.categoryID) | |
AND productID IN (SELECT productID FROM ic_product_category_rel WHERE categoryID=cat.categoryID) $extrapro | |
) AS missing_products, | |
(SELECT DISTINCT GROUP_CONCAT(categoryID SEPARATOR ',') FROM ic_product_categories WHERE categoryID NOT IN( | |
SELECT DISTINCT categoryID FROM ic_store_catalog WHERE storeID=$storeID) AND categoryID IN ( | |
SELECT categoryID FROM ic_product_category_rel WHERE productID IN( | |
SELECT productID FROM ic_product_stores $extrasql)) AND parentID=cat.categoryID) AS missing_categories | |
FROM ic_store_catalog AS cat | |
LEFT JOIN ic_products as prod ON cat.productID = prod.productID | |
LEFT JOIN ic_product_categories AS cat1 ON cat.categoryID = cat1.categoryID | |
WHERE cat.`storeID` = $storeID AND cat.`column` = $column AND cat.`parentID` = 0 GROUP BY cat.categoryID ORDER BY cat.`cat_order` ASC"; | |
$result = $this->db->Query($query); | |
$result = $result->result_array(); | |
$i = 0; | |
foreach ($result as $row) { | |
$query = "SELECT DISTINCT cat.categoryID, cat.catalogID, cat.storeID, cat.categoryID, cat.parentID, group_concat(cat.productID SEPARATOR ',') AS productID, | |
cat.title, cat.column, cat.the_order, cat.cat_order, prod.title AS product, cat1.title AS category, | |
(SELECT DISTINCT GROUP_CONCAT(t.productID SEPARATOR ',') FROM ic_products t WHERE t.productID | |
NOT IN (SELECT productID FROM ic_store_catalog WHERE storeID=$storeID AND categoryID=cat.categoryID) | |
AND productID IN (SELECT productID FROM ic_product_category_rel WHERE categoryID=cat.categoryID) $extrapro | |
) AS missing_products | |
FROM ic_store_catalog AS cat | |
LEFT JOIN ic_products as prod ON cat.productID = prod.productID | |
LEFT JOIN ic_product_categories AS cat1 ON cat.categoryID = cat1.categoryID | |
WHERE cat.`storeID` = $storeID AND cat.`parentID` = '".$row['categoryID']."' GROUP BY cat.categoryID ORDER BY cat.`cat_order` ASC"; | |
$query = $this->db->Query($query); | |
$result[$i]['children'] = $query->result_array(); | |
if ($row['missing_products'] != '') { | |
$query = "SELECT prod.* FROM ic_products AS prod WHERE prod.productID IN ('$row[missing_products]')"; | |
$query = $this->db->Query($query); | |
$result[$i]['products_missing'] = $query->result_array(); | |
} | |
if ($row['missing_categories'] != '') { | |
$query = "SELECT prod.* FROM ic_product_categories AS prod WHERE prod.categoryID IN ('$row[missing_categories]')"; | |
$query = $this->db->Query($query); | |
$result[$i]['categories_missing'] = $query->result_array(); | |
} | |
$query = "SELECT DISTINCT prod.*, cat.the_order, cat.catalogID, | |
(SELECT COUNT(po.productID) FROM ic_product_options AS po WHERE productID = prod.productID) AS options | |
FROM ic_products AS prod | |
LEFT JOIN ic_store_catalog AS cat ON prod.productID = cat.productID | |
$newJoin | |
WHERE prod.productID IN (". $row['productID'].") AND cat.storeID = '$storeID' $extsql GROUP BY prod.productID ORDER BY cat.`the_order` ASC"; | |
$query = $this->db->Query($query); | |
$result[$i]['products'] = $query->result_array(); | |
$a = 0; | |
foreach ($result[$i]['children'] as $row2) { | |
$query = "SELECT DISTINCT prod.*, cat.the_order, cat.catalogID, | |
(SELECT COUNT(po.productID) FROM ic_product_options AS po WHERE productID = prod.productID) AS options | |
FROM ic_products AS prod | |
LEFT JOIN ic_store_catalog AS cat ON prod.productID = cat.productID | |
$newJoin | |
WHERE prod.productID IN (". $row2['productID'].") and cat.storeID = '$storeID' $extsql GROUP BY prod.productID ORDER BY cat.`the_order` ASC"; | |
$query = $this->db->Query($query); | |
$result[$i]['children'][$a]['products'] = $query->result_array(); | |
if ($row2['missing_products'] != '') { | |
$query = "SELECT prod.* FROM ic_products AS prod WHERE prod.productID IN ('$row2[missing_products]')"; | |
$query = $this->db->Query($query); | |
$result[$i]['children'][$a]['products_missing'] = $query->result_array(); | |
} | |
$a++; | |
} | |
$i++; | |
} | |
return $result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment