Skip to content
Snippets Groups Projects
Commit 0af99fd3 authored by PavelBegunkov's avatar PavelBegunkov
Browse files

reducing the number of queries to the database

parent 14c51fb9
Branches
Tags
No related merge requests found
......@@ -307,6 +307,12 @@ CREATE PROCEDURE `GetFullInfo` (
BEGIN
DECLARE vAccountType enum('student', 'teacher');
DECLARE vSemesterID INT DEFAULT -1;
SET vSemesterID = (
SELECT general_settings.Val
FROM `general_settings`
WHERE general_settings.Name = 'SemesterID'
LIMIT 1
);
SELECT user_roles.Type INTO vAccountType
FROM `accounts`
......@@ -318,13 +324,6 @@ BEGIN
# 2: teacher
IF vAccountType = 'student' THEN
SET vSemesterID = (
SELECT general_settings.Val
FROM `general_settings`
WHERE general_settings.Name = 'SemesterID'
LIMIT 1
);
SELECT # student info
view_students.LastName,
view_students.FirstName,
......@@ -351,7 +350,9 @@ BEGIN
user_roles.Mark AS 'RoleMark',
accounts.IsEnabled,
accounts.ActivationCode AS 'Code',
accounts.UserAgent
accounts.UserAgent,
# extra
vSemesterID AS 'SemesterID'
FROM `view_students`
INNER JOIN `accounts` ON accounts.ID = view_students.AccountID
INNER JOIN `user_roles` ON user_roles.ID = accounts.UserRoleID
......@@ -379,7 +380,9 @@ BEGIN
user_roles.Mark AS 'RoleMark',
accounts.IsEnabled,
accounts.ActivationCode AS 'Code',
accounts.UserAgent
accounts.UserAgent,
# extra
vSemesterID AS 'SemesterID'
FROM `view_teachers`
INNER JOIN `accounts` ON accounts.ID = view_teachers.AccountID
INNER JOIN `user_roles` ON user_roles.ID = accounts.UserRoleID
......
......@@ -35,7 +35,7 @@ class Controller_Authentication extends Controller {
if(!User::instance()->isSignedIn())
{
$type = $this->request->param('type');
if(empty($type)) $type = 'in';
$type = empty($type)? 'in': $type;
$twig = Twig::factory('sign/'.$type);
$twig->Updates = Model_System::getChangeLog();
......@@ -50,20 +50,16 @@ class Controller_Authentication extends Controller {
public function action_enter_frontdoor()
{
$check = false;
try {
$role = (int)User::instance()->RoleMark;
} catch (Exception $e) {
$role = (int)1;
}
$admission = true;
$isNotSigned = !User::instance()->isSignedIn();
$isNotAdmin = !User::instance()->isAdmin();
if($isNotSigned || ($role & 8) == 0) // if not signed or not admin
if($isNotSigned || $isNotAdmin)
{
$check = $this->check_maintenance();
$admission = !$this->check_maintenance();
}
if (!$check) {
if ($admission) {
$this->sign();
} else
User::instance()->signOut();
......@@ -104,8 +100,7 @@ class Controller_Authentication extends Controller {
private function check_maintenance()
{
$model = new Model_Account;
$maintenance_info = $model->getMaintenanceInfo();
$maintenance_info = Model_Account::getMaintenanceInfo();
if ($maintenance_info['active']) {
$this->response->status(503);
$twig = Twig::factory('errors/http');
......
......@@ -116,7 +116,7 @@ class Model_Account extends Model
}
# TODO: deprecated
# TODO: deprecated (see getUserInfo)
public static function getPersonalInfo($id, $semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = "CALL `GetPersonalInfo`(:id, :semester);";
......@@ -126,7 +126,7 @@ class Model_Account extends Model
->execute()[0];
}
# TODO: deprecated
# TODO: deprecated (see getUserInfo)
public static function getAccountInfo($id) {
return DB::query(Database::SELECT, "CALL GetAccountInfo(:id);")
->param(':id', (int) $id)->execute()[0];
......
......@@ -19,6 +19,7 @@ class Model_Student extends Model_Container
*/
protected function create() {
// todo: implement later
throw new BadMethodCallException('Method is not implemented yet!');
}
/** @return Model_Discipline[] */
......
......@@ -53,6 +53,7 @@ class User implements ArrayAccess
private function __construct($config = array()) {
$this->_config = $config;
$this->_session = Session::instance();
$this->_userInfo['RoleMark'] = (int)1;
$this->_config['hash_key'] = Model_Account::getHashKey();
$this->_config['hash_method'] = 'sha256';
......@@ -162,16 +163,16 @@ class User implements ArrayAccess
$passwordHash = $this->hash($passHash . $this->_config['hash_key']);
Cookie::set('userhash', $passwordHash);
$semester = Model_Account::getCurSemesterID();
$userInfo = Model_Account::getUserInfo($id);
$this->_session->set('UserInfo', Model_Account::getUserInfo($id));
$this->_session->set('UserInfo', $userInfo);
$this->_session->regenerate();
$this->_session->set('ID', $id);
$this->_session->set('LoggedIn', true);
$this->_session->set('UserHash', $this->hash($userHash));
$this->_session->set('PasswordHash', $passwordHash);
$this->_session->set('start_time', time());
$this->_session->set('SemesterID', $semester);
$this->_session->set('SemesterID', $userInfo['SemesterID']);
return true;
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment