|
|
|
|
@ -1865,4 +1865,159 @@ class SurveyManager |
|
|
|
|
header('Location: '.api_get_path(WEB_CODE_PATH).'survey/fillsurvey.php?'.$urlParams.'&'.api_get_cidreq()); |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function empty surveys (invitations and answers) |
|
|
|
|
* |
|
|
|
|
* @param int $surveyId id of the survey to empty |
|
|
|
|
* @return true |
|
|
|
|
*/ |
|
|
|
|
public static function emptySurveyFromId($surveyId) |
|
|
|
|
{ |
|
|
|
|
// Database table definitions |
|
|
|
|
$surveyInvitationTable = Database:: get_course_table(TABLE_SURVEY_INVITATION); |
|
|
|
|
$surveyAnswerTable = Database:: get_course_table(TABLE_SURVEY_ANSWER); |
|
|
|
|
$surveyTable = Database:: get_course_table(TABLE_SURVEY); |
|
|
|
|
$surveyId = intval($surveyId); |
|
|
|
|
$surveyData = self::getSurveyArrayFromId($surveyId); |
|
|
|
|
$surveyCode = $surveyData['code']; |
|
|
|
|
$courseId = intval($surveyData['c_id']); |
|
|
|
|
$sessionId = intval($surveyData['session_id']); |
|
|
|
|
|
|
|
|
|
$sql = "DELETE FROM $surveyInvitationTable |
|
|
|
|
WHERE session_id =$sessionId AND c_id =$courseId AND survey_code ='$surveyCode'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$sql = "DELETE FROM $surveyAnswerTable WHERE survey_id=$surveyId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$sql = "UPDATE $surveyTable SET invited=0, answered=0 WHERE survey_id=$surveyId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function copy survey specifying course id and session id where will be copied |
|
|
|
|
* |
|
|
|
|
* @param int $surveyId |
|
|
|
|
* @param int $courseId |
|
|
|
|
* @param int $sessionId |
|
|
|
|
* |
|
|
|
|
* @return bool when fails or return the new survey id |
|
|
|
|
*/ |
|
|
|
|
public static function copySurveySession($surveyId, $courseId, $sessionId) |
|
|
|
|
{ |
|
|
|
|
// Database table definitions |
|
|
|
|
$surveyTable = Database::get_course_table(TABLE_SURVEY); |
|
|
|
|
$surveyQuestionGroupTable = Database::get_course_table(TABLE_SURVEY_QUESTION_GROUP); |
|
|
|
|
$surveyQuestionTable = Database::get_course_table(TABLE_SURVEY_QUESTION); |
|
|
|
|
$surveyOptionsTable = Database::get_course_table(TABLE_SURVEY_QUESTION_OPTION); |
|
|
|
|
$surveyId = intval($surveyId); |
|
|
|
|
$courseId = intval($courseId); |
|
|
|
|
$sessionId = intval($sessionId); |
|
|
|
|
|
|
|
|
|
$surveyData = self::getSurveyArrayFromId($surveyId); |
|
|
|
|
if (empty($surveyData)) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$params = $surveyData; |
|
|
|
|
$params['code'] = self::generate_unique_code($params['code']); |
|
|
|
|
$params['c_id'] = $courseId; |
|
|
|
|
unset($params['survey_id']); |
|
|
|
|
$params['session_id'] = $sessionId; |
|
|
|
|
$params['title'] = $params['title'] . ' ' . get_lang('Copy'); |
|
|
|
|
unset($params['iid']); |
|
|
|
|
Database::insert($surveyTable, $params); |
|
|
|
|
|
|
|
|
|
$newSurveyId = Database::insert_id(); |
|
|
|
|
$sql = "UPDATE $surveyTable SET survey_id =$newSurveyId WHERE iid =$newSurveyId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT * FROM $surveyQuestionGroupTable WHERE survey_id=$surveyId"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_array($res, 'ASSOC')) { |
|
|
|
|
$params = array( |
|
|
|
|
'c_id' => $courseId, |
|
|
|
|
'name' => $row['name'], |
|
|
|
|
'description' => $row['description'], |
|
|
|
|
'survey_id' => $newSurveyId |
|
|
|
|
); |
|
|
|
|
$insertId = Database::insert($surveyQuestionGroupTable, $params); |
|
|
|
|
|
|
|
|
|
$sql = "UPDATE $surveyQuestionGroupTable SET id = iid WHERE iid = $insertId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$group_id[$row['id']] = $insertId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get questions |
|
|
|
|
$sql = "SELECT * FROM $surveyQuestionTable WHERE survey_id=$surveyId"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_array($res, 'ASSOC')) { |
|
|
|
|
$params = array( |
|
|
|
|
'c_id' => $courseId, |
|
|
|
|
'survey_id' => $newSurveyId, |
|
|
|
|
'survey_question' => $row['survey_question'], |
|
|
|
|
'survey_question_comment' => $row['survey_question_comment'], |
|
|
|
|
'type' => $row['type'], |
|
|
|
|
'display' => $row['display'], |
|
|
|
|
'sort' => $row['sort'], |
|
|
|
|
'shared_question_id' => $row['shared_question_id'], |
|
|
|
|
'max_value' => $row['max_value'], |
|
|
|
|
'survey_group_pri' => $row['survey_group_pri'], |
|
|
|
|
'survey_group_sec1' => $row['survey_group_sec1'], |
|
|
|
|
'survey_group_sec2' => $row['survey_group_sec2'] |
|
|
|
|
); |
|
|
|
|
$insertId = Database::insert($surveyQuestionTable, $params); |
|
|
|
|
$sql = "UPDATE $surveyQuestionTable SET question_id = iid WHERE iid =$insertId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$question_id[$row['question_id']] = $insertId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get questions options |
|
|
|
|
$sql = "SELECT * FROM $surveyOptionsTable WHERE survey_id=$surveyId"; |
|
|
|
|
|
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_array($res, 'ASSOC')) { |
|
|
|
|
$params = array( |
|
|
|
|
'c_id' => $courseId, |
|
|
|
|
'question_id' => $question_id[$row['question_id']], |
|
|
|
|
'survey_id' => $newSurveyId, |
|
|
|
|
'option_text' => $row['option_text'], |
|
|
|
|
'sort' => $row['sort'], |
|
|
|
|
'value' => $row['value'] |
|
|
|
|
); |
|
|
|
|
$insertId = Database::insert($surveyOptionsTable, $params); |
|
|
|
|
|
|
|
|
|
$sql = "UPDATE $surveyOptionsTable SET question_option_id = $insertId WHERE iid = $insertId"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $newSurveyId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Retrieves all the survey information as array |
|
|
|
|
* |
|
|
|
|
* @param integer $survey_id the id of the survey |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public static function getSurveyArrayFromId($surveyId) |
|
|
|
|
{ |
|
|
|
|
$surveyId=intval($surveyId); |
|
|
|
|
// Table definition |
|
|
|
|
$surveyTable = Database:: get_course_table(TABLE_SURVEY); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT * FROM $surveyTable WHERE survey_id=$surveyId"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$return = array(); |
|
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
|
$return = Database::fetch_array($result, 'ASSOC'); |
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|