Menus_model::getList PHP Method

getList() public method

public getList ( $filter = [] )
    public function getList($filter = array())
    {
        if (!empty($filter['page']) and $filter['page'] !== 0) {
            $filter['page'] = ($filter['page'] - 1) * $filter['limit'];
        }
        if ($this->db->limit($filter['limit'], $filter['page'])) {
            if (APPDIR === ADMINDIR) {
                $this->db->select('*, menus.menu_id');
                $this->db->select('IF(start_date <= CURRENT_DATE(), IF(end_date >= CURRENT_DATE(), "1", "0"), "0") AS is_special', FALSE);
            } else {
                $this->db->select('menus.menu_id, menu_name, menu_description, menu_photo, menu_price, minimum_qty,
					menu_category_id, menu_priority, categories.name AS category_name, special_status, start_date, end_date, special_price,
					menus.mealtime_id, mealtimes.mealtime_name, mealtimes.start_time, mealtimes.end_time, mealtime_status');
                $this->db->select('IF(start_date <= CURRENT_DATE(), IF(end_date >= CURRENT_DATE(), "1", "0"), "0") AS is_special', FALSE);
                $this->db->select('IF(start_time <= CURRENT_TIME(), IF(end_time >= CURRENT_TIME(), "1", "0"), "0") AS is_mealtime', FALSE);
            }
            $this->db->join('categories', 'categories.category_id = menus.menu_category_id', 'left');
            $this->db->join('menus_specials', 'menus_specials.menu_id = menus.menu_id', 'left');
            $this->db->join('mealtimes', 'mealtimes.mealtime_id = menus.mealtime_id', 'left');
            if (!empty($filter['sort_by']) and !empty($filter['order_by'])) {
                $this->db->order_by($filter['sort_by'], $filter['order_by']);
            }
            if (!empty($filter['filter_search'])) {
                $this->db->like('menu_name', $filter['filter_search']);
                $this->db->or_like('menu_price', $filter['filter_search']);
                $this->db->or_like('stock_qty', $filter['filter_search']);
            }
            if (!empty($filter['filter_category'])) {
                $this->db->where('menu_category_id', $filter['filter_category']);
            }
            if (is_numeric($filter['filter_status'])) {
                $this->db->where('menu_status', $filter['filter_status']);
            }
            $query = $this->db->get('menus');
            $result = array();
            if ($query->num_rows() > 0) {
                $result = $query->result_array();
            }
            if (APPDIR === ADMINDIR) {
                return $result;
            }
            $this->load->model('Image_tool_model');
            $results = array();
            $show_menu_images = is_numeric($this->config->item('show_menu_images')) ? $this->config->item('show_menu_images') : '';
            $menu_images_h = is_numeric($this->config->item('menu_images_h')) ? $this->config->item('menu_images_h') : '50';
            $menu_images_w = is_numeric($this->config->item('menu_images_w')) ? $this->config->item('menu_images_w') : '50';
            foreach ($result as $row) {
                // loop through menus array
                $menu_photo_src = '';
                if ($show_menu_images === '1') {
                    if (!empty($row['menu_photo'])) {
                        $menu_photo_src = $this->Image_tool_model->resize($row['menu_photo'], $menu_images_w, $menu_images_h);
                    }
                }
                $start_date = $end_date = $end_days = '';
                $price = $row['menu_price'];
                if ($row['special_status'] === '1' and $row['is_special'] === '1') {
                    $price = $row['special_price'];
                    $daydiff = floor((strtotime($row['end_date']) - time()) / 86400);
                    $start_date = $row['start_date'];
                    $end_date = mdate('%d %M', strtotime($row['end_date']));
                    if ($daydiff < 0) {
                        $end_days = sprintf($this->lang->line('text_end_today'));
                    } else {
                        $end_days = sprintf($this->lang->line('text_end_days'), $end_date, $daydiff);
                    }
                }
                $results[$row['menu_category_id']][] = array('menu_id' => $row['menu_id'], 'menu_name' => strlen($row['menu_name']) > 80 ? strtolower(substr($row['menu_name'], 0, 80)) . '...' : strtolower($row['menu_name']), 'menu_description' => strlen($row['menu_description']) > 120 ? substr($row['menu_description'], 0, 120) . '...' : $row['menu_description'], 'category_name' => $row['category_name'], 'category_id' => $row['menu_category_id'], 'minimum_qty' => !empty($row['minimum_qty']) ? $row['minimum_qty'] : '1', 'menu_priority' => $row['menu_priority'], 'mealtime_name' => $row['mealtime_name'], 'start_time' => mdate($this->config->item('time_format'), strtotime($row['start_time'])), 'end_time' => mdate($this->config->item('time_format'), strtotime($row['end_time'])), 'is_mealtime' => $row['is_mealtime'], 'mealtime_status' => (!empty($row['mealtime_id']) and !empty($row['mealtime_status'])) ? '1' : '0', 'special_status' => $row['special_status'], 'is_special' => $row['is_special'], 'start_date' => $start_date, 'end_days' => $end_days, 'menu_price' => $this->currency->format($price), 'menu_photo' => $menu_photo_src);
            }
            return $results;
        }
    }