/** * 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)); }
/** * 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(); } }
/** * 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; }