Adding Attendance to Course copy class see #1884

skala
Julio Montoya 15 years ago
parent e6dd9543b6
commit ad1dd22cc7
  1. 33
      main/coursecopy/classes/Attendance.class.php
  2. 5
      main/coursecopy/classes/Course.class.php
  3. 30
      main/coursecopy/classes/CourseBuilder.class.php
  4. 44
      main/coursecopy/classes/CourseRestorer.class.php
  5. 3
      main/coursecopy/classes/CourseSelectForm.class.php
  6. 6
      main/coursecopy/classes/Resource.class.php
  7. 40
      main/coursecopy/classes/Thematic.class.php
  8. 7
      main/coursecopy/copy_course.php

@ -0,0 +1,33 @@
<?php
/* For licensing terms, see /license.txt */
require_once 'Resource.class.php';
/**
* Surveys backup script
* @package chamilo.backup
*/
class Attendance extends Resource {
var $params = array();
var $attendance_calendar = array();
/**
* Create a new Thematic
*
* @param array parameters
*/
public function __construct($params) {
parent::Resource($params['id'], RESOURCE_ATTENDANCE);
$this->params = $params;
}
public function show() {
parent::show();
echo $this->params['name'];
}
public function add_attendance_calendar($data) {
$this->attendance_calendar[] = $data;
}
}

@ -193,6 +193,11 @@ class Course
$title = $resource->title;
$description = $resource->content;
break;
case RESOURCE_ATTENDANCE:
$title = $resource->params['name'];
$description = $resource->params['description'];
break;
default:
break;
}

@ -22,6 +22,7 @@ require_once 'Glossary.class.php';
require_once 'CourseSession.class.php';
require_once 'wiki.class.php';
require_once 'Thematic.class.php';
require_once 'Attendance.class.php';
/**
* Class which can build a course-object from a Chamilo-course.
@ -81,8 +82,10 @@ class CourseBuilder {
$this->build_learnpaths($session_id, $course_code,$with_base_content);
$this->build_links($session_id, $course_code, $with_base_content);
$this->build_course_descriptions($session_id, $course_code, $with_base_content);
$this->build_wiki($session_id, $course_code, $with_base_content);
$this->build_thematic($session_id, $course_code, $with_base_content);
$this->build_wiki($session_id, $course_code, $with_base_content);
//$this->build_thematic($session_id, $course_code, $with_base_content);
$this->build_thematic();
$this->build_attendance();
} else {
$table_link = Database :: get_course_table(TABLE_LINKED_RESOURCES);
$table_properties = Database :: get_course_table(TABLE_ITEM_PROPERTY);
@ -99,6 +102,7 @@ class CourseBuilder {
$this->build_surveys();
$this->build_glossary();
$this->build_thematic();
$this->build_attendance();
}
//TABLE_LINKED_RESOURCES is the "resource" course table, which is deprecated, apparently
@ -795,4 +799,26 @@ class CourseBuilder {
$this->course->add_resource($thematic);
}
}
/**
* Build the Surveys
*/
function build_attendance() {
$table_attendance = Database :: get_course_table(TABLE_ATTENDANCE);
$table_attendance_calendar = Database :: get_course_table(TABLE_ATTENDANCE_CALENDAR);
$sql = 'SELECT * FROM '.$table_attendance.' WHERE session_id = 0 ';
$db_result = Database::query($sql);
while ($row = Database::fetch_array($db_result,'ASSOC')) {
$obj = new Attendance($row);
$sql = 'SELECT * FROM '.$table_attendance_calendar.' WHERE attendance_id = '.$row['id'];
$result = Database::query($sql);
while ($sub_row = Database::fetch_array($result,'ASSOC')) {
$obj->add_attendance_calendar($sub_row);
}
$this->course->add_resource($obj);
}
}
}

