Show exercise added in LP in the Gradebook see BT#9494

1.9.x
Julio Montoya 11 years ago
parent ba7c4e862b
commit ba5b122cb5
  1. 5
      main/exercice/exercise.class.php
  2. 30
      main/gradebook/exercise_jump.php
  3. 27
      main/gradebook/lib/be/exerciselink.class.php

@ -58,6 +58,7 @@ class Exercise
public $edit_exercise_in_lp = false;
public $is_gradebook_locked = false;
public $exercise_was_added_in_lp = false;
public $lpList = array();
public $force_edit_exercise_in_lp = false;
public $sessionId = 0;
@ -148,7 +149,8 @@ class Exercise
$this->review_answers = (isset($object->review_answers) && $object->review_answers == 1) ? true : false;
$sql = "SELECT max_score FROM $table_lp_item
$sql = "SELECT lp_id, max_score
FROM $table_lp_item
WHERE c_id = {$this->course_id} AND
item_type = '".TOOL_QUIZ."' AND
path = '".$id."'";
@ -156,6 +158,7 @@ class Exercise
if (Database::num_rows($result) > 0) {
$this->exercise_was_added_in_lp = true;
$this->lpList = Database::store_result($result, 'ASSOC');
}
$this->force_edit_exercise_in_lp = isset($_configuration['force_edit_exercise_in_lp']) ? $_configuration['force_edit_exercise_in_lp'] : false;

@ -15,7 +15,7 @@ api_block_anonymous_users();
$this_section=SECTION_COURSES;
$course_code = api_get_course_id();
$course_info = Database::get_course_info($course_code);
$course_info = api_get_course_info($course_code);
$course_title = $course_info['title'];
$course_code = $return_result['code'];
$gradebook = Security::remove_XSS($_GET['gradebook']);
@ -39,9 +39,33 @@ if (isset($_GET['doexercise'])) {
header('Location: '.$doExerciseUrl);
exit;
} else {
$url = api_get_path(WEB_CODE_PATH).'exercice/overview.php?session_id='.$session_id.'&cidReq='.Security::remove_XSS($cidReq);
if (isset($_GET['gradebook'])) {
$add_url = '&gradebook=view&exerciseId='.intval($_GET['exerciseId']);
$url .= '&gradebook=view&exerciseId='.intval($_GET['exerciseId']);
// Check if exercise is inserted inside a LP, if that's the case
$exerciseId = $_GET['exerciseId'];
$exercise = new Exercise();
$exercise->read($exerciseId);
if (!empty($exercise->id)) {
if ($exercise->exercise_was_added_in_lp) {
if (!empty($exercise->lpList)) {
$count = count($exercise->lpList);
if ($count == 1) {
// If the exercise was added once redirect to the LP
$firstLp = current($exercise->lpList);
if (isset($firstLp['lp_id'])) {
$url = api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq() . '&lp_id=' . $firstLp['lp_id'] . '&action=view&isStudentView=true';
}
} else {
// If the exercise was added multiple times show the LP list
$url = api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq().'&action=list';
}
}
}
}
}
header('Location: '.api_get_path(WEB_CODE_PATH).'exercice/overview.php?session_id='.$session_id.'&cidReq='.Security::remove_XSS($cidReq).'&'.$add_url);
header('Location: '.$url);
exit;
}

@ -66,6 +66,9 @@ class ExerciseLink extends AbstractLink
{
$TBL_DOCUMENT = Database :: get_course_table(TABLE_DOCUMENT);
$TBL_ITEM_PROPERTY = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$exerciseTable = $this->get_exercise_table();
$lpItemTable = Database :: get_course_table(TABLE_LP_ITEM);
$documentPath = api_get_path(SYS_COURSE_PATH).$this->course_code."/document";
if (empty($this->course_code)) {
die('Error in get_not_created_links() : course code not set');
@ -80,9 +83,14 @@ class ExerciseLink extends AbstractLink
// @todo
$uploadPath = null;
$sql = 'SELECT id,title from '.$this->get_exercise_table().'
$sql = 'SELECT id,title FROM '.$exerciseTable.'
WHERE c_id = '.$this->course_id.' AND active=1 '.$session_condition;
$sqlLp = "SELECT e.id, e.title FROM $exerciseTable e INNER JOIN $lpItemTable i
ON (e.c_id = i.c_id AND e.id = i.path)
WHERE e.c_id = $this->course_id AND active = 0 AND item_type = 'quiz'
$session_condition";
$sql2 = "SELECT d.path as path, d.comment as comment, ip.visibility as visibility, d.id
FROM $TBL_DOCUMENT d, $TBL_ITEM_PROPERTY ip
WHERE
@ -94,12 +102,17 @@ class ExerciseLink extends AbstractLink
d.path LIKE '".Database :: escape_string($uploadPath.'/%/%')."' AND
ip.visibility='1'
";
require_once api_get_path(SYS_CODE_PATH).'exercice/hotpotatoes.lib.php';
$exerciseInLP = array();
if (!$this->is_hp) {
$result = Database::query($sql);
$resultLp = Database::query($sqlLp);
$exerciseInLP = Database::store_result($resultLp);
} else {
$result2 = Database::query($sql2);
}
$cats = array();
if (isset($result)) {
if (Database::num_rows($result) > 0) {
@ -108,6 +121,7 @@ class ExerciseLink extends AbstractLink
}
}
}
if (isset($result2)) {
if (Database::num_rows($result2) > 0) {
while ($row=Database::fetch_array($result2)) {
@ -125,13 +139,22 @@ class ExerciseLink extends AbstractLink
if ($title == '') {
$title = basename($path);
}
$cats[] = array ($attribute['id'], $title.'(HP)');
$cats[] = array($attribute['id'], $title.'(HP)');
}
}
}
}
}
if (!empty($exerciseInLP)) {
foreach ($exerciseInLP as $exercise) {
$cats[] = array(
$exercise['id'],
$exercise['title'].' ('.get_lang('ToolLearnpath').')'
);
}
}
return $cats;
}

Loading…
Cancel
Save