|
Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/laciasmara.com/public_html/shop/application/models/ |
Upload File : |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Brand_m extends MY_Model
{
protected $_table_name = 'brands';
protected $_primary_key = 'id_brands';
protected $_order_by = 'id_brands';
public $rules = array(
array(
'field' => 'brand_name',
'label' => 'Nama Merek',
'rules' => 'trim|required|callback__cek_existing_brand_title'
),
array(
'field' => 'status',
'label' => 'status',
'rules' => 'trim|required'
),
array(
'field' => 'priority',
'label' => 'Urutan Tampilan',
'rules' => 'trim|required|numeric'
),
array(
'field' => 'meta_description',
'label' => 'Deskripsi Meta',
'rules' => 'trim'
),
array(
'field' => 'meta_title',
'label' => 'Judul Browser',
'rules' => 'trim'
),
);
function __construct()
{
parent::__construct();
}
//pagination included
function get_all_brands()
{
$this->db->select('*, ( SELECT COUNT(*) FROM products WHERE id_brands = products.brand_id) as jumlah');
$this->db->from('brands');
$this->db->where('status', '1');
$this->db->order_by('id_brands');
$query = $this->db->get();
return $query->result();
}
//function to display new brand, where all fields are empty
public function get_new()
{
$brands = new stdClass();
$brands->brand = '';
$brands->status = '';
$brands->priority = '';
$brands->meta_description = '';
$brands->meta_title = '';
$brands->banner_link = '';
$brands->description = '';
$brands->description_en = '';
return $brands;
}
//get all brands
function get_brands()
{
$this->db->select('*');
$this->db->from('brands');
$this->db->order_by('id_brands asc');
$query = $this->db->get();
return $query->result();
}
//function add new brand
function add_brand($data)
{
$this->db->insert('brands', $data);
return $this->db->insert_id();
}
//function edit brand
function edit_brand($id, $data)
{
$this->db->where('id_brands', $id);
$this->db->update('brands', $data);
}
//function count all record for brand
public function record_count()
{
return $this->db->get('brands')->num_rows();
}
//function count if existing record exist
public function count_exist($id)
{
$this->db->select('*');
$this->db->from('brands');
$this->db->where('id_brands', $id);
$query = $this->db->get();
return $query->num_rows();
}
//FOR FRONT END REGISTRATION PAGE
//get all brands to display at front registration page, with status display 1 only
function get_brands_display_on()
{
$this->db->select('*');
$this->db->from('brands');
$this->db->where('status', '1');
$this->db->where('id_brands !=', '0');
$this->db->order_by('id_brands asc');
$query = $this->db->get();
return $query->result();
}
//cek if brand title already exist
public function cek_existing_brand_title($str, $brand_id)
{
$this->db->select('id_brands');
$this->db->from('brands');
$this->db->where('brand', $str);
if ($brand_id != NULL) {
$this->db->where('id_brands !=', $brand_id);
}
$query = $this->db->get();
return $query->num_rows();
}
public function getProductBrand($id)
{
$this->db->select('id_products');
$this->db->from('products');
$this->db->where('brand_id', $id);
$query = $this->db->get();
foreach ($query->result() as $row) {
$return[] = $row->id_products;
}
return $return;
}
public function getDetailVendors($ar)
{
$this->db->select('vendors.vendor, vendors.alamat, vendors.email, GROUP_CONCAT(products.title SEPARATOR "<br>") as products ');
$this->db->from('invoice_detail , invoice, vendors, products');
$this->db->where('products.id_products = invoice_detail.product_id and invoice.vendor_id = vendors.id_vendor and invoice.id_invoice = invoice_detail.invoice_id');
$this->db->where_in(' invoice_detail.product_id', $ar);
$this->db->group_by('invoice_detail.invoice_id');
$query = $this->db->get();
return $query->result();
}
public function count_brands($status = NULL)
{
$this->db->from('brands');
if (!is_null($status)) {
$this->db->where('status', (string) $status);
}
return $this->db->count_all_results();
}
public function fetch_brand_by_id($id_brand)
{
$this->db->select('*')
->from('brands')
->where('id_brands', $id_brand);
return $this->db->get()->row();
}
public function search_brands($query)
{
$this->db->select('b.id_brands, b.brand, b.alias, b.logo, (SELECT COUNT(*) FROM products p WHERE p.brand_id = b.id_brands AND p.product_status = "1") as total_product');
$this->db->from('brands b');
if ($query) {
// Pecah query jadi kata-kata
$keywords = array_filter(explode(' ', trim($query)));
$fulltext_keywords = [];
$like_keywords = [];
// Pisahin kata yang mungkin angka atau pendek
foreach ($keywords as $keyword) {
if (is_numeric($keyword) || strpos($keyword, ',') !== false || strlen($keyword) < 4) {
// Angka, desimal (00,1), atau kata pendek masuk ke LIKE
$like_keywords[] = $keyword;
} else {
// Kata normal masuk ke FULLTEXT
$fulltext_keywords[] = $keyword;
}
}
$this->db->group_start();
// FULLTEXT untuk kata-kata panjang
if (!empty($fulltext_keywords)) {
$fulltext_query = '+' . implode(' +', $fulltext_keywords);
$this->db->where("MATCH(b.brand) AGAINST('$fulltext_query' IN BOOLEAN MODE)", NULL, FALSE);
}
if (!empty($like_keywords)) {
$this->db->group_start();
foreach ($like_keywords as $keyword) {
$this->db->like('b.brand', $keyword);
}
$this->db->group_end();
}
$this->db->group_end();
}
$this->db->where('b.status', '1');
$this->db->order_by('b.priority', 'ASC');
$this->db->limit(5);
if (!empty($fulltext_keywords)) {
$fulltext_query = '+' . implode(' +', $fulltext_keywords);
$this->db->order_by("MATCH(b.brand) AGAINST('$fulltext_query' IN BOOLEAN MODE) DESC");
}
$query = $this->db->get();
return $query->result_array();
}
}