parent
1e4adb45ca
commit
6b39308d27
@ -0,0 +1,48 @@ |
|||||||
|
<?php |
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
/** |
||||||
|
* Mauintenance for session coach |
||||||
|
* @author Julio Montoya <julio.montoya@beeznest.com> |
||||||
|
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com> |
||||||
|
* @package chamilo.course_info |
||||||
|
*/ |
||||||
|
/** |
||||||
|
* Code |
||||||
|
*/ |
||||||
|
// Language files that need to be included |
||||||
|
$language_file = array('admin', 'create_course', 'course_info', 'coursebackup'); |
||||||
|
|
||||||
|
require_once '../inc/global.inc.php'; |
||||||
|
|
||||||
|
$current_course_tool = TOOL_COURSE_MAINTENANCE; |
||||||
|
$this_section = SECTION_COURSES; |
||||||
|
|
||||||
|
$nameTools = get_lang('Maintenance'); |
||||||
|
|
||||||
|
api_protect_course_script(true); |
||||||
|
api_block_anonymous_users(); |
||||||
|
|
||||||
|
Display :: display_header($nameTools); |
||||||
|
|
||||||
|
echo Display::page_subheader( |
||||||
|
Display::return_icon( |
||||||
|
'save_import.gif', get_lang('backup') |
||||||
|
) . ' ' . get_lang('backup') |
||||||
|
); |
||||||
|
|
||||||
|
$url = api_get_path( |
||||||
|
WEB_CODE_PATH |
||||||
|
) . 'coursecopy/copy_course_session_selected.php?' . api_get_cidreq(); |
||||||
|
|
||||||
|
$link = Display::url(get_lang('CopyCourse'), $url); |
||||||
|
?> |
||||||
|
<div class="sectioncomment"> |
||||||
|
<ul> |
||||||
|
<li> |
||||||
|
<?php echo $link; ?><br/>
|
||||||
|
<?php echo get_lang('DescriptionCopyCourse'); ?> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
<?php |
||||||
|
Display::display_footer(); |
@ -0,0 +1,409 @@ |
|||||||
|
<?php |
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
/** |
||||||
|
* Copy resources from one course in a session to another one. |
||||||
|
* |
||||||
|
* @author Christian Fasanando <christian.fasanando@dokeos.com> |
||||||
|
* @author Julio Montoya <gugli100@gmail.com> Lots of bug fixes/improvements |
||||||
|
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com> Code conventions |
||||||
|
* @package chamilo.backup |
||||||
|
*/ |
||||||
|
/** |
||||||
|
* Code |
||||||
|
*/ |
||||||
|
/* INIT SECTION */ |
||||||
|
|
||||||
|
// Language files that need to be included |
||||||
|
$language_file = array('coursebackup', 'admin'); |
||||||
|
require_once '../inc/global.inc.php'; |
||||||
|
|
||||||
|
$current_course_tool = TOOL_COURSE_MAINTENANCE; |
||||||
|
|
||||||
|
api_protect_course_script(true, true); |
||||||
|
|
||||||
|
require_once api_get_path(LIBRARY_PATH) . 'fileManage.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH) . 'xajax/xajax.inc.php'; |
||||||
|
|
||||||
|
require_once 'classes/CourseBuilder.class.php'; |
||||||
|
require_once 'classes/CourseRestorer.class.php'; |
||||||
|
require_once 'classes/CourseSelectForm.class.php'; |
||||||
|
|
||||||
|
$xajax = new xajax(); |
||||||
|
$xajax->registerFunction('searchCourses'); |
||||||
|
|
||||||
|
if (!api_is_allowed_to_edit()) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
if (!api_is_coach()) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
$courseInfo = api_get_course_info($courseCode); |
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
|
||||||
|
if (empty($courseCode) OR empty($sessionId)) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
// Remove memory and time limits as much as possible as this might be a long process... |
||||||
|
if (function_exists('ini_set')) { |
||||||
|
ini_set('memory_limit', '256M'); |
||||||
|
ini_set('max_execution_time', 1800); |
||||||
|
} |
||||||
|
|
||||||
|
$this_section = SECTION_COURSES; |
||||||
|
$nameTools = get_lang('CopyCourse'); |
||||||
|
$returnLink = api_get_path( |
||||||
|
WEB_CODE_PATH |
||||||
|
) . 'course_info/maintenance_coach.php?' . api_get_cidreq(); |
||||||
|
$interbreadcrumb[] = array( |
||||||
|
'url' => $returnLink, |
||||||
|
'name' => get_lang('Maintenance') |
||||||
|
); |
||||||
|
|
||||||
|
// Database Table Definitions |
||||||
|
$tbl_session_rel_course_rel_user = Database::get_main_table( |
||||||
|
TABLE_MAIN_SESSION_COURSE_USER |
||||||
|
); |
||||||
|
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); |
||||||
|
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
||||||
|
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); |
||||||
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
||||||
|
|
||||||
|
/* FUNCTIONS */ |
||||||
|
|
||||||
|
function make_select_session_list($name, $sessions, $attr = array()) |
||||||
|
{ |
||||||
|
|
||||||
|
$attrs = ''; |
||||||
|
if (count($attr) > 0) { |
||||||
|
foreach ($attr as $key => $value) { |
||||||
|
$attrs .= ' ' . $key . '="' . $value . '"'; |
||||||
|
} |
||||||
|
} |
||||||
|
$output = '<select name="' . $name . '" ' . $attrs . '>'; |
||||||
|
|
||||||
|
if (count($sessions) == 0) { |
||||||
|
$output .= '<option value = "0">' . get_lang( |
||||||
|
'ThereIsNotStillASession' |
||||||
|
) . '</option>'; |
||||||
|
} else { |
||||||
|
$output .= '<option value = "0">' . get_lang( |
||||||
|
'SelectASession' |
||||||
|
) . '</option>'; |
||||||
|
} |
||||||
|
|
||||||
|
if (is_array($sessions)) { |
||||||
|
foreach ($sessions as $session) { |
||||||
|
$category_name = ''; |
||||||
|
if (!empty($session['category_name'])) { |
||||||
|
$category_name = ' (' . $session['category_name'] . ')'; |
||||||
|
} |
||||||
|
|
||||||
|
$output .= '<option value="' . $session['id'] . '">' . $session['name'] . ' ' . $category_name . '</option>'; |
||||||
|
} |
||||||
|
} |
||||||
|
$output .= '</select>'; |
||||||
|
return $output; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Show the form to copy courses |
||||||
|
* @global string $returnLink |
||||||
|
*/ |
||||||
|
function displayForm() |
||||||
|
{ |
||||||
|
global $returnLink; |
||||||
|
|
||||||
|
$courseInfo = api_get_course_info(); |
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
$userId = api_get_user_id(); |
||||||
|
|
||||||
|
$sessions = SessionManager::getSessionsCoachedByUser($userId); |
||||||
|
$html = ''; |
||||||
|
// Actions |
||||||
|
$html .= '<div class="actions">'; |
||||||
|
// Link back to the documents overview |
||||||
|
$html .= '<a href="' . $returnLink . '">' . Display::return_icon( |
||||||
|
'back.png', get_lang('BackTo') . ' ' . get_lang('Maintenance'), '', ICON_SIZE_MEDIUM |
||||||
|
) . '</a>'; |
||||||
|
$html .= '</div>'; |
||||||
|
|
||||||
|
$html .= Display::return_message( |
||||||
|
get_lang('CopyCourseFromSessionToSessionExplanation') |
||||||
|
); |
||||||
|
|
||||||
|
$html .= '<form name="formulaire" method="post" action="' . api_get_self( |
||||||
|
) . '?' . api_get_cidreq() . '" >'; |
||||||
|
$html .= '<table border="0" cellpadding="5" cellspacing="0" width="100%">'; |
||||||
|
|
||||||
|
// Source |
||||||
|
$html .= '<tr><td width="15%"><b>' . get_lang( |
||||||
|
'OriginCoursesFromSession' |
||||||
|
) . ':</b></td>'; |
||||||
|
$html .= '<td width="10%" align="left">' . api_get_session_name( |
||||||
|
$sessionId |
||||||
|
) . '</td>'; |
||||||
|
$html .= '<td width="50%">'; |
||||||
|
$html .= $courseInfo['title'] . '</td></tr>'; |
||||||
|
|
||||||
|
// Destination |
||||||
|
$html .= '<tr><td width="15%"><b>' . get_lang( |
||||||
|
'DestinationCoursesFromSession' |
||||||
|
) . ':</b></td>'; |
||||||
|
$html .= '<td width="10%" align="left"><div id="ajax_sessions_list_destination">'; |
||||||
|
$html .= '<select name="sessions_list_destination" onchange="javascript: xajax_searchCourses(this.value,\'destination\');">'; |
||||||
|
if (empty($sessions)) { |
||||||
|
$html .= '<option value = "0">' . get_lang( |
||||||
|
'ThereIsNotStillASession' |
||||||
|
) . '</option>'; |
||||||
|
} else { |
||||||
|
$html .= '<option value = "0">' . get_lang( |
||||||
|
'SelectASession' |
||||||
|
) . '</option>'; |
||||||
|
foreach ($sessions as $session) { |
||||||
|
if ($session['id'] == $sessionId) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
$html .= '<option value="' . $session['id'] . '">' . $session['name'] . '</option>'; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$html .= '</select ></div></td>'; |
||||||
|
|
||||||
|
$html .= '<td width="50%">'; |
||||||
|
$html .= '<div id="ajax_list_courses_destination">'; |
||||||
|
$html .= '<select id="destination" name="SessionCoursesListDestination[]" style="width:380px;" ></select></div></td>'; |
||||||
|
$html .= '</tr></table>'; |
||||||
|
|
||||||
|
$html .= '<h3>' . get_lang('TypeOfCopy') . '</h3>'; |
||||||
|
$html .= '<label class="radio"><input type="radio" id="copy_option_1" name="copy_option" value="full_copy" checked="checked"/>'; |
||||||
|
$html .= get_lang('FullCopy') . '</label><br/>'; |
||||||
|
$html .= '<label class="radio"><input type="radio" id="copy_option_2" name="copy_option" value="select_items"/>'; |
||||||
|
$html .= ' ' . get_lang('LetMeSelectItems') . '</label><br/>'; |
||||||
|
|
||||||
|
$html .= '<label class="checkbox"><input type="checkbox" id="copy_base_content_id" name="copy_only_session_items" />' . get_lang( |
||||||
|
'CopyOnlySessionItems' |
||||||
|
) . '</label><br /><br/>'; |
||||||
|
|
||||||
|
$html .= '<button class="save" type="submit" onclick="javascript:if(!confirm(' . "'" . addslashes( |
||||||
|
api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES) |
||||||
|
) . "'" . ')) return false;">' . get_lang('CopyCourse') . '</button>'; |
||||||
|
$html .= '</form>'; |
||||||
|
echo $html; |
||||||
|
} |
||||||
|
|
||||||
|
function searchCourses($idSession, $type) |
||||||
|
{ |
||||||
|
$xajaxResponse = new XajaxResponse(); |
||||||
|
$return = null; |
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
|
||||||
|
if (!empty($type)) { |
||||||
|
$idSession = intval($idSession); |
||||||
|
$courseList = SessionManager::get_course_list_by_session_id($idSession); |
||||||
|
|
||||||
|
$return .= '<select id="destination" name="SessionCoursesListDestination[]" style="width:380px;" >'; |
||||||
|
|
||||||
|
foreach ($courseList as $course) { |
||||||
|
$course_list_destination[] = $course['code']; |
||||||
|
|
||||||
|
if ($course['code'] == $courseCode) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
$courseTitle = str_replace("'", "\'", $course['title']); |
||||||
|
|
||||||
|
$return .= '<option value="' . $course['code'] . '" title="' . @htmlspecialchars( |
||||||
|
$course['title'] . ' (' . $course['visual_code'] . ')', ENT_QUOTES, api_get_system_encoding() |
||||||
|
) . '">' . |
||||||
|
$course['title'] . ' (' . $course['visual_code'] . ')</option>'; |
||||||
|
} |
||||||
|
$return .= '</select>'; |
||||||
|
$_SESSION['course_list_destination'] = $course_list_destination; |
||||||
|
|
||||||
|
// Send response by ajax |
||||||
|
$xajaxResponse->addAssign( |
||||||
|
'ajax_list_courses_destination', 'innerHTML', api_utf8_encode($return) |
||||||
|
); |
||||||
|
} |
||||||
|
return $xajaxResponse; |
||||||
|
} |
||||||
|
|
||||||
|
$xajax->processRequests(); |
||||||
|
|
||||||
|
/* HTML head extra */ |
||||||
|
|
||||||
|
$htmlHeadXtra[] = $xajax->getJavascript( |
||||||
|
api_get_path(WEB_LIBRARY_PATH) . 'xajax/' |
||||||
|
); |
||||||
|
$htmlHeadXtra[] = '<script> |
||||||
|
function checkSelected(id_select,id_radio,id_title,id_destination) { |
||||||
|
var num=0; |
||||||
|
obj_origin = document.getElementById(id_select); |
||||||
|
obj_destination = document.getElementById(id_destination); |
||||||
|
|
||||||
|
for (x=0;x<obj_origin.options.length;x) { |
||||||
|
if (obj_origin.options[x].selected) { |
||||||
|
if (obj_destination.options.length > 0) { |
||||||
|
for (y=0;y<obj_destination.options.length;y) { |
||||||
|
if (obj_origin.options[x].value == obj_destination.options[y].value) { |
||||||
|
obj_destination.options[y].selected = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
num; |
||||||
|
} else { |
||||||
|
if (obj_destination.options.length > 0) { |
||||||
|
for (y=0;y<obj_destination.options.length;y) { |
||||||
|
if (obj_origin.options[x].value == obj_destination.options[y].value) { |
||||||
|
obj_destination.options[y].selected = false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (num == 1) { |
||||||
|
document.getElementById(id_radio).disabled = false; |
||||||
|
document.getElementById(id_title).style.color = \'#000\'; |
||||||
|
} else { |
||||||
|
document.getElementById(id_radio).disabled = true; |
||||||
|
document.getElementById(id_title).style.color = \'#aaa\'; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
</script>'; |
||||||
|
|
||||||
|
Display::display_header($nameTools); |
||||||
|
|
||||||
|
$withBaseContent = true; |
||||||
|
if (isset($_POST['copy_only_session_items']) && $_POST['copy_only_session_items']) { |
||||||
|
$withBaseContent = false; |
||||||
|
} |
||||||
|
|
||||||
|
/* MAIN CODE */ |
||||||
|
|
||||||
|
if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || |
||||||
|
(isset($_POST['copy_option']) && $_POST['copy_option'] == 'full_copy') |
||||||
|
) { |
||||||
|
|
||||||
|
$destinationCourse = $destinationSession = ''; |
||||||
|
$originCourse = api_get_course_id(); |
||||||
|
$originSession = api_get_session_id(); |
||||||
|
|
||||||
|
if (isset($_POST['action']) && $_POST['action'] == 'course_select_form') { |
||||||
|
|
||||||
|
$destinationCourse = $_POST['destination_course']; |
||||||
|
$destinationSession = $_POST['destination_session']; |
||||||
|
$course = CourseSelectForm::get_posted_course( |
||||||
|
'copy_course', $originSession, $originCourse |
||||||
|
); |
||||||
|
|
||||||
|
$cr = new CourseRestorer($course); |
||||||
|
$cr->restore($destinationCourse, $destinationSession); |
||||||
|
|
||||||
|
Display::display_confirmation_message(get_lang('CopyFinished')); |
||||||
|
|
||||||
|
displayForm(); |
||||||
|
} else { |
||||||
|
$arr_course_origin = SessionManager::get_course_list_by_session_id( |
||||||
|
api_get_session_id() |
||||||
|
); |
||||||
|
$arrCourseDestination = array(); |
||||||
|
$destinationSession = ''; |
||||||
|
|
||||||
|
if (isset($_POST['SessionCoursesListDestination'])) { |
||||||
|
$arrCourseDestination = $_POST['SessionCoursesListDestination']; |
||||||
|
} |
||||||
|
|
||||||
|
if (isset($_POST['sessions_list_destination'])) { |
||||||
|
$destinationSession = $_POST['sessions_list_destination']; |
||||||
|
} |
||||||
|
|
||||||
|
if ((is_array($arr_course_origin) && count($arr_course_origin) > 0) && !empty($destinationSession) |
||||||
|
) { |
||||||
|
//We need only one value |
||||||
|
if (count($arr_course_origin) > 1 || count($arrCourseDestination) > 1 |
||||||
|
) { |
||||||
|
Display::display_error_message( |
||||||
|
get_lang('YouMustSelectACourseFromOriginalSession') |
||||||
|
); |
||||||
|
} else { |
||||||
|
//foreach ($arr_course_origin as $courseOrigin) { |
||||||
|
//first element of the array |
||||||
|
$course_code = $arr_course_origin[0]; |
||||||
|
$course_destinatination = $arrCourseDestination[0]; |
||||||
|
|
||||||
|
$courseOrigin = api_get_course_info($course_code); |
||||||
|
$cb = new CourseBuilder('', $courseOrigin); |
||||||
|
$course = $cb->build( |
||||||
|
$originSession, $course_code, $withBaseContent |
||||||
|
); |
||||||
|
$cr = new CourseRestorer($course); |
||||||
|
$cr->restore($course_destinatination, $destinationSession); |
||||||
|
} |
||||||
|
Display::display_confirmation_message(get_lang('CopyFinished')); |
||||||
|
displayForm(); |
||||||
|
} else { |
||||||
|
Display::display_error_message( |
||||||
|
get_lang('YouMustSelectACourseFromOriginalSession') |
||||||
|
); |
||||||
|
displayForm(); |
||||||
|
} |
||||||
|
} |
||||||
|
} elseif (isset($_POST['copy_option']) && $_POST['copy_option'] == 'select_items') { |
||||||
|
// Else, if a CourseSelectForm is requested, show it |
||||||
|
if (api_get_setting('show_glossary_in_documents') != 'none') { |
||||||
|
Display::display_normal_message( |
||||||
|
get_lang('ToExportDocumentsWithGlossaryYouHaveToSelectGlossary') |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
$originSession = api_get_session_id(); |
||||||
|
$courseCode = api_get_course_id(); |
||||||
|
$arrCourseDestination = array(); |
||||||
|
$destinationSession = ''; |
||||||
|
|
||||||
|
if (isset($_POST['SessionCoursesListDestination'])) { |
||||||
|
$arrCourseDestination = $_POST['SessionCoursesListDestination']; |
||||||
|
} |
||||||
|
if (isset($_POST['sessions_list_destination'])) { |
||||||
|
$destinationSession = $_POST['sessions_list_destination']; |
||||||
|
} |
||||||
|
|
||||||
|
if (!empty($destinationSession)) { |
||||||
|
Display::display_normal_message( |
||||||
|
get_lang('ToExportLearnpathWithQuizYouHaveToSelectQuiz') |
||||||
|
); |
||||||
|
$courseOrigin = api_get_course_info(); |
||||||
|
$cb = new CourseBuilder('', $courseOrigin); |
||||||
|
$course = $cb->build($originSession, $courseCode, $withBaseContent); |
||||||
|
$hiddenFields['destination_course'] = $arrCourseDestination[0]; |
||||||
|
$hiddenFields['destination_session'] = $destinationSession; |
||||||
|
$hiddenFields['origin_course'] = api_get_course_id(); |
||||||
|
$hiddenFields['origin_session'] = api_get_session_id(); |
||||||
|
|
||||||
|
CourseSelectForm :: displayForm($course, $hiddenFields, true); |
||||||
|
echo '<div style="float:right"><a href="javascript:window.back();">' . |
||||||
|
Display::return_icon( |
||||||
|
'back.png', get_lang('Back') . ' ' . get_lang('To') . ' ' . get_lang( |
||||||
|
'PlatformAdmin' |
||||||
|
), array('style' => 'vertical-align:middle') |
||||||
|
) . |
||||||
|
get_lang('Back') . '</a></div>'; |
||||||
|
} else { |
||||||
|
Display::display_error_message( |
||||||
|
get_lang( |
||||||
|
'You must select a course from original session and select a destination session' |
||||||
|
) |
||||||
|
); |
||||||
|
displayForm(); |
||||||
|
} |
||||||
|
} else { |
||||||
|
displayForm(); |
||||||
|
} |
||||||
|
|
||||||
|
Display::display_footer(); |
Loading…
Reference in new issue