free_result() public method

Overridden by driver result classes.
public free_result ( ) : void
return void
Example #1
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 #2
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;
 }