Blame view

modules/default/model/shops.class.php 1.61 KB
8d65d0ce   andryeyev   init
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
  <?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);
      }
  }
  
  ?>