exercise progress report BT#7017

1.9.x
César Perales 12 years ago
parent ac3a1cc9f8
commit 4e61a2ae6a
  1. 23
      main/exercice/exercise.lib.php
  2. 22
      main/inc/ajax/course.ajax.php
  3. 3
      main/inc/lib/sessionmanager.lib.php
  4. 30
      main/mySpace/index.php

@ -1416,9 +1416,11 @@ function convert_score($score, $weight) {
* Getting all active exercises from a course from a session (if a session_id is provided we will show all the exercises in the course + all exercises in the session)
* @param array course data
* @param int session id
* @param boolean Check publications dates
* @param string Search exercise name
* @return array array with exercise data
*/
function get_all_exercises($course_info = null, $session_id = 0, $check_publication_dates = false) {
function get_all_exercises($course_info = null, $session_id = 0, $check_publication_dates = false, $search_exercise = '') {
$TBL_EXERCICES = Database :: get_course_table(TABLE_QUIZ_TEST);
$course_id = api_get_course_int_id();
@ -1440,16 +1442,27 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_publicat
$time_conditions .= " (start_time = '0000-00-00 00:00:00' AND end_time = '0000-00-00 00:00:00')) "; // nothing is set
}
$needle_where = (!empty($search_exercise)) ? " AND title LIKE '?' " : '';
$needle = (!empty($search_exercise)) ? "%" . $search_exercise . "%" : '';
if ($session_id == 0) {
$conditions = array('where'=>array('active = ? AND session_id = ? AND c_id = ? '.$time_conditions => array('1', $session_id, $course_id)), 'order'=>'title');
$conditions = array('where'=>array('active = ? AND session_id = ? AND c_id = ? '. $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>'title');
} else {
//All exercises
$conditions = array('where'=>array('active = ? AND (session_id = 0 OR session_id = ? ) AND c_id = ? '.$time_conditions => array('1', $session_id, $course_id)), 'order'=>'title');
$conditions = array('where'=>array('active = ? AND (session_id = 0 OR session_id = ? ) AND c_id = ? ' . $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>'title');
}
return Database::select('*',$TBL_EXERCICES, $conditions);
}
/**
* Get exercise information by id
* @param int Exercise Id
* @return array Exercise info
*/
function get_exercise_by_id($exerciseId = 0) {
$TBL_EXERCICES = Database :: get_course_table(TABLE_QUIZ_TEST);
$conditions = array('where' => array('id = ?' => array($exerciseId)));
return Database::select('*', $TBL_EXERCICES, $conditions);
}
/**
* Getting all active exercises from a course from a session (if a session_id is provided we will show all the exercises in the course + all exercises in the session)
* @param array course data

@ -147,6 +147,28 @@ switch ($action) {
}
}
break;
case 'search_exercise_by_course':
if (api_is_platform_admin())
{
$course = api_get_course_info_by_id($_GET['course_id']);
require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
error_log($_GET['q']);
$exercises = get_all_exercises($course, intval($_GET['session_id']), false, $_GET['q']);
foreach ($exercises as $exercise)
{
$data[] = array('id' => $exercise['id'], 'text' => $exercise['title'] );
}
if (!empty($data))
{
echo json_encode($data);
} else
{
echo json_encode(array());
}
}
break;
default:
echo '';
}

@ -557,7 +557,6 @@ class SessionManager
INNER JOIN $user u ON u.user_id = a.user_id
$where $order $limit";
$sql_query = sprintf($sql, $sessionId, $course['code'], $exerciseId);
$rs = Database::query($sql_query);
@ -751,7 +750,7 @@ class SessionManager
* Exercises
*/
require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
$exercises = get_all_exercises($course_info, $sessionId);
$exercises = get_all_exercises($course, $sessionId);
$exercises_total = count($exercises);
/**

@ -685,6 +685,36 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
});
</script>';
}
//exercise
if (in_array($display, array('exerciseprogress')))
{
$exerciseFilter = new FormValidator('student_filter', 'get', '', '', array('class'=> 'form-search'), false);
$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_exercise_by_course&session_id=' . $_GET['session_id'] . '&course_id=' . $_GET['course_id'];
$exerciseList = array();
$exerciseId = isset($_GET['exercise_id']) ? $_GET['exercise_id'] : null;
if (!empty($exerciseId)) {
$exerciseList = array();
$exerciseInfo = current(get_exercise_by_id($exerciseId));
$exerciseList[] = array('id' => $exerciseInfo['id'], 'text' => $exerciseInfo['title']);
}
$exerciseFilter->addElement('select_ajax', 'exercise_name', get_lang('SearchExercise'), null, array('url' => $url, 'defaults' => $exerciseList));
$courseListUrl = api_get_self();
echo '<div class="">';
echo $exerciseFilter->return_form();
echo '</div>';
echo '<script>
$(function() {
$("#exercise_name").on("change", function() {
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var exerciseId = $("#exercise_name").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&exercise_id="+exerciseId;
});
});
</script>';
}
}
if ($display === 'useroverview') {

Loading…
Cancel
Save