HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/xampp/htdocs/quiz/db/questions_db.php
<?php


class questions_db {


    public static function GetQuestionsQuery($quiz_id)
    {
        $sql = "select q.*, qt.question_type from questions q left join question_types qt on q.question_type_id=qt.id where quiz_id=$quiz_id order by priority";
        return $sql;
    }

    public static function GetQuestionsByPriority($priority,$asg_id,$user_id,$qst_order,$quiz_id)
    {
        $table = "questions";        
        if($qst_order=="2")
        {
            $table = questions_db::GetQstTable($quiz_id, $user_id);
        }
        $sql = "select qs.* , qg.group_name, ".
        "ifnull((select priority from ".questions_db::ConfigQuery($table, 1)." qs2 where qs2.priority>qs.priority and qs2.quiz_id=qs.quiz_id order by priority limit 0,1),-1) next_priority,".
        "(select priority from ".questions_db::ConfigQuery($table, 3)."  qs3 where qs3.priority<qs.priority and qs3.quiz_id=qs.quiz_id order by priority desc limit 0,1) prev_priority".
        " from ".questions_db::ConfigQuery($table, 2)."   qs ".
        " left join quizzes q on q.id=qs.quiz_id ".
        " left join assignments asg on asg.quiz_id=q.id ".
        " inner join assignment_users au on au.assignment_id=asg.id and au.user_id=$user_id ".
        " left join question_groups qg on qg.question_id=qs.id ".
        " where asg.id=$asg_id ".
        " and qs.priority=$priority ";  
        return $sql;
    }
    
    public static function GetQstTable($quiz_id,$user_id)
    {
        return "(select @row := @row + 1 AS priority, q2.* from ( select id,question_text,question_type_id,quiz_id,point,added_date,parent_id,header_text,footer_text from questions   q where quiz_id=$quiz_id order by rand($user_id) ) q2 ,  (SELECT @row := 0) r)";
    }
    
    public static function ConfigQuery($query,$id)
    {
        return str_replace("@row", "@row".$id, $query);
    }

    public static function GetQuestionsByID($ID)
    {
        $sql = "select qs.* , qg.group_name, ".
        "ifnull((select priority from questions qs2 where qs2.priority>qs.priority and qs2.quiz_id=q.id order by priority limit 0,1),-1) next_priority,".
        "(select priority from questions qs3 where qs3.priority<qs.priority and qs3.quiz_id=q.id order by priority desc limit 0,1) prev_priority".
        " from questions qs ".
        " left join quizzes q on q.id=qs.quiz_id ".         
        " left join question_groups qg on qg.question_id=qs.id ".        
        " where qs.id=$ID";
        return $sql;
    }

    public static function GetQuestionsByUserQuizId($user_quiz_id)
    {
        $sql = "select qs.* , qg.group_name, ".
        "ifnull((select priority from questions qs2 where qs2.priority>qs.priority and qs2.quiz_id=q.id order by priority limit 0,1),-1) next_priority,".
        "(select priority from questions qs3 where qs3.priority<qs.priority and qs3.quiz_id=q.id order by priority desc limit 0,1) prev_priority".
        " from questions qs ".
        " inner join quizzes q on q.id=qs.quiz_id ".
        " inner join assignments asg on asg.quiz_id=q.id ".
        " left join question_groups qg on qg.question_id=qs.id ".
        " inner join user_quizzes uq on uq.assignment_id=asg.id ".
        " where uq.id=$user_quiz_id order by priority ";
        //echo $sql;
        return db::exec_sql($sql);
    }

    public static function MoveQuestion($direction,$question_id)
    {
        $sql = "CALL move_question(\"$direction\", $question_id);";
        db::exec_sql($sql);
    }

    public static function GetAnswerDeleteQuery($question_id)
    {
        $sql = "delete from answers where group_id in (select id from question_groups where question_id=$question_id)";
        return $sql;
    }

    public static function GetAnswersByQstID($question_id)
    {
        $sql = "select a.id as a_id,a.*,qg.* from answers a ".
        " left join question_groups qg on a.group_id=qg.id ".
        " where qg.question_id = $question_id ";
        //echo $sql;
        return db::exec_sql($sql);
    }

    public static function GetAnswersByQstID2($question_id,$user_quiz_id,$ans_priority)
    {
        $sql = "select a.id as a_id,a.*,qg.*,ua.user_answer_id,ua.user_answer_text from answers a ".
        " left join question_groups qg on a.group_id=qg.id ".
        " left join user_answers ua on ua.answer_id=a.id and ua.user_quiz_id=".$user_quiz_id.
        " where qg.question_id = $question_id ";
        if($ans_priority=="2")
        {
            $sql.=" order by rand($user_quiz_id) ";
        }
        //echo $sql;
        return db::exec_sql($sql);
    }

    public static function GetQuestionsByAsgIdQuery($asg_id,$quiz_id, $user_id,$qst_order)
    {
        $table = "questions";        
        if($qst_order=="2")
        {
            $table = questions_db::GetQstTable($quiz_id, $user_id);
        }        
        $sql = "select q.* from assignments a left join $table q on q.quiz_id=a.quiz_id where a.id=".$asg_id." order by priority";                
        return $sql;
    }

    public static function GetGroupDeleteQuery($question_id)
    {
        $sql = "delete from question_groups where question_id=$question_id";
        return $sql;
    }

    public static function DeleteQuestion($question_id)
    {
        //$sql = "delete from answers where group_id in (select id from question_groups where question_id=$question_id) ;";
        //$sql.= " delete from question_groups where question_id=$question_id ;";
        $sql=" delete from questions where id=$question_id";
        
        db::exec_sql($sql);
    }

    public static function UpdatePriority($quiz_id,$priority)
    {
	$sql = " update questions set priority = 1 where quiz_id = $quiz_id and priority = $priority ";
	db::exec_sql($sql);
    }

    public static function GetMinPriority($quiz_id)
    {
	$sql = "select ifnull(min(priority),-1) as minp from questions where quiz_id=$quiz_id";
	$results = db::exec_sql($sql);
	$row=db::fetch($results);
	return $row['minp'];
    }

    public static function UpdatePriorityQuery($quiz_id,$question_id)
    {
        $sql = "update questions ,(select ifnull(max(priority)+1,1) as priority from questions where quiz_id=$quiz_id) questions2 set questions.priority = questions2.priority where questions.id=$question_id";
        return $sql ; 
    }

}
?>