Adding auto insertion of course introduction see BT#7068 only works in page add_courses_to_session.php.

1.9.x
Julio Montoya 12 years ago
parent ce6c5bb18f
commit ec6cd87e94
  1. 4
      main/admin/add_courses_to_session.php
  2. 107
      main/inc/lib/course_description.lib.php
  3. 87
      main/inc/lib/sessionmanager.lib.php

@ -137,16 +137,18 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
$nbr_users++; $nbr_users++;
} }
} }
SessionManager::installCourse($id_session, $course_info['real_id']);
Database::query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'"); Database::query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'");
} }
} }
foreach ($existingCourses as $existingCourse) { foreach ($existingCourses as $existingCourse) {
if(!in_array($existingCourse['course_code'], $CourseList)) { if (!in_array($existingCourse['course_code'], $CourseList)) {
$course_info = api_get_course_info($existingCourse['course_code']); $course_info = api_get_course_info($existingCourse['course_code']);
CourseManager::remove_course_ranking($course_info['real_id'], $id_session); CourseManager::remove_course_ranking($course_info['real_id'], $id_session);
Database::query("DELETE FROM $tbl_session_rel_course WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session"); Database::query("DELETE FROM $tbl_session_rel_course WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session"); Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
SessionManager::unInstallCourse($id_session, $course_info['real_id']);
} }
} }

