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;
}
}