This is the platform-independent result class. This class will not be called directly. Rather, the adapter class for the specific database will extend and instantiate it.
Author: EllisLab Dev Team
 /**
  * Class constructor
  *
  * @param	object	&$driver_object
  * @return	void
  */
 public function __construct(&$driver_object)
 {
     parent::__construct($driver_object);
     // Required, due to mysql_data_seek() causing nightmares
     // with empty result sets
     $this->num_rows = mysql_num_rows($this->result_id);
 }
Example #2
0
 /**
  * Untuk menghasilkan data excel
  * 
  * @access public
  * @return Excel_generator
  */
 public function generate()
 {
     $start = $this->start;
     if (count($this->header) > 0) {
         $abj = 1;
         foreach ($this->header as $row) {
             $this->getActiveSheet()->setCellValue($this->columnName($abj) . $this->start, $row);
             if ($this->header_bold) {
                 $this->getActiveSheet()->getStyle($this->columnName($abj) . $this->start)->getFont()->setBold(TRUE);
             }
             $abj++;
         }
         $start = $this->start + 1;
     }
     foreach ($this->query->result_array() as $result_db) {
         $index = 1;
         foreach ($this->column as $row) {
             if (count($this->width) > 0) {
                 $this->getActiveSheet()->getColumnDimension($this->columnName($index))->setWidth($this->width[$index - 1]);
             }
             $this->getActiveSheet()->setCellValue($this->columnName($index) . $start, $result_db[$row]);
             $index++;
         }
         $start++;
     }
     return $this;
 }
Example #3
0
 /**
  * Number of rows in the result set
  *
  * @return	int
  */
 public function num_rows()
 {
     // sqlsrv_num_rows() doesn't work with the FORWARD and DYNAMIC cursors (FALSE is the same as FORWARD)
     if (!in_array($this->scrollable, [FALSE, SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_DYNAMIC], TRUE)) {
         return parent::num_rows();
     }
     return is_int($this->num_rows) ? $this->num_rows : ($this->num_rows = sqlsrv_num_rows($this->result_id));
 }
Example #4
0
 public function __construct(&$driver_object)
 {
     parent::__construct($driver_object);
     $this->stmt_id = $driver_object->stmt_id;
     $this->curs_id = $driver_object->curs_id;
     $this->limit_used = $driver_object->limit_used;
     $driver_object->stmt_id = FALSE;
 }
Example #5
0
 /**
  * Class constructor.
  *
  * @param object &$driver_object
  *
  * @return void
  */
 public function __construct(&$driver_object)
 {
     parent::__construct($driver_object);
     $this->stmt_id = $driver_object->stmt_id;
     $this->curs_id = $driver_object->curs_id;
     $this->limit_used = $driver_object->limit_used;
     $this->commit_mode =& $driver_object->commit_mode;
     $driver_object->stmt_id = false;
 }
Example #6
0
 /**
  * Process Query
  *
  * Converts a query result into an array of objects.
  * Also updates this object
  *
  * @ignore
  * @param	CI_DB_result $query
  */
 protected function _process_query($query)
 {
     if ($query->num_rows() > 0) {
         // Populate all with records as objects
         $this->all = array();
         $this->_to_object($this, $query->row());
         // don't bother recreating the first item.
         $index = $this->all_array_uses_ids && isset($this->id) ? $this->id : 0;
         $this->all[$index] = $this->get_clone();
         if ($query->num_rows() > 1) {
             $model = get_class($this);
             $first = TRUE;
             foreach ($query->result() as $row) {
                 if ($first) {
                     $first = FALSE;
                     continue;
                 }
                 $item = new $model();
                 $this->_to_object($item, $row);
                 if ($this->all_array_uses_ids && isset($item->id)) {
                     $this->all[$item->id] = $item;
                 } else {
                     $this->all[] = $item;
                 }
             }
         }
         // remove instantiations
         $this->_instantiations = NULL;
         // free large queries
         if ($query->num_rows() > $this->free_result_threshold) {
             $query->free_result();
         }
     } else {
         // Refresh stored values is called by _to_object normally
         $this->_refresh_stored_values();
     }
 }
Example #7
0
 /**
  * Authenticate
  *
  * @access	private
  */
 private function _authenticate(CI_DB_result $member, $password)
 {
     $always_disallowed = array(4);
     if ($member->num_rows() !== 1) {
         return FALSE;
     }
     if (in_array($member->row('group_id'), $always_disallowed)) {
         return ee()->output->show_user_error('general', lang('mbr_account_not_active'));
     }
     $m_salt = $member->row('salt');
     $m_pass = $member->row('password');
     // hash using the algo used for this password
     $h_byte_size = strlen($m_pass);
     $hashed_pair = $this->hash_password($password, $m_salt, $h_byte_size);
     if ($hashed_pair === FALSE or $m_pass !== $hashed_pair['password']) {
         return FALSE;
     }
     // Officially a valid user, but are they as secure as possible?
     // ----------------------------------------------------------------
     reset($this->hash_algos);
     // Not hashed or better algo available?
     if (!$m_salt or $h_byte_size != key($this->hash_algos)) {
         $m_id = $member->row('member_id');
         $this->update_password($m_id, $password);
     }
     $authed = new Auth_result($member->row());
     $member->free_result();
     return $authed;
 }
Example #8
0
 /**
  * Generate XML data from a query result object
  *
  * @param	object	$query	Query result object
  * @param	array	$params	Any preferences
  * @return	string
  */
 public function xml_from_result(CI_DB_result $query, $params = array())
 {
     // Set our default values
     foreach (array('root' => 'root', 'element' => 'element', 'newline' => "\n", 'tab' => "\t") as $key => $val) {
         if (!isset($params[$key])) {
             $params[$key] = $val;
         }
     }
     // Create variables for convenience
     extract($params);
     // Load the xml helper
     get_instance()->load->helper('xml');
     // Generate the result
     $xml = '<' . $root . '>' . $newline;
     while ($row = $query->unbuffered_row()) {
         $xml .= $tab . '<' . $element . '>' . $newline;
         foreach ($row as $key => $val) {
             $xml .= $tab . $tab . '<' . $key . '>' . xml_convert($val) . '</' . $key . '>' . $newline;
         }
         $xml .= $tab . '</' . $element . '>' . $newline;
     }
     return $xml . '</' . $root . '>' . $newline;
 }
Example #9
0
 public function authenticate(CI_DB_result $query)
 {
     $data = $query->row();
     $this->core->session->set_userdata(array('id' => $data->id, 'logged_in' => TRUE));
 }