@ -120,6 +120,7 @@ class CourseRestorer
$this->restore_course_descriptions($session_id);
$this->restore_wiki($session_id);
$this->restore_thematic($session_id);
$this->restore_attendance($session_id);
} else {
$this->restore_links();
$this->restore_tool_intro();
@ -135,6 +136,7 @@ class CourseRestorer
$this->restore_glossary();
$this->restore_wiki();
$this->restore_thematic();
$this->restore_attendance();
}
if ($update_course_settings) {
@ -1736,9 +1738,9 @@ class CourseRestorer
}
/**
* Restore surveys
* Restore Thematics
*/
function restore_thematic() {
function restore_thematic($session_id = 0) {
if ($this->course->has_resources(RESOURCE_THEMATIC)) {
$table_thematic = Database :: get_course_table(TABLE_THEMATIC, $this->course->destination_db);
$table_thematic_advance = Database :: get_course_table(TABLE_THEMATIC_ADVANCE, $this->course->destination_db);
@ -1755,6 +1757,8 @@ class CourseRestorer
$last_id = Database::insert($table_thematic, $thematic->params, true);
if (is_numeric($last_id)) {
api_item_property_update($this->destination_course_info, 'thematic', $last_id,"ThematicAdded", api_get_user_id());
foreach($thematic->thematic_advance_list as $thematic_advance) {
unset($thematic_advance['id']);
$thematic_advance['attendance_id'] = 0;
@ -1779,4 +1783,40 @@ class CourseRestorer
}
}
}
/**
* Restore Attendance
*/
function restore_attendance($session_id = 0) {
if ($this->course->has_resources(RESOURCE_ATTENDANCE)) {
$table_attendance = Database :: get_course_table(TABLE_ATTENDANCE, $this->course->destination_db);
$table_attendance_calendar = Database :: get_course_table(TABLE_ATTENDANCE_CALENDAR, $this->course->destination_db);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_ATTENDANCE] as $id => $obj) {
// check resources inside html from fckeditor tool and copy correct urls into recipient course
$obj->params['description'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($obj->params['description'], $this->course->code, $this->course->destination_path);
$doc = '';
$obj->params['id'] = null;
$last_id = Database::insert($table_attendance, $obj->params, true);
if (is_numeric($last_id)) {
api_item_property_update($this->destination_course_info, TOOL_ATTENDANCE, $last_id,"AttendanceAdded", api_get_user_id());
foreach($obj->attendance_calendar as $attendance_calendar) {
unset($attendance_calendar['id']);
$attendance_calendar['attendance_id'] = $last_id;
$my_id = Database::insert($table_attendance_calendar, $attendance_calendar, true);
/*
if (is_numeric($my_id)) {
api_item_property_update($this->destination_course_info, 'thematic_advance', $my_id,"ThematicAdvanceAdded", api_get_user_id());
}*/
}
}
}
}
}
}

@ -32,6 +32,7 @@ class CourseSelectForm
$resource_titles[RESOURCE_GLOSSARY] = get_lang('Glossary');
$resource_titles[RESOURCE_WIKI] = get_lang('Wiki');
$resource_titles[RESOURCE_THEMATIC] = get_lang('Thematic');
$resource_titles[RESOURCE_ATTENDANCE] = get_lang('Attendance');
?>
<script language="JavaScript" type="text/javascript">
@ -100,7 +101,7 @@ class CourseSelectForm
echo '<input type="hidden" name="origin_session" value="'.$hidden_fields['origin_session'].'"/>';
}
$element_count = 0;
$element_count = 0;
foreach ($course->resources as $type => $resources) {
if (count($resources) > 0) {
switch ($type) {

@ -27,8 +27,8 @@ define('RESOURCE_SURVEY','survey');
define('RESOURCE_SURVEYQUESTION','survey_question');
define('RESOURCE_SURVEYINVITATION','survey_invitation');
define('RESOURCE_WIKI','wiki');
define('RESOURCE_THEMATIC','thematic');
define('RESOURCE_ATTENDANCE','attendance');
/**
* Representation of a resource in a Chamilo-course.
@ -172,7 +172,9 @@ class Resource
case RESOURCE_WIKI:
return TOOL_WIKI;
case RESOURCE_THEMATIC:
return TOOL_ATTENDANCE;
return TOOL_COURSE_PROGRESS;
case RESOURCE_ATTENDANCE:
return TOOL_ATTENDANCE;
default:
return null;
}

@ -6,31 +6,7 @@ require_once 'Resource.class.php';
* @package chamilo.backup
*/
class Thematic extends Resource
{
/**
* The title
*/
var $title;
/**
* The Content
*/
var $content;
/**
* The display order
*/
var $display_order;
/**
* Active
*/
var $active;
var $session_id;
class Thematic extends Resource {
/** All params
* */
var $params = array();
@ -44,20 +20,14 @@ class Thematic extends Resource
*
* @param array parameters
*/
public function __construct($params) {
parent::Resource($params['id'], RESOURCE_THEMATIC);
$this->title = $params['title'];
$this->content = $params['content'];
$this->author = $params['display_order'];
$this->active = $params['active'];
$this->session_id = $params['session_id'];
$this->params = $params;
public function __construct($params) {
parent::Resource($params['id'], RESOURCE_THEMATIC);
$this->params = $params;
}
public function show() {
parent::show();
echo $this->title;
echo $this->params['title'];
}
public function add_thematic_advance($data) {

@ -48,16 +48,15 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
} else {
$cb = new CourseBuilder();
$course = $cb->build();
}
}
$cr = new CourseRestorer($course);
$cr->set_file_option($_POST['same_file_name_option']);
$cr->restore($_POST['destination_course']);
Display::display_normal_message(get_lang('CopyFinished'));
} elseif (isset ($_POST['copy_option']) && $_POST['copy_option'] == 'select_items') {
$cb = new CourseBuilder();
$course = $cb->build();
//echo get_lang('SelectItemsToCopy');
//echo '<br/><br/>';
$course = $cb->build();
$hidden_fields['same_file_name_option'] = $_POST['same_file_name_option'];
$hidden_fields['destination_course'] = $_POST['destination_course'];
CourseSelectForm :: display_form($course, $hidden_fields, true);

Loading…
Cancel
Save