mirror of https://github.com/acanas/swad-core.git
Version 21.47.3: Oct 29, 2021 Queries moved to module swad_questions_database.
This commit is contained in:
parent
0179af96e0
commit
4177e5cb18
|
@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
|
|||
|
||||
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.47.2 (2021-10-29)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.47.3 (2021-10-29)"
|
||||
#define CSS_FILE "swad20.45.css"
|
||||
#define JS_FILE "swad20.69.1.js"
|
||||
/*
|
||||
TODO: Rename CENTRE to CENTER in help wiki.
|
||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||
|
||||
Version 21.47.3: Oct 29, 2021 Queries moved to module swad_questions_database. (321299 lines)
|
||||
Version 21.47.2: Oct 29, 2021 Queries moved to module swad_questions_database. (321259 lines)
|
||||
Version 21.47.1: Oct 28, 2021 Queries moved to module swad_questions_database. (321231 lines)
|
||||
Version 21.47: Oct 27, 2021 New module swad_questions_database for database queries related to test/exam/game questions. (321236 lines)
|
||||
|
|
|
@ -2610,7 +2610,7 @@ long Qst_GetMedCodFromDB (long CrsCod,long QstCod,int NumOpt)
|
|||
return Qst_DB_GetQstMedCod (CrsCod,QstCod);
|
||||
else
|
||||
// Get media associated to answer
|
||||
return Qst_DB_GetAnswerMedCod (QstCod,(unsigned) NumOpt);
|
||||
return Qst_DB_GetMedCodFromAnsOfQst (QstCod,(unsigned) NumOpt);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3698,41 +3698,21 @@ unsigned Qst_CountNumQuestionsInList (const char *ListQuestions)
|
|||
|
||||
void Qst_RemoveCrsQsts (long CrsCod)
|
||||
{
|
||||
/***** Remove associations between test questions
|
||||
and test tags in the course *****/
|
||||
DB_QueryDELETE ("can not remove tags associated"
|
||||
" to questions of tests of a course",
|
||||
"DELETE FROM tst_question_tags"
|
||||
" USING tst_questions,"
|
||||
"tst_question_tags"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_question_tags.QstCod",
|
||||
CrsCod);
|
||||
/***** Remove associations between questions and tags in the course *****/
|
||||
Tag_DB_RemTagsInQstsInCrs (CrsCod);
|
||||
|
||||
/***** Remove test tags in the course *****/
|
||||
DB_QueryDELETE ("can not remove tags of test of a course",
|
||||
"DELETE FROM tst_tags"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
Tag_DB_RemTagsInCrs (CrsCod);
|
||||
|
||||
/***** Remove media associated to test questions in the course *****/
|
||||
Qst_RemoveAllMedFilesFromStemOfAllQstsInCrs (CrsCod);
|
||||
Qst_RemoveAllMedFilesFromAnsOfAllQstsInCrs (CrsCod);
|
||||
|
||||
/***** Remove test answers in the course *****/
|
||||
DB_QueryDELETE ("can not remove answers of tests of a course",
|
||||
"DELETE FROM tst_answers"
|
||||
" USING tst_questions,"
|
||||
"tst_answers"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_answers.QstCod",
|
||||
CrsCod);
|
||||
Qst_DB_RemAnssFromQstsInCrs (CrsCod);
|
||||
|
||||
/***** Remove test questions in the course *****/
|
||||
DB_QueryDELETE ("can not remove test questions of a course",
|
||||
"DELETE FROM tst_questions"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
Qst_DB_RemoveQstsInCrs (CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3745,14 +3725,7 @@ void Qst_RemoveMediaFromStemOfQst (long CrsCod,long QstCod)
|
|||
unsigned NumMedia;
|
||||
|
||||
/***** Get media code associated to stem of test question from database *****/
|
||||
NumMedia = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get media",
|
||||
"SELECT MedCod"
|
||||
" FROM tst_questions"
|
||||
" WHERE QstCod=%ld"
|
||||
" AND CrsCod=%ld", // Extra check
|
||||
QstCod,
|
||||
CrsCod);
|
||||
NumMedia = Qst_DB_GetMedCodFromStemOfQst (&mysql_res,CrsCod,QstCod);
|
||||
|
||||
/***** Go over result removing media *****/
|
||||
Med_RemoveMediaFromAllRows (NumMedia,mysql_res);
|
||||
|
@ -3771,18 +3744,7 @@ void Qst_RemoveMediaFromAllAnsOfQst (long CrsCod,long QstCod)
|
|||
unsigned NumMedia;
|
||||
|
||||
/***** Get media codes associated to answers of test questions from database *****/
|
||||
NumMedia = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get media",
|
||||
"SELECT tst_answers.MedCod"
|
||||
" FROM tst_answers,"
|
||||
"tst_questions"
|
||||
" WHERE tst_answers.QstCod=%ld"
|
||||
" AND tst_answers.QstCod=tst_questions.QstCod"
|
||||
" AND tst_questions.CrsCod=%ld" // Extra check
|
||||
" AND tst_questions.QstCod=%ld", // Extra check
|
||||
QstCod,
|
||||
CrsCod,
|
||||
QstCod);
|
||||
NumMedia = Qst_DB_GetMedCodsFromAnssOfQst (&mysql_res,CrsCod,QstCod);
|
||||
|
||||
/***** Go over result removing media *****/
|
||||
Med_RemoveMediaFromAllRows (NumMedia,mysql_res);
|
||||
|
@ -3801,12 +3763,7 @@ void Qst_RemoveAllMedFilesFromStemOfAllQstsInCrs (long CrsCod)
|
|||
unsigned NumMedia;
|
||||
|
||||
/***** Get media codes associated to stems of test questions from database *****/
|
||||
NumMedia =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
|
||||
"SELECT MedCod" // row[0]
|
||||
" FROM tst_questions"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
NumMedia = Qst_DB_GetMedCodsFromStemsOfQstsInCrs (&mysql_res,CrsCod);
|
||||
|
||||
/***** Go over result removing media files *****/
|
||||
Med_RemoveMediaFromAllRows (NumMedia,mysql_res);
|
||||
|
@ -3825,14 +3782,7 @@ void Qst_RemoveAllMedFilesFromAnsOfAllQstsInCrs (long CrsCod)
|
|||
unsigned NumMedia;
|
||||
|
||||
/***** Get names of media files associated to answers of test questions from database *****/
|
||||
NumMedia = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get media",
|
||||
"SELECT tst_answers.MedCod"
|
||||
" FROM tst_questions,"
|
||||
"tst_answers"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_answers.QstCod",
|
||||
CrsCod);
|
||||
NumMedia = Qst_DB_GetMedCodsFromAnssOfQstsInCrs (&mysql_res,CrsCod);
|
||||
|
||||
/***** Go over result removing media files *****/
|
||||
Med_RemoveMediaFromAllRows (NumMedia,mysql_res);
|
||||
|
|
|
@ -25,20 +25,12 @@
|
|||
/*********************************** Headers *********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
// #define _GNU_SOURCE // For asprintf
|
||||
// #include <stdio.h> // For asprintf
|
||||
#include <string.h> // For string functions
|
||||
|
||||
#include "swad_database.h"
|
||||
#include "swad_error.h"
|
||||
// #include "swad_exam_set.h"
|
||||
// #include "swad_figure.h"
|
||||
// #include "swad_form.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_question.h"
|
||||
// #include "swad_question_import.h"
|
||||
// #include "swad_tag_database.h"
|
||||
// #include "swad_test.h"
|
||||
#include "swad_test_print.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1037,11 +1029,77 @@ unsigned Qst_DB_GetShuffledAnswersIndexes (MYSQL_RES **mysql_res,
|
|||
"AnsInd");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****** Get media codes associated to stems of test questions in course ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Qst_DB_GetMedCodsFromStemsOfQstsInCrs (MYSQL_RES **mysql_res,long CrsCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get media",
|
||||
"SELECT MedCod" // row[0]
|
||||
" FROM tst_questions"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***** Get media codes associated to answers of test questions in course *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Qst_DB_GetMedCodsFromAnssOfQstsInCrs (MYSQL_RES **mysql_res,long CrsCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get media",
|
||||
"SELECT tst_answers.MedCod"
|
||||
" FROM tst_questions,"
|
||||
"tst_answers"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_answers.QstCod",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Get media code associated to stem of a question **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Qst_DB_GetMedCodFromStemOfQst (MYSQL_RES **mysql_res,long CrsCod,long QstCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get media",
|
||||
"SELECT MedCod"
|
||||
" FROM tst_questions"
|
||||
" WHERE QstCod=%ld"
|
||||
" AND CrsCod=%ld", // Extra check
|
||||
QstCod,
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Get media code associated to stem of a question **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Qst_DB_GetMedCodsFromAnssOfQst (MYSQL_RES **mysql_res,long CrsCod,long QstCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get media",
|
||||
"SELECT tst_answers.MedCod"
|
||||
" FROM tst_answers,"
|
||||
"tst_questions"
|
||||
" WHERE tst_answers.QstCod=%ld"
|
||||
" AND tst_answers.QstCod=tst_questions.QstCod"
|
||||
" AND tst_questions.CrsCod=%ld" // Extra check
|
||||
" AND tst_questions.QstCod=%ld", // Extra check
|
||||
QstCod,
|
||||
CrsCod,
|
||||
QstCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********* Get media code associated to an answer of a test question *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
long Qst_DB_GetAnswerMedCod (long QstCod,unsigned AnsInd)
|
||||
long Qst_DB_GetMedCodFromAnsOfQst (long QstCod,unsigned AnsInd)
|
||||
{
|
||||
return DB_QuerySELECTCode ("can not get media",
|
||||
"SELECT MedCod"
|
||||
|
@ -1052,6 +1110,18 @@ long Qst_DB_GetAnswerMedCod (long QstCod,unsigned AnsInd)
|
|||
AnsInd);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Remove all questions in a course **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Qst_DB_RemoveQstsInCrs (long CrsCod)
|
||||
{
|
||||
DB_QueryDELETE ("can not remove questions in a course",
|
||||
"DELETE FROM tst_questions"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Remove a question from database **********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1066,13 +1136,27 @@ void Qst_DB_RemoveQst (long CrsCod,long QstCod)
|
|||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Remove answers from all questions in a course ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Qst_DB_RemAnssFromQstsInCrs (long CrsCod)
|
||||
{
|
||||
DB_QueryDELETE ("can not remove answers of tests of a course",
|
||||
"DELETE FROM tst_answers"
|
||||
" USING tst_questions,"
|
||||
"tst_answers"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_answers.QstCod",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Remove answers from a test question ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Qst_DB_RemAnsFromQst (long QstCod)
|
||||
{
|
||||
/***** Remove answers *****/
|
||||
DB_QueryDELETE ("can not remove the answers of a question",
|
||||
"DELETE FROM tst_answers"
|
||||
" WHERE QstCod=%ld",
|
||||
|
|
|
@ -27,16 +27,6 @@
|
|||
/********************************* Headers ***********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
// #include <stdbool.h> // For boolean type
|
||||
// #include <time.h> // For time_t
|
||||
|
||||
// #include "swad_exam.h"
|
||||
// #include "swad_game.h"
|
||||
// #include "swad_question_type.h"
|
||||
// #include "swad_media.h"
|
||||
// #include "swad_string.h"
|
||||
// #include "swad_tag.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Public constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -71,9 +61,15 @@ unsigned Qst_DB_GetDataOfAnswers (MYSQL_RES **mysql_res,long QstCod,bool Shuffle
|
|||
unsigned Qst_DB_GetTextOfAnswers (MYSQL_RES **mysql_res,long QstCod);
|
||||
unsigned Qst_DB_GetShuffledAnswersIndexes (MYSQL_RES **mysql_res,
|
||||
const struct Qst_Question *Question);
|
||||
long Qst_DB_GetAnswerMedCod (long QstCod,unsigned AnsInd);
|
||||
unsigned Qst_DB_GetMedCodsFromStemsOfQstsInCrs (MYSQL_RES **mysql_res,long CrsCod);
|
||||
unsigned Qst_DB_GetMedCodsFromAnssOfQstsInCrs (MYSQL_RES **mysql_res,long CrsCod);
|
||||
unsigned Qst_DB_GetMedCodFromStemOfQst (MYSQL_RES **mysql_res,long CrsCod,long QstCod);
|
||||
unsigned Qst_DB_GetMedCodsFromAnssOfQst (MYSQL_RES **mysql_res,long CrsCod,long QstCod);
|
||||
long Qst_DB_GetMedCodFromAnsOfQst (long QstCod,unsigned AnsInd);
|
||||
|
||||
void Qst_DB_RemoveQstsInCrs (long CrsCod);
|
||||
void Qst_DB_RemoveQst (long CrsCod,long QstCod);
|
||||
void Qst_DB_RemAnssFromQstsInCrs (long CrsCod);
|
||||
void Qst_DB_RemAnsFromQst (long QstCod);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -269,6 +269,34 @@ long Tag_DB_GetTagCodFromTagTxt (const char *TagTxt)
|
|||
TagTxt);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******** Remove associations between questions and tags in a course *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Tag_DB_RemTagsInQstsInCrs (long CrsCod)
|
||||
{
|
||||
DB_QueryDELETE ("can not remove tags associated"
|
||||
" to questions in a course",
|
||||
"DELETE FROM tst_question_tags"
|
||||
" USING tst_questions,"
|
||||
"tst_question_tags"
|
||||
" WHERE tst_questions.CrsCod=%ld"
|
||||
" AND tst_questions.QstCod=tst_question_tags.QstCod",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Remove tags in a course ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Tag_DB_RemTagsInCrs (long CrsCod)
|
||||
{
|
||||
DB_QueryDELETE ("can not remove tags of questions in a course",
|
||||
"DELETE FROM tst_tags"
|
||||
" WHERE CrsCod=%ld",
|
||||
CrsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Remove tags from a question **********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -59,6 +59,8 @@ unsigned Tag_DB_GetEnabledTagsFromThisCrs (MYSQL_RES **mysql_res);
|
|||
bool Tag_DB_CheckIfCurrentCrsHasTestTags (void);
|
||||
long Tag_DB_GetTagCodFromTagTxt (const char *TagTxt);
|
||||
|
||||
void Tag_DB_RemTagsInQstsInCrs (long CrsCod);
|
||||
void Tag_DB_RemTagsInCrs (long CrsCod);
|
||||
void Tag_DB_RemTagsFromQst (long QstCod);
|
||||
void Tag_DB_RemoveTag (long TagCod);
|
||||
void Tag_DB_RemoveUnusedTagsFromCrs (long CrsCod);
|
||||
|
|
|
@ -29,14 +29,6 @@
|
|||
|
||||
#include <mysql/mysql.h> // To access MySQL databases
|
||||
|
||||
// #include "swad_exam.h"
|
||||
// #include "swad_game.h"
|
||||
// #include "swad_media.h"
|
||||
// #include "swad_question.h"
|
||||
// #include "swad_question_type.h"
|
||||
// #include "swad_test_config.h"
|
||||
// #include "swad_test_print.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Public constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue