* @access public */ function load_table($table, $fields = array()) { if ($this->debug) log_message('debug', "Loading model table: $table"); $this->_table = $table; $this->fields = (!empty($fields)) ? $fields : $this->db->list_fields($table); if ($this->debug) { log_message('debug', "Successfully Loaded model table: $table"); } } /** * Returns a resultset array with specified fields from database matching given conditions. * * @author md emran hasan * @return query result either in array or in object based on model config * @access public */ function find_all($conditions = NULL, $fields = '*', $order = NULL, $start = 0, $limit = NULL) { if ($conditions != NULL) { if(is_array($conditions)) { $this->db->where($conditions); } else { $this->db->where($conditions, NULL, FALSE); } } if ($fields != NULL) { $this->db->select($fields); } if ($order != NULL) { if(stripos($order,',') !== false) { $orders = explode(',',$order); foreach ($orders as $v) { $this->db->order_by($v); } } else { $this->db->order_by($order); } } if ($limit != NULL) { $this->db->limit($limit, $start); } $query = $this->db->get($this->_table); $this->__numRows = $query->num_rows(); return ($this->returnArray) ? $query->result_array() : $query->result(); } function find_zd($conditions = NULL, $pc = NULL , $zd = NULL , $fields = '*', $order = NULL, $start = 0, $limit = NULL) { $fieldsToSelect = "$fields, COUNT(CASE WHEN $zd THEN 1 ELSE NULL END) AS zd"; $this->db->select($fields); if (!empty($conditions)) { $this->db->where($conditions); } $this->db->group_by($pc); if ($order != NULL) { if(stripos($order,',') !== false) { $orders = explode(',',$order); foreach ($orders as $v) { $this->db->order_by($v); } } else { $this->db->order_by($order); } } if ($limit != NULL) { $this->db->limit($limit, $start); } $query = $this->db->get($this->_table); $this->__numRows = $query->num_rows(); return ($this->returnArray) ? $query->result_array() : $query->result(); } function find_pc($conditions = NULL, $pc = NULL ,$fields = '*', $order = NULL, $start = 0, $limit = NULL) { if ($conditions != NULL) { if(is_array($conditions)) { $this->db->where($conditions); } else { $this->db->where($conditions.' GROUP BY '.$pc, NULL, FALSE); } } if ($fields != NULL) { $this->db->select($fields); } if ($order != NULL) { if(stripos($order,',') !== false) { $orders = explode(',',$order); foreach ($orders as $v) { $this->db->order_by($v); } } else { $this->db->order_by($order); } } if ($limit != NULL) { $this->db->limit($limit, $start); } $query = $this->db->get($this->_table); $this->__numRows = $query->num_rows(); return ($this->returnArray) ? $query->result_array() : $query->result(); } function paypal($ktime,$jtime,$start = 0, $limit = NULL) { $this->db->where("library = 2 and paypal != '' and waybill != '' and librarytime >= '$ktime' and librarytime < '$jtime'", NULL, FALSE); $this->db->select('orderinfo,number,shop,paypal,waybill,express'); $this->db->order_by('id desc'); $query = $this->db->get($this->_table); $this->__numRows = $query->num_rows(); return ($this->returnArray) ? $query->result_array() : $query->result(); } /** * Return a single row as a resultset array with specified fields from database matching given conditions. * * @author md emran hasan * @return single row either in array or in object based on model config * @access public */ function find($conditions = NULL, $fields = '*', $order = NULL) { $data = $this->find_all($conditions, $fields, $order, 0, 1); if ($data) { return $data[0]; } else { return false; } } /** * Returns contents of a field in a query matching given conditions. * * @author md emran hasan * @return string the value of the field specified of the first row * @access public */ function field($conditions = null, $name, $fields = '*', $order = NULL) { $data = $this->find_all($conditions, $fields, $order, 0, 1); if ($data) { $row = $data[0]; if (isset($row[$name])) { return $row[$name]; } else { return false; } } else { return false; } } /** * Returns number of rows matching given SQL condition. * * @author md emran hasan * @return integer the number of records returned by the condition * @access public */ function find_count($conditions = null) { $data = $this->find_all($conditions, 'COUNT(*) AS count', null, 0, 1); if ($data) { return $data[0]['count']; } else { return false; } } /** * Returns a key value pair array from database matching given conditions. * * Example use: generateList(null, '', 0. 10, 'id', 'username'); * Returns: array('10' => 'emran', '11' => 'hasan') * * @author md emran hasan * @return array a list of key val ue pairs given criteria * @access public */ function generate_list($conditions = null, $order = 'id ASC', $start = 0, $limit = NULL, $key = null, $value = null) { $data = $this->find_all($conditions, "$key, $value", $order, $start, $limit); if ($data) { foreach ($data as $row) { $keys[] = ($this->returnArray) ? $row[$key] : $row->$key; $vals[] = ($this->returnArray) ? $row[$value] : $row->$value; } if (!empty($keys) && !empty($vals)) { $return = array_combine($keys, $vals); return $return; } } else { return false; } } /** * Returns an array of the values of a specific column from database matching given conditions. * * Example use: generateSingleArray(null, 'name'); * * @author md emran hasan * @return array a list of key value pairs given criteria * @access public */ function generate_single_array($conditions = null, $field = null, $order = 'id ASC', $start = 0, $limit = NULL) { $data = $this->find_all($conditions, "$field", $order, $start, $limit); if ($data) { foreach ($data as $row) { $arr[] = ($this->returnArray) ? $row[$field] : $row->$field; } return $arr; } else { return false; } } /** * Initializes the model for writing a new record. * * @author md emran hasan * @return boolean True * @access public */ function create() { $this->id = false; unset ($this->data); $this->data = array(); return true; } /** * Returns a list of fields from the database and saves in the model * * @author md emran hasan * @return array Array of database fields * @access public */ function read($id = null, $fields = null) { if ($id != null) { $this->id = $id; } $id = $this->id; if ($this->id !== null && $this->id !== false) { $this->data = $this->find($this->primaryKey . ' = ' . $id, $fields); return $this->data; } else { return false; } } /** * Inserts a new record in the database. * * @author md emran hasan * @return boolean success * @access public */ function insert($data = null) { if ($data == null) { return FALSE; } $this->data = $data; $this->data['create_date'] = date("Y-m-d H:i:s"); foreach ($this->data as $key => $value) { if (array_search($key, $this->fields) === FALSE) { unset($this->data[$key]); } } $this->db->insert($this->_table, $this->data); $this->__insertID = $this->db->insert_id(); return $this->__insertID; } /** * Saves model data to the database. * * @author md emran hasan * @return boolean success * @access public */ function save($data = null, $id = null ) { if ($data) { $this->data = $data; } foreach ($this->data as $key => $value) { if (array_search($key, $this->fields) === FALSE) { unset($this->data[$key]); } } if ($id != null) { $this->id = $id; } $id = $this->id; if ($this->id !== null && $this->id !== false) { $this->db->where($this->primaryKey, $id); $this->db->update($this->_table, $this->data); $this->__affectedRows = $this->db->affected_rows(); return $this->id; } else { $this->db->insert($this->_table, $this->data); $this->__insertID = $this->db->insert_id(); return $this->__insertID; } } /** * Removes record for given id. If no id is given, the current id is used. Returns true on success. * * @author md emran hasan * @return boolean True on success * @access public */ function remove($id = null) { if ($id != null) { $this->id = $id; } $id = $this->id; if ($this->id !== null && $this->id !== false) { if ($this->db->delete($this->_table, array($this->primaryKey => $id))) { $this->id = null; $this->data = array(); return true; } else { return false; } } else { return false; } } /** * Returns a resultset for given SQL statement. Generic SQL queries should be made with this method. * * @author md emran hasan * @return array Resultset * @access public */ function query($sql) { return $this->db->query($sql); } /** * Returns the last query that was run (the query string, not the result). * * @author md emran hasan * @return string SQL statement * @access public */ function last_query() { return $this->db->last_query(); } /** * This function simplifies the process of writing database inserts. It returns a correctly formatted SQL insert string. * * @author md emran hasan * @return string SQL statement * @access public */ function insert_string($data) { return $this->db->insert_string($this->_table, $data); } /** * Returns the current record's ID. * * @author md emran hasan * @return integer The ID of the current record * @access public */ function get_ID() { return $this->id; } /** * Returns the ID of the last record this Model inserted. * * @author md emran hasan * @return int * @access public */ function get_insert_ID() { return $this->__insertID; } /** * Returns the number of rows returned from the last query. * * @author md emran hasan * @return int * @access public */ function get_num_rows() { return $this->__numRows; } /** * Returns the number of rows affected by the last query * * @author md emran hasan * @return int * @access public */ function get_affected_rows() { return $this->__affectedRows; } } // END Model Class