Exercises: Remove item property unused code.

pull/3064/head
Julio Montoya 5 years ago
parent 25ae3bcbc3
commit 4cc5ef2e63
  1. 865
      main/exercise/exercise.class.php
  2. 2
      main/exercise/exercise.php

@ -1706,24 +1706,6 @@ class Exercise
api_get_group_entity() api_get_group_entity()
); );
// insert into the item_property table
/*api_item_property_update(
$this->course,
TOOL_QUIZ,
$this->id,
'QuizAdded',
api_get_user_id()
);
// This function save the quiz again, carefull about start_time
// and end_time if you remove this line (see above)
api_set_default_visibility(
$this->id,
TOOL_QUIZ,
null,
$this->course
);*/
if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) { if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
$this->search_engine_save(); $this->search_engine_save();
} }
@ -6224,15 +6206,16 @@ class Exercise
]; ];
} }
// Checking visibility in the item_property table. $repo = Container::getExerciseRepository();
$visibility = api_get_item_visibility( $exercise = $repo->find($this->iId);
api_get_course_info(),
TOOL_QUIZ, if ($exercise === null) {
$this->id, return [];
api_get_session_id() }
);
if ($visibility == 0 || $visibility == 2) { $link = $exercise->getFirstResourceLinkFromCourseSession();
if ($link->isDraft()) {
$this->active = 0; $this->active = 0;
} }
@ -8608,836 +8591,6 @@ class Exercise
return $html; return $html;
} }
/**
* Return an HTML table of exercises for on-screen printing, including
* action icons. If no exercise is present and the user can edit the
* course, show a "create test" button.
*
* @param int $categoryId
* @param string $keyword
*
* @return string
*/
public static function exerciseGrid($categoryId, $keyword = '')
{
$TBL_EXERCISE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_EXERCISES = Database::get_course_table(TABLE_QUIZ_TEST);
$TBL_TRACK_EXERCISES = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
$categoryId = (int) $categoryId;
$keyword = Database::escape_string($keyword);
$learnpath_id = isset($_REQUEST['learnpath_id']) ? (int) $_REQUEST['learnpath_id'] : null;
$learnpath_item_id = isset($_REQUEST['learnpath_item_id']) ? (int) $_REQUEST['learnpath_item_id'] : null;
$autoLaunchAvailable = false;
if (api_get_course_setting('enable_exercise_auto_launch') == 1 &&
api_get_configuration_value('allow_exercise_auto_launch')
) {
$autoLaunchAvailable = true;
}
$is_allowedToEdit = api_is_allowed_to_edit(null, true);
$courseInfo = api_get_course_info();
$sessionId = api_get_session_id();
$courseId = $courseInfo['real_id'];
$tableRows = [];
$origin = api_get_origin();
$userInfo = api_get_user_info();
$charset = 'utf-8';
$token = Security::get_token();
$userId = api_get_user_id();
$isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh($userId, $courseInfo);
$limitTeacherAccess = api_get_configuration_value('limit_exercise_teacher_access');
// Condition for the session
$condition_session = api_get_session_condition($sessionId, true, true);
$content = '';
$column = 0;
if ($is_allowedToEdit) {
$column = 1;
}
$table = new SortableTableFromArrayConfig(
[],
$column,
self::PAGINATION_ITEMS_PER_PAGE,
'exercises_cat_'.$categoryId
);
$limit = $table->per_page;
$page = $table->page_nr;
$from = $limit * ($page - 1);
$categoryCondition = '';
if (api_get_configuration_value('allow_exercise_categories')) {
if (!empty($categoryId)) {
$categoryCondition = " AND exercise_category_id = $categoryId ";
} else {
$categoryCondition = ' AND exercise_category_id IS NULL ';
}
}
$keywordCondition = '';
if (!empty($keyword)) {
$keywordCondition = " AND title LIKE '%$keyword%' ";
}
// Only for administrators
if ($is_allowedToEdit) {
$total_sql = "SELECT count(iid) as count
FROM $TBL_EXERCISES
WHERE
c_id = $courseId AND
active <> -1
$condition_session
$categoryCondition
$keywordCondition
";
$sql = "SELECT * FROM $TBL_EXERCISES
WHERE
c_id = $courseId AND
active <> -1
$condition_session
$categoryCondition
$keywordCondition
ORDER BY title
LIMIT $from , $limit";
} else {
// Only for students
$total_sql = "SELECT count(iid) as count
FROM $TBL_EXERCISES
WHERE
c_id = $courseId AND
active = 1
$condition_session
$categoryCondition
$keywordCondition
";
$sql = "SELECT * FROM $TBL_EXERCISES
WHERE c_id = $courseId AND
active = 1
$condition_session
$categoryCondition
$keywordCondition
ORDER BY title
LIMIT $from , $limit";
}
$result = Database::query($sql);
$result_total = Database::query($total_sql);
$total_exercises = 0;
if (Database :: num_rows($result_total)) {
$result_total = Database::fetch_array($result_total);
$total_exercises = $result_total['count'];
}
$total = $total_exercises;
$exerciseList = [];
while ($row = Database::fetch_array($result, 'ASSOC')) {
$exerciseList[] = $row;
}
if (!empty($exerciseList) &&
api_get_setting('exercise_invisible_in_session') === 'true'
) {
if (!empty($sessionId)) {
$changeDefaultVisibility = true;
if (api_get_setting('configure_exercise_visibility_in_course') === 'true') {
$changeDefaultVisibility = false;
if (api_get_course_setting('exercise_invisible_in_session') == 1) {
$changeDefaultVisibility = true;
}
}
if ($changeDefaultVisibility) {
// Check exercise
foreach ($exerciseList as $exercise) {
if ($exercise['session_id'] == 0) {
$visibilityInfo = api_get_item_property_info(
$courseId,
TOOL_QUIZ,
$exercise['iid'],
$sessionId
);
if (empty($visibilityInfo)) {
// Create a record for this
api_item_property_update(
$courseInfo,
TOOL_QUIZ,
$exercise['iid'],
'invisible',
api_get_user_id(),
0,
null,
'',
'',
$sessionId
);
}
}
}
}
}
}
if (!empty($exerciseList)) {
if ($origin !== 'learnpath') {
$visibilitySetting = api_get_configuration_value('show_hidden_exercise_added_to_lp');
//avoid sending empty parameters
$mylpid = empty($learnpath_id) ? '' : '&learnpath_id='.$learnpath_id;
$mylpitemid = empty($learnpath_item_id) ? '' : '&learnpath_item_id='.$learnpath_item_id;
foreach ($exerciseList as $row) {
$currentRow = [];
$my_exercise_id = $row['id'];
$attempt_text = '';
$actions = '';
$exercise = new Exercise();
$exercise->read($my_exercise_id, false);
if (empty($exercise->id)) {
continue;
}
$locked = $exercise->is_gradebook_locked;
// Validation when belongs to a session
$session_img = api_get_session_image($row['session_id'], $userInfo['status']);
$time_limits = false;
if (!empty($row['start_time']) || !empty($row['end_time'])) {
$time_limits = true;
}
$is_actived_time = false;
if ($time_limits) {
// check if start time
$start_time = false;
if (!empty($row['start_time'])) {
$start_time = api_strtotime($row['start_time'], 'UTC');
}
$end_time = false;
if (!empty($row['end_time'])) {
$end_time = api_strtotime($row['end_time'], 'UTC');
}
$now = time();
//If both "clocks" are enable
if ($start_time && $end_time) {
if ($now > $start_time && $end_time > $now) {
$is_actived_time = true;
}
} else {
//we check the start and end
if ($start_time) {
if ($now > $start_time) {
$is_actived_time = true;
}
}
if ($end_time) {
if ($end_time > $now) {
$is_actived_time = true;
}
}
}
}
// Blocking empty start times see BT#2800
global $_custom;
if (isset($_custom['exercises_hidden_when_no_start_date']) &&
$_custom['exercises_hidden_when_no_start_date']
) {
if (empty($row['start_time'])) {
$time_limits = true;
$is_actived_time = false;
}
}
$cut_title = $exercise->getCutTitle();
$alt_title = '';
if ($cut_title != $row['title']) {
$alt_title = ' title = "'.$exercise->getUnformattedTitle().'" ';
}
// Teacher only
if ($is_allowedToEdit) {
$lp_blocked = null;
if ($exercise->exercise_was_added_in_lp == true) {
$lp_blocked = Display::div(
get_lang('This exercise has been included in a learning path, so it cannot be accessed by students directly from here. If you want to put the same exercise available through the exercises tool, please make a copy of the current exercise using the copy icon.'),
['class' => 'lp_content_type_label']
);
}
// Get visibility in base course
$visibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$my_exercise_id,
0
);
if (!empty($sessionId)) {
// If we are in a session, the test is invisible
// in the base course, it is included in a LP
// *and* the setting to show it is *not*
// specifically set to true, then hide it.
if ($visibility == 0) {
if (!$visibilitySetting) {
if ($exercise->exercise_was_added_in_lp == true) {
continue;
}
}
}
$visibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$my_exercise_id,
$sessionId
);
}
if ($row['active'] == 0 || $visibility == 0) {
$title = Display::tag('font', $cut_title, ['style' => 'color:grey']);
} else {
$title = $cut_title;
}
$count_exercise_not_validated = (int) Event::count_exercise_result_not_validated(
$my_exercise_id,
$courseId,
$sessionId
);
/*$move = Display::return_icon(
'all_directions.png',
get_lang('Move'),
['class' => 'moved', 'style' => 'margin-bottom:-0.5em;']
);*/
$move = null;
$class_tip = '';
if (!empty($count_exercise_not_validated)) {
$results_text = $count_exercise_not_validated == 1 ? get_lang('Result not reviewed') : get_lang('Results and feedback and feedback and feedback and feedback and feedback and feedback not reviewed');
$title .= '<span class="exercise_tooltip" style="display: none;">'.$count_exercise_not_validated.' '.$results_text.' </span>';
$class_tip = 'link_tooltip';
}
$url = $move.'<a '.$alt_title.' class="'.$class_tip.'" id="tooltip_'.$row['id'].'" href="overview.php?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['id'].'">
'.Display::return_icon('quiz.png', $row['title']).'
'.$title.' </a>'.PHP_EOL;
if (ExerciseLib::isQuizEmbeddable($row)) {
$embeddableIcon = Display::return_icon('om_integration.png', get_lang('ThisQuizCanBeEmbeddable'));
$url .= Display::div($embeddableIcon, ['class' => 'pull-right']);
}
$currentRow['title'] = $url.' '.$session_img.$lp_blocked;
// Count number exercise - teacher
$sql = "SELECT count(*) count FROM $TBL_EXERCISE_QUESTION
WHERE c_id = $courseId AND exercice_id = $my_exercise_id";
$sqlresult = Database::query($sql);
$rowi = (int) Database::result($sqlresult, 0, 0);
if ($sessionId == $row['session_id']) {
// Questions list
$actions = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL),
'admin.php?'.api_get_cidreq().'&exerciseId='.$row['id']
);
// Test settings
$settings = Display::url(
Display::return_icon('settings.png', get_lang('Configure'), '', ICON_SIZE_SMALL),
'exercise_admin.php?'.api_get_cidreq().'&exerciseId='.$row['id']
);
if ($limitTeacherAccess && !api_is_platform_admin()) {
$settings = '';
}
$actions .= $settings;
// Exercise results
$resultsLink = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
Display::return_icon('test_results.png', get_lang('Results and feedback and feedback and feedback and feedback and feedback and feedback'), '', ICON_SIZE_SMALL).'</a>';
if ($limitTeacherAccess) {
if (api_is_platform_admin()) {
$actions .= $resultsLink;
}
} else {
// Exercise results
$actions .= $resultsLink;
}
// Auto launch
if ($autoLaunchAvailable) {
$autoLaunch = $exercise->getAutoLaunch();
if (empty($autoLaunch)) {
$actions .= Display::url(
Display::return_icon(
'launch_na.png',
get_lang('Enable'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=enable_launch&sec_token='.$token.'&exerciseId='.$row['id']
);
} else {
$actions .= Display::url(
Display::return_icon(
'launch.png',
get_lang('Disable'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=disable_launch&sec_token='.$token.'&exerciseId='.$row['id']
);
}
}
// Export
$actions .= Display::url(
Display::return_icon('cd.png', get_lang('CopyTest')),
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('Are you sure to copy'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&action=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id'],
]
);
// Clean exercise
if ($locked == false) {
$clean = Display::url(
Display::return_icon(
'clean.png',
get_lang('Clear all learners results for this exercise and feedback'),
'',
ICON_SIZE_SMALL
),
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('Are you sure to delete results and feedback'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&action=clean_results&sec_token='.$token.'&exerciseId='.$row['id'],
]
);
} else {
$clean = Display::return_icon(
'clean_na.png',
get_lang('This option is not available because this activity is contained by an assessment, which is currently locked. To unlock the assessment, ask your platform administrator.'),
'',
ICON_SIZE_SMALL
);
}
if ($limitTeacherAccess && !api_is_platform_admin()) {
$clean = '';
}
$actions .= $clean;
// Visible / invisible
// Check if this exercise was added in a LP
if ($exercise->exercise_was_added_in_lp == true) {
$visibility = Display::return_icon(
'invisible.png',
get_lang('This exercise has been included in a learning path, so it cannot be accessed by students directly from here. If you want to put the same exercise available through the exercises tool, please make a copy of the current exercise using the copy icon.'),
'',
ICON_SIZE_SMALL
);
} else {
if ($row['active'] == 0 || $visibility == 0) {
$visibility = Display::url(
Display::return_icon(
'invisible.png',
get_lang('Activate'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=enable&sec_token='.$token.'&exerciseId='.$row['id']
);
} else {
// else if not active
$visibility = Display::url(
Display::return_icon(
'visible.png',
get_lang('Deactivate'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=disable&sec_token='.$token.'&exerciseId='.$row['id']
);
}
}
if ($limitTeacherAccess && !api_is_platform_admin()) {
$visibility = '';
}
$actions .= $visibility;
// Export qti ...
$export = Display::url(
Display::return_icon(
'export_qti2.png',
'IMS/QTI',
'',
ICON_SIZE_SMALL
),
'exercise.php?action=exportqti2&exerciseId='.$row['id'].'&'.api_get_cidreq()
);
if ($limitTeacherAccess && !api_is_platform_admin()) {
$export = '';
}
$actions .= $export;
} else {
// not session
$actions = Display::return_icon(
'edit_na.png',
get_lang('TestEditionNotAvailableInSession')
);
// Check if this exercise was added in a LP
if ($exercise->exercise_was_added_in_lp == true) {
$visibility = Display::return_icon(
'invisible.png',
get_lang('This exercise has been included in a learning path, so it cannot be accessed by students directly from here. If you want to put the same exercise available through the exercises tool, please make a copy of the current exercise using the copy icon.'),
'',
ICON_SIZE_SMALL
);
} else {
if ($row['active'] == 0 || $visibility == 0) {
$visibility = Display::url(
Display::return_icon(
'invisible.png',
get_lang('Activate'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=enable&sec_token='.$token.'&exerciseId='.$row['id']
);
} else {
// else if not active
$visibility = Display::url(
Display::return_icon(
'visible.png',
get_lang('Deactivate'),
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&action=disable&sec_token='.$token.'&exerciseId='.$row['id']
);
}
}
if ($limitTeacherAccess && !api_is_platform_admin()) {
$visibility = '';
}
$actions .= $visibility;
$actions .= '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
Display::return_icon('test_results.png', get_lang('Results and feedback and feedback and feedback and feedback and feedback and feedback'), '', ICON_SIZE_SMALL).'</a>';
$actions .= Display::url(
Display::return_icon('cd.gif', get_lang('CopyTest')),
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('Are you sure to copy'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&action=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id'],
]
);
}
// Delete
$delete = '';
if ($sessionId == $row['session_id']) {
if ($locked == false) {
$delete = Display::url(
Display::return_icon(
'delete.png',
get_lang('Delete'),
'',
ICON_SIZE_SMALL
),
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('Are you sure to delete'), ENT_QUOTES, $charset))." ".addslashes($exercise->getUnformattedTitle())."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&action=delete&sec_token='.$token.'&exerciseId='.$row['id'],
]
);
} else {
$delete = Display::return_icon(
'delete_na.png',
get_lang('This option is not available because this activity is contained by an assessment, which is currently locked. To unlock the assessment, ask your platform administrator.'),
'',
ICON_SIZE_SMALL
);
}
}
if ($limitTeacherAccess && !api_is_platform_admin()) {
$delete = '';
}
$actions .= $delete;
// Number of questions
$random_label = null;
if ($row['random'] > 0 || $row['random'] == -1) {
// if random == -1 means use random questions with all questions
$random_number_of_question = $row['random'];
if ($random_number_of_question == -1) {
$random_number_of_question = $rowi;
}
if ($row['random_by_category'] > 0) {
$nbQuestionsTotal = TestCategory::getNumberOfQuestionRandomByCategory(
$my_exercise_id,
$random_number_of_question
);
$number_of_questions = $nbQuestionsTotal.' ';
$number_of_questions .= ($nbQuestionsTotal > 1) ? get_lang('questions') : get_lang('question');
$number_of_questions .= ' - ';
$number_of_questions .= min(
TestCategory::getNumberMaxQuestionByCat($my_exercise_id), $random_number_of_question
).' '.get_lang('QuestionByCategory');
} else {
$random_label = ' ('.get_lang('Random').') ';
$number_of_questions = $random_number_of_question.' '.$random_label.' / '.$rowi;
// Bug if we set a random value bigger than the real number of questions
if ($random_number_of_question > $rowi) {
$number_of_questions = $rowi.' '.$random_label;
}
}
} else {
$number_of_questions = $rowi;
}
$currentRow['count_questions'] = $number_of_questions;
} else {
// Student only.
$visibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$my_exercise_id,
$sessionId
);
if ($visibility == 0) {
continue;
}
$url = '<a '.$alt_title.' href="overview.php?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['id'].'">'.
$cut_title.'</a>';
// Link of the exercise.
$currentRow['title'] = $url.' '.$session_img;
// This query might be improved later on by ordering by the new "tms" field rather than by exe_id
// Don't remove this marker: note-query-exe-results
$sql = "SELECT * FROM $TBL_TRACK_EXERCISES
WHERE
exe_exo_id = ".$row['id']." AND
exe_user_id = $userId AND
c_id = ".api_get_course_int_id()." AND
status <> 'incomplete' AND
orig_lp_id = 0 AND
orig_lp_item_id = 0 AND
session_id = '".api_get_session_id()."'
ORDER BY exe_id DESC";
$qryres = Database::query($sql);
$num = Database :: num_rows($qryres);
// Hide the results.
$my_result_disabled = $row['results_disabled'];
$attempt_text = '-';
// Time limits are on
if ($time_limits) {
// Exam is ready to be taken
if ($is_actived_time) {
// Show results
if (
in_array(
$my_result_disabled,
[
RESULT_DISABLE_SHOW_SCORE_AND_EXPECTED_ANSWERS,
RESULT_DISABLE_SHOW_SCORE_AND_EXPECTED_ANSWERS_AND_RANKING,
RESULT_DISABLE_SHOW_SCORE_ONLY,
RESULT_DISABLE_RANKING,
]
)
) {
// More than one attempt
if ($num > 0) {
$row_track = Database :: fetch_array($qryres);
$attempt_text = get_lang('LatestAttempt').' : ';
$attempt_text .= ExerciseLib::show_score(
$row_track['exe_result'],
$row_track['exe_weighting']
);
} else {
//No attempts
$attempt_text = get_lang('Not attempted');
}
} else {
$attempt_text = '-';
}
} else {
// Quiz not ready due to time limits
//@todo use the is_visible function
if (!empty($row['start_time']) && !empty($row['end_time'])) {
$today = time();
$start_time = api_strtotime($row['start_time'], 'UTC');
$end_time = api_strtotime($row['end_time'], 'UTC');
if ($today < $start_time) {
$attempt_text = sprintf(
get_lang('ExerciseWillBeActivatedFromXToY'),
api_convert_and_format_date($row['start_time']),
api_convert_and_format_date($row['end_time'])
);
} else {
if ($today > $end_time) {
$attempt_text = sprintf(
get_lang('ExerciseWasActivatedFromXToY'),
api_convert_and_format_date($row['start_time']),
api_convert_and_format_date($row['end_time'])
);
}
}
} else {
//$attempt_text = get_lang('ExamNotAvailableAtThisTime');
if (!empty($row['start_time'])) {
$attempt_text = sprintf(
get_lang('TestAvailableFromX'),
api_convert_and_format_date($row['start_time'])
);
}
if (!empty($row['end_time'])) {
$attempt_text = sprintf(
get_lang('TestAvailableUntilX'),
api_convert_and_format_date($row['end_time'])
);
}
}
}
} else {
// Normal behaviour.
// Show results.
if (
in_array(
$my_result_disabled,
[
RESULT_DISABLE_SHOW_SCORE_AND_EXPECTED_ANSWERS,
RESULT_DISABLE_SHOW_SCORE_AND_EXPECTED_ANSWERS_AND_RANKING,
RESULT_DISABLE_SHOW_SCORE_ONLY,
RESULT_DISABLE_RANKING,
]
)
) {
if ($num > 0) {
$row_track = Database :: fetch_array($qryres);
$attempt_text = get_lang('LatestAttempt').' : ';
$attempt_text .= ExerciseLib::show_score(
$row_track['exe_result'],
$row_track['exe_weighting']
);
} else {
$attempt_text = get_lang('Not attempted');
}
}
}
}
$currentRow['attempt'] = $attempt_text;
if ($is_allowedToEdit) {
$additionalActions = ExerciseLib::getAdditionalTeacherActions($row['id']);
if (!empty($additionalActions)) {
$actions .= $additionalActions.PHP_EOL;
}
$currentRow = [
$row['id'],
$currentRow['title'],
$currentRow['count_questions'],
$actions,
];
} else {
$currentRow = [
$currentRow['title'],
$currentRow['attempt'],
];
if ($isDrhOfCourse) {
$currentRow[] = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
Display::return_icon('test_results.png', get_lang('Results and feedback and feedback and feedback and feedback and feedback and feedback'), '', ICON_SIZE_SMALL).'</a>';
}
}
$tableRows[] = $currentRow;
}
}
}
if (empty($tableRows) && empty($categoryId)) {
if ($is_allowedToEdit && $origin != 'learnpath') {
$content .= '<div id="no-data-view">';
$content .= '<h3>'.get_lang('Tests').'</h3>';
$content .= Display::return_icon('quiz.png', '', [], 64);
$content .= '<div class="controls">';
$content .= Display::url(
'<em class="fa fa-plus"></em> '.get_lang('Create a new test'),
'exercise_admin.php?'.api_get_cidreq(),
['class' => 'btn btn-primary']
);
$content .= '</div>';
$content .= '</div>';
}
} else {
if (empty($tableRows)) {
return '';
}
$table->setTableData($tableRows);
$table->setTotalNumberOfItems($total);
$table->set_additional_parameters([
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id(),
'category_id' => $categoryId,
]);
if ($is_allowedToEdit) {
$formActions = [];
$formActions['visible'] = get_lang('Activate');
$formActions['invisible'] = get_lang('Deactivate');
$formActions['delete'] = get_lang('Delete');
$table->set_form_actions($formActions);
}
$i = 0;
if ($is_allowedToEdit) {
$table->set_header($i++, '', false, 'width="18px"');
}
$table->set_header($i++, get_lang('Test name'), false);
if ($is_allowedToEdit) {
$table->set_header($i++, get_lang('Questions'), false);
$table->set_header($i++, get_lang('Detail'), false);
} else {
$table->set_header($i++, get_lang('Status'), false);
if ($isDrhOfCourse) {
$table->set_header($i++, get_lang('Detail'), false);
}
}
$content .= $table->return_table();
}
return $content;
}
/** /**
* @return int value in minutes * @return int value in minutes
*/ */

@ -378,7 +378,7 @@ if ($is_allowedToEdit) {
} }
if (api_get_configuration_value('allow_exercise_categories') === false) { if (api_get_configuration_value('allow_exercise_categories') === false) {
echo Exercise::exerciseGrid(0, $keyword); echo Exercise::exerciseGridResource(0, $keyword);
} else { } else {
if (empty($categoryId)) { if (empty($categoryId)) {
echo Display::page_subheader(get_lang('General')); echo Display::page_subheader(get_lang('General'));

Loading…
Cancel
Save