shops.class.php 1.61 KB
<?php

Class Shops
{
    private $db;
    private $lang;

    function __construct ($lang)
    {
        $this->db = sdb::getInstance ();
        $this->lang = $lang;
    }

    public function getShops ($brend_id = null, $param = [])
    {
        $search = [];
        $left_join = '';
        if (isset($param['city']) && strlen ($param['city']) > 0)
        {
            $search[] = sprintf ("s.city='%s'", $param['city']);
        }
        if (count ($brend_id) > 0)
        {
            //$left_join = "LEFT JOIN catalogs_brends_keys k ON k.shop_id=s.id";
            //$search[] = sprintf("k.brend_id in (%s)",implode(',',$brend_id));
            foreach ($brend_id as $key => $id)
            {
                $left_join .= "LEFT JOIN catalogs_brends_keys k_$key ON k_$key.shop_id=s.id ";
                $search[] = sprintf ("k_$key.brend_id='%d'", $id);
            }
        }
        $sql = "select s.* from shops s $left_join where 1=1 ";
        if (count ($search)) $sql .= "AND " . implode (" AND ", $search) . " ";
        $sql .= "group by s.id order by s.id desc";
        $res = $this->db->getAll ($sql, [], DB_FETCHMODE_ASSOC);
        foreach ($res as $key => $row)
        {
            $res[$key]['stars'] = $this->db->getAll ("select k.brend_id,b.name as brend_name from catalogs_brends_keys k LEFT JOIN catalogs_brends b ON b.id=k.brend_id where k.shop_id=?", [$row['id']], DB_FETCHMODE_ASSOC);
        }

        return $res;
    }

    public function getCity ()
    {
        $sql = "select city from shops group by city order by city asc";

        return $this->db->getAll ($sql, [], DB_FETCHMODE_ASSOC);
    }
}

?>