public function read($id) { $return = ""; $row = $this->db->selectRow("SELECT * FROM ?_session WHERE id=?", $id); if ($row) { if ($row['modified'] + $row['lifetime'] > Am_Di::getInstance()->time) { return $row['data']; } else { $this->destroy($id); } } return $return; }
/** * Иниализирует пользователя, достаёт из базы некоторые его свойства * @param string $login Логин или e-mail * @param string $pass SHA1 пароля * @return bool */ public function initUser($login, $pass) { if (is_null(Core::getInstance()->db)) { Core::getInstance()->initDB(); } $this->db = Core::getInstance()->db; // Если сохранённые в сессии данные о пользователе не совпадают с текущими if (isset($_SESSION['REMOTE_ADDR']) && isset($_SESSION['HTTP_USER_AGENT']) && ($_SESSION['REMOTE_ADDR'] !== $_SERVER['REMOTE_ADDR'] || $_SESSION['HTTP_USER_AGENT'] !== $_SERVER['HTTP_USER_AGENT'])) { // Уничтожаем пользователя $this->destroy(); } //@FIXME Вероятно, стоит подключаться к базе лишь в том случае, если в сессии у нас пусто $sql = "SELECT id, user_name, user_login, user_pass, user_mail, getNotify,\n DATE_FORMAT(user_created,'%d.%m.%Y') as user_created, user_active, user_service_mail,\n user_currency_default, user_currency_list, user_type, time_zone\n FROM users\n WHERE (user_login = ? OR user_mail = ?) AND user_pass = ? AND user_new = 0"; $this->props = $this->db->selectRow($sql, $login, $login, $pass); if (count($this->props) == 0) { $this->destroy(); return false; } $_SESSION['user'] = $this->props; $_SESSION['HTTP_USER_AGENT'] = @$_SERVER['HTTP_USER_AGENT']; $_SESSION['REMOTE_ADDR'] = @$_SERVER['REMOTE_ADDR']; // Вызывает инициализацию пользовательских категорий, счетов, денег $this->init(); return $this->save(); }
/** * Возвращает количество операций по выбранному счёту * @FIXME Переписать на получение количества операций по всем счетам, что бы не дёргать по каждому счёту отдельно * * @param int $accountId Ид счёта * @return int */ public function getNumOfOperationOnAccount($accountId) { $dateTo = new DateTime(); $dateFrom = new DateTime(); $dateFrom->sub(new DateInterval('P1M')); $sql = "\n SELECT count(*) as op_count FROM operation\n WHERE account_id=?\n AND type <> ?\n AND deleted_at IS NULL\n AND updated_at BETWEEN ? AND ?\n "; $count = $this->db->selectRow($sql, (int) $accountId, Operation::TYPE_BALANCE, $dateFrom->format('Y-m-d H:i:s'), $dateTo->format('Y-m-d H:i:s')); return $count['op_count']; }
public function insert(array $values, $returnInserted = false) { $this->_db->query("INSERT INTO {$this->_table} SET ?a", $values); return $returnInserted ? $this->_db->selectRow("SELECT * FROM {$this->_table} WHERE ?#=LAST_INSERT_ID()", $this->_key) : $this->_db->selectCell("SELECT LAST_INSERT_ID()"); }
/** * Возвращает операцию по финансовой цели из базы данных * @param $target_id int * @return array mixed */ public function getTargetOperation($target_id) { return $this->db->selectRow("SELECT tb.id, tb.user_id, tb.money, t.category_id as cat_id, '' as transfer,\n DATE_FORMAT(tb.date,'%d.%m.%Y') as date, t.id as tr_id, tb.bill_id, '' as drain, tb.comment as comment,\n t.title as title, t.close\n FROM `target_bill` tb\n LEFT JOIN target t on tb.target_id = t.id\n WHERE tb.id = ? AND tb.`user_id` = ?", $target_id, Core::getInstance()->user->getId()); }
function getRecord($ip) { return $this->db->selectRow("SELECT *\n FROM ?_failed_login\n WHERE ip=? AND login_type=?", $ip, $this->loginType); }