Skip to content
Snippets Groups Projects
Account.php 8.01 KiB
Newer Older
class Model_Account extends Model
    public static function setHashKey($key) {
        $sql = "SELECT `SetSettings`('HashKey', '', :key) AS `key`;";
        DB::query(Database::SELECT, $sql)
            ->param(':key', $key)
            ->execute()->get('key');
    public static function getHashKey() {
        $sql = "CALL `GetSettings`('HashKey');";
        return DB::query(Database::SELECT, $sql)
            ->execute()->get('ValS');
    public static function getMaintenanceInfo() {
RomanSteinberg's avatar
RomanSteinberg committed
        $sql = "CALL `GetSettings`('maintenance_active');";
        $key = DB::query(Database::SELECT, $sql)->execute();
        $result['active'] = ($key->get('Val') == 1);
        $sql = "CALL `GetSettings`('maintenance_return');";
        $key = DB::query(Database::SELECT, $sql)->execute();
        $result['return'] = $key->get('ValS');
        return $result;
    }

    public static function checkAuth($login, $password) {
        $sql = "SELECT `SignIn`(:login, :pass) AS `ID`;";
        return DB::query(Database::SELECT, $sql)
            ->param(':login', $login)
            ->param(':pass', $password)
            ->execute()->get('ID');
    }

    public static function changeTeacherInfo($id, $lastName, $firstName, $secondName, $degreeID, $departmentID) {
        $sql = "SELECT `ChangeTeacherInfo`(:id, :last, :first, :second, :degree, :department) AS `UserID`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':id' => $id,
                ':last' => $lastName,
                ':first' => $firstName,
                ':second' => $secondName,
                ':degree' => $degreeID,
                'department' => $departmentID,
            ])->execute()->get('UserID');
    }

    public static function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $activationCode) {
        $sql = "SELECT `CreateTeacher`() AS `UserID`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':last' => $lastName,
                ':first' => $firstName,
                ':second' => $secondName,
                ':degree' => $degreeID,
                ':department' => $departmentID,
                ':code' => $activationCode,
            ])->execute()->get('UserID');
    }

    public static function createTeacherByDepName($lastName, $firstName, $secondName, $departmentID, $facultyID, $activationCode) {
        if ($departmentID == '') {
            return -1;
        }

        $sql = "SELECT `CreateTeacherByDepName`(:last, :first, :second, :department, :faculty, :code) AS `UserID`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':last' => $lastName,
                ':first' => $firstName,
                ':second' => $secondName,
                ':department' => $departmentID,
                ':faculty' => $facultyID,
                ':code' => $activationCode,
            ])->execute()->get('UserID');
    }

    public static function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode) {
        $sql = "SELECT `CreateStudent`(:last, :first, :second, :grade, :group, :faculty, :code) AS `UserID`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':last' => $lastName,
                ':first' => $firstName,
                ':second' => $secondName,
                ':grade' => $grade,
                ':group' => $groupNum,
                ':faculty' => $facultyID,
                ':code' => $activationCode,
            ])->execute()->get('UserID');
    }

    public static function createStudentEx($lastName, $firstName, $secondName, $gradeNum, $groupNum, $degree, $specialization, $facultyID, $activationCode) {
        $sql = "SELECT `CreateStudentEx`(:last, :first, :second, :grade, :group, :degree, :spec, :faculty, :code) AS `UserID`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':last' => $lastName,
                ':first' => $firstName,
                ':second' => $secondName,
                ':grade' => $gradeNum,
                ':group' => $groupNum,
                ':degree' => $degree,
                ':spec' => $specialization,
                ':faculty' => $facultyID,
                ':code' => $activationCode,
            ])->execute()->get('UserID');
PavelBegunkov's avatar
PavelBegunkov committed

PavelBegunkov's avatar
PavelBegunkov committed

    public static function getUserInfo($id)
    {
        $sql = "CALL `GetFullInfo`(:id);";
        return DB::query(Database::SELECT, $sql)
            ->param(':id', (int) $id)
            ->execute()[0];
    }


    # TODO: deprecated (see getUserInfo)
    public static function getPersonalInfo($id, $semesterID = null) {
        $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
        $sql = "CALL `GetPersonalInfo`(:id, :semester);";
        return DB::query(Database::SELECT, $sql)
            ->param(':semester', (int) $semesterID)
            ->param(':id', (int) $id)
            ->execute()[0];
    # TODO: deprecated (see getUserInfo)
    public static function getAccountInfo($id) {
        return DB::query(Database::SELECT, "CALL GetAccountInfo(:id);")
            ->param(':id', (int) $id)->execute()[0];
     * @param string $value
     * @param string $type 'email', 'login' or 'password'
     * @return int
    public static function changeAccountData($id, $value, $type) {
        $sql = "SELECT `ChangeAccountData`(:account, :value, :type) AS Num;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':account' => $id,
                ':value' => $value,
                ':type' => $type,
            ])->execute()->get('Num');
    /**
     * @param string $data
     * @param string $type 'login','email' or 'code'
     * @return int
     */
    public static function checkAccountExistence($data, $type) {
        $sql = "SELECT `CheckAccountExistence`(:data, :type) AS Num;";
        return DB::query(Database::SELECT, $sql)
            ->param(':data', $data)
            ->param(':type', $type)
            ->execute()->get('Num');
    public static function isActivationCodeValid($code) {
        $sql = "SELECT `CheckAccountExistence`(:acode, 'code') AS Num;";
        $res = DB::query(Database::SELECT, $sql)
            ->param(':acode', $code)
            ->execute()->get('Num');
        return $res == 1;
    public static function createRecoveryToken($email, $token) {
        $sql = "SELECT `CreateRecoveryToken`(:email, :token) AS UserName;";
        return DB::query(Database::SELECT, $sql)
            ->param(':email', $email)
            ->param(':token', $token)
            ->execute()->get('UserName');
    public static function getRecoveryInfoByEMail($email) {
        $sql = "CALL GetRecoveryInfoByEMail(:email);";
        return DB::query(Database::SELECT, $sql)
            ->param(':email', $email)
            ->execute();
    public static function getRecoveryInfoByToken($token) {
        $sql = "CALL GetRecoveryInfoByToken(:token);";
        return DB::query(Database::SELECT, $sql)
            ->param(':token', $token)->execute();
    public static function useRecoveryToken($token) {
        $sql = "SELECT `UseRecoveryToken`(:token) AS Num;";
        return DB::query(Database::SELECT, $sql)
            ->param(':token', $token)
            ->execute()->get('Num');
    public static function activateAccount($login, $password, $email, $code) {
        $sql = "SELECT `ActivateAccount`(:code, :login, :email, :pass) AS `Num`;";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':code' => $code,
                ':login' => $login,
                ':email' => $email,
                ':pass' => $password,
            ])->execute()->get('Num');
    public static function getCurSemesterID() {
        $sql = "CALL `GetSettings`('SemesterID');";
        return DB::query(Database::SELECT, $sql)
            ->execute()->get('Val');
Silence's avatar
Silence committed
    }