@ -1,8 +1,8 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* This file contains a class used like library provides functions for * This file contains a class used like library provides functions for
* course description tool. It's also used like model to * course description tool. It's also used like model to
* course_description_controller (MVC pattern) * course_description_controller (MVC pattern)
* @author Christian Fasanando <christian1827@gmail.com> * @author Christian Fasanando <christian1827@gmail.com>
* @package chamilo.course_description * @package chamilo.course_description
@ -27,11 +27,14 @@ class CourseDescription
/** /**
* Constructor * Constructor
*/ */
public function __construct() {} public function __construct()
{
}
/** /**
* Returns an array of objects of type CourseDescription corresponding to a specific course, without session ids (session id = 0) * Returns an array of objects of type CourseDescription corresponding to a specific course, without session ids (session id = 0)
* *
* @param int Course id * @param int Course id
* @return array Array of CourseDescriptions * @return array Array of CourseDescriptions
*/ */
@ -42,7 +45,7 @@ class CourseDescription
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
} else { } else {
return array(); return array();
} }
$t_course_desc = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $t_course_desc = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$sql = "SELECT * FROM $t_course_desc WHERE c_id = $course_id AND session_id = '0';"; $sql = "SELECT * FROM $t_course_desc WHERE c_id = $course_id AND session_id = '0';";
$sql_result = Database::query($sql); $sql_result = Database::query($sql);
@ -59,21 +62,22 @@ class CourseDescription
} }
return $results; return $results;
} }
/** /**
* Get all data of course description by session id, * Get all data of course description by session id,
* first you must set session_id property with the object CourseDescription * first you must set session_id property with the object CourseDescription
* @return array * @return array
*/ */
public function get_description_data() { public function get_description_data()
{
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$condition_session = api_get_session_condition($this->session_id, true, true); $condition_session = api_get_session_condition($this->session_id, true, true);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT * FROM $tbl_course_description WHERE c_id = $course_id $condition_session ORDER BY id "; $sql = "SELECT * FROM $tbl_course_description WHERE c_id = $course_id $condition_session ORDER BY id ";
$rs = Database::query($sql); $rs = Database::query($sql);
$data = array(); $data = array();
while ($description = Database::fetch_array($rs)) { while ($description = Database::fetch_array($rs)) {
$data['descriptions'][$description['id']] = Security::remove_XSS($description, STUDENT); $data['descriptions'][$description['id']] = Security::remove_XSS($description, STUDENT);
//reload titles to ensure we have the last version (after edition) //reload titles to ensure we have the last version (after edition)
//$data['default_description_titles'][$description['id']] = Security::remove_XSS($description['title'], STUDENT); //$data['default_description_titles'][$description['id']] = Security::remove_XSS($description['title'], STUDENT);
@ -89,16 +93,16 @@ class CourseDescription
public function get_description_history($description_type) { public function get_description_history($description_type) {
$tbl_stats_item_property = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ITEM_PROPERTY); $tbl_stats_item_property = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ITEM_PROPERTY);
$tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY);
$description_id = $this->get_id_by_description_type($description_type); $description_id = $this->get_id_by_description_type($description_type);
$item_property_id = api_get_item_property_id($course_id, TOOL_COURSE_DESCRIPTION, $description_id); $item_property_id = api_get_item_property_id($course_id, TOOL_COURSE_DESCRIPTION, $description_id);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT tip.id, tip.course_id, tip.item_property_id, tip.title, tip.content, tip.progress, tip.lastedit_date, tip.session_id $sql = "SELECT tip.id, tip.course_id, tip.item_property_id, tip.title, tip.content, tip.progress, tip.lastedit_date, tip.session_id
FROM $tbl_stats_item_property tip INNER JOIN $tbl_item_property ip FROM $tbl_stats_item_property tip INNER JOIN $tbl_item_property ip
ON ip.tool = '".TOOL_COURSE_DESCRIPTION."' AND ip.id = tip.item_property_id ON ip.tool = '".TOOL_COURSE_DESCRIPTION."' AND ip.id = tip.item_property_id
WHERE ip.c_id = $course_id AND tip.course_id = '$course_id' AND tip.session_id = '".intval($this->session_id)."' WHERE ip.c_id = $course_id AND tip.course_id = '$course_id' AND tip.session_id = '".intval($this->session_id)."'
ORDER BY tip.lastedit_date DESC"; ORDER BY tip.lastedit_date DESC";
$rs = Database::query($sql); $rs = Database::query($sql);
@ -120,13 +124,13 @@ class CourseDescription
public function get_data_by_description_type($description_type, $course_code = '', $session_id = null) { public function get_data_by_description_type($description_type, $course_code = '', $session_id = null) {
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
if (!isset($session_id)) { if (!isset($session_id)) {
$session_id = $this->session_id; $session_id = $this->session_id;
} }
$condition_session = api_get_session_condition($session_id); $condition_session = api_get_session_condition($session_id);
if (!empty($course_code)) { if (!empty($course_code)) {
$course_info = api_get_course_info($course_code); $course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
} }
$description_type = intval($description_type); $description_type = intval($description_type);
@ -140,18 +144,17 @@ class CourseDescription
} }
return $data; return $data;
} }
public function get_data_by_id($id, $course_code = '', $session_id = null) { public function get_data_by_id($id, $course_code = '', $session_id = null) {
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
if (!isset($session_id)) { if (!isset($session_id)) {
$session_id = $this->session_id; $session_id = $this->session_id;
} }
$condition_session = api_get_session_condition($session_id); $condition_session = api_get_session_condition($session_id);
if (!empty($course_code)) { if (!empty($course_code)) {
$course_info = api_get_course_info($course_code); $course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
} }
$id = intval($id); $id = intval($id);
@ -166,7 +169,7 @@ class CourseDescription
} }
return $data; return $data;
} }
/** /**
* Get maximum description type by session id, first you must set session_id properties with the object CourseDescription * Get maximum description type by session id, first you must set session_id properties with the object CourseDescription
@ -175,7 +178,7 @@ class CourseDescription
public function get_max_description_type() { public function get_max_description_type() {
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT MAX(description_type) as MAX FROM $tbl_course_description WHERE c_id = $course_id AND session_id='".$this->session_id."'"; $sql = "SELECT MAX(description_type) as MAX FROM $tbl_course_description WHERE c_id = $course_id AND session_id='".$this->session_id."'";
$rs = Database::query($sql); $rs = Database::query($sql);
$max = Database::fetch_array($rs); $max = Database::fetch_array($rs);
@ -191,19 +194,20 @@ class CourseDescription
* first you must set description_type, title, content, progress and session_id properties with the object CourseDescription * first you must set description_type, title, content, progress and session_id properties with the object CourseDescription
* @return int affected rows * @return int affected rows
*/ */
public function insert() { public function insert()
{
if (empty($this->course_id)) { if (empty($this->course_id)) {
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
} else { } else {
$course_id = $this->course_id; $course_id = $this->course_id;
} }
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$sql = "INSERT IGNORE INTO $tbl_course_description SET $sql = "INSERT IGNORE INTO $tbl_course_description SET
c_id = $course_id, c_id = $course_id,
description_type = '".intval($this->description_type)."', description_type = '".intval($this->description_type)."',
title = '".Database::escape_string($this->title)."', title = '".Database::escape_string($this->title)."',
content = '".Database::escape_string($this->content)."', content = '".Database::escape_string($this->content)."',
progress = '".intval($this->progress)."', progress = '".intval($this->progress)."',
session_id = '".intval($this->session_id)."' "; session_id = '".intval($this->session_id)."' ";
Database::query($sql); Database::query($sql);
$last_id = Database::insert_id(); $last_id = Database::insert_id();
@ -222,7 +226,8 @@ class CourseDescription
* @param int description type * @param int description type
* @return int affected rows * @return int affected rows
*/ */
public function insert_stats($description_type) { public function insert_stats($description_type)
{
$tbl_stats_item_property = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ITEM_PROPERTY); $tbl_stats_item_property = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ITEM_PROPERTY);
$description_id = $this->get_id_by_description_type($description_type); $description_id = $this->get_id_by_description_type($description_type);
$course_id = api_get_real_course_id(); $course_id = api_get_real_course_id();
@ -248,19 +253,20 @@ class CourseDescription
* and session_id properties with the object CourseDescription * and session_id properties with the object CourseDescription
* @return int affected rows * @return int affected rows
*/ */
public function update() { public function update()
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); {
$sql = "UPDATE $tbl_course_description SET $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
title = '".Database::escape_string($this->title)."', $sql = "UPDATE $tbl_course_description SET
content = '".Database::escape_string($this->content)."', title = '".Database::escape_string($this->title)."',
progress = '".$this->progress."' content = '".Database::escape_string($this->content)."',
WHERE id = '".intval($this->id)."' AND progress = '".$this->progress."'
WHERE id = '".intval($this->id)."' AND
session_id = '".$this->session_id."' AND session_id = '".$this->session_id."' AND
c_id = ".api_get_course_int_id()." c_id = ".api_get_course_int_id()."
"; ";
Database::query($sql); Database::query($sql);
$affected_rows = Database::affected_rows(); $affected_rows = Database::affected_rows();
if ($this->id > 0) { if ($this->id > 0) {
//insert into item_property //insert into item_property
api_item_property_update(api_get_course_info(), TOOL_COURSE_DESCRIPTION, $this->id, 'CourseDescriptionUpdated', api_get_user_id()); api_item_property_update(api_get_course_info(), TOOL_COURSE_DESCRIPTION, $this->id, 'CourseDescriptionUpdated', api_get_user_id());
@ -272,8 +278,9 @@ class CourseDescription
* Delete a description, first you must set description_type and session_id properties with the object CourseDescription * Delete a description, first you must set description_type and session_id properties with the object CourseDescription
* @return int affected rows * @return int affected rows
*/ */
public function delete() { public function delete()
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); {
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "DELETE FROM $tbl_course_description WHERE c_id = $course_id AND id = '".intval($this->id)."' AND session_id = '".intval($this->session_id)."'"; $sql = "DELETE FROM $tbl_course_description WHERE c_id = $course_id AND id = '".intval($this->id)."' AND session_id = '".intval($this->session_id)."'";
Database::query($sql); Database::query($sql);
@ -290,10 +297,11 @@ class CourseDescription
* @param int description type * @param int description type
* @return int description id * @return int description id
*/ */
public function get_id_by_description_type($description_type) { public function get_id_by_description_type($description_type)
{
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT id FROM $tbl_course_description WHERE c_id = $course_id AND description_type = '".intval($description_type)."'"; $sql = "SELECT id FROM $tbl_course_description WHERE c_id = $course_id AND description_type = '".intval($description_type)."'";
$rs = Database::query($sql); $rs = Database::query($sql);
$row = Database::fetch_array($rs); $row = Database::fetch_array($rs);
@ -312,7 +320,7 @@ class CourseDescription
$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); $tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION);
$session_id = intval($session_id); $session_id = intval($session_id);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT progress FROM $tbl_course_description WHERE c_id = $course_id AND description_type = '".intval($description_type)."' AND session_id = '".intval($this->session_id)."' "; $sql = "SELECT progress FROM $tbl_course_description WHERE c_id = $course_id AND description_type = '".intval($description_type)."' AND session_id = '".intval($this->session_id)."' ";
$rs = Database::query($sql); $rs = Database::query($sql);
$progress = ''; $progress = '';
@ -335,7 +343,8 @@ class CourseDescription
* Get description titles by default * Get description titles by default
* @return array * @return array
*/ */
public function get_default_description_title() { public function get_default_description_title()
{
$default_description_titles = array(); $default_description_titles = array();
$default_description_titles[1]= get_lang('GeneralDescription'); $default_description_titles[1]= get_lang('GeneralDescription');
$default_description_titles[2]= get_lang('Objectives'); $default_description_titles[2]= get_lang('Objectives');
@ -344,7 +353,7 @@ class CourseDescription
$default_description_titles[5]= get_lang('CourseMaterial'); $default_description_titles[5]= get_lang('CourseMaterial');
$default_description_titles[6]= get_lang('HumanAndTechnicalResources'); $default_description_titles[6]= get_lang('HumanAndTechnicalResources');
$default_description_titles[7]= get_lang('Assessment'); $default_description_titles[7]= get_lang('Assessment');
$default_description_titles[8]= get_lang('Other'); $default_description_titles[8]= get_lang('Other');
return $default_description_titles; return $default_description_titles;
} }

@ -2810,4 +2810,91 @@ class SessionManager
} }
return $htmlResult; return $htmlResult;
} }
public static function getCourseToolToByManaged()
{
return array(
'courseDescription',
'courseIntroduction'
);
}
/**
* @param $sessionId
* @param $courseId
*/
public static function installCourse($sessionId, $courseId)
{
$toolList = self::getCourseToolToByManaged();
foreach($toolList as $tool) {
$method = 'add'.$tool;
if (method_exists(get_class(), $method)) {
self::$method($sessionId, $courseId);
}
}
}
/**
* @param $sessionId
* @param $courseId
*/
public static function unInstallCourse($sessionId, $courseId)
{
$toolList = self::getCourseToolToByManaged();
foreach($toolList as $tool) {
$method = 'remove'.$tool;
if (method_exists(get_class(), $method)) {
self::$method($sessionId, $courseId);
}
}
}
public static function addCourseIntroduction($sessionId, $courseId)
{
// @todo create a tool intro lib
$sessionId = intval($sessionId);
$courseId = intval($courseId);
$TBL_INTRODUCTION = Database::get_course_table(TABLE_TOOL_INTRO);
$sql = "SELECT * FROM $TBL_INTRODUCTION WHERE c_id = $courseId";
$result = Database::query($sql);
$result = Database::store_result($result, 'ASSOC');
if (!empty($result)) {
foreach ($result as $result) {
// @todo check if relation exits.
$result['session_id'] = $sessionId;
Database::insert($TBL_INTRODUCTION, $result);
}
}
}
public static function removeCourseIntroduction($sessionId, $courseId)
{
$sessionId = intval($sessionId);
$courseId = intval($courseId);
$TBL_INTRODUCTION = Database::get_course_table(TABLE_TOOL_INTRO);
$sql = "DELETE FROM $TBL_INTRODUCTION WHERE c_id = $courseId AND session_id = $sessionId";
Database::query($sql);
}
public static function addCourseDescription($sessionId, $courseId)
{
/*$description = new CourseDescription();
$descriptions = $description->get_descriptions($courseId);
foreach ($descriptions as $description) {
}*/
}
public static function removeCourseDescription($sessionId, $courseId)
{
}
} }

Loading…
Cancel
Save