} $flash = $app->view()->getData('flash'); $review_errors = isset($flash['review_errors']) ? $flash['review_errors'] : array(); $product = \Data\ProductsRepository::get_product($db, $category, $id); if ($product) { $reviews = \Data\ProductsRepository::get_review($db, $id); $reviews_rows = \Data\ProductsRepository::get_total_records($db); $rating_avg = \Data\ProductsRepository::get_rating($db, $id); $recommended_products = \Data\ProductsRepository::get_recommended_products($db, $id); if ($category == 'kits') { $products = \Data\ProductsRepository::get_kit_products($db, $id); $app->view()->set_template('layouts/basic.php'); $app->render('products/detail/kit.php', array('page_title' => 'Kit', 'kit' => $product, 'products' => $products, 'category' => $category, 'recommended_products' => $recommended_products, 'review_errors' => $review_errors, 'reviews' => $reviews, 'reviews_count' => $reviews_rows['rows'], 'rating_avg' => $rating_avg)); } else { if ($product['has_attributes'] == 1) { $attributes = \Data\ProductsRepository::get_product_attributes($db, $id); } else { $attributes = NULL; } $app->view()->set_template('layouts/basic.php'); $app->render('products/detail/product.php', array('page_title' => ucfirst($category) . ' - ' . $id, 'row' => $product, 'attributes' => $attributes, 'category' => $category, 'recommended_products' => $recommended_products, 'review_errors' => $review_errors, 'reviews' => $reviews, 'reviews_count' => $reviews_rows['rows'], 'rating_avg' => $rating_avg)); } } else { $app->notFound(); } }); $app->post('/products/review', function () use($app, $db) { $data = $app->request()->post(); include BASE_URI . DS . 'routes' . DS . 'validators' . DS . 'review.php'; $errors = validate($data); if ($errors) {
public static function get_kit_products($db, $id) { $query = ' SELECT p2.id, p2.name, p2.description, p2.image, p2.stock, p2.price, sales.price AS sale_price, ak.quantity as quantity, IF(DATEDIFF(NOW(), p2.created) < 30, true, false) as is_new, IF(pa.product_id IS NULL, 0, 1) AS has_attributes FROM products p1 INNER JOIN accessories_kits AS ak ON p1.id=ak.kit_id INNER JOIN products p2 ON ak.accessory_id = p2.id INNER JOIN sales ON (sales.product_id=p2.id AND ((NOW() BETWEEN sales.start_date AND sales.end_date) OR (NOW() > sales.start_date AND sales.end_date IS NULL))) LEFT OUTER JOIN product_attribute pa ON p2.id = pa.product_id WHERE p1.id = :id GROUP BY p2.id UNION SELECT p2.id, p2.name, p2.description, p2.image, p2.stock, p2.price, sales.price AS sale_price, ek.quantity as quantity, IF(DATEDIFF(NOW(), p2.created) < 30, true, false) as is_new, IF(pa.product_id IS NULL, 0, 1) AS has_attributes FROM products p1 INNER JOIN eliquids_kits AS ek ON p1.id=ek.kit_id INNER JOIN products p2 ON ek.eliquid_id = p2.id INNER JOIN sales ON (sales.product_id=p2.id AND ((NOW() BETWEEN sales.start_date AND sales.end_date) OR (NOW() > sales.start_date AND sales.end_date IS NULL))) LEFT OUTER JOIN product_attribute pa ON p2.id = pa.product_id WHERE p1.id = :id GROUP BY p2.id '; $stmt = $db->prepare($query); $stmt->execute(array('id' => $id)); $products = $stmt->fetchAll(); if ($products) { foreach ($products as &$p) { if ($p['has_attributes'] == 1) { $p['attributes'] = \Data\ProductsRepository::get_product_attributes($db, $p['id']); } else { $p['attributes'] = null; } } } return $products; }