Fixing copy session funcionality, now we filter by access_url_id (multi site) see BT#1596

skala
Julio Montoya 15 years ago
parent 817b7fba8c
commit 191bf31119
  1. 2
      main/admin/index.php
  2. 28
      main/coursecopy/classes/CourseSelectForm.class.php
  3. 56
      main/coursecopy/copy_course_session.php
  4. 2
      main/inc/lib/main_api.lib.php
  5. 29
      main/inc/lib/sessionmanager.lib.php

@ -177,8 +177,8 @@ if (api_get_setting('use_session_mode') == 'true') { ?>
</div>
<ul>
<li><a href="session_list.php"><?php echo get_lang('ListSession'); ?></a></li>
<li><a href="session_category_list.php"><?php echo get_lang('ListSessionCategory'); ?></a></li>
<li><a href="session_add.php"><?php echo get_lang('AddSession'); ?></a></li>
<li><a href="session_category_list.php"><?php echo get_lang('ListSessionCategory'); ?></a></li>
<li><a href="session_import.php"><?php echo get_lang('ImportSessionListXMLCSV'); ?></a></li>
<?php if (isset($extAuthSource) && isset($extAuthSource['ldap']) && count($extAuthSource['ldap']) > 0) { ?>
<li><a href="ldap_import_students_to_session.php"><?php echo get_lang('ImportLDAPUsersIntoSession'); ?></a></li>

@ -75,7 +75,7 @@ class CourseSelectForm
<?php
//get destination course title
if(!empty($hidden_fields['destination_course'])) {
if (!empty($hidden_fields['destination_course'])) {
require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
$course_infos = CourseManager::get_course_information($hidden_fields['destination_course']);
echo '<h3>';
@ -97,9 +97,11 @@ class CourseSelectForm
echo '<input type="hidden" name="origin_course" value="'.$hidden_fields['origin_course'].'"/>';
echo '<input type="hidden" name="destination_session" value="'.$hidden_fields['destination_session'].'"/>';
echo '<input type="hidden" name="origin_session" value="'.$hidden_fields['origin_session'].'"/>';
}
foreach ($course->resources as $type => $resources) {
if (count($resources) > 0) {
}
$element_count = 0;
foreach ($course->resources as $type => $resources) {
if (count($resources) > 0) {
switch ($type) {
case RESOURCE_LINKCATEGORY :
case RESOURCE_FORUMCATEGORY :
@ -137,12 +139,14 @@ class CourseSelectForm
echo '</blockquote>';
echo '</div>';
echo '<script language="javascript">exp('."'$type'".')</script>';
}
$element_count++;
}
}
}
if ($avoid_serialize) {
//Documents are avoided due the huge amount of memory that the serialize php function "eats" (when there are directories with hundred/thousand of files)
/*Documents are avoided due the huge amount of memory that the serialize php function "eats"
(when there are directories with hundred/thousand of files) */
// this is a known issue of serialize
$course->resources['document']= null;
}
@ -154,11 +158,15 @@ class CourseSelectForm
echo '<input type="hidden" name="'.$key.'" value="'.$value.'"/>';
}
}
if (!empty($hidden_fields['destination_session'])) {
echo '<br /><button class="save" type="submit" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES, $charset))."'".')) return false;" >'.get_lang('Ok').'</button>';
if (empty($element_count)) {
Display::display_warning_message(get_lang('NoDataAvailable'));
} else {
echo '<br /><button class="save" type="submit" onclick="checkLearnPath(\''.addslashes(get_lang('DocumentsWillBeAddedToo')).'\')">'.get_lang('Ok').'</button>';
if (!empty($hidden_fields['destination_session'])) {
echo '<br /><button class="save" type="submit" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES, $charset))."'".')) return false;" >'.get_lang('Ok').'</button>';
} else {
echo '<br /><button class="save" type="submit" onclick="checkLearnPath(\''.addslashes(get_lang('DocumentsWillBeAddedToo')).'\')">'.get_lang('Ok').'</button>';
}
}
CourseSelectForm :: display_hidden_quiz_questions($course);

@ -26,7 +26,7 @@ require_once 'classes/CourseSelectForm.class.php';
$xajax = new xajax();
$xajax -> registerFunction('search_courses');
$xajax->registerFunction('search_courses');
if (!api_is_allowed_to_edit() && !api_is_session_admin()) {
api_not_allowed(true);
@ -127,8 +127,7 @@ function display_form() {
echo $html;
}
function search_courses($id_session, $type) {
function search_courses($id_session, $type) {
global $tbl_course, $tbl_session_rel_course, $course_list;
$xajax_response = new XajaxResponse();
@ -139,44 +138,35 @@ function search_courses($id_session, $type) {
$id_session = intval($id_session);
if ($type == 'origin') {
// Search courses by id_session for origin list
$sql = "SELECT c.code, c.visual_code, c.title, src.id_session
FROM $tbl_course c, $tbl_session_rel_course src
WHERE src.course_code = c.code
AND src.id_session = '".$id_session."'";
$rs = Database::query($sql);
$course_list = array();
$course_list = SessionManager::get_course_list_by_session_id($id_session);
$temp_course_list = array();
$return .= '<select id="origin" name="SessionCoursesListOrigin[]" multiple="multiple" size="20" style="width:320px;" onclick="javascript: checkSelected(this.id,\'copy_option_2\',\'title_option2\',\'destination\');">';
while ($course = Database :: fetch_array($rs)) {
$course_list[] = "'{$course['code']}'";
foreach ($course_list as $course) {
$temp_course_list[] = "'{$course['code']}'";
$course_title=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'] = $course_list;
$_SESSION['session_origin'] = $id_session;
$_SESSION['course_list'] = $temp_course_list;
$_SESSION['session_origin'] = $id_session;
// Build select for destination sessions where is not included current session from select origin
if (!empty($id_session)) {
$session_table =Database::get_main_table(TABLE_MAIN_SESSION);
$session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$sql = " SELECT s.id, s.name, sc.name as category_name
FROM $session_table s , $session_category_table sc
WHERE s.session_category_id = sc.id AND s.id NOT IN('$id_session')";
$rs_select_destination = Database::query($sql);
$sessions = SessionManager::get_sessions_list();
$select_destination .= '<select name="sessions_list_destination" onchange = "javascript: xajax_search_courses(this.value,\'destination\');">';
$select_destination .= '<option value = "0">'.get_lang('SelectASession').'</option>';
while($session = Database :: fetch_array($rs_select_destination)) {
$select_destination .= '<option value="'.$session['id'].'">'.$session['name'].' ('.$session['category_name'].')</option>';
$select_destination .= '<option value = "0">-- '.get_lang('SelectASession').' --</option>';
foreach ($sessions as $session) {
if ($id_session == $session['id']) { continue; };
if (!empty($session['category_name'])) {
$session['category_name'] = ' ('.$session['category_name'].') ';
}
$select_destination .= '<option value="'.$session['id'].'">'.$session['name'].' '.$session['category_name'].'</option>';
}
$select_destination .= '</select>';
$xajax_response -> addAssign('ajax_sessions_list_destination', 'innerHTML', api_utf8_encode($select_destination));
@ -193,7 +183,6 @@ function search_courses($id_session, $type) {
// Send response by ajax
$xajax_response -> addAssign('ajax_list_courses_origin', 'innerHTML', api_utf8_encode($return));
$xajax_response -> addAssign('ajax_list_courses_destination', 'innerHTML', api_utf8_encode($select_multiple_empty));
} else {
//Left Select - Destination
@ -403,8 +392,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
$hidden_fields['destination_course'] = $arr_course_destination[0];
$hidden_fields['origin_course'] = $arr_course_origin[0];
$hidden_fields['destination_session'] = $destination_session;
$hidden_fields['origin_session'] = $origin_session;
//echo '<pre>'; print_r($course);
$hidden_fields['origin_session'] = $origin_session;
CourseSelectForm :: display_form($course, $hidden_fields, 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>';
@ -419,4 +407,4 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
/* FOOTER */
Display::display_footer();
Display::display_footer();

@ -4241,7 +4241,7 @@ function api_create_include_path_setting() {
*/
function api_get_current_access_url_id() {
$access_url_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$path = api_get_path(WEB_PATH);
$path = Database::escape_string(api_get_path(WEB_PATH));
$sql = "SELECT id FROM $access_url_table WHERE url = '".$path."'";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {

@ -1041,19 +1041,24 @@ class SessionManager {
*/
public static function get_sessions_list($conditions = array(), $order_by = array()) {
$session_table =Database::get_main_table(TABLE_MAIN_SESSION);
$session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$return_array = array();
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
$return_array = array();
$sql_query = " SELECT s.id, s.name, s.nbr_courses, s.date_start, s.date_end, u.firstname, u.lastname , sc.name as category_name, s.promotion_id
$sql_query = " SELECT s.id, s.name, s.nbr_courses, s.date_start, s.date_end, u.firstname, u.lastname, sc.name as category_name, s.promotion_id
FROM $session_table s
INNER JOIN $user_table u ON s.id_coach = u.user_id
LEFT JOIN $session_category_table sc ON s.session_category_id = sc.id ";
INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id
LEFT JOIN $session_category_table sc ON s.session_category_id = sc.id
WHERE ar.access_url_id = $access_url_id ";
if (count($conditions)>0) {
$sql_query .= ' WHERE ';
$sql_query .= ' AND ';
foreach ($conditions as $field=>$value) {
$field = Database::escape_string($field);
$value = Database::escape_string($value);
@ -1278,15 +1283,17 @@ class SessionManager {
}
/**
* Gets the list of courses by session
* Gets the list of courses by session filtered by access_url
* @param int session id
* @return array list of courses
*/
public static function get_course_list_by_session_id ($session_id) {
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
// select the courses
$sql = "SELECT * FROM $tbl_course c INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code WHERE src.id_session = '$session_id' ORDER BY title;";
$sql = "SELECT * FROM $tbl_course c INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code
WHERE src.id_session = '$session_id' ORDER BY title;";
$result = Database::query($sql);
$num_rows = Database::num_rows($result);
$courses = array();

Loading…
Cancel
Save