Adding c_id in table access_url_rel_course chaging a lot of queries see BT#5638

skala
Julio Montoya 13 years ago
parent 0925eb9c94
commit 6e1279f783
  1. 10
      main/admin/access_url_add_courses_to_url.php
  2. 8
      main/admin/access_url_edit.php
  3. 69
      main/admin/access_url_edit_courses_to_url.php
  4. 19
      main/admin/access_url_edit_users_to_url.php
  5. 2
      main/admin/course_edit.php
  6. 17
      main/admin/course_information.php
  7. 4
      main/admin/course_list.php
  8. 6
      main/admin/course_request_accepted.php
  9. 7
      main/admin/course_request_rejected.php
  10. 8
      main/admin/course_request_review.php
  11. 91
      main/admin/course_user_import.php
  12. 26
      main/admin/dashboard_add_courses_to_user.php
  13. 234
      main/admin/ldap_import_students.php
  14. 19
      main/admin/subscribe_user2course.php
  15. 5
      main/admin/user_export.php
  16. 13
      main/admin/user_information.php
  17. 2
      main/announcements/announcements.php
  18. 4
      main/attendance/attendance_controller.php
  19. 4
      main/auth/courses.php
  20. 6
      main/auth/courses_controller.php
  21. 4
      main/calendar/agenda.inc.php
  22. 55
      main/calendar/myagenda.inc.php
  23. 39
      main/chat/chat_whoisonline.php
  24. 7
      main/course_info/infocours.php
  25. 30
      main/course_info/legal.php
  26. 2
      main/coursecopy/classes/CourseRestorer.class.php
  27. 2
      main/coursecopy/copy_course.php
  28. 5
      main/dropbox/dropbox_functions.inc.php
  29. 6
      main/exercice/exercise.class.php
  30. 6
      main/exercice/exercise.lib.php
  31. 69
      main/forum/forumfunction.inc.php
  32. 2
      main/forum/viewthread_flat.inc.php
  33. 20
      main/forum/viewthread_nested.inc.php
  34. 14
      main/forum/viewthread_threaded.inc.php
  35. 104
      main/gradebook/lib/be/category.class.php
  36. 83
      main/gradebook/lib/be/evaluation.class.php
  37. 6
      main/gradebook/lib/be/exerciselink.class.php
  38. 19
      main/gradebook/lib/be/result.class.php
  39. 6
      main/gradebook/lib/fe/displaygradebook.php
  40. 227
      main/gradebook/lib/fe/gradebooktable.class.php
  41. 41
      main/gradebook/lib/gradebook_data_generator.class.php
  42. 18
      main/gradebook/lib/gradebook_functions_users.inc.php
  43. 2
      main/inc/ajax/social.ajax.php
  44. 9
      main/inc/lib/add_courses_to_session_functions.lib.php
  45. 2
      main/inc/lib/announcements.inc.php
  46. 118
      main/inc/lib/auth.lib.php
  47. 1
      main/inc/lib/blog.lib.php
  48. 18
      main/inc/lib/classmanager.lib.php
  49. 656
      main/inc/lib/course.lib.php
  50. 18
      main/inc/lib/document.lib.php
  51. 82
      main/inc/lib/groupmanager.lib.php
  52. 77
      main/inc/lib/login.lib.php
  53. 51
      main/inc/lib/main_api.lib.php
  54. 4
      main/inc/lib/page.lib.php
  55. 1
      main/inc/lib/pdf.lib.php
  56. 64
      main/inc/lib/statistics.lib.php
  57. 6
      main/inc/lib/template.lib.php
  58. 68
      main/inc/lib/tracking.lib.php
  59. 1375
      main/inc/lib/urlmanager.lib.php
  60. 58
      main/inc/lib/usermanager.lib.php
  61. 6
      main/inc/local.inc.php
  62. 10
      main/install/1.10.0/db_main.sql
  63. 1
      main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql
  64. 34
      main/mySpace/coaches.php
  65. 6
      main/mySpace/course.php
  66. 2
      main/mySpace/current_courses.php
  67. 2
      main/mySpace/lp_tracking.php
  68. 2
      main/mySpace/myStudents.php
  69. 30
      main/mySpace/myspace.lib.php
  70. 4
      main/session/add_courses_to_session.php
  71. 2
      main/template/default/auth/courses_categories.php
  72. 2
      main/template/jquery_mobile/auth/courses_categories.php
  73. 4
      main/user/user.php
  74. 12
      main/webservices/registration.soap.php
  75. 11
      plugin/dashboard/block_course/block_course.class.php
  76. 5
      plugin/dashboard/block_daily/block_daily.class.php
  77. 2
      plugin/search_course/lib/register_course_widget.class.php
  78. 2
      plugin/search_course/lib/search_course_widget.class.php
  79. 3
      src/ChamiloLMS/Command/Database/InstallCommand.php
  80. 12
      tests/phpunit/classes/UserManagerTest.lib.php

@ -46,7 +46,7 @@ $interbreadcrumb[] = array ('url' => 'access_urls.php', 'name' => get_lang('Mult
Display :: display_header($tool_name);
echo '<div class="actions">';
echo Display::url(Display::return_icon('edit.gif',get_lang('EditCoursesToURL'),''), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_courses_to_url.php"');
echo Display::url(Display::return_icon('edit.gif',get_lang('EditCoursesToURL'),''), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_courses_to_url.php"');
echo '</div>';
api_display_tool_title($tool_name);
@ -65,7 +65,7 @@ if ($_POST['form_sent']) {
if ( count($courses) == 0 || count($url_list) == 0) {
Display :: display_error_message(get_lang('AtLeastOneCourseAndOneURL'));
} else {
UrlManager::add_courses_to_urls($courses,$url_list);
UrlManager::add_courses_to_urls($courses, $url_list);
Display :: display_confirmation_message(get_lang('CourseBelongURL'));
}
}
@ -88,7 +88,7 @@ if(empty($first_letter_user)) {
}
$first_letter_course = Database::escape_string($first_letter_course);
$sql = "SELECT code, title FROM $tbl_course
$sql = "SELECT code, title, id FROM $tbl_course
WHERE title LIKE '".$first_letter_course."%' OR title LIKE '".api_strtolower($first_letter_course)."%'
ORDER BY title, code DESC ";
@ -129,13 +129,13 @@ unset($result);
<?php
foreach ($db_courses as $course) {
?>
<option value="<?php echo $course['code']; ?>" <?php if(in_array($course['code'],$courses)) echo 'selected="selected"'; ?>><?php echo $course['title'].' ('.$course['code'].')'; ?></option>
<option value="<?php echo $course['id']; ?>" <?php if(in_array($course['code'],$courses)) echo 'selected="selected"'; ?>><?php echo $course['title'].' ('.$course['code'].')'; ?></option>
<?php
}
?>
</select>
</td>
<td width="20%" valign="middle" align="center">
<td width="20%" valign="middle" align="center">
<button type="submit" class="add"> <?php echo get_lang('AddCoursesToThatURL'); ?> </button>
</td>
<td width="40%" align="center">

@ -109,8 +109,8 @@ $form->addRule('url', get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('url', '', 'maxlength',254);
$types = array(
1=>get_lang('AccessURL'),
2=>get_lang('SincroServer'),
1=>get_lang('AccessURL'),
2=>get_lang('SincroServer'),
3=>get_lang('SincroClient'),
);
$form->addElement('select', 'url_type', get_lang('Type'), $types);
@ -118,7 +118,7 @@ $form->addElement('select', 'url_type', get_lang('Type'), $types);
$form->addElement('textarea','description',get_lang('Description'));
//the first url with id = 1 will be always active
if ($_GET['url_id'] != 1) {
if (isset($_GET['url_id']) && $_GET['url_id'] != 1) {
$form->addElement('checkbox','active',get_lang('Active'));
}
@ -169,3 +169,5 @@ $form->addElement('file','url_image_3','URL Image 3 (PNG)');
// Submit button
$form->addElement('style_submit_button', 'submit', $submit_name, 'class="add"');
$form->display();
Display::display_footer();

@ -44,15 +44,14 @@ if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
}
$access_url_id=1;
if(isset($_REQUEST['access_url_id']) && $_REQUEST['access_url_id']!=''){
$access_url_id = 1;
if (isset($_REQUEST['access_url_id']) && $_REQUEST['access_url_id']!=''){
$access_url_id = Security::remove_XSS($_REQUEST['access_url_id']);
}
$xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
$htmlHeadXtra[] = '<script>
function add_user_to_url(code, content) {
document.getElementById("course_to_add").value = "";
@ -67,7 +66,7 @@ function add_user_to_url(code, content) {
function send() {
if (document.formulaire.access_url_id.value!=0) {
if (document.formulaire.access_url_id.value != 0) {
document.formulaire.form_sent.value=0;
document.formulaire.add_type.value=\''.$add_type.'\';
document.formulaire.submit();
@ -90,20 +89,20 @@ $errorMsg='';
$UserList=$SessionList=array();
$users=$sessions=array();
if($_POST['form_sent']) {
$form_sent=$_POST['form_sent'];
$course_list=$_POST['course_list'];
if (isset($_POST['form_sent']) && $_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$course_list = $_POST['course_list'];
if(!is_array($course_list)) {
if (!is_array($course_list)) {
$course_list=array();
}
if($form_sent == 1) {
if ($form_sent == 1) {
if ($access_url_id==0) {
header('Location: access_url_edit_users_to_url.php?action=show_message&message='.get_lang('SelectURL'));
}
elseif(is_array($course_list) ) {
UrlManager::update_urls_rel_course($course_list,$access_url_id);
UrlManager::update_urls_rel_course($course_list, $access_url_id);
header('Location: access_urls.php?action=show_message&message='.get_lang('CoursesWereEdited'));
}
}
@ -117,36 +116,36 @@ echo '</div>';
api_display_tool_title($tool_name);
if ($_GET['action'] == 'show_message')
if (isset($_GET['action']) && $_GET['action'] == 'show_message')
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
$no_course_list = $course_list = array();
$ajax_search = $add_type == 'unique' ? true : false;
if($ajax_search) {
$courses=UrlManager::get_url_rel_course_data($access_url_id);
foreach($courses as $course) {
$course_list[$course['course_code']] = $course ;
$courses = UrlManager::get_url_rel_course_data($access_url_id);
foreach ($courses as $course) {
$course_list[$course['c_id']] = $course ;
}
} else {
$courses=UrlManager::get_url_rel_course_data();
$courses = UrlManager::get_url_rel_course_data();
foreach($courses as $course) {
if($course['access_url_id'] == $access_url_id) {
$course_list[$course['course_code']] = $course ;
foreach ($courses as $course) {
if ($course['access_url_id'] == $access_url_id) {
$course_list[$course['c_id']] = $course ;
}
}
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql="SELECT code, title
$sql="SELECT code, title, id
FROM $tbl_course u
ORDER BY title, code";
$result=Database::query($sql);
$courses=Database::store_result($result);
$result = Database::query($sql);
$courses = Database::store_result($result);
$course_list_leys = array_keys($course_list);
foreach($courses as $course) {
if (!in_array($course['code'],$course_list_leys))
$no_course_list[$course['code']] = $course ;
foreach ($courses as $course) {
if (!in_array($course['id'], $course_list_leys))
$no_course_list[$course['id']] = $course ;
}
}
@ -176,14 +175,14 @@ $url_list = UrlManager::get_url_data();
foreach ($url_list as $url_obj) {
$checked = '';
if (!empty($access_url_id)) {
if ($url_obj[0]==$access_url_id) {
if ($url_obj['id']==$access_url_id) {
$checked = 'selected=true';
$url_selected=$url_obj[1];
$url_selected = $url_obj['id'];
}
}
if ($url_obj['active']==1) {
?>
<option <?php echo $checked;?> value="<?php echo $url_obj[0]; ?>"> <?php echo $url_obj[1]; ?></option>
<option <?php echo $checked;?> value="<?php echo $url_obj['id']; ?>"> <?php echo $url_obj['url']; ?></option>
<?php
}
}
@ -197,6 +196,7 @@ $url_list = UrlManager::get_url_data();
if(!empty($errorMsg)) {
Display::display_normal_message($errorMsg); //main API
}
?>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
@ -224,7 +224,7 @@ if(!empty($errorMsg)) {
<?php
foreach($no_course_list as $no_course) {
?>
<option value="<?php echo $no_course['code']; ?>"><?php echo $no_course['title'].' ('.$no_course['code'].')'; ?></option>
<option value="<?php echo $no_course['id']; ?>"><?php echo $no_course['title'].' ('.$no_course['code'].')'; ?></option>
<?php
}
unset($no_course_list);
@ -255,9 +255,10 @@ if(!empty($errorMsg)) {
<select id="destination_users" name="course_list[]" multiple="multiple" size="15" style="width:380px;">
<?php
foreach($course_list as $course) {
foreach ($course_list as $course) {
?>
<option value="<?php echo $course['course_code']; ?>"><?php echo $course['title'].' ('.$course['course_code'].')'; ?></option>
<option value="<?php echo $course['c_id']; ?>"><?php echo $course['title'].' ('.$course['code'].')'; ?></option>
<?php
}
unset($course_list);
@ -285,11 +286,6 @@ function valide(){
var options = document.getElementById('destination_users').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
/*
var options = document.getElementById('destination_classes').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
*/
document.forms.formulaire.submit();
}
@ -305,7 +301,6 @@ function loadUsersInSelect(select){
else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
//xhr_object.open("GET", "loadUsersInSelect.ajax.php?id_session=<?php echo $id_session ?>&letter="+select.options[select.selectedIndex].text, false);
xhr_object.open("POST", "loadUsersInSelect.ajax.php");
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

@ -52,10 +52,8 @@ if(isset($_REQUEST['access_url_id']) && $_REQUEST['access_url_id']!=''){
$xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
$htmlHeadXtra[] = '<script>
function add_user_to_url(code, content) {
document.getElementById("user_to_add").value = "";
document.getElementById("ajax_list_users").innerHTML = "";
@ -92,7 +90,7 @@ $UserList=array();
$message = '';
if ($_POST['form_sent']) {
if (isset($_POST['form_sent']) && $_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$UserList = $_POST['sessionUsersList'];
@ -156,8 +154,9 @@ echo '</div>';
api_display_tool_title($tool_name);
if ($_GET['action'] == 'show_message')
if (isset($_GET['action']) && $_GET['action'] == 'show_message') {
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
}
$nosessionUsersList = $sessionUsersList = array();
$ajax_search = $add_type == 'unique' ? true : false;
@ -211,16 +210,17 @@ $url_list = UrlManager::get_url_data();
<?php
$url_selected='';
foreach ($url_list as $url_obj) {
$checked = '';
if (!empty($access_url_id)) {
if ($url_obj['id']==$access_url_id) {
$checked = 'selected=true';
$url_selected= $url_obj[1];
if ($url_obj['id'] == $access_url_id) {
$checked = 'selected=true';
$url_selected = $url_obj['id'];
}
}
if ($url_obj['active']==1) {
?>
<option <?php echo $checked;?> value="<?php echo $url_obj[0]; ?>"> <?php echo $url_obj[1]; ?></option>
<option <?php echo $checked;?> value="<?php echo $url_obj['id']; ?>"> <?php echo $url_obj['url']; ?></option>
<?php
}
}
@ -351,7 +351,6 @@ function loadUsersInSelect(select){
else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
//xhr_object.open("GET", "loadUsersInSelect.ajax.php?id_session=<?php echo $id_session ?>&letter="+select.options[select.selectedIndex].text, false);
xhr_object.open("POST", "loadUsersInSelect.ajax.php");
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

@ -34,7 +34,7 @@ if (empty($course)) {
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
$sql = "SELECT user.user_id,lastname,firstname FROM $table_user as user,$table_course_user as course_user
WHERE course_user.status='1' AND course_user.user_id=user.user_id AND course_user.course_code='".$course_code."'".$order_clause;
WHERE course_user.status='1' AND course_user.user_id=user.user_id AND course_user.c_id ='".$course['real_id']."'".$order_clause;
$res = Database::query($sql);
$course_teachers = array();
while ($obj = Database::fetch_object($res)) {

@ -83,7 +83,8 @@ $table->display();
echo Display::page_subheader(get_lang('Users'));
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$sql = "SELECT *, cu.status as course_status FROM $table_course_user cu, $table_user u WHERE cu.user_id = u.user_id AND cu.course_code = '".$course_info['code']."' AND cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH." ";
$sql = "SELECT *, cu.status as course_status FROM $table_course_user cu, $table_user u
WHERE cu.user_id = u.user_id AND cu.c_id = '".$course_info['real_id']."' AND cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH." ";
$res = Database::query($sql);
$is_western_name_order = api_is_western_name_order();
if (Database::num_rows($res) > 0) {
@ -126,7 +127,7 @@ $session_list = SessionManager::get_session_by_course($course_info['code']);
$url = api_get_path(WEB_CODE_PATH);
if (!empty($session_list)) {
foreach($session_list as &$session) {
foreach($session_list as &$session) {
$session[0] = Display::url($session[0], $url.'admin/resume_session.php?id_session='.$session['id'] );
unset($session[1]);
}
@ -140,28 +141,28 @@ $extra_fields = $extra_field->get_all();
if (!empty($extra_fields)) {
echo Display::page_subheader(get_lang('ExtraFields'));
echo '<table class="data_table">';
echo '<table class="data_table">';
foreach ($extra_fields as $field) {
if ($field['field_visible'] != '1') {
continue;
}
$obj = new ExtraFieldValue($extra_field->type);
$result = $obj->get_values_by_handler_and_field_id($course_info['code'], $field['id'], true);
$value = null;
$value = null;
if ($result) {
$value = $result['field_value'];
if (is_bool($value)) {
$value = $value ? get_lang('Yes') : get_lang('No');
}
}
} else {
$value = '-';
}
echo "<tr>";
echo "<td> {$field['field_display_text']} </td>";
echo "<td> $value </td>";
echo "</tr>";
echo "</tr>";
}
echo "</table>";
}

@ -28,7 +28,7 @@ function get_number_of_courses() {
if ((api_is_platform_admin() || api_is_session_admin()) && api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1) {
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (code=url_rel_course.course_code)";
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (id = url_rel_course.c_id)";
}
if (isset ($_GET['keyword'])) {
@ -76,7 +76,7 @@ function get_course_data($from, $number_of_items, $column, $direction) {
if ((api_is_platform_admin() || api_is_session_admin()) && api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1) {
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (code=url_rel_course.course_code)";
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (id = url_rel_course.c_id)";
}
if (isset ($_GET['keyword'])) {

@ -90,10 +90,7 @@ function get_number_of_requests() {
*/
function get_request_data($from, $number_of_items, $column, $direction) {
global $keyword;
$course_request_table = Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST);
$users_table = Database :: get_main_table(TABLE_MAIN_USER);
$course_users_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "SELECT id AS col0,
code AS col1,
@ -102,7 +99,8 @@ function get_request_data($from, $number_of_items, $column, $direction) {
tutor_name AS col4,
request_date AS col5,
id AS col6
FROM $course_request_table WHERE status = ".COURSE_REQUEST_ACCEPTED;
FROM $course_request_table
WHERE status = ".COURSE_REQUEST_ACCEPTED;
if ($keyword != '') {
$sql .= " AND (title LIKE '%".$keyword."%' OR code LIKE '%".$keyword."%' OR visual_code LIKE '%".$keyword."%')";

@ -123,11 +123,7 @@ function get_number_of_requests() {
*/
function get_request_data($from, $number_of_items, $column, $direction) {
global $keyword;
$course_request_table = Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST);
$users_table = Database :: get_main_table(TABLE_MAIN_USER);
$course_users_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "SELECT id AS col0,
code AS col1,
title AS col2,
@ -135,7 +131,8 @@ function get_request_data($from, $number_of_items, $column, $direction) {
tutor_name AS col4,
request_date AS col5,
id AS col6
FROM $course_request_table WHERE status = ".COURSE_REQUEST_REJECTED;
FROM $course_request_table
WHERE status = ".COURSE_REQUEST_REJECTED;
if ($keyword != '') {
$sql .= " AND (title LIKE '%".$keyword."%' OR code LIKE '%".$keyword."%' OR visual_code LIKE '%".$keyword."%')";

@ -142,8 +142,6 @@ function get_request_data($from, $number_of_items, $column, $direction) {
global $keyword;
$course_request_table = Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST);
$users_table = Database :: get_main_table(TABLE_MAIN_USER);
$course_users_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
if (DELETE_ACTION_ENABLED) {
$sql = "SELECT id AS col0,
@ -153,7 +151,8 @@ function get_request_data($from, $number_of_items, $column, $direction) {
tutor_name AS col4,
request_date AS col5,
id AS col6
FROM $course_request_table WHERE status = ".COURSE_REQUEST_PENDING;
FROM $course_request_table
WHERE status = ".COURSE_REQUEST_PENDING;
} else {
$sql = "SELECT
code AS col0,
@ -162,7 +161,8 @@ function get_request_data($from, $number_of_items, $column, $direction) {
tutor_name AS col3,
request_date AS col4,
id AS col5
FROM $course_request_table WHERE status = ".COURSE_REQUEST_PENDING;
FROM $course_request_table
WHERE status = ".COURSE_REQUEST_PENDING;
}
if ($keyword != '') {

@ -15,7 +15,7 @@ function validate_data($users_courses) {
$user_course['line'] = $index +1;
// 1. Check whether mandatory fields are set.
$mandatory_fields = array ('UserName', 'CourseCode', 'Status');
foreach ($mandatory_fields as $key => $field) {
foreach ($mandatory_fields as $field) {
if (!isset($user_course[$field]) || strlen($user_course[$field]) == 0) {
$user_course['error'] = get_lang($field.'Mandatory');
$errors[] = $user_course;
@ -26,10 +26,8 @@ function validate_data($users_courses) {
// 2.1 Check whethher code has been allready used by this CVS-file.
if (!isset($coursecodes[$user_course['CourseCode']])) {
// 2.1.1 Check whether course with this code exists in the system.
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT * FROM $course_table WHERE code = '".Database::escape_string($user_course['CourseCode'])."'";
$res = Database::query($sql);
if (Database::num_rows($res) == 0) {
$courseInfo = api_get_course_info($user_course['CourseCode']);
if (empty($courseInfo)) {
$user_course['error'] = get_lang('CodeDoesNotExists');
$errors[] = $user_course;
} else {
@ -38,8 +36,7 @@ function validate_data($users_courses) {
}
}
// 3. Check whether username exists.
if (isset ($user_course['UserName']) && strlen($user_course['UserName']) != 0)
{
if (isset ($user_course['UserName']) && strlen($user_course['UserName']) != 0) {
if (UserManager::is_username_available($user_course['UserName'])) {
$user_course['error'] = get_lang('UnknownUser');
$errors[] = $user_course;
@ -60,72 +57,54 @@ function validate_data($users_courses) {
* Saves imported data.
*/
function save_data($users_courses) {
$user_table= Database::get_main_table(TABLE_MAIN_USER);
$course_user_table= Database::get_main_table(TABLE_MAIN_COURSE_USER);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$csv_data = array();
foreach ($users_courses as $index => $user_course) {
foreach ($users_courses as $user_course) {
$csv_data[$user_course['UserName']][$user_course['CourseCode']] = $user_course['Status'];
}
foreach($csv_data as $username => $csv_subscriptions) {
$user_id = 0;
foreach ($csv_data as $username => $csv_subscriptions) {
$sql = "SELECT * FROM $user_table u WHERE u.username = '".Database::escape_string($username)."'";
$res = Database::query($sql);
$obj = Database::fetch_object($res);
$user_id = $obj->user_id;
$sql = "SELECT * FROM $course_user_table cu WHERE cu.user_id = $user_id AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." ";
$sql = "SELECT * FROM $course_user_table cu
WHERE cu.user_id = $user_id AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." ";
$res = Database::query($sql);
$db_subscriptions = array();
while($obj = Database::fetch_object($res)) {
$db_subscriptions[$obj->course_code] = $obj->status;
while ($obj = Database::fetch_object($res)) {
$db_subscriptions[$obj->c_id] = $obj->status;
}
$to_subscribe = array_diff(array_keys($csv_subscriptions),array_keys($db_subscriptions));
$to_unsubscribe = array_diff(array_keys($db_subscriptions),array_keys($csv_subscriptions));
$csvCourseList = array();
foreach ($csv_subscriptions as $courseCode => $status) {
$courseInfo = api_get_course_info($courseCode);
if ($courseInfo) {
$csvCourseList[$courseInfo['real_id']] = $status;
}
}
$to_subscribe = array_diff(array_keys($csvCourseList), array_keys($db_subscriptions));
$to_unsubscribe = array_diff(array_keys($db_subscriptions), array_keys($csvCourseList));
global $inserted_in_course;
if (!isset($inserted_in_course)) {
$inserted_in_course = array();
}
if($_POST['subscribe']) {
foreach($to_subscribe as $index => $course_code) {
if(CourseManager :: course_exists($course_code)) {
CourseManager::add_user_to_course($user_id,$course_code,$csv_subscriptions[$course_code]);
$course_info = CourseManager::get_course_information($course_code);
$inserted_in_course[$course_code] = $course_info['title'];
}
if (CourseManager :: course_exists($course_code,true)) {
// Also subscribe to virtual courses through check on visual code.
$list = CourseManager :: get_courses_info_from_visual_code($course_code);
foreach ($list as $vcourse) {
if ($vcourse['code'] == $course_code) {
// Ignore, this has already been inserted.
} else {
CourseManager::add_user_to_course($user_id,$vcourse['code'],$csv_subscriptions[$course_code]);
$inserted_in_course[$vcourse['code']] = $vcourse['title'];
}
}
}
if (isset($_POST['subscribe']) && $_POST['subscribe']) {
foreach ($to_subscribe as $courseId) {
CourseManager::add_user_to_course($user_id, $courseId, $csvCourseList[$courseId]);
$course_info = api_get_course_info_by_id($courseId);
$inserted_in_course[$courseId] = $course_info['title'];
}
}
if($_POST['unsubscribe']) {
foreach($to_unsubscribe as $index => $course_code) {
if(CourseManager :: course_exists($course_code)) {
CourseManager::unsubscribe_user($user_id,$course_code);
$course_info = CourseManager::get_course_information($course_code);
$inserted_in_course[$course_code] = $course_info['title'];
}
if (CourseManager :: course_exists($course_code,true)) {
// also subscribe to virtual courses through check on visual code
$list = CourseManager :: get_courses_info_from_visual_code($course_code);
foreach ($list as $vcourse) {
if ($vcourse['code'] == $course_code) {
// Ignore, this has already been inserted.
} else {
CourseManager::unsubscribe_user($user_id,$vcourse['code']);
$inserted_in_course[$vcourse['code']] = $vcourse['title'];
}
}
}
if (isset($_POST['unsubscribe']) && $_POST['unsubscribe']) {
foreach ($to_unsubscribe as $courseId) {
CourseManager::unsubscribe_user($user_id, $courseId);
$course_info = api_get_course_info_by_id($courseId);
$inserted_in_course[$courseId] = $course_info['title'];
}
}
}
@ -199,7 +178,7 @@ Display :: display_header($tool_name);
// Displaying the tool title.
// api_display_tool_title($tool_name);
if (count($errors) != 0) {
if (isset($errors) && count($errors) != 0) {
$error_message = '<ul>';
foreach ($errors as $index => $error_course) {
$error_message .= '<li>'.get_lang('Line').' '.$error_course['line'].': <strong>'.$error_course['error'].'</strong>: ';

@ -60,7 +60,7 @@ if (!api_is_platform_admin()) {
}
function search_courses($needle,$type) {
global $_configuration, $tbl_course, $tbl_course_rel_user, $tbl_course_rel_access_url,$user_id;
global $_configuration, $tbl_course, $tbl_course_rel_access_url,$user_id;
$xajax_response = new XajaxResponse();
$return = '';
@ -80,7 +80,7 @@ function search_courses($needle,$type) {
}
if ($_configuration['multiple_access_urls']) {
$sql = "SELECT c.code, c.title FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code)
$sql = "SELECT c.code, c.title FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id)
WHERE c.code LIKE '$needle%' $without_assigned_courses AND access_url_id = ".api_get_current_access_url_id()."";
} else {
$sql = "SELECT c.code, c.title FROM $tbl_course c
@ -102,9 +102,7 @@ function search_courses($needle,$type) {
$xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
<!--
$htmlHeadXtra[] = '<script>
function moveItem(origin , destination) {
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
@ -142,23 +140,22 @@ function remove_item(origin) {
}
}
}
-->
</script>';
$formSent=0;
$errorMsg = $firstLetterCourse = '';
$UserList = array();
$msg = '';
if (intval($_POST['formSent']) == 1) {
$courses_list = $_POST['CoursesList'];
$affected_rows = CourseManager::suscribe_courses_to_hr_manager($user_id,$courses_list);
$affected_rows = CourseManager::suscribe_courses_to_hr_manager($user_id, $courses_list);
if ($affected_rows) {
$msg = get_lang('AssignedCoursesHaveBeenUpdatedSuccessfully');
}
}
// display header
// Display header
Display::display_header($tool_name);
// actions
@ -187,13 +184,12 @@ if (isset($_POST['firstLetterCourse'])) {
$needle = "$needle%";
}
if ($_configuration['multiple_access_urls']) {
$sql = " SELECT c.code, c.title FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code)
if (api_is_multiple_url_enabled()) {
$sql = " SELECT c.code, c.title FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id)
WHERE c.code LIKE '$needle' $without_assigned_courses AND access_url_id = ".api_get_current_access_url_id()."
ORDER BY c.title";
} else {
$sql = " SELECT c.code, c.title FROM $tbl_course c
$sql = " SELECT c.code, c.title, id as real_id FROM $tbl_course c
WHERE c.code LIKE '$needle' $without_assigned_courses
ORDER BY c.title";
}
@ -250,7 +246,7 @@ if(!empty($msg)) {
<?php
while ($enreg = Database::fetch_array($result)) {
?>
<option value="<?php echo $enreg['code']; ?>" <?php echo 'title="'.htmlspecialchars($enreg['title'],ENT_QUOTES).'"';?>><?php echo $enreg['title'].' ('.$enreg['code'].')'; ?></option>
<option value="<?php echo $enreg['real_id']; ?>" <?php echo 'title="'.htmlspecialchars($enreg['title'],ENT_QUOTES).'"';?>><?php echo $enreg['title'].' ('.$enreg['code'].')'; ?></option>
<?php } ?>
</select></div>
</td>
@ -282,7 +278,7 @@ if(!empty($msg)) {
if (is_array($assigned_courses_to_hrm)) {
foreach($assigned_courses_to_hrm as $enreg) {
?>
<option value="<?php echo $enreg['code']; ?>" <?php echo 'title="'.htmlspecialchars($enreg['title'],ENT_QUOTES).'"'; ?>><?php echo $enreg['title'].' ('.$enreg['code'].')'; ?></option>
<option value="<?php echo $enreg['real_id']; ?>" <?php echo 'title="'.htmlspecialchars($enreg['title'],ENT_QUOTES).'"'; ?>><?php echo $enreg['title'].' ('.$enreg['code'].')'; ?></option>
<?php }
}?>
</select></td>

@ -9,10 +9,10 @@
* Code
*/
// name of the language file that needs to be included
$language_file[]='admin';
$language_file[]='registration';
$language_file[] = 'admin';
$language_file[] = 'registration';
// resetting the course id
$cidReset=true;
$cidReset = true;
require_once('../inc/global.inc.php');
// setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN;
@ -22,11 +22,11 @@ require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php');
api_protect_admin_script();
require('../auth/ldap/authldap.php');
$annee_base=date('Y');
$annee_base = date('Y');
$tool_name = get_lang('LDAPImport');
// setting breadcrumbs
$interbreadcrumb[]=array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$htmlHeadXtra[] = '<script language="JavaScript" type="text/javascript">
var buttoncheck = 1;
@ -52,30 +52,28 @@ function checkAll() {
$annee = $_GET['annee'];
$composante = $_GET['composante'];
$etape = $_GET['etape'];
$etape = $_GET['etape'];
$course = $_POST['course'];
// form1 annee = 0; composante= 0 etape = 0
//if ($annee == "" && $composante == "" && $etape == "") {
if (empty($annee) && empty($course))
{
Display::display_header($tool_name);
echo '<div style="align:center">';
Display::display_icon('group.gif', get_lang('LDAPSelectFilterOnUsersOU'));
echo get_lang('LDAPSelectFilterOnUsersOU');
//echo '<em>'.get_lang('ToDoThisYouMustEnterYearComponentAndComponentStep').'</em><br />';
///echo get_lang('FollowEachOfTheseStepsStepByStep').'<br />';
echo '<form method="get" action="'.api_get_self().'"><br />';
echo '<em>'.get_lang('LDAPOUAttributeFilter').' :</em> ';
echo '<input type="text" name="annee" size="4" maxlength="30" value="'.$annee_base.'"><br />';
echo '<input type="submit" value="'.get_lang('Submit').'">';
echo '</form>';
echo '</div>';
if (empty($annee) && empty($course)) {
Display::display_header($tool_name);
echo '<div style="align:center">';
Display::display_icon('group.gif', get_lang('LDAPSelectFilterOnUsersOU'));
echo get_lang('LDAPSelectFilterOnUsersOU');
//echo '<em>'.get_lang('ToDoThisYouMustEnterYearComponentAndComponentStep').'</em><br />';
///echo get_lang('FollowEachOfTheseStepsStepByStep').'<br />';
echo '<form method="get" action="'.api_get_self().'"><br />';
echo '<em>'.get_lang('LDAPOUAttributeFilter').' :</em> ';
echo '<input type="text" name="annee" size="4" maxlength="30" value="'.$annee_base.'"><br />';
echo '<input type="submit" value="'.get_lang('Submit').'">';
echo '</form>';
echo '</div>';
}
/*
} /*
elseif ($annee <> "" && $composante == "" && $etape == "") // form 2 annee != 0; composante= 0 etape = 0
{
Display::display_header($tool_name);
@ -202,101 +200,95 @@ elseif ($annee <> "" && $composante <> "" && $etape == "") // form3 :annee!=0com
echo '</div>';
}
*/
elseif(!empty($annee) && empty($course))
{
Display::display_header($tool_name);
echo '<div style="align:center">';
echo Display::return_icon('course.gif', get_lang('SelectCourseToImportUsersTo')).' '.get_lang('SelectCourseToImportUsersTo').'<br />';
echo '<form method="post" action="'.api_get_self().'?annee='.Security::remove_XSS($annee).'"><br />';
echo '<select name="course">';
$courses = CourseManager::get_courses_list();
foreach($courses as $row)
{
echo '<option value="'.$row['code'].'">'.api_htmlentities($row['title'], ENT_COMPAT, api_get_system_encoding()).'</option>';
}
echo '</select>';
echo '<input type="submit" value="'.get_lang('Submit').'">';
echo '</form>';
echo '</div>';
}
// form4 annee != 0; composante != 0 etape != 0
elseif (!empty($annee) && empty($course)) {
Display::display_header($tool_name);
echo '<div style="align:center">';
echo Display::return_icon('course.gif', get_lang('SelectCourseToImportUsersTo')).' '.get_lang(
'SelectCourseToImportUsersTo'
).'<br />';
echo '<form method="post" action="'.api_get_self().'?annee='.Security::remove_XSS($annee).'"><br />';
echo '<select name="course">';
$courses = CourseManager::get_courses_list();
foreach ($courses as $row) {
echo '<option value="'.$row['code'].'">'.api_htmlentities(
$row['title'],
ENT_COMPAT,
api_get_system_encoding()
).'</option>';
}
echo '</select>';
echo '<input type="submit" value="'.get_lang('Submit').'">';
echo '</form>';
echo '</div>';
} // form4 annee != 0; composante != 0 etape != 0
//elseif ($annee <> "" && $composante <> "" && $etape <> "" && $listeok != 'yes') {
elseif (!empty($annee) && !empty($course) && empty($_POST['confirmed']))
{
Display::display_header($tool_name);
echo '<div style="align: center;">';
echo '<br />';
echo '<br />';
echo '<h3>'.Display::return_icon('group.gif', get_lang('SelectStudents')).' '.get_lang('SelectStudents').'</h3>';
//echo "Connection ...";
$ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError'));
ldap_set_version($ds);
if ($ds) {
$r = false;
$res = ldap_handle_bind($ds, $r);
//$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "(|(edupersonprimaryorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn)(edupersonprimaryorgunitdn=ou=02PEL,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn))");
//echo "(ou=*$annee,ou=$composante)";
$sr = @ ldap_search($ds, $ldap_basedn, "(ou=*$annee)");
$info = ldap_get_entries($ds, $sr);
for ($key = 0; $key < $info["count"]; $key ++) {
$nom_form[] = $info[$key]["sn"][0];//api_utf8_decode($info[$key]["sn"][0], api_get_system_encoding());
$prenom_form[] = $info[$key]["givenname"][0];//api_utf8_decode($info[$key]["givenname"][0], api_get_system_encoding());
$email_form[] = $info[$key]["mail"][0];
// Get uid from dn
//$dn_array=ldap_explode_dn($info[$key]["dn"],1);
//$username_form[] = $dn_array[0]; // uid is first key
$username_form[] = $info[$key]['uid'][0];
$outab[] = $info[$key]["eduPersonPrimaryAffiliation"][0]; // Ici "student"
//$val = ldap_get_values_len($ds, $entry, "userPassword");
//$password_form[] = $val[0];
$password_form[] = $info[$key]['userPassword'][0];
}
ldap_unbind($ds);
/*-----------------------------------------------*/
asort($nom_form);
reset($nom_form);
$statut=5;
include ('ldap_form_add_users_group.php');
} else {
echo '<h4>'.get_lang('UnableToConnectTo').' '.$host.'</h4>';
}
echo '<br /><br />';
elseif (!empty($annee) && !empty($course) && empty($_POST['confirmed'])) {
Display::display_header($tool_name);
echo '<div style="align: center;">';
echo '<br />';
echo '<br />';
echo '<h3>'.Display::return_icon('group.gif', get_lang('SelectStudents')).' '.get_lang('SelectStudents').'</h3>';
//echo "Connection ...";
$ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError'));
ldap_set_version($ds);
if ($ds) {
$r = false;
$res = ldap_handle_bind($ds, $r);
//$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "(|(edupersonprimaryorgunitdn=ou=$etape,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn)(edupersonprimaryorgunitdn=ou=02PEL,ou=$annee,ou=diploma,o=Paris1,$LDAPbasedn))");
//echo "(ou=*$annee,ou=$composante)";
$sr = @ ldap_search($ds, $ldap_basedn, "(ou=*$annee)");
$info = ldap_get_entries($ds, $sr);
for ($key = 0; $key < $info["count"]; $key++) {
$nom_form[] = $info[$key]["sn"][0]; //api_utf8_decode($info[$key]["sn"][0], api_get_system_encoding());
$prenom_form[] = $info[$key]["givenname"][0]; //api_utf8_decode($info[$key]["givenname"][0], api_get_system_encoding());
$email_form[] = $info[$key]["mail"][0];
// Get uid from dn
//$dn_array=ldap_explode_dn($info[$key]["dn"],1);
//$username_form[] = $dn_array[0]; // uid is first key
$username_form[] = $info[$key]['uid'][0];
$outab[] = $info[$key]["eduPersonPrimaryAffiliation"][0]; // Ici "student"
//$val = ldap_get_values_len($ds, $entry, "userPassword");
//$password_form[] = $val[0];
$password_form[] = $info[$key]['userPassword'][0];
}
ldap_unbind($ds);
asort($nom_form);
reset($nom_form);
$statut = 5;
include('ldap_form_add_users_group.php');
} else {
echo '<h4>'.get_lang('UnableToConnectTo').' '.$host.'</h4>';
}
echo '<br /><br />';
echo '<a href="ldap_import_students.php?annee=&composante=&etape=">'.get_lang('BackToNewSearch').'</a>';
echo '<br /><br />';
echo '</div>';
}
elseif (!empty($annee) && !empty($course) && ($_POST['confirmed']=='yes'))
{
$id=$_POST['username_form'];
$UserList=array();
$userid_match_login = array();
foreach ($id as $form_index=>$user_id)
{
if(is_array($_POST['checkboxes']) && in_array($form_index,array_values($_POST['checkboxes'])))
{
$tmp = ldap_add_user($user_id);
$UserList[]= $tmp;
$userid_match_login[$tmp] = $user_id;
}
}
if (!empty($_POST['course']))
{
foreach($UserList as $user_id)
{
CourseManager::add_user_to_course($user_id,$_POST['course']);
}
header('Location: course_information.php?code='.Security::remove_XSS($_POST['course']));
}
/*
} elseif (!empty($annee) && !empty($course) && ($_POST['confirmed'] == 'yes')) {
$id = $_POST['username_form'];
$UserList = array();
$userid_match_login = array();
foreach ($id as $form_index => $user_id) {
if (is_array($_POST['checkboxes']) && in_array($form_index, array_values($_POST['checkboxes']))) {
$tmp = ldap_add_user($user_id);
$UserList[] = $tmp;
$userid_match_login[$tmp] = $user_id;
}
}
$courseInfo = api_get_course_info($_POST['course']);
if (!empty($courseInfo)) {
foreach ($UserList as $user_id) {
CourseManager::add_user_to_course($user_id, $courseInfo['real_id']);
}
header('Location: course_information.php?code='.Security::remove_XSS($_POST['course']));
exit;
} /*
else
{
Display :: display_header($tool_name);
@ -315,15 +307,13 @@ elseif (!empty($annee) && !empty($course) && ($_POST['confirmed']=='yes'))
Display :: display_normal_message($message,false);
}
*/
else
{
Display::display_header($tool_name);
$message=get_lang('NoUserAdded');
Display :: display_normal_message($message,false);
}
echo '<br /><br />';
else {
Display::display_header($tool_name);
$message = get_lang('NoUserAdded');
Display :: display_normal_message($message, false);
}
echo '<br /><br />';
echo '<a href="ldap_import_students.php?annee=&composante=&etape=">'.get_lang('BackToNewSearch').'</a>';
echo '<br /><br />';
}
Display::display_footer();
?>
Display::display_footer();

@ -180,15 +180,16 @@ unset($result);
$sql = "SELECT code,visual_code,title FROM $tbl_course WHERE visual_code LIKE '".$first_letter_course."%' ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code";
if ($_configuration['multiple_access_urls']) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql = "SELECT code, visual_code, title
FROM $tbl_course as course
INNER JOIN $tbl_course_rel_access_url course_rel_url
ON (course_rel_url.course_code= course.code)
WHERE access_url_id = $access_url_id AND (visual_code LIKE '".$first_letter_course."%' ) ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code";
ON (course_rel_url.c_id = course.id)
WHERE access_url_id = $access_url_id AND (visual_code LIKE '".$first_letter_course."%' )
ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code";
}
}
@ -196,7 +197,7 @@ $result = Database::query($sql);
$db_courses = Database::store_result($result);
unset($result);
if ($_configuration['multiple_access_urls']) {
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
@ -205,9 +206,11 @@ if ($_configuration['multiple_access_urls']) {
INNER JOIN $tbl_course as course
ON course.code = course_rel_user.course_code
INNER JOIN $tbl_course_rel_access_url course_rel_url
ON (course_rel_url.course_code= course.code)
WHERE access_url_id = $access_url_id AND course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1'
ORDER BY course.title";
ON (course_rel_url.c_id = course.id)
WHERE access_url_id = $access_url_id AND
course_rel_user.user_id='".$_user['user_id']."' AND
course_rel_user.status='1'
ORDER BY course.title";
}
}
?>

@ -63,6 +63,7 @@ if ($form->validate()) {
$export = $form->exportValues();
$file_type = $export['file_type'];
$course_code = Database::escape_string($export['course_code']);
$courseInfo = api_get_course_info($course_code);
$sql = "SELECT u.user_id AS UserId,
u.lastname AS LastName,
@ -75,7 +76,9 @@ if ($form->validate()) {
u.official_code AS OfficialCode,
u.phone AS Phone";
if (strlen($course_code) > 0) {
$sql .= " FROM $user_table u, $course_user_table cu WHERE u.user_id = cu.user_id AND course_code = '$course_code' AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." ORDER BY lastname,firstname";
$sql .= " FROM $user_table u, $course_user_table cu
WHERE u.user_id = cu.user_id AND c_id = ".$courseInfo['real_id']." AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH."
ORDER BY lastname,firstname";
$filename = 'export_users_'.$course_code.'_'.date('Y-m-d_H-i-s');
} else {
global $_configuration;

@ -27,8 +27,8 @@ $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
if ( isset($_GET['action']) ) {
switch($_GET['action']) {
case 'unsubscribe':
if ( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['course_code']) == STUDENT) {
CourseManager::unsubscribe_user($_GET['user_id'],$_GET['course_code']);
if ( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['courseId']) == STUDENT) {
CourseManager::unsubscribe_user($_GET['user_id'], $_GET['courseId']);
Display::display_normal_message(get_lang('UserUnsubscribed'));
} else {
Display::display_error_message(get_lang('CannotUnsubscribeUserFromCourse'));
@ -106,9 +106,6 @@ if (count($sessions) > 0) {
$tools = '<a href="course_information.php?code='.$course_info['code'].'&id_session='.$id_session.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
'<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>';
/*if (isset($my_course['status']) && $my_course['status'] == STUDENT) {
$tools .= '<a href="user_information.php?action=unsubscribe&course_code='.$course_info['code'].'&user_id='.$user['user_id'].'">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>';
}*/
$row[] = $tools;
$data[] = $row;
}
@ -124,7 +121,7 @@ if (count($sessions) > 0) {
* Show the courses in which this user is subscribed
*/
$sql = 'SELECT * FROM '.$table_course_user.' cu, '.$table_course.' c'.
' WHERE cu.user_id = '.$user['user_id'].' AND cu.course_code = c.code '.
' WHERE cu.user_id = '.$user['user_id'].' AND cu.c_id = c.id '.
' AND cu.relation_type <> '.COURSE_RELATION_TYPE_RRHH.' ';
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
@ -144,9 +141,9 @@ if (Database::num_rows($res) > 0) {
$row[] = api_get_roles_to_string($roles);
$tools = '<a href="course_information.php?code='.$course->code.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
'<a href="'.api_get_path(WEB_COURSE_PATH).$course->directory.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>' .
'<a href="course_edit.php?course_code='.$course->code.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
'<a href="course_edit.php?courseId='.$course->c_id.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
if ( $course->status == STUDENT ) {
$tools .= '<a href="user_information.php?action=unsubscribe&course_code='.$course->code.'&user_id='.$user['user_id'].'">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>';
$tools .= '<a href="user_information.php?action=unsubscribe&courseId='.$course->c_id.'&user_id='.$user['user_id'].'">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>';
}
$row[] = $tools;

@ -672,7 +672,7 @@ if ($display_form) {
// we want to remind inactive users. The $_GET['since'] parameter determines which users have to be warned (i.e the users who have been inactive for x days or more
$since = isset($_GET['since']) ? intval($_GET['since']) : 6;
// getting the users who have to be reminded
$to = Tracking :: get_inactives_students_in_course($_course['id'], $since, api_get_session_id());
$to = Tracking :: get_inactives_students_in_course(api_get_course_int_id(), $since, api_get_session_id());
// setting the variables for the form elements: the users who need to receive the message
foreach ($to as &$user) {
$user = 'USER:'.$user;

@ -446,12 +446,12 @@
//Set headers pdf
$courseCategory = CourseManager::get_course_category($courseInfo['category_code']);
$teacherInfo = CourseManager::get_teacher_list_from_course_code($courseInfo['code']);
$teacherInfo = CourseManager::get_teacher_list_from_course_code($courseInfo['real_id']);
$teacherName = null;
foreach ($teacherInfo as $dados) {
if ($teacherName != null)
$teacherName = $teacherName . " / ";
$teacherName.= $dados['firstname']." ".$dados['lastname'];
$teacherName.= $dados['firstname']." ".$dados['lastname'];
}
// Get data table - Marco - ordenacao fixa - just fullname

@ -131,7 +131,9 @@ if (isset($_GET['move'])) {
// We are moving the course of the user to a different user defined course category (=Sort My Courses).
if (isset($_POST['submit_change_course_category'])) {
if ($ctok == $_POST['sec_token']) {
$courses_controller->change_course_category($_POST['course_2_edit_category'], $_POST['course_categories']);
$courseCode = $_POST['course_2_edit_category'];
$courseInfo = api_get_course_info($courseCode);
$courses_controller->change_course_category($courseInfo['real_id'], $_POST['course_categories']);
}
}

@ -206,11 +206,11 @@ class CoursesController
/**
* Change course category
* render to listing view
* @param string Course code
* @param int Course id
* @param int Category id
*/
public function change_course_category($course_code, $category_id) {
$result = $this->model->store_changecoursecategory($course_code, $category_id);
public function change_course_category($courseId, $category_id) {
$result = $this->model->store_changecoursecategory($courseId, $category_id);
$message = '';
if ($result) { $message = get_lang('EditCourseCategorySucces'); }
$action = 'sortmycourses';

@ -964,8 +964,6 @@ the first name, the last name, the user id
*/
function get_course_users()
{
global $_cid;
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_courseUser = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
@ -979,7 +977,7 @@ function get_course_users()
) ? ' ORDER BY u.firstname, u.lastname' : ' ORDER BY u.lastname, u.firstname';
$sql = "SELECT u.user_id uid, u.lastname lastName, u.firstname firstName, u.username
FROM $tbl_user as u, $tbl_courseUser as cu
WHERE cu.course_code = '".api_get_course_id()."'
WHERE cu.c_id = '".api_get_course_int_id()."'
AND cu.user_id = u.user_id $courseadmin_filter".$order_clause;
$result = Database::query($sql);
while ($user = Database::fetch_array($result)) {

@ -549,28 +549,26 @@ function store_personal_item($day, $month, $year, $hour, $minute, $title, $conte
*/
function get_all_courses_of_user() {
$TABLECOURS = Database :: get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_course_user= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$sql_select_courses = "SELECT c.code k, c.visual_code vc, c.title i, c.tutor_name t,
c.db_name db, c.directory dir, '5' as status
FROM $TABLECOURS c, $tbl_session_course_user srcu
WHERE srcu.id_user='".api_get_user_id()."'
AND c.code=srcu.course_code
UNION
SELECT c.code k, c.visual_code vc, c.title i, c.tutor_name t,
c.db_name db, c.directory dir, cru.status status
FROM $TABLECOURS c, $TABLECOURSUSER cru
WHERE cru.user_id='".api_get_user_id()."'
AND c.code=cru.course_code";
$result = Database::query($sql_select_courses);
while ($row = Database::fetch_array($result)) {
// we only need the database name of the course
$courses[] = array ("db" => $row['db'], "code" => $row['k'], "visual_code" => $row['vc'], "title" => $row['i'], "directory" => $row['dir'], "status" => $row['status']);
}
return $courses;
$TABLECOURS = Database :: get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_user= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql_select_courses = "SELECT c.code k, c.visual_code vc, c.title i, c.tutor_name t,
c.db_name db, c.directory dir, '5' as status
FROM $TABLECOURS c, $tbl_session_course_user srcu
WHERE srcu.id_user='".api_get_user_id()."'
AND c.code=srcu.course_code
UNION
SELECT c.code k, c.visual_code vc, c.title i, c.tutor_name t,
c.db_name db, c.directory dir, cru.status status
FROM $TABLECOURS c, $TABLECOURSUSER cru
WHERE cru.user_id='".api_get_user_id()."'
AND c.id = cru.c_id";
$result = Database::query($sql_select_courses);
while ($row = Database::fetch_array($result)) {
// we only need the database name of the course
$courses[] = array ("db" => $row['db'], "code" => $row['k'], "visual_code" => $row['vc'], "title" => $row['i'], "directory" => $row['dir'], "status" => $row['status']);
}
return $courses;
}
@ -584,14 +582,13 @@ function get_courses_of_user() {
$TABLECOURS = Database :: get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql_select_courses = "SELECT course.code k, course.visual_code vc,
course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status
FROM $TABLECOURS course,
$TABLECOURSUSER course_rel_user
WHERE course.code = course_rel_user.course_code
AND course_rel_user.user_id = '".api_get_user_id()."'";
course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status
FROM $TABLECOURS course,
$TABLECOURSUSER course_rel_user
WHERE course.id = course_rel_user.c_id
AND course_rel_user.user_id = '".api_get_user_id()."'";
$result = Database::query($sql_select_courses);
while ($row = Database::fetch_array($result))
{
while ($row = Database::fetch_array($result)) {
// we only need the database name of the course
$courses[] = array ("db" => $row['db'], "code" => $row['k'], "visual_code" => $row['vc'], "title" => $row['i'], "directory" => $row['dir'], "status" => $row['status']);
}

@ -50,35 +50,36 @@ if (!empty($course)) {
$users = array();
$course_id = api_get_course_int_id();
if (empty($session_id)) {
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri,t3.status
FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_course_user t3
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri,t3.status
FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_course_user t3
WHERE t2.c_id = $course_id AND
t1.user_id=t2.user_id AND
t3.user_id=t2.user_id AND
t3.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
t3.course_code = '".$_course['sysCode']."' AND
t2.last_connection>'".$date_inter."' $extra_condition
ORDER BY username";
t1.user_id=t2.user_id AND
t3.user_id=t2.user_id AND
t3.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
t3.c_id = '".$course_id."' AND
t2.last_connection>'".$date_inter."' $extra_condition
ORDER BY username";
$result = Database::query($query);
$users = Database::store_result($result);
} else {
// select learners
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_session_course_user t3
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_session_course_user t3
WHERE
t2.c_id = $course_id AND
t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND
t3.id_session = '".$session_id."' AND
t3.course_code = '".$_course['sysCode']."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
t2.c_id = $course_id AND
t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND
t3.id_session = '".$session_id."' AND
t3.c_id = '".$course_id."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
$result = Database::query($query);
while ($learner = Database::fetch_array($result)) {
$users[$learner['user_id']] = $learner;
}
// select session coach
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session t3
WHERE t2.c_id = $course_id AND
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri
FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session t3
WHERE t2.c_id = $course_id AND
t1.user_id=t2.user_id AND t3.id_coach=t2.user_id AND t3.id = '".$session_id."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
$result = Database::query($query);
if ($coach = Database::fetch_array($result)) {
@ -89,7 +90,7 @@ if (!empty($course)) {
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri
FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session_course_user t3
WHERE
t2.c_id = $course_id AND
t2.c_id = $course_id AND
t1.user_id=t2.user_id
AND t3.id_user=t2.user_id AND t3.status=2
AND t3.id_session = '".$session_id."'
@ -109,7 +110,7 @@ if (!empty($course)) {
$user_id = $enreg['user_id'];
require 'header_frame.inc.php';
?>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="data_table">
<tr><th colspan="2"><?php echo get_lang('Connected'); ?></th></tr>
@ -118,7 +119,7 @@ if (!empty($course)) {
if (empty($session_id)) {
$status = $user['status'];
} else {
$status = CourseManager::is_course_teacher($user['user_id'], $_SESSION['_course']['id']) ? 1 : 5;
$status = CourseManager::is_course_teacher($user['user_id'], api_get_course_int_id()) ? 1 : 5;
}
$user_image = UserManager::get_user_picture_path_by_id($user['user_id'], 'web', false, true);
$file_url = $user_image['dir'].$user_image['file'];

@ -32,6 +32,7 @@ $currentCourseRepository = $_course['path'];
$is_allowedToEdit = $is_courseAdmin || $is_platformAdmin;
$course_code = api_get_course_id();
$courseId = api_get_course_int_id();
$course_access_settings = CourseManager :: get_access_settings($course_code);
//LOGIC FUNCTIONS
@ -68,7 +69,11 @@ $q_tutor = Database::query($s_select_course_tutor_name);
$s_tutor = Database::result($q_tutor, 0, 'tutor_name');
$target_name = api_sort_by_first_name() ? 'firstname' : 'lastname';
$s_sql_course_titular = "SELECT DISTINCT username, lastname, firstname FROM $tbl_user as user, $tbl_course_user as course_rel_user WHERE (course_rel_user.status='1') AND user.user_id=course_rel_user.user_id AND course_code='".$course_code."' ORDER BY ".$target_name." ASC";
$s_sql_course_titular = "
SELECT DISTINCT username, lastname, firstname
FROM $tbl_user as user, $tbl_course_user as course_rel_user
WHERE (course_rel_user.status='1') AND user.user_id=course_rel_user.user_id AND c_id ='".$courseId."'
ORDER BY ".$target_name." ASC";
$q_result_titulars = Database::query($s_sql_course_titular);
if (Database::num_rows($q_result_titulars) == 0) {

@ -34,9 +34,9 @@ $variable = 'accept_legal_'.$user_id.'_'.$course_info['real_id'].'_'.$session_id
if ($form->validate()) {
$accept_legal = $form->exportValue('accept_legal');
if ($accept_legal == 1) {
CourseManager::save_user_legal($user_id, $course_code, $session_id);
CourseManager::save_user_legal($user_id, $course_info, $session_id);
if (api_check_user_access_to_legal($course_info['visibility'])) {
Session::write($variable, true);
}
@ -51,34 +51,34 @@ if (api_check_user_access_to_legal($course_info['visibility']) && Session::read(
$url = api_get_course_url($course_code, $session_id);
if (empty($session_id)) {
if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_code);
if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info);
if ($user_accepted_legal || $user_pass_open_course) {
//Redirect to course home
header('Location: '.$url);
exit;
}
} else {
api_not_allowed();
}
}
} else {
api_not_allowed();
}
} else {
if (api_is_platform_admin()) {
header('Location: '.$url);
}
$user_session_status = SessionManager::get_user_status_in_course_session($user_id, $course_code, $session_id);
if (isset($user_session_status) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_code, $session_id);
if (isset($user_session_status) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info, $session_id);
if ($user_accepted_legal || $user_pass_open_course) {
//Redirect to course session home
header('Location: '.$url);
exit;
}
}
} else {
api_not_allowed();
}
}
}
Display :: display_header($nameTools);

@ -137,7 +137,7 @@ class CourseRestorer
$this->destination_course_id = $course_info['real_id'];
//Getting first teacher (for the forums)
$teacher_list = CourseManager::get_teacher_list_from_course_code($course_info['code']);
$teacher_list = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
$this->first_teacher_id = api_get_user_id();
if (!empty($teacher_list)) {
foreach ($teacher_list as $teacher) {

@ -74,7 +74,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
$table_cu = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$user_info = api_get_user_info();
$course_info = api_get_course_info();
$sql = 'SELECT * FROM '.$table_c.' c, '.$table_cu.' cu WHERE cu.course_code = c.code';
$sql = 'SELECT * FROM '.$table_c.' c, '.$table_cu.' cu WHERE cu.c_id = c.id';
if (!api_is_platform_admin()) {
$sql .= ' AND cu.status=1 ';
}

@ -572,10 +572,7 @@ function display_add_form()
api_get_session_id()
);
} else {
$complete_user_list_for_dropbox = CourseManager :: get_teacher_list_from_course_code(
$course_info['code'],
false
);
$complete_user_list_for_dropbox = CourseManager :: get_teacher_list_from_course_code($course_info['real_id'], false);
}
}

@ -4230,11 +4230,10 @@ class Exercise
$mail_content = $msg1;
$subject = get_lang('OpenQuestionsAttempted');
$teachers = array();
if (api_get_session_id()) {
$teachers = CourseManager::get_coach_list_from_course_code($coursecode, api_get_session_id());
} else {
$teachers = CourseManager::get_teacher_list_from_course_code($coursecode);
$teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
}
if (!empty($teachers)) {
@ -4313,11 +4312,10 @@ class Exercise
$mail_content = $msg1;
$subject = get_lang('OralQuestionsAttempted');
$teachers = array();
if (api_get_session_id()) {
$teachers = CourseManager::get_coach_list_from_course_code($coursecode, api_get_session_id());
} else {
$teachers = CourseManager::get_teacher_list_from_course_code($coursecode);
$teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
}
if (!empty($teachers)) {

@ -1208,7 +1208,7 @@ function get_exam_results_data($from, $number_of_items, $column, $direction, $ex
return $rowx[0];
}
$teacher_list = CourseManager::get_teacher_list_from_course_code(api_get_course_id());
$teacher_list = CourseManager::get_teacher_list_from_course_code(api_get_course_int_id());
$teacher_id_list = array();
foreach ($teacher_list as $teacher) {
$teacher_id_list[] = $teacher['user_id'];
@ -2044,7 +2044,9 @@ function get_number_students_answer_count($answer_id, $question_id, $exercise_id
}
$sql = "SELECT $select_condition
FROM $track_exercises e INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id) INNER JOIN $course_user cu
FROM $track_exercises e
INNER JOIN $track_attempt a ON (a.exe_id = e.exe_id)
INNER JOIN $course_user cu
ON cu.c_id = a.c_id AND cu.user_id = exe_user_id
WHERE exe_exo_id = $exercise_id AND
a.c_id = $courseId AND

@ -1843,14 +1843,15 @@ function get_thread_users_details($thread_id)
} else {
$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, thread_id
FROM $t_posts , $t_users user, $t_course_user course_user
WHERE poster_id = user.user_id
AND user.user_id = course_user.user_id
AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
AND thread_id = '".Database::escape_string($thread_id)."'
AND course_user.status NOT IN('1') AND
c_id = $course_id AND
course_code = '".$course_code."' $orderby";
FROM $t_posts, $t_users user, $t_course_user course_user
WHERE poster_id = user.user_id AND
course_user.c_id = $t_posts.c_id
user.user_id = course_user.user_id AND
course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
thread_id = '".Database::escape_string($thread_id)."' AND
course_user.status NOT IN('1') AND
course_user.c_id = $course_id
$orderby";
}
$result = Database::query($sql);
@ -1905,22 +1906,22 @@ function get_thread_users_qualify($thread_id)
$orderby ";
} else {
$sql = "SELECT DISTINCT post.poster_id, user.lastname, user.firstname, post.thread_id,user.user_id,qualify.qualify
FROM $t_posts post,
$t_qualify qualify,
$t_users user,
$t_course_user course_user
WHERE
post.poster_id = user.user_id
AND post.poster_id = qualify.user_id
AND user.user_id = course_user.user_id
AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
AND qualify.thread_id = '".Database::escape_string($thread_id)."'
AND post.thread_id = '".Database::escape_string($thread_id)."'
AND course_user.status not in('1')
AND course_code = '".$course_code."' AND
qualify.c_id = $course_id AND
post.c_id = $course_id
$orderby ";
FROM $t_posts post,
$t_qualify qualify,
$t_users user,
$t_course_user course_user
WHERE
post.poster_id = user.user_id
AND post.poster_id = qualify.user_id
AND user.user_id = course_user.user_id
AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
AND qualify.thread_id = '".Database::escape_string($thread_id)."'
AND post.thread_id = '".Database::escape_string($thread_id)."'
AND course_user.status not in('1')
AND course_user.c_id = $course_id AND
qualify.c_id = $course_id AND
post.c_id = $course_id
$orderby ";
}
$result = Database::query($sql);
@ -1973,23 +1974,23 @@ function get_thread_users_not_qualify($thread_id)
$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, post.thread_id
FROM $t_posts post , $t_users user, $t_session_rel_user session_rel_user_rel_course
WHERE poster_id = user.user_id
AND user.user_id NOT IN (".$cad.")
AND user.user_id = session_rel_user_rel_course.id_user
AND session_rel_user_rel_course.status<>'2'
AND session_rel_user_rel_course.id_user NOT IN ($user_to_avoid)
AND post.thread_id = '".Database::escape_string($thread_id)."'
AND id_session = '".api_get_session_id()."'
AND course_code = '".$course_code."' AND post.c_id = $course_id $orderby ";
AND user.user_id NOT IN (".$cad.")
AND user.user_id = session_rel_user_rel_course.id_user
AND session_rel_user_rel_course.status<>'2'
AND session_rel_user_rel_course.id_user NOT IN ($user_to_avoid)
AND post.thread_id = '".Database::escape_string($thread_id)."'
AND id_session = '".api_get_session_id()."'
AND course_code = '".$course_code."' AND post.c_id = $course_id $orderby ";
} else {
$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, post.thread_id
FROM $t_posts post, $t_users user,$t_course_user course_user
WHERE post.poster_id = user.user_id
FROM $t_posts post, $t_users user,$t_course_user course_user
WHERE post.poster_id = user.user_id
AND user.user_id NOT IN (".$cad.")
AND user.user_id = course_user.user_id
AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
AND post.thread_id = '".Database::escape_string($thread_id)."'
AND course_user.status not in('1')
AND course_code = '".$course_code."' AND post.c_id = $course_id $orderby";
AND course_user.c_id = $course_id AND post.c_id = $course_id $orderby";
}
$result = Database::query($sql);

@ -81,7 +81,7 @@ if (isset($current_thread['thread_id'])){
}
}
$user_status = api_get_status_of_user_in_course($row['user_id'], api_get_course_id());
$user_status = api_get_status_of_user_in_course($row['user_id'], api_get_course_int_id());
$current_qualify_thread = show_qualify('1', $row['poster_id'],$_GET['thread']);
if (api_is_allowed_to_edit(null,true) && $origin != 'learnpath') {

@ -30,7 +30,7 @@ $clean_thread_id = intval($_GET['thread']);
$group_id = api_get_group_id();
$locked = api_resource_is_locked_by_gradebook($clean_thread_id, LINK_FORUM_THREAD);
$locked = api_resource_is_locked_by_gradebook($clean_thread_id, LINK_FORUM_THREAD);
foreach ($rows as $post) {
// The style depends on the status of the message: approved or not.
@ -72,14 +72,14 @@ foreach ($rows as $post) {
echo "<a href=\"editpost.php?".api_get_cidreq()."&amp;gidReq=".Security::remove_XSS($_GET['gidReq'])."&amp;forum=".$clean_forum_id."&amp;thread=".$clean_thread_id."&amp;origin=".$origin."&amp;post=".$post['post_id']."&amp;id_attach=".$id_attach."\">".Display::return_icon('edit.png',get_lang('Edit'), array(), ICON_SIZE_SMALL)."</a>";
}
}
if (GroupManager::is_tutor_of_group(api_get_user_id(), $group_id) OR api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session'])) {
if (GroupManager::is_tutor_of_group(api_get_user_id(), $group_id) OR api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session'])) {
if ($locked == false) {
echo "<a href=\"".api_get_self()."?".api_get_cidreq()."&amp;gidReq=".Security::remove_XSS($_GET['gidReq'])."&amp;forum=".$clean_forum_id."&amp;thread=".$clean_thread_id."&amp;action=delete&amp;content=post&amp;id=".$post['post_id']."\" onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('DeletePost'), ENT_QUOTES))."')) return false;\">".Display::return_icon('delete.png',get_lang('Delete'), array(), ICON_SIZE_SMALL)."</a>";
}
}
if (api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session'])) {
if (api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session'])) {
display_visible_invisible_icon('post', $post['post_id'], $post['visible'],array('forum'=>$clean_forum_id,'thread'=>$clean_thread_id ));
echo "";
if ($count>0) {
@ -87,13 +87,13 @@ foreach ($rows as $post) {
}
}
$userinf=api_get_user_info($post['user_id']);
$user_status=api_get_status_of_user_in_course($post['user_id'],api_get_course_id());
if (api_is_allowed_to_edit(null,true)) {
$user_status=api_get_status_of_user_in_course($post['user_id'],api_get_course_int_id());
if (api_is_allowed_to_edit(null,true)) {
//if ($count>0 && $user_status!=1) {
if ($count>0) {
$current_qualify_thread=show_qualify('1', $post['user_id'],$_GET['thread']);
if ($locked == false) {
$current_qualify_thread=show_qualify('1', $post['user_id'],$_GET['thread']);
if ($locked == false) {
echo "<a href=\"forumqualify.php?".api_get_cidreq()."&amp;forum=".$clean_forum_id."&amp;thread=".$clean_thread_id."&amp;action=list&amp;post=".$post['post_id']."&amp;user=".$post['user_id']."&amp;user_id=".$post['user_id']."&amp;origin=".$origin."&amp;idtextqualify=".$current_qualify_thread."\" >".Display::return_icon('new_test_small.gif',get_lang('Qualify'))."</a>";
}
}

@ -87,7 +87,7 @@ foreach ($rows as $post) {
$count++;
}
$locked = api_resource_is_locked_by_gradebook($clean_thread_id, LINK_FORUM_THREAD);
$locked = api_resource_is_locked_by_gradebook($clean_thread_id, LINK_FORUM_THREAD);
/* NAVIGATION CONTROLS */
@ -173,7 +173,7 @@ $id_attach = !empty($attachment_list)?$attachment_list['id']:'';
// The user who posted it can edit his thread only if the course admin allowed this in the properties of the forum
// The course admin him/herself can do this off course always
//if (($current_forum['allow_edit']==1 AND $rows[$display_post_id]['user_id']==$_user['user_id']) or (api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session']))) {
if ( GroupManager::is_tutor_of_group(api_get_user_id(), $group_id) OR ($current_forum['allow_edit']==1 AND $row['user_id']==$_user['user_id']) or (api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session']))) {
if ( GroupManager::is_tutor_of_group(api_get_user_id(), $group_id) OR ($current_forum['allow_edit']==1 AND $row['user_id']==$_user['user_id']) or (api_is_allowed_to_edit(false,true) && !(api_is_course_coach() && $current_forum['session_id']!=$_SESSION['id_session']))) {
if ($locked == false) {
echo "<a href=\"editpost.php?".api_get_cidreq()."&amp;gidReq=".Security::remove_XSS($_GET['gidReq'])."&amp;forum=".$clean_forum_id."&amp;thread=".$clean_thread_id."&amp;origin=".$origin."&amp;post=".$rows[$display_post_id]['post_id']."&amp;id_attach=".$id_attach."\">".Display::return_icon('edit.png',get_lang('Edit'), array(), ICON_SIZE_SMALL)."</a>";
}
@ -203,13 +203,13 @@ if (GroupManager::is_tutor_of_group(api_get_user_id(), $group_id) OR api_is_allo
}
}
$userinf=api_get_user_info($rows[$display_post_id]['user_id']);
$user_status=api_get_status_of_user_in_course($rows[$display_post_id]['user_id'],api_get_course_id());
$user_status=api_get_status_of_user_in_course($rows[$display_post_id]['user_id'],api_get_course_int_id());
if (api_is_allowed_to_edit(null,true)) {
if ($post_id > $post_minor ) {
//if ($user_status!=1) {
$current_qualify_thread=show_qualify('1', $rows[$display_post_id]['user_id'],$_GET['thread']);
if ($locked == false) {
//if ($user_status!=1) {
$current_qualify_thread=show_qualify('1', $rows[$display_post_id]['user_id'],$_GET['thread']);
if ($locked == false) {
echo "<a href=\"forumqualify.php?".api_get_cidreq()."&amp;forum=".$clean_forum_id."&amp;thread=".$clean_thread_id."&amp;action=list&amp;post=".$rows[$display_post_id]['post_id']."&amp;user=".$rows[$display_post_id]['user_id']."&amp;user_id=".$rows[$display_post_id]['user_id']."&amp;origin=".$origin."&amp;idtextqualify=".$current_qualify_thread."\" >".Display::return_icon('new_test_small.gif',get_lang('Qualify'))."</a>";
}
//}

@ -15,8 +15,6 @@
class Category implements GradebookItem
{
// PROPERTIES
private $id;
private $name;
private $description;
@ -30,7 +28,7 @@ class Category implements GradebookItem
private $skills = array();
private $grade_model_id;
function __construct() {
public function __construct() {
}
// GETTERS AND SETTERS
@ -97,8 +95,19 @@ class Category implements GradebookItem
public function set_course_code ($course_code) {
$this->course_code = $course_code;
$courseInfo = api_get_course_info($course_code);
$this->course_id = $courseInfo['real_id'];
}
public function set_course_id($courseId) {
$this->course_id = $courseId;
}
public function get_course_id() {
return $this->course_id;
}
public function set_certificate_min_score ($min_score=null) {
$this->certificate_min_score = $min_score;
}
@ -278,8 +287,8 @@ class Category implements GradebookItem
}
private static function create_category_objects_from_sql_result($result) {
$allcat=array();
while ($data=Database::fetch_array($result)) {
$allcat = array();
while ($data = Database::fetch_array($result)) {
$cat= new Category();
$cat->set_id($data['id']);
$cat->set_name($data['name']);
@ -547,14 +556,16 @@ class Category implements GradebookItem
/**
* Shows all information of an category
*/
public function shows_all_information_an_category ($selectcat='') {
if($selectcat=='') {
public function shows_all_information_an_category($selectcat='') {
if ($selectcat=='') {
return null;
} else {
$tbl_category=Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$sql='SELECT name,description,user_id,course_code,parent_id,weight,visible,certif_min_score,session_id FROM '.$tbl_category.' c WHERE c.id='.intval($selectcat);
$result=Database::query($sql);
$row=Database::fetch_array($result,'ASSOC');
$sql = 'SELECT name,description,user_id,course_code,parent_id,weight,visible,certif_min_score,session_id
FROM '.$tbl_category.' c
WHERE c.id = '.intval($selectcat);
$result = Database::query($sql);
$row = Database::fetch_array($result,'ASSOC');
return $row;
}
}
@ -577,12 +588,12 @@ class Category implements GradebookItem
if (api_is_allowed_to_edit()) {
$parent = Category::load($parent);
$code = $parent[0]->get_course_code();
if (isset($code) && $code != '0') {
$courseId = $parent[0]->get_course_id();
if (isset($courseId) && !empty($courseId)) {
$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql .= ' AND user_id IN ('
.' SELECT user_id FROM '.$main_course_user_table
." WHERE course_code = '".Database::escape_string($code)."'"
." WHERE c_id = '".Database::escape_string($courseId)."'"
.' AND status = '.COURSEMANAGER
.')';
} else {
@ -743,11 +754,10 @@ class Category implements GradebookItem
// courses
$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$sql = 'SELECT *'
.' FROM '.$tbl_grade_categories
.' WHERE parent_id = 0';
$sql = 'SELECT * FROM '.$tbl_grade_categories.' WHERE parent_id = 0';
if (!api_is_allowed_to_edit()) {
$sql .= ' AND visible = 1';
//proceed with checks on optional parameters course & session
@ -764,12 +774,13 @@ class Category implements GradebookItem
}
} else {
//no optional parameter, proceed as usual
$sql .= ' AND course_code in'
.' (SELECT course_code'
.' FROM '.$main_course_user_table
.' WHERE user_id = '.intval($stud_id)
.' AND status = '.STUDENT
.')';
$sql .= ' AND course_code IN
(
SELECT course.code
FROM '.$main_course_user_table.' course_user
INNER JOIN '.$course_table.' course ON (course.id AND course_user.c_id)
WHERE user_id = '.intval($stud_id).' AND status = '.STUDENT
.')';
}
} elseif (api_is_allowed_to_edit() && !api_is_platform_admin()) {
//proceed with checks on optional parameters course & session
@ -786,8 +797,7 @@ class Category implements GradebookItem
}
} else {
$sql .= ' AND course_code in'
.' (SELECT course_code'
.' FROM '.$main_course_user_table
.' (SELECT course_code FROM '.$main_course_user_table
.' WHERE user_id = '.api_get_user_id()
.' AND status = '.COURSEMANAGER
.')';
@ -798,13 +808,11 @@ class Category implements GradebookItem
} else {
$sql.=' AND coalesce(session_id,0)=0';
}
}
$result = Database::query($sql);
$cats = Category::create_category_objects_from_sql_result($result);
// course independent categories
// Course independent categories
if (empty($course_code)) {
$cats = Category::get_independent_categories_with_result_for_student (0, $stud_id, $cats);
}
@ -823,25 +831,25 @@ class Category implements GradebookItem
return Category::load(null,null,$course_code,0,null,$session_id);
}
// courses
// Courses
$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql = 'SELECT *'
.' FROM '.$tbl_grade_categories
.' WHERE parent_id = 0';
$sql = 'SELECT * FROM '.$tbl_grade_categories.' WHERE parent_id = 0';
if (!empty($course_code)) {
$sql .= " AND course_code = '".Database::escape_string($course_code)."' ";
if (!empty($session_id)) {
$sql .= " AND session_id = ".(int)$session_id;
}
} else {
$sql .= ' AND course_code in'
.' (SELECT course_code'
.' FROM '.$main_course_user_table
.' WHERE user_id = '.intval($user_id)
.')';
$sql .= ' AND course_code IN
(
SELECT course.code
FROM '.$main_course_user_table.' course_user
INNER JOIN '.$course_table.' course ON (course.id AND course_user.c_id)
WHERE user_id = '.intval($stud_id).' AND status = '.STUDENT
.')';
}
$result = Database::query($sql);
$cats = Category::create_category_objects_from_sql_result($result);
@ -1030,17 +1038,17 @@ class Category implements GradebookItem
$tbl_main_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$sql = 'SELECT DISTINCT(code), title FROM '.$tbl_main_courses.' cc, '.$tbl_main_course_user.' cu'
.' WHERE cc.code = cu.course_code'
.' AND cu.status = '.COURSEMANAGER;
$sql = 'SELECT DISTINCT(code), title
FROM '.$tbl_main_courses.' cc, '.$tbl_main_course_user.' cu
WHERE cc.c_id = cu.id AND cu.status = '.COURSEMANAGER;
if (!api_is_platform_admin()) {
$sql .= ' AND cu.user_id = '.$user_id;
}
$sql .= ' AND cc.code NOT IN'
.' (SELECT course_code FROM '.$tbl_grade_categories
.' WHERE parent_id = 0'
// .' AND user_id = '.$user_id
.' AND course_code IS NOT null)';
$sql .= ' AND cc.code NOT IN
(
SELECT course_code FROM '.$tbl_grade_categories.'
WHERE parent_id = 0 AND course_code IS NOT null
)';
$result = Database::query($sql);
$cats=array();
@ -1061,20 +1069,18 @@ class Category implements GradebookItem
$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$sql = 'SELECT DISTINCT(code), title FROM '.$tbl_main_courses.' cc, '.$tbl_main_course_user.' cu'
.' WHERE cc.code = cu.course_code'
.' WHERE cc.id = cu.c_id'
.' AND cu.status = '.COURSEMANAGER;
if (!api_is_platform_admin()) {
$sql .= ' AND cu.user_id = '.intval($user_id);
}
$result = Database::query($sql);
$cats=array();
$cats = array();
while ($data=Database::fetch_array($result)) {
$cats[] = array ($data['code'], $data['title']);
}
return $cats;
}
/**

@ -20,10 +20,10 @@ class Evaluation implements GradebookItem
private $created_at;
private $weight;
private $eval_max;
private $visible;
private $visible;
private $evaluation_type_id;
function __construct() {
function __construct() {
}
// GETTERS AND SETTERS
@ -63,23 +63,23 @@ class Evaluation implements GradebookItem
public function get_max() {
return $this->eval_max;
}
public function get_type() {
return $this->type;
}
}
public function is_visible() {
return $this->visible;
}
public function get_locked() {
return $this->locked;
}
public function is_locked() {
return isset($this->locked) && $this->locked == 1 ? true : false ;
}
}
public function set_id($id) {
$this->id = $id;
}
@ -119,23 +119,23 @@ class Evaluation implements GradebookItem
public function set_visible ($visible) {
$this->visible = $visible;
}
public function set_type ($type) {
$this->type = $type;
}
public function set_locked ($locked) {
$this->locked = $locked;
}
public function get_evaluation_type_id() {
return isset($this->evaluation_type_id) ? $this->evaluation_type_id : 0;
}
public function set_evaluation_type_id($id) {
$this->evaluation_type_id = intval($id);
}
// CRUD FUNCTIONS
/**
@ -189,7 +189,7 @@ class Evaluation implements GradebookItem
else $sql .= ' WHERE';
$sql .= " name = '".Database::escape_string($name)."'";
$paramcount ++;
}
}
$result = Database::query($sql);
$alleval = Evaluation::create_evaluation_objects_from_sql_result($result);
return $alleval;
@ -212,7 +212,7 @@ class Evaluation implements GradebookItem
$eval->set_visible($data['visible']);
$eval->set_type($data['type']);
$eval->set_locked($data['locked']);
$alleval[]=$eval;
}
}
@ -236,10 +236,10 @@ class Evaluation implements GradebookItem
}
if (isset($this->category)) {
$sql .= ', category_id';
}
$sql .= ', created_at';
}
$sql .= ', created_at';
$sql .= ', evaluation_type_id';
$sql .= ',type';
$sql .= ") VALUES ('".Database::escape_string($this->get_name())."'"
.','.intval($this->get_user_id())
@ -255,15 +255,15 @@ class Evaluation implements GradebookItem
if (isset($this->category)) {
$sql .= ','.intval($this->get_category_id());
}
$sql .= ','.intval($this->get_evaluation_type_id());
if (empty($this->type)) {
$this->type = 'evaluation';
}
$sql .= ", '".api_get_utc_datetime()."'";
$sql .= ',\''.Database::escape_string($this->type).'\'';
$sql .= ")";
$this->type = 'evaluation';
}
$sql .= ", '".api_get_utc_datetime()."'";
$sql .= ',\''.Database::escape_string($this->type).'\'';
$sql .= ")";
Database::query($sql);
$this->set_id(Database::insert_id());
} else {
@ -320,7 +320,7 @@ class Evaluation implements GradebookItem
.', visible = '.intval($this->is_visible())
.' WHERE id = '.intval($this->id);
//recorded history
$eval_log=new Evaluation();
$eval_log->add_evaluation_log($this->id);
Database::query($sql);
@ -335,8 +335,6 @@ class Evaluation implements GradebookItem
Database::query($sql);
}
// OTHER FUNCTIONS
/**
* Check if an evaluation name (with the same parent category) already exists
* @param $name name to check (if not given, the name property of this object will be checked)
@ -354,13 +352,12 @@ class Evaluation implements GradebookItem
if (api_is_allowed_to_edit()) {
$parent = Category::load($parent);
$code = $parent[0]->get_course_code();
if (isset($code) && $code != '0') {
$courseId = $parent[0]->get_course_id();
if (isset($courseId) && $courseId != '0') {
$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql .= ' AND user_id IN ('
.' SELECT user_id FROM '.$main_course_user_table
." WHERE course_code = '".Database::escape_string($code)."'"
.' AND status = '.COURSEMANAGER
$sql .= " AND user_id IN (
SELECT user_id FROM $main_course_user_table
WHERE c_id = ".Database::escape_string($courseId)." AND status = ".COURSEMANAGER
.')';
} else {
$sql .= ' AND user_id = '.api_get_user_id();
@ -512,7 +509,7 @@ class Evaluation implements GradebookItem
}
$this->save();
}
/**
* Retrieve evaluations where a student has results for
* and return them as an array of Evaluation objects
@ -588,18 +585,18 @@ class Evaluation implements GradebookItem
public function get_icon_name() {
return $this->has_results() ? 'evalnotempty' : 'evalempty';
}
/**
* Locks an evaluation, only one who can unlock it is the platform administrator.
* @param int locked 1 or unlocked 0
*
* Locks an evaluation, only one who can unlock it is the platform administrator.
* @param int locked 1 or unlocked 0
*
**/
function lock($locked) {
$table_evaluation = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$sql = "UPDATE $table_evaluation SET locked = '".intval($locked)."' WHERE id='".intval($this->id)."'";
Database::query($sql);
}
function check_lock_permissions() {
if (api_is_platform_admin()) {
return true;
@ -609,8 +606,8 @@ class Evaluation implements GradebookItem
}
}
}
function delete_linked_data() {
}
}

@ -164,9 +164,9 @@ class ExerciseLink extends AbstractLink
public function get_link() {
//status student
$user_id = api_get_user_id();
$course_code = $this->get_course_code();
$status_user=api_get_status_of_user_in_course ($user_id, $course_code);
$session_id =api_get_session_id();
//$course_code = $this->get_course_code();
$status_user = api_get_status_of_user_in_course($user_id, $this->course_id);
$session_id = api_get_session_id();
$url = api_get_path(WEB_PATH).'main/gradebook/exercise_jump.php?session_id='.$session_id.'&cidReq='.$this->get_course_code().'&gradebook=view&exerciseId='.$this->get_ref_id();
if ((!api_is_allowed_to_edit() && $this->calc_score(api_get_user_id()) == null) || $status_user!=1) {
$url .= '&amp;doexercise='.$this->get_ref_id();

@ -80,21 +80,22 @@ class Result
$tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
$tbl_course_rel_course = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_rel_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
if (is_null($id ) && is_null($user_id) && !is_null($evaluation_id)) {
$sql_verified_if_exist_evaluation = 'SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE evaluation_id="'.Database::escape_string($evaluation_id).'";';
$res_verified_if_exist_evaluation = Database::query($sql_verified_if_exist_evaluation);
$info_verified_if_exist_evaluation = Database::result($res_verified_if_exist_evaluation,0,0);
if ($info_verified_if_exist_evaluation != 0 ) {
$sql_course_rel_user= '';
if (api_get_session_id()) {
$sql_course_rel_user = 'SELECT course_code, id_user as user_id, status FROM '.$tbl_session_rel_course_user.'
$sql_course_rel_user = 'SELECT course_code, id_user as user_id, status FROM '.$tbl_session_rel_course_user.'
WHERE status=0 AND course_code="'.api_get_course_id().'" AND id_session='.api_get_session_id();
} else {
$sql_course_rel_user = 'SELECT course_code,user_id,status FROM '.$tbl_course_rel_course.' WHERE status ="'.STUDENT.'" AND course_code="'.api_get_course_id().'" ';
$sql_course_rel_user = 'SELECT course_code, user_id, status
FROM '.$tbl_course_rel_course.'
WHERE status ="'.STUDENT.'" AND c_id ="'.api_get_course_int_id().'" ';
}
$res_course_rel_user = Database::query($sql_course_rel_user);
@ -109,7 +110,7 @@ class Result
$res_verified = Database::query($sql_verified);
$info_verified = Database::result($res_verified,0,0);
if ($info_verified == 0) {
$sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,created_at,score)
$sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,created_at,score)
VALUES ("'.intval($list_user_course_list[$i]['user_id']).'","'.intval($evaluation_id).'","'.$current_date.'",0);';
$res_insert=Database::query($sql_insert);
}
@ -172,7 +173,7 @@ class Result
if (isset($this->score)) {
$sql .= ", ".$this->get_score();
}
$sql .= ")";
$sql .= ")";
Database::query($sql);
} else {
die('Error in Result add: required field empty');
@ -226,7 +227,7 @@ class Result
*/
public function save() {
$tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
$sql = 'UPDATE '.$tbl_grade_results.'
$sql = 'UPDATE '.$tbl_grade_results.'
SET user_id = '.$this->get_user_id()
.', evaluation_id = '.$this->get_evaluation_id()
.', score = ';
@ -236,7 +237,7 @@ class Result
$sql .= 'null';
}
$sql .= ' WHERE id = '.$this->id;
// no need to update creation date
// no need to update creation date
Database::query($sql);
}

@ -281,7 +281,8 @@ class DisplayGradebook
$my_category = $catobj->shows_all_information_an_category($catobj->get_id());
$user_id = api_get_user_id();
$course_code = $my_category['course_code'];
$status_user = api_get_status_of_user_in_course ($user_id,$course_code);
$courseInfo = api_get_course_info($course_code);
$status_user = api_get_status_of_user_in_course($user_id, $courseInfo['real_id']);
//$header .= '<a href="gradebook_add_cat.php?'.api_get_cidreq().'&selectcat=0"><img src="../img/folder_new.gif" alt="' . get_lang('AddGradebook') . '" /></a></td>';
@ -469,9 +470,6 @@ class DisplayGradebook
$my_category = $catobj->shows_all_information_an_category($catobj->get_id());
$user_id = api_get_user_id();
//$course_code = $my_category['course_code'];
//$status_user = api_get_status_of_user_in_course ($user_id,$course_code);
if (api_is_allowed_to_edit(null, true)) {
if (empty($grade_model_id) || $grade_model_id == -1) {

@ -32,21 +32,21 @@ class GradebookTable extends SortableTable {
parent :: __construct ('gradebooklist', null, null, (api_is_allowed_to_edit()?1:0));
$this->evals_links = array_merge($evals, $links);
$this->currentcat = $currentcat;
$this->cats = $cats;
$this->datagen = new GradebookDataGenerator($cats, $evals, $links);
$this->cats = $cats;
$this->datagen = new GradebookDataGenerator($cats, $evals, $links);
if (isset($addparams)) {
$this->set_additional_parameters($addparams);
}
$column= 0;
if (api_is_allowed_to_edit(null, true)) {
$this->set_header($column++,'','','width="25px"');
}
$this->set_header($column++, get_lang('Type'),'','width="35px"');
$this->set_header($column++, get_lang('Name'), false);
$this->set_header($column++, get_lang('Description'), false);
if (api_is_allowed_to_edit(null, true)) {
@ -54,26 +54,26 @@ class GradebookTable extends SortableTable {
} else {
$this->set_header($column++, get_lang('Weight'), false);
$this->set_header($column++, get_lang('Result'), false);
if (!empty($cats)) {
$this->set_header($column++, get_lang('Actions'), false);
}
}
}
//Desactivates the odd/even alt rows in order that the +/- buttons work see #4047
$this->odd_even_rows_enabled = false;
/*if (api_is_allowed_to_edit(null, true)) {
//$this->set_header($column++, get_lang('CreationDate'),true, 'width="100px"');
} elseif (($status<>1) && !api_is_allowed_to_edit() && (!isset($_GET['selectcat']) || $_GET['selectcat']==0)) {
//$this->set_header($column++, get_lang('Date'),true, 'width="100px"');
}*/
//admins get an edit column
if (api_is_allowed_to_edit(null, true)) {
$this->set_header($column++, get_lang('Modify'), false, 'width="195px"');
//actions on multiple selected documents
$this->set_form_actions(array (
$this->set_form_actions(array (
'setvisible' => get_lang('SetVisible'),
'setinvisible' => get_lang('SetInvisible'),
'deleted' => get_lang('DeleteSelected')
@ -82,14 +82,14 @@ class GradebookTable extends SortableTable {
if (empty($_GET['selectcat']) && !api_is_allowed_to_edit()) {
$this->set_header($column++, get_lang('Certificates'),false);
} else {
//$evals_links = array_merge($evals, $links);
//$evals_links = array_merge($evals, $links);
//if (count($evals_links)>0) {
//$this->set_header($column++, get_lang('Results'), false);
//}
}
}
}
function get_data() {
return $this->datagen;
}
@ -105,15 +105,15 @@ class GradebookTable extends SortableTable {
* Function used by SortableTable to generate the data to display
*/
function get_table_data($from = 1, $per_page = null, $column = null, $direction = null, $sort = null) {
//variables load in index.php
global $my_score_in_gradebook, $certificate_min_score;
$scoretotal = 0;
// determine sorting type
$col_adjust = (api_is_allowed_to_edit() ? 1 : 0);
// By id
// By id
$this->column = 5;
switch ($this->column) {
// Type
case (0 + $col_adjust) :
@ -130,45 +130,46 @@ class GradebookTable extends SortableTable {
break;
case (4 + $col_adjust) :
$sorting = GradebookDataGenerator :: GDG_SORT_DATE;
case (5 + $col_adjust) :
$sorting = GradebookDataGenerator :: GDG_SORT_ID;
case (5 + $col_adjust) :
$sorting = GradebookDataGenerator :: GDG_SORT_ID;
break;
}
if ($this->direction == 'DESC') {
$sorting |= GradebookDataGenerator :: GDG_SORT_DESC;
} else {
$sorting |= GradebookDataGenerator :: GDG_SORT_ASC;
}
//status of user in course
$user_id = api_get_user_id();
$course_code = api_get_course_id();
$courseId = api_get_course_int_id();
$session_id = api_get_session_id();
$status_user = api_get_status_of_user_in_course($user_id, $course_code);
$data_array = $this->datagen->get_data($sorting, $from, $this->per_page);
$status_user = api_get_status_of_user_in_course($user_id, $courseId);
$data_array = $this->datagen->get_data($sorting, $from, $this->per_page);
// generate the data to display
$sortable_data = array();
$weight_total_links = 0;
$main_categories = array();
$main_categories = array();
$main_cat = Category :: load(null, null, $course_code, null, null, $session_id, false);
$total_categories_weight = 0;
$total_categories_weight = 0;
$scoredisplay = ScoreDisplay :: instance();
//Categories
foreach ($data_array as $data) {
// list of items inside the gradebook (exercises, lps, forums, etc)
$row = array();
$item = $item_category = $data[0];
$id = $item->get_id();
$id = $item->get_id();
//if the item is invisible, wrap it in a span with class invisible
$invisibility_span_open = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '<span class="invisible">' : '';
$invisibility_span_close = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '</span>' : '';
@ -177,47 +178,47 @@ class GradebookTable extends SortableTable {
//id
$row[] = $this->build_id_column($item);
}
//Type
$row[] = $this->build_type_column($item);
//Name
if (get_class($item) == 'Category') {
$row[] = $invisibility_span_open.'<h3>'.$item->get_name().'</h3>'.$invisibility_span_close;
$main_categories[$item->get_id()]['name'] = $item->get_name();
$main_categories[$item->get_id()]['name'] = $item->get_name();
} else {
$row[] = $invisibility_span_open.$this->build_name_link($item) . $invisibility_span_close;
$main_categories[$item->get_id()]['name'] = $this->build_name_link($item);
$main_categories[$item->get_id()]['name'] = $this->build_name_link($item);
}
$main_categories[$item->get_id()]['weight']= $item->get_weight();
$total_categories_weight += $item->get_weight();
//Description
$row[] = $invisibility_span_open.$data[2].$invisibility_span_close;
$row[] = $invisibility_span_open.$data[2].$invisibility_span_close;
//Weight
//$row[] = $invisibility_span_open .Display::tag('h4', $data['3'] .' / '.$this->currentcat->get_weight()).$invisibility_span_close;
//$row[] = $invisibility_span_open .Display::tag('h4', $data['3'] .' / '.$this->currentcat->get_weight()).$invisibility_span_close;
//$average = $data['3']/$this->currentcat->get_weight()*100;
$average = $scoredisplay->display_score(array($data['3'], $this->currentcat->get_weight()), SCORE_SIMPLE, SCORE_BOTH, true);
if (api_is_allowed_to_edit(null, true)) {
$row[] = $invisibility_span_open .Display::tag('h4', $average).$invisibility_span_close;
$row[] = $invisibility_span_open .Display::tag('h4', $average).$invisibility_span_close;
} else {
$row[] = $invisibility_span_open .$average.$invisibility_span_close;
$row[] = $invisibility_span_open .$average.$invisibility_span_close;
}
$category_weight = $item->get_weight();
if (api_is_allowed_to_edit(null, true)) {
$weight_total_links += $data[3];
} else {
$cattotal = Category :: load($_GET['selectcat']);
$scoretotal = $cattotal[0]->calc_score(api_get_user_id());
$scoretotal = $cattotal[0]->calc_score(api_get_user_id());
$item_value = $scoredisplay->display_score($scoretotal, SCORE_SIMPLE);
}
//Date
//$row[] = $invisibility_span_open.$data[4].$invisibility_span_close;
@ -226,102 +227,102 @@ class GradebookTable extends SortableTable {
$cat = new Category();
$show_message = $cat->show_message_resource_delete($item->get_course_code());
if ($show_message === false) {
$row[] = $this->build_edit_column($item);
$row[] = $this->build_edit_column($item);
}
} else {
//students get the results and certificates columns
if (count($this->evals_links) > 0 && $status_user != 1) {
$value_data = isset($data[4]) ? $data[4] : null;
if (!is_null($value_data)) {
//students get the results and certificates columns
if (count($this->evals_links) > 0 && $status_user != 1) {
$value_data = isset($data[4]) ? $data[4] : null;
if (!is_null($value_data)) {
$row[] = Display::tag('h4', $value_data);
} else {
$row[] = $this->build_edit_column($item);
} else {
$row[] = $this->build_edit_column($item);
}
} else {
$score = $item->calc_score(api_get_user_id());
} else {
$score = $item->calc_score(api_get_user_id());
if (!empty($score[1])) {
$complete_score = $scoredisplay->display_score($score, SCORE_DIV_PERCENT);
$score = $score[0]/$score[1]*$item->get_weight();
$score = $score[0]/$score[1]*$item->get_weight();
$score = $scoredisplay->display_score(array($score, null), SCORE_SIMPLE);
$row[] = Display::tip($score, $complete_score);
} else {
$row[] = '-';
}
if (!empty($this->cats)) {
$row[] = $this->build_edit_column($item);
}
}
}
//Category added
$sortable_data[] = $row;
// Loading childrens
if (get_class($item) == 'Category') {
$stud_id = api_get_user_id();
$course_code = api_get_course_id();
$session_id = api_get_session_id();
$parent_id = $item->get_id();
$cats = Category :: load ($parent_id, null, null, null, null, null);
$allcat = $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
$alleval = $cats[0]->get_evaluations($stud_id);
$allcat = $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
$alleval = $cats[0]->get_evaluations($stud_id);
$alllink = $cats[0]->get_links($stud_id);
$sub_cat_info = new GradebookDataGenerator($allcat, $alleval, $alllink);
$data_array = $sub_cat_info->get_data($sorting, $from, $this->per_page);
$data_array = $sub_cat_info->get_data($sorting, $from, $this->per_page);
$total_weight = 0;
//Links
foreach ($data_array as $data) {
$row = array();
$item = $data[0];
$id = $item->get_id();
$id = $item->get_id();
//if the item is invisible, wrap it in a span with class invisible
$invisibility_span_open = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '<span class="invisible">' : '';
$invisibility_span_close = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '</span>' : '';
$invisibility_span_close = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '</span>' : '';
$main_categories[$parent_id]['children'][$item->get_id()]['name'] = $item->get_name();
$main_categories[$parent_id]['children'][$item->get_id()]['weight'] = $item->get_weight();
if (api_is_allowed_to_edit(null, true)) {
$row[] = $this->build_id_column($item);
}
$row[] = $this->build_type_column($item, array('style' => 'padding-left:5px'));
//Name
$row[] = $invisibility_span_open."&nbsp;&nbsp;&nbsp; ".$this->build_name_link($item) . $invisibility_span_close;
//Description
$row[] = $invisibility_span_open.$data[2].$invisibility_span_close;
//Weight
//$weight = $data[3]/$category_weight*$main_cat[0]->get_weight();
/*$weight = $category_weight * $data[3] / $main_cat[0]->get_weight();
$row[] = $invisibility_span_open.$data[2].$invisibility_span_close;
//Weight
//$weight = $data[3]/$category_weight*$main_cat[0]->get_weight();
/*$weight = $category_weight * $data[3] / $main_cat[0]->get_weight();
$weight = $main_cat[0]->get_weight()*$weight/$category_weight;*/
$weight = $data[3];
//$extra = " - $data[3] $category_weight -".$main_cat[0]->get_weight();
$total_weight += $weight;
$row[] = $invisibility_span_open.$weight.$extra.$invisibility_span_close;
if (api_is_allowed_to_edit(null, true)) {
if (api_is_allowed_to_edit(null, true)) {
//$weight_total_links += intval($data[3]);
} else {
$cattotal = Category :: load($_GET['selectcat']);
$scoretotal = $cattotal[0]->calc_score(api_get_user_id());
$item_value = $scoretotal[0];
$scoretotal = $cattotal[0]->calc_score(api_get_user_id());
$item_value = $scoretotal[0];
}
//Date
@ -397,7 +398,7 @@ class GradebookTable extends SortableTable {
$weight_category = intval($this->build_weight($category[0]));
$course_code = $this->build_course_code($category[0]);
$weight_total_links = round($weight_total_links);
if ($weight_total_links > $weight_category || $weight_total_links < $weight_category || $weight_total_links > $weight_category) {
$warning_message = sprintf(get_lang('TotalWeightMustBeX'), $weight_category);
$modify_icons = '<a class="right_link" href="gradebook_edit_cat.php?editcat='.$id_cat.'&cidReq='.$course_code.'">'.Display::return_icon('edit.png', $warning_message, array(), ICON_SIZE_SMALL).'</a>';
@ -454,20 +455,20 @@ class GradebookTable extends SortableTable {
}
}
}
}
}
return $sortable_data;
}
// Other functions
private function build_certificate_min_score ($item) {
return $item->get_certificate_min_score();
}
private function build_weight ($item) {
return $item->get_weight();
}
private function build_course_code ($item) {
return $item->get_course_code();
}
@ -489,9 +490,9 @@ class GradebookTable extends SortableTable {
private function build_type_column ($item, $attributes = array()) {
return build_type_icon_tag($item->get_icon_name(), $attributes);
}
/**
*
*
* Generate name column
* @param unknown_type $item
* @return string
@ -518,9 +519,9 @@ class GradebookTable extends SortableTable {
. ($item->is_course() ? ' &nbsp;[' . $item->get_course_code() . ']'.$show_message : '');
// evaluation
case 'E' :
$cat = new Category();
$cat = new Category();
$course_id = Database::get_course_by_category($_GET['selectcat']);
$show_message = $cat->show_message_resource_delete($course_id);
// course/platform admin can go to the view_results page
@ -530,7 +531,7 @@ class GradebookTable extends SortableTable {
return '&nbsp;'
. '<a href="gradebook_view_result.php?cidReq='.$course_id.'&amp;selecteval=' . $item->get_id() . '">'
. $item->get_name()
. '</a>';
. '</a>';
} else {
return '&nbsp;'
. '<a href="gradebook_view_result.php?cidReq='.$course_id.'&amp;selecteval=' . $item->get_id() . '">'
@ -555,13 +556,13 @@ class GradebookTable extends SortableTable {
}
// link
case 'L' :
$cat = new Category();
$course_id = Database::get_course_by_category($_GET['selectcat']);
$show_message = $cat->show_message_resource_delete($course_id);
$cat = new Category();
$course_id = Database::get_course_by_category($_GET['selectcat']);
$show_message = $cat->show_message_resource_delete($course_id);
$url = $item->get_link();
if (isset($url) && $show_message===false) {
if (isset($url) && $show_message===false) {
$text = '&nbsp;<a href="' . $item->get_link() . '">'
. $item->get_name()
. '</a>';
@ -577,8 +578,8 @@ class GradebookTable extends SortableTable {
return $text;
}
}
private function build_edit_column($item) {
private function build_edit_column($item) {
switch ($item->get_item_type()) {
// category
case 'C' :

@ -22,7 +22,7 @@ class GradebookDataGenerator
const GDG_SORT_ASC = 32;
const GDG_SORT_DESC = 64;
const GDG_SORT_ID = 128;
@ -34,7 +34,7 @@ class GradebookDataGenerator
$allevals = (isset($evals) ? $evals : array());
$alllinks = (isset($links) ? $links : array());
// merge categories, evaluations and links
$this->items = array_merge($allcats, $allevals, $alllinks);
$this->items = array_merge($allcats, $allevals, $alllinks);
$this->evals_links = array_merge($allevals, $alllinks);
}
@ -44,7 +44,7 @@ class GradebookDataGenerator
public function get_total_items_count() {
return count($this->items);
}
/**
* Get actual array data
* @return array 2-dimensional array - each array contains the elements:
@ -64,7 +64,7 @@ class GradebookDataGenerator
if ($count < 0) {
$count = 0;
}
$allitems = $this->items;
// sort array
if ($sorting & self :: GDG_SORT_TYPE) {
@ -87,12 +87,11 @@ class GradebookDataGenerator
$visibleitems = array_slice($allitems, $start, $count);
//status de user in course
$user_id = api_get_user_id();
$course_code = api_get_course_id();
$status_user = api_get_status_of_user_in_course($user_id, $course_code);
$status_user = api_get_status_of_user_in_course($user_id, api_get_course_int_id());
// generate the data to display
$data = array();
foreach ($visibleitems as $item) {
$row = array ();
$row[] = $item;
@ -101,22 +100,24 @@ class GradebookDataGenerator
$row[] = $item->get_weight();
/*if (api_is_allowed_to_edit(null, true)) {
$row[] = $this->build_date_column($item);
}*/
}*/
if (count($this->evals_links) > 0) {
if (!api_is_allowed_to_edit() || $status_user != 1 ) {
if (!api_is_allowed_to_edit() || $status_user != 1 ) {
$row[] = $this->build_result_column($item, $ignore_score_color);
$row[] = $item;
}
}
}
$data[] = $row;
}
return $data;
}
/**
* Returns the link to the certificate generation, if the score is enough, otherwise
* returns an empty string. This only works with categories.
* @param object Item
* @param object Item
* @return string
*/
function get_certificate_link($item) {
if (is_a($item, 'Category')) {
@ -133,10 +134,10 @@ class GradebookDataGenerator
function sort_by_name($item1, $item2) {
return api_strnatcmp($item1->get_name(), $item2->get_name());
}
function sort_by_id($item1, $item2) {
return api_strnatcmp($item1->get_id(), $item2->get_id());
}
}
function sort_by_type($item1, $item2) {
if ($item1->get_item_type() == $item2->get_item_type()) {
@ -173,13 +174,13 @@ class GradebookDataGenerator
$timestamp1 = null;
}
}
if(is_int($item2->get_date())) {
$timestamp2 = $item2->get_date();
} else {
$timestamp2 = api_strtotime($item2->get_date(), 'UTC');
}
if ($timestamp1 == $timestamp2) {
return $this->sort_by_name($item1,$item2);
} else {
@ -189,10 +190,10 @@ class GradebookDataGenerator
// Other functions
private function build_result_column($item, $ignore_score_color) {
$scoredisplay = ScoreDisplay::instance();
$scoredisplay = ScoreDisplay::instance();
$score = $item->calc_score(api_get_user_id());
if (!empty($score)) {
if (!empty($score)) {
switch ($item->get_item_type()) {
// category
case 'C' :
@ -209,7 +210,7 @@ class GradebookDataGenerator
case 'E' :
case 'L' :
$displaytype = SCORE_DIV_PERCENT;
if ($ignore_score_color) {
if ($ignore_score_color) {
$displaytype |= SCORE_IGNORE_SPLIT;
}
return $scoredisplay->display_score($score, SCORE_DIV_PERCENT_WITH_CUSTOM);

@ -18,19 +18,21 @@ function get_users_in_course($course_id) {
$current_session = api_get_session_id();
$course_id = Database::escape_string($course_id);
$courseInfo = api_get_course_info($course_id);
if (!empty($current_session)) {
$sql = "SELECT user.user_id, user.username, lastname, firstname, official_code
FROM $tbl_session_course_user as scru, $tbl_user as user
WHERE scru.id_user=user.user_id
AND scru.status=0
AND scru.course_code='$course_id' AND id_session ='$current_session' $order_clause ";
AND scru.course_code='$course_id' AND id_session = '$current_session' $order_clause ";
} else {
$sql = 'SELECT user.user_id, user.username, lastname, firstname, official_code
FROM '.$tbl_course_user.' as course_rel_user, '.$tbl_user.' as user
WHERE course_rel_user.user_id=user.user_id AND
course_rel_user.status='.STUDENT.' AND
course_rel_user.course_code = "'.$course_id.'" '.$order_clause;
course_rel_user.c_id = '.$courseInfo['real_id'].'
'.$order_clause;
}
$result = Database::query($sql);
return get_user_array_from_sql_result($result);
@ -96,13 +98,13 @@ function get_all_users ($evals = array(), $links = array()) {
*/
function find_students($mask= '') {
// students shouldn't be here // don't search if mask empty
if (!api_is_allowed_to_edit() || empty ($mask)) {
if (!api_is_allowed_to_edit() || empty($mask)) {
return null;
}
$mask = Database::escape_string($mask);
$tbl_user= Database :: get_main_table(TABLE_MAIN_USER);
$tbl_cru= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_cru = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql= 'SELECT DISTINCT user.user_id, user.lastname, user.firstname, user.email, user.official_code ' . ' FROM ' . $tbl_user . ' user';
if (!api_is_platform_admin()) {
$sql .= ', ' . $tbl_cru . ' cru';
@ -113,7 +115,11 @@ function find_students($mask= '') {
$sql .= ' OR user.firstname LIKE '."'%" . $mask . "%')";
if (!api_is_platform_admin()) {
$sql .= ' AND user.user_id = cru.user_id AND cru.relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ' . ' AND cru.course_code in' . ' (SELECT course_code' . ' FROM ' . $tbl_cru . ' WHERE user_id = ' . api_get_user_id() . ' AND status = ' . COURSEMANAGER . ')';
$sql .= ' AND user.user_id = cru.user_id AND
cru.relation_type <> '.COURSE_RELATION_TYPE_RRHH.' ' . ' AND
cru.c_id in' . ' (
SELECT c_id FROM '.$tbl_cru.' WHERE user_id = ' . api_get_user_id() . ' AND status = ' . COURSEMANAGER . '
)';
}
$sql .= ' ORDER BY lastname';
$result= Database::query($sql);

@ -135,7 +135,7 @@ switch ($action) {
$course_info = api_get_course_info_by_id($course_id);
$course_code = $course_info['code'];
if (api_is_user_of_course($course_code, api_get_user_id())) {
if (api_is_user_of_course($course_info['real_id'], api_get_user_id())) {
//------Forum messages
$forum_result = get_all_post_from_user($user_id, $course_code);
$all_result_data = 0;

@ -64,9 +64,8 @@ class AddCourseToSession {
WHERE course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';
}
global $_configuration;
if ($_configuration['multiple_access_urls']) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
@ -76,13 +75,13 @@ class AddCourseToSession {
LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
ON course.code = session_rel_course.course_code
AND session_rel_course.id_session = '.intval($id_session).'
INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code)
INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.c_id = course.id)
WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%"
OR course.title LIKE "'.$needle.'%" )';
} else {
$sql = 'SELECT course.code, course.visual_code, course.title
FROM '.$tbl_course.' course, '.$tbl_course_rel_access_url.' url_course
WHERE url_course.course_code=course.code AND access_url_id = '.$access_url_id.'
WHERE url_course.c_id = course.od AND access_url_id = '.$access_url_id.'
AND course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';
}
}

@ -27,7 +27,7 @@ class AnnouncementManager
{
$reader_info = api_get_user_info(api_get_user_id());
$course_info = api_get_course_info($course_code);
$teacher_list = CourseManager::get_teacher_list_from_course_code($course_info['code']);
$teacher_list = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
$teacher_name = '';
if (!empty($teacher_list)) {

@ -50,19 +50,42 @@ class AuthLib {
// Secondly we select the courses that are in a category (user_course_cat<>0) and sort these according to the sort of the category
$user_id = intval($user_id);
$sql_select_courses = "SELECT course.code k, course.visual_code vc, course.subscribe subscr, course.unsubscribe unsubscr,
course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status,
course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
$sql_select_courses = "SELECT course.code k,
course.id as real_id,
course.visual_code vc,
course.subscribe subscr,
course.unsubscribe unsubscr,
course.title i,
course.tutor_name t,
course.db_name db,
course.directory dir,
course_rel_user.status status,
course_rel_user.sort sort,
course_rel_user.user_course_cat user_course_cat
FROM $TABLECOURS course, $TABLECOURSUSER course_rel_user
WHERE course.code = course_rel_user.course_code
AND course_rel_user.relation_type<>" . COURSE_RELATION_TYPE_RRHH . "
AND course_rel_user.user_id = '" . $user_id . "' $without_special_courses
WHERE course.id = course_rel_user.c_id AND
course_rel_user.relation_type<>" . COURSE_RELATION_TYPE_RRHH . " AND
course_rel_user.user_id = '" . $user_id . "' $without_special_courses
ORDER BY course_rel_user.sort ASC";
$result = Database::query($sql_select_courses);
$courses = array();
while ($row = Database::fetch_array($result)) {
//we only need the database name of the course
$courses[] = array('db' => $row['db'], 'code' => $row['k'], 'visual_code' => $row['vc'], 'title' => $row['i'], 'directory' => $row['dir'], 'status' => $row['status'], 'tutor' => $row['t'], 'subscribe' => $row['subscr'], 'unsubscribe' => $row['unsubscr'], 'sort' => $row['sort'], 'user_course_category' => $row['user_course_cat']);
//@todo this array assignation is insane fix it
$courses[] = array(
'db' => $row['db'],
'code' => $row['k'],
'visual_code' => $row['vc'],
'title' => $row['i'],
'directory' => $row['dir'],
'status' => $row['status'],
'tutor' => $row['t'],
'subscribe' => $row['subscr'],
'unsubscribe' => $row['unsubscr'],
'sort' => $row['sort'],
'user_course_category' => $row['user_course_cat'],
'real_id' => $row['real_id']
);
}
return $courses;
}
@ -115,16 +138,23 @@ class AuthLib {
$without_special_courses = ' AND course.code NOT IN (' . implode(',', $special_course_list) . ')';
}
$sql_select_courses = "SELECT course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr,
course.title title, course.tutor_name tutor, course.db_name, course.directory, course_rel_user.status status,
course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM $TABLECOURS course,
$TABLECOURSUSER course_rel_user
WHERE course.code = course_rel_user.course_code
AND course_rel_user.user_id = '" . $user_id . "'
AND course_rel_user.relation_type <> " . COURSE_RELATION_TYPE_RRHH . "
$without_special_courses
ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC";
$sql_select_courses = "SELECT course.code,
course.visual_code,
course.subscribe subscr,
course.unsubscribe unsubscr,
course.title title,
course.tutor_name tutor,
course.db_name,
course.directory,
course_rel_user.status status,
course_rel_user.sort sort,
course_rel_user.user_course_cat user_course_cat
FROM $TABLECOURS course, $TABLECOURSUSER course_rel_user
WHERE course.id = course_rel_user.c_id
AND course_rel_user.user_id = '" . $user_id . "'
AND course_rel_user.relation_type <> " . COURSE_RELATION_TYPE_RRHH . "
$without_special_courses
ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC";
$result = Database::query($sql_select_courses);
$number_of_courses = Database::num_rows($result);
$data = array();
@ -136,21 +166,20 @@ class AuthLib {
/**
* stores the changes in a course category (moving a course to a different course category)
* @param string Course code
* @param int Course id
* @param int Category id
* @return bool True if it success
*/
public function store_changecoursecategory($course_code, $newcategory) {
$course_code = Database::escape_string($course_code);
public function store_changecoursecategory($courseId, $newcategory) {
$TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$courseId = Database::escape_string($courseId);
$newcategory = intval($newcategory);
$current_user = api_get_user_id();
$result = false;
$TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$max_sort_value = api_max_sort_value($newcategory, $current_user); // max_sort_value($newcategory);
Database::query("UPDATE $TABLECOURSUSER SET user_course_cat='" . $newcategory . "', sort='" . ($max_sort_value + 1) . "' WHERE course_code='" . $course_code . "' AND user_id='" . $current_user . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ");
Database::query("UPDATE $TABLECOURSUSER SET user_course_cat='" . $newcategory . "', sort='" . ($max_sort_value + 1) . "'
WHERE c_id ='" . $courseId . "' AND user_id='" . $current_user . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . "");
$result = false;
if (Database::affected_rows()) {
$result = true;
}
@ -197,8 +226,10 @@ class AuthLib {
}
if (count($target_course) > 0 && count($source_course) > 0) {
$sql_update1 = "UPDATE $TABLECOURSUSER SET sort='" . $target_course['sort'] . "' WHERE course_code='" . $source_course['code'] . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
$sql_update2 = "UPDATE $TABLECOURSUSER SET sort='" . $source_course['sort'] . "' WHERE course_code='" . $target_course['code'] . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
$sql_update1 = "UPDATE $TABLECOURSUSER SET sort='" . $target_course['sort'] . "'
WHERE c_id = '" . $source_course['real_id'] . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
$sql_update2 = "UPDATE $TABLECOURSUSER SET sort='" . $source_course['sort'] . "'
WHERE c_id = '" . $target_course['real_id'] . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
Database::query($sql_update2);
Database::query($sql_update1);
if (Database::affected_rows()) {
@ -301,7 +332,8 @@ class AuthLib {
if (Database::affected_rows()) {
$result = true;
}
$sql_update = "UPDATE $TABLECOURSUSER SET user_course_cat='0' WHERE user_course_cat='" . $category_id . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
$sql_update = "UPDATE $TABLECOURSUSER SET user_course_cat='0'
WHERE user_course_cat='" . $category_id . "' AND user_id='" . $current_user_id . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
Database::query($sql_update);
return $result;
}
@ -311,9 +343,11 @@ class AuthLib {
* @param string Course code
* @return bool True if it success
*/
public function remove_user_from_course($course_code) {
public function remove_user_from_course($course_code)
{
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
// protect variables
$current_user_id = api_get_user_id();
@ -323,7 +357,7 @@ class AuthLib {
// we check (once again) if the user is not course administrator
// because the course administrator cannot unsubscribe himself
// (s)he can only delete the course
$sql_check = "SELECT * FROM $tbl_course_user WHERE user_id='" . $current_user_id . "' AND course_code='" . $course_code . "' AND status='1' ";
$sql_check = "SELECT * FROM $tbl_course_user WHERE user_id='" . $current_user_id . "' AND c_id ='" . $course_id . "' AND status='1' ";
$result_check = Database::query($sql_check);
$number_of_rows = Database::num_rows($result_check);
if ($number_of_rows > 0) {
@ -402,7 +436,7 @@ class AuthLib {
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND category_code" . (empty($category_code) ? " IS NULL" : "='" . $category_code . "'") . $without_special_courses;
}
}
@ -471,18 +505,20 @@ class AuthLib {
$url_access_id = api_get_current_access_url_id();
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT COUNT(*) FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code)
$sql = "SELECT COUNT(*) FROM $tbl_course course
INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id ";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
$sql = "SELECT course.id FROM $tbl_course course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND
RAND()*$num_records< $random_value
$without_special_courses ORDER BY RAND() LIMIT 0, $random_value";
} else {
$sql = "SELECT id FROM $tbl_course course WHERE RAND()*$num_records< $random_value $without_special_courses ORDER BY RAND() LIMIT 0, $random_value";
$sql = "SELECT id FROM $tbl_course course WHERE RAND()*$num_records< $random_value $without_special_courses
ORDER BY RAND() LIMIT 0, $random_value";
}
$result = Database::query($sql);
@ -508,8 +544,9 @@ class AuthLib {
$url_access_id = api_get_current_access_url_id();
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses ORDER BY title";
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses
ORDER BY title";
}
}
@ -580,8 +617,8 @@ class AuthLib {
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_find = "SELECT * FROM $TABLECOURS as course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
WHERE access_url_id = $url_access_id AND (code LIKE '%" . $search_term_safe . "%' OR title LIKE '%" . $search_term_safe . "%' OR tutor_name LIKE '%" . $search_term_safe . "%' ) $without_special_courses ORDER BY title, visual_code ASC ";
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND (code LIKE '%" . $search_term_safe . "%' OR title LIKE '%" . $search_term_safe . "%' OR tutor_name LIKE '%" . $search_term_safe . "%' ) $without_special_courses ORDER BY title, visual_code ASC ";
}
}
$result_find = Database::query($sql_find);
@ -626,7 +663,8 @@ class AuthLib {
} else {
$status_user_in_new_course = null;
}
if (CourseManager::add_user_to_course($user_id, $course_code, $status_user_in_new_course)) {
$courseInfo = api_get_course_info($course_code);
if (CourseManager::add_user_to_course($user_id, $courseInfo['real_id'], $status_user_in_new_course)) {
$send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $course_code);
if ($send == 1) {
CourseManager::email_to_tutor($user_id, $course_code, $send_to_tutor_also = false);

@ -2380,7 +2380,6 @@ class Blog
$currentCourse = $_course['sysCode'];
$tbl_users = Database::get_main_table(TABLE_MAIN_USER);
$tbl_blogs_rel_user = Database::get_course_table(TABLE_BLOGS_REL_USER);
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
echo '<legend>'.get_lang('SubscribeMembers').'</legend>';
$course_id = api_get_course_int_id();

@ -15,7 +15,7 @@ class ClassManager
* php-function.
*/
function get_class_info($class_id) {
$class_id = intval($class_id);
$class_id = intval($class_id);
$table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
$sql = "SELECT * FROM $table_class WHERE id='".$class_id."'";
$res = Database::query($sql);
@ -27,7 +27,7 @@ class ClassManager
* @param int $class_id The class id
*/
function set_name($name, $class_id) {
$class_id = intval($class_id);
$class_id = intval($class_id);
$table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
$sql = "UPDATE $table_class SET name='".Database::escape_string($name)."' WHERE id='".$class_id."'";
$res = Database::query($sql);
@ -59,7 +59,7 @@ class ClassManager
* class was subscibed to
*/
function delete_class($class_id) {
$class_id = intval($class_id);
$class_id = intval($class_id);
$table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
$table_class_course = Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
@ -75,8 +75,8 @@ class ClassManager
* @param int $class_id
* @return array
*/
function get_users($class_id) {
$class_id = intval($class_id);
function get_users($class_id) {
$class_id = intval($class_id);
$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$sql = "SELECT * FROM $table_class_user cu, $table_user u WHERE cu.class_id = '".$class_id."' AND cu.user_id = u.user_id";
@ -111,9 +111,9 @@ class ClassManager
* @param int $class_id The class id
*/
function unsubscribe_user($user_id, $class_id) {
$class_id = intval($class_id);
$class_id = intval($class_id);
$user_id = intval($user_id);
$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$table_course_class = Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
$courses = ClassManager :: get_courses($class_id);
@ -138,7 +138,7 @@ class ClassManager
* @return array
*/
function get_courses($class_id) {
$class_id = intval($class_id);
$class_id = intval($class_id);
$table_class_course = Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT * FROM $table_class_course cc, $table_course c WHERE cc.class_id = '".$class_id."' AND cc.course_code = c.code";
@ -153,11 +153,11 @@ class ClassManager
* Subscribe all members of a class to a course
* @param int $class_id The class id
* @param string $course_code The course code
* @deprecated
*/
function subscribe_to_course($class_id, $course_code) {
$tbl_course_class = Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
$tbl_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "INSERT IGNORE INTO $tbl_course_class SET course_code = '".Database::escape_string($course_code)."', class_id = '".Database::escape_string($class_id)."'";
Database::query($sql);
$sql = "SELECT user_id FROM $tbl_class_user WHERE class_id = '".Database::escape_string($class_id)."'";

File diff suppressed because it is too large Load Diff

@ -1525,7 +1525,7 @@ class DocumentManager
$official_code = $user_info['official_code'];
//Teacher information
$info_teacher_id = UserManager::get_user_id_of_course_admin_or_session_admin($course_id);
$info_teacher_id = UserManager::get_user_id_of_course_admin_or_session_admin($course_info);
$teacher_info = api_get_user_info($info_teacher_id);
$teacher_first_name = $teacher_info['firstname'];
$teacher_last_name = $teacher_info['lastname'];
@ -2956,7 +2956,7 @@ class DocumentManager
}
if (!$user_in_course) {
if (CourseManager::is_course_teacher($user_id, $course_info['code'])) {
if (CourseManager::is_course_teacher($user_id, $course_info['real_id'])) {
$user_in_course = true;
}
}
@ -3313,22 +3313,30 @@ class DocumentManager
return $return;
}
/**
* @param int $doc_id
* @param string $course_code
* @param int $session_id
* @param int $user_id
* @return bool
*/
public static function check_visibility_tree($doc_id, $course_code, $session_id, $user_id)
{
$document_data = self::get_document_data_by_id($doc_id, $course_code);
if (!empty($document_data)) {
$course_info = api_get_course_info($course_code);
//if admin or course teacher, allow anyway
if (api_is_platform_admin() || CourseManager::is_course_teacher($user_id, $course_code)) {
if (api_is_platform_admin() || CourseManager::is_course_teacher($user_id, $course_info['real_id'])) {
return true;
}
$course_info = api_get_course_info($course_code);
if ($document_data['parent_id'] == false || empty($document_data['parent_id'])) {
$visible = self::is_visible_by_id($doc_id, $course_info, $session_id, $user_id);
return $visible;
} else {
$course_info = api_get_course_info($course_code);
$visible = self::is_visible_by_id($doc_id, $course_info, $session_id, $user_id);
if (!$visible) {

@ -1451,14 +1451,13 @@ class GroupManager
*/
public static function get_all_tutors()
{
global $_course;
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
$sql = "SELECT user.user_id AS user_id, user.lastname AS lastname, user.firstname AS firstname
FROM ".$user_table." user, ".$course_user_table." cu
WHERE cu.user_id=user.user_id
AND cu.tutor_id='1'
AND cu.course_code='".$_course['sysCode']."'";
AND cu.c_id='".api_get_course_int_id()."'";
$resultTutor = Database::query($sql);
$tutors = array();
while ($tutor = Database::fetch_array($resultTutor)) {
@ -1477,12 +1476,11 @@ class GroupManager
*/
public static function is_tutor($user_id)
{
global $_course;
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$user_id = Database::escape_string($user_id);
$sql = "SELECT tutor_id FROM ".$course_user_table."
WHERE user_id='".$user_id."' AND course_code='".$_course['code']."'"."AND tutor_id=1";
WHERE user_id='".$user_id."' AND c_id ='".api_get_course_int_id()."'"."AND tutor_id=1";
$db_result = Database::query($sql);
$result = (Database::num_rows($db_result) > 0);
@ -1532,82 +1530,6 @@ class GroupManager
/*
Group functions - these take virtual/linked courses into account when necessary
*/
/**
* Get a combined list of all users of the real course $course_code
* and all users in virtual courses linked to this course $course_code
* Filter user list: remove duplicate users; plus
* remove users that
* - are already in the current group $group_id;
* - do not have student status in these courses;
* - are not appointed as tutor (group assistent) for this group;
* - have already reached their maximum # of groups in this course.
*
* Originally to get the correct list of users a big SQL statement was used,
* but this has become more complicated now there is not just one real course but many virtual courses.
* Still, that could have worked as well.
*
* @version 1.1.3
* @author Roan Embrechts
*/
public static function get_complete_list_of_users_that_can_be_added_to_group($course_code, $group_id)
{
global $_course, $_user;
$category = self :: get_category_from_group($group_id, $course_code);
$number_of_groups_limit = $category['groups_per_user'] == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $category['groups_per_user'];
$real_course_code = $_course['sysCode'];
$real_course_info = Database :: get_course_info($real_course_code);
$real_course_user_list = CourseManager :: get_user_list_from_course_code($real_course_code);
//get list of all virtual courses
$user_subscribed_course_list = CourseManager :: get_list_of_virtual_courses_for_specific_user_and_real_course(
$_user['user_id'],
$real_course_code
);
//add real course to the list
$user_subscribed_course_list[] = $real_course_info;
if (!is_array($user_subscribed_course_list)) {
return;
}
//for all courses...
foreach ($user_subscribed_course_list as $this_course) {
$this_course_code = $this_course['code'];
$course_user_list = CourseManager :: get_user_list_from_course_code($this_course_code);
//for all users in the course
foreach ($course_user_list as $this_user) {
$user_id = $this_user['user_id'];
$loginname = $this_user['username'];
$lastname = $this_user['lastname'];
$firstname = $this_user['firstname'];
$status = $this_user['status'];
//$role = $this_user['role'];
$tutor_id = $this_user['tutor_id'];
$full_name = api_get_person_name($firstname, $lastname);
if ($lastname == "" || $firstname == '') {
$full_name = $loginname;
}
$complete_user['user_id'] = $user_id;
$complete_user['full_name'] = $full_name;
$complete_user['firstname'] = $firstname;
$complete_user['lastname'] = $lastname;
$complete_user['status'] = $status;
$complete_user['tutor_id'] = $tutor_id;
$student_number_of_groups = self :: user_in_number_of_groups($user_id, $category['id']);
//filter: only add users that have not exceeded their maximum amount of groups
if ($student_number_of_groups < $number_of_groups_limit) {
$complete_user_list[] = $complete_user;
}
}
}
if (is_array($complete_user_list)) {
//sort once, on array field "full_name"
$complete_user_list = TableSort :: sort_table($complete_user_list, "full_name");
//filter out duplicates, based on field "user_id"
$complete_user_list = self :: filter_duplicates($complete_user_list, "user_id");
$complete_user_list = self :: filter_users_already_in_group($complete_user_list, $group_id);
}
return $complete_user_list;
}
/**
* Filter out duplicates in a multidimensional array

@ -112,13 +112,13 @@ class Login
if (api_mail_html('', $email_to, $email_subject, $email_body, $sender_name, $email_admin) == 1) {
return get_lang('your_password_has_been_reset');
} else {
$admin_email = Display :: encrypted_mailto_link(api_get_setting('emailAdministrator'), api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname')));
return sprintf(get_lang('ThisPlatformWasUnableToSendTheEmailPleaseContactXForMoreInformation'), $admin_email);
$admin_email = Display :: encrypted_mailto_link(api_get_setting('emailAdministrator'), api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname')));
return sprintf(get_lang('ThisPlatformWasUnableToSendTheEmailPleaseContactXForMoreInformation'), $admin_email);
}
}
/**
* Handle encrypted password, send an email to a user with his password
* Handle encrypted password, send an email to a user with his password
*
* @param int user id
* @param bool $by_username
@ -155,9 +155,9 @@ class Login
Display::display_confirmation_message(get_lang('YourPasswordHasBeenEmailed'));
}
} else {
$admin_email = Display :: encrypted_mailto_link(api_get_setting('emailAdministrator'), api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname')));
$admin_email = Display :: encrypted_mailto_link(api_get_setting('emailAdministrator'), api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname')));
$message = sprintf(get_lang('ThisPlatformWasUnableToSendTheEmailPleaseContactXForMoreInformation'), $admin_email);
if (CustomPages::enabled()) {
return $message;
} else {
@ -210,7 +210,7 @@ class Login
*
* @global bool $is_platformAdmin
* @global bool $is_allowedCreateCourse
* @global object $_user
* @global object $_user
*/
public static function init_user($user_id, $reset)
{
@ -267,8 +267,8 @@ class Login
Session::write('is_platformAdmin', $is_platformAdmin);
Session::write('is_allowedCreateCourse', $is_allowedCreateCourse);
//
//
//
//
// // If request_uri is setted we have to go further to have course permissions
// if (empty($_SESSION['request_uri']) || !isset($_SESSION['request_uri'])) {
// if (isset($_SESSION['noredirection'])) {
@ -311,9 +311,9 @@ class Login
* @global type $is_courseMember
* @global type $is_sessionAdmin
* @global type $is_allowed_in_course
*
*
* @param type $course_id
* @param type $reset
* @param type $reset
*/
static function init_course($course_id, $reset)
{
@ -335,7 +335,7 @@ class Login
global $is_allowed_in_course;
if ($reset) {
// Course session data refresh requested or empty data
// Course session data refresh requested or empty data
if ($course_id) {
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
@ -383,7 +383,7 @@ class Login
Session::write('_real_cid', $_real_cid);
// if a session id has been given in url, we store the session
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -425,14 +425,14 @@ class Login
}
}
}
//Deleting session info
//Deleting session info
if (api_get_session_id()) {
Session::erase('id_session');
Session::erase('session_name');
}
}
} else {
// Continue with the previous values
// Continue with the previous values
if (empty($_SESSION['_course']) OR empty($_SESSION['_cid'])) { //no previous values...
$_cid = -1; //set default values that will be caracteristic of being unset
$_course = -1;
@ -441,7 +441,7 @@ class Login
$_course = $_SESSION['_course'];
// these lines are usefull for tracking. Indeed we can have lost the id_session and not the cid.
// Moreover, if we want to track a course with another session it can be usefull
// Moreover, if we want to track a course with another session it can be usefull
if (!empty($_GET['id_session'])) {
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = 'SELECT name FROM ' . $tbl_session . ' WHERE id="' . intval($_SESSION['id_session']) . '"';
@ -464,9 +464,9 @@ class Login
/*
* When $_configuration['session_lifetime'] is too big 100 hours (in order to let users take exercises with no problems)
* the function Tracking::get_time_spent_on_the_course() returns big values (200h) due the condition:
* the function Tracking::get_time_spent_on_the_course() returns big values (200h) due the condition:
* login_course_date > now() - INTERVAL $session_lifetime SECOND
*
*
*/
/*
if (isset($_configuration['session_lifetime'])) {
@ -483,10 +483,10 @@ class Login
if (isset($_user['user_id']) && !empty($_user['user_id'])) {
//We select the last record for the current course in the course tracking table
//But only if the login date is < than now + max_life_time
//But only if the login date is < than now + max_life_time
$sql = "SELECT course_access_id FROM $course_tracking_table
WHERE user_id = " . intval($_user ['user_id']) . " AND
course_code = '$course_code' AND
course_code = '$course_code' AND
session_id = " . api_get_session_id() . " AND
login_course_date > now() - INTERVAL $session_lifetime SECOND
ORDER BY login_course_date DESC LIMIT 0,1";
@ -495,7 +495,7 @@ class Login
if (Database::num_rows($result) > 0) {
$i_course_access_id = Database::result($result, 0, 0);
//We update the course tracking table
$sql = "UPDATE $course_tracking_table SET logout_course_date = '$time', counter = counter+1
$sql = "UPDATE $course_tracking_table SET logout_course_date = '$time', counter = counter+1
WHERE course_access_id = " . intval($i_course_access_id) . " AND session_id = " . api_get_session_id();
//error_log($sql);
Database::query($sql);
@ -526,11 +526,10 @@ class Login
if (isset($user_id) && $user_id && isset($_cid) && $_cid) {
//Check if user is subscribed in a course
//Check if user is subscribed in a course
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "SELECT * FROM $course_user_table
WHERE user_id = '" . $user_id . "' AND relation_type <> " . COURSE_RELATION_TYPE_RRHH . "
AND course_code = '$course_id'";
WHERE user_id = '" . $user_id . "' AND relation_type <> " . COURSE_RELATION_TYPE_RRHH . " AND c_id = ".$_course['real_id'];
$result = Database::query($sql);
$cuData = null;
@ -542,7 +541,7 @@ class Login
//Checking if the user filled the course legal agreement
if ($_course['activate_legal'] == 1 && !api_is_platform_admin()) {
$user_is_subscribed = CourseManager::is_user_accepted_legal($user_id, $_course['id'], $session_id);
$user_is_subscribed = CourseManager::is_user_accepted_legal($user_id, $_course, $session_id);
if (!$user_is_subscribed) {
$url = api_get_path(WEB_CODE_PATH) . 'course_info/legal.php?course_code=' . $_course['code'] . '&session_id=' . $session_id;
header('Location: ' . $url);
@ -556,7 +555,7 @@ class Login
//We are in a session course? Check session permissions
if (!empty($session_id)) {
//I'm not the teacher of the course
//I'm not the teacher of the course
if ($is_courseAdmin == false) {
// this user has no status related to this course
// The user is subscribed in a session? The user is a Session coach a Session admin ?
@ -565,19 +564,19 @@ class Login
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
//Session coach, session admin, course coach admin
//Session coach, session admin, course coach admin
$sql = "SELECT session.id_coach, session_admin_id, session_rcru.id_user
FROM $tbl_session session, $tbl_session_course_user session_rcru
WHERE session_rcru.id_session = session.id AND
session_rcru.course_code = '$_cid' AND
session_rcru.id_user = '$user_id' AND
WHERE session_rcru.id_session = session.id AND
session_rcru.course_code = '$_cid' AND
session_rcru.id_user = '$user_id' AND
session_rcru.id_session = $session_id AND
session_rcru.status = 2";
$result = Database::query($sql);
$row = Database::store_result($result);
//I'm a session admin?
//I'm a session admin?
if (isset($row) && isset($row[0]) && $row[0]['session_admin_id'] == $user_id) {
$_courseUser['role'] = 'Professor';
$is_courseMember = false;
@ -588,9 +587,9 @@ class Login
} else {
//Im a coach or a student?
$sql = "SELECT id_user, status FROM " . $tbl_session_course_user . "
WHERE course_code = '$_cid' AND
WHERE course_code = '$_cid' AND
id_user = '" . $user_id . "' AND
id_session = '" . $session_id . "'
id_session = '" . $session_id . "'
LIMIT 1";
$result = Database::query($sql);
@ -728,9 +727,9 @@ class Login
* @global int $_cid
* @global array $_course
* @global int $_gid
*
*
* @param int $group_id
* @param bool $reset
* @param bool $reset
*/
static function init_group($group_id, $reset)
{
@ -785,14 +784,14 @@ class Login
}
}
}
/**
* Returns true if user exists in the platform when asking the password
*
*
* @param string $username (email or username)
* @return boolean
*/
function get_user_accounts_by_username($username) {
function get_user_accounts_by_username($username) {
if (strpos($username,'@')){
$username = api_strtolower($username);
$email = true;
@ -809,8 +808,8 @@ class Login
}
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$query = "SELECT user_id AS uid, lastname AS lastName, firstname AS firstName, username AS loginName, password, email,
status AS status, official_code, phone, picture_uri, creator_id
$query = "SELECT user_id AS uid, lastname AS lastName, firstname AS firstName, username AS loginName, password, email,
status AS status, official_code, phone, picture_uri, creator_id
FROM $tbl_user
WHERE ( $condition AND active = 1) ";
$result = Database::query($query);

@ -610,7 +610,6 @@ function api_get_path($path_type, $path = null) {
}
$root_web = $server_protocol.'://'.$server_name.$root_rel;
$root_sys = str_replace('\\', '/', realpath(dirname(__FILE__).'/../../../')).'/';
$code_folder = 'main/';
//}
// Here we give up, so we don't touch anything.
}
@ -1144,15 +1143,11 @@ function api_get_user_courses($userid, $fetch_session = true) {
if ($userid != strval(intval($userid))) { return array(); } //get out if not integer
$t_course = Database::get_main_table(TABLE_MAIN_COURSE);
$t_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$t_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$t_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$t_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql_select_courses = "SELECT cc.code code, cc.db_name db, cc.directory dir, cu.status status
FROM $t_course cc,
$t_course_user cu
WHERE cc.code = cu.course_code
AND cu.user_id = '".$userid."' AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." ";
FROM $t_course cc, $t_course_user cu
WHERE cc.id = cu.c_id
AND cu.user_id = '".$userid."' AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." ";
$result = Database::query($sql_select_courses);
if ($result === false) { return array(); }
while ($row = Database::fetch_array($result)) {
@ -2370,7 +2365,7 @@ function api_get_user_platform_status($user_id = false) {
case STUDENT;
$course_status['status'] = 'student';
//check if tutor
$tutor_course_status = CourseManager::get_tutor_in_course_status($user_id, $course_code);
$tutor_course_status = CourseManager::get_tutor_in_course_status($user_id, $course_id);
if ($tutor_course_status) {
$course_status['status'] = 'tutor';
}
@ -3770,7 +3765,8 @@ function api_return_html_area($name, $content = '', $height = '', $width = '100%
function api_max_sort_value($user_course_category, $user_id) {
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql_max = "SELECT max(sort) as max_sort FROM $tbl_course_user WHERE user_id='".intval($user_id)."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND user_course_cat='".Database::escape_string($user_course_category)."'";
$sql_max = "SELECT max(sort) as max_sort FROM $tbl_course_user
WHERE user_id='".intval($user_id)."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND user_course_cat='".Database::escape_string($user_course_category)."'";
$result_max = Database::query($sql_max);
if (Database::num_rows($result_max) == 1) {
$row_max = Database::fetch_array($result_max);
@ -4257,12 +4253,13 @@ function api_get_version() {
* @return string
*/
function api_get_software_name() {
global $_configuration;
return 'Chamilo';
/*global $_configuration;
if (isset($_configuration['software_name']) && !empty($_configuration['software_name'])) {
return $_configuration['software_name'];
} else {
return 'Chamilo';
}
}*/
}
/**
@ -4769,6 +4766,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
}
}
$cid = Database::escape_string($cid);
$courseInfo = api_get_course_info($cid);
global $is_platformAdmin;
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
@ -4809,7 +4807,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
AND
relation_type <> '".COURSE_RELATION_TYPE_RRHH."'
AND
course_code = '$cid'
course_code = ".$courseInfo['real_id']."
LIMIT 1";
$result = Database::query($sql);
@ -5101,16 +5099,16 @@ function api_get_access_url_from_user($user_id) {
/**
* Gets the status of a user in a course
* @param int user_id
* @param string course_code
* @param int course id
* @return int user status
*/
function api_get_status_of_user_in_course ($user_id, $course_code) {
$tbl_rel_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
if (!empty($user_id) && !empty($course_code)) {
$user_id = Database::escape_string(intval($user_id));
$course_code = Database::escape_string($course_code);
$sql = 'SELECT status FROM '.$tbl_rel_course_user.'
WHERE user_id='.$user_id.' AND course_code="'.$course_code.'";';
function api_get_status_of_user_in_course ($user_id, $courseId)
{
if (!empty($user_id) && !empty($courseId)) {
$tbl_rel_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$user_id = intval($user_id);
$courseId = Database::escape_string($courseId);
$sql = 'SELECT status FROM '.$tbl_rel_course_user.' WHERE user_id='.$user_id.' AND c_id="'.$courseId.'"';
$result = Database::query($sql);
$row_status = Database::fetch_array($result, 'ASSOC');
return $row_status['status'];
@ -5201,7 +5199,10 @@ function api_is_valid_secret_key($original_key_secret, $security_key) {
*/
function api_is_user_of_course($course_id, $user_id) {
$tbl_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql = 'SELECT user_id FROM '.$tbl_course_rel_user.' WHERE course_code="'.Database::escape_string($course_id).'" AND user_id="'.Database::escape_string($user_id).'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ';
$sql = 'SELECT user_id FROM '.$tbl_course_rel_user.'
WHERE c_id ="'.Database::escape_string($course_id).'" AND
user_id="'.Database::escape_string($user_id).'" AND
relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ';
$result = Database::query($sql);
return Database::num_rows($result) == 1;
}
@ -6332,6 +6333,8 @@ function api_detect_user_roles($user_id, $course_code, $session_id = 0) {
/*$user_info = api_get_user_info($user_id);
$user_roles[] = $user_info['status'];*/
$courseInfo = api_get_course_info($course_code);
$url_id = api_get_current_access_url_id();
if (api_is_platform_admin_by_id($user_id, $url_id)) {
$user_roles[] = PLATFORM_ADMIN;
@ -6349,10 +6352,10 @@ function api_detect_user_roles($user_id, $course_code, $session_id = 0) {
if (!empty($course_code)) {
if (empty($session_id)) {
if (CourseManager::is_course_teacher($user_id, $course_code)) {
if (CourseManager::is_course_teacher($user_id, $courseInfo['real_id'])) {
$user_roles[] = COURSEMANAGER;
}
if (CourseManager::get_tutor_in_course_status($user_id, $course_code)) {
if (CourseManager::get_tutor_in_course_status($user_id, $courseInfo['real_id'])) {
$user_roles[] = COURSE_TUTOR;
}

@ -555,7 +555,7 @@ class PageController
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_get_course_list = "SELECT * FROM $main_course_table as course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=course.code)
ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $url_access_id AND category_code = '".Database::escape_string($_GET['category'])."' ORDER BY title, UPPER(visual_code)";
}
}
@ -602,7 +602,7 @@ class PageController
LEFT JOIN $main_category_table t2 ON t1.code=t2.parent_id
LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses)
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=t3.code)
ON (url_rel_course.c_id = t3.id)
WHERE access_url_id = $url_access_id AND t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name";
}

@ -66,7 +66,6 @@ class PDF {
Display::$global_template->assign('organization', $organization);
//Showing only the current teacher/admin instead the all teacherlist name see BT#4080
//$teacher_list = CourseManager::get_teacher_list_from_course_code_to_string($course_code);
$user_info = api_get_user_info();

@ -25,13 +25,14 @@ class Statistics {
* all courses.
* @return int Number of courses counted
*/
static function count_courses($category_code = NULL) {
global $_configuration;
static function count_courses($category_code = NULL)
{
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) {
$sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u WHERE u.course_code=c.code AND access_url_id='".$current_url_id."'";
$sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u
WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'";
if (isset ($category_code)) {
$sql .= " AND category_code = '".Database::escape_string($category_code)."'";
}
@ -58,7 +59,9 @@ class Statistics {
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) {
$sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, ".$access_url_rel_course_table." as u WHERE u.course_code=c.code AND access_url_id='".$current_url_id."'";
$sql = "SELECT COUNT(*) AS number
FROM ".$course_table." as c, ".$access_url_rel_course_table." as u
WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'";
if (isset ($vis)) {
$sql .= " AND visibility = ".intval($vis);
}
@ -93,15 +96,24 @@ class Statistics {
$status_filter = isset($status)?' AND status = '.intval($status):'';
if (api_is_multiple_url_enabled()) {
$sql = "SELECT COUNT(DISTINCT(u.user_id)) AS number FROM $user_table as u, $access_url_rel_user_table as url WHERE u.user_id=url.user_id AND access_url_id='".$current_url_id."' $status_filter $active_filter";
$sql = "SELECT COUNT(DISTINCT(u.user_id)) AS number
FROM $user_table as u, $access_url_rel_user_table as url
WHERE u.user_id=url.user_id AND access_url_id='".$current_url_id."' $status_filter $active_filter";
if (isset ($category_code)) {
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url WHERE c.code = cu.course_code AND c.category_code = '".Database::escape_string($category_code)."' AND cu.user_id=url.user_id AND access_url_id='".$current_url_id."' $status_filter $active_filter";
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url
WHERE c.id = cu.c_id AND
c.category_code = '".Database::escape_string($category_code)."' AND
cu.user_id=url.user_id AND
access_url_id='".$current_url_id."' $status_filter $active_filter";
}
} else {
$sql = "SELECT COUNT(DISTINCT(user_id)) AS number FROM $user_table WHERE 1=1 $status_filter $active_filter";
if (isset ($category_code)) {
$status_filter = isset($status)?' AND status = '.intval($status):'';
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number FROM $course_user_table cu, $course_table c WHERE c.code = cu.course_code AND c.category_code = '".Database::escape_string($category_code)."' $status_filter $active_filter";
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c
WHERE c.id = cu.c_id AND c.category_code = '".Database::escape_string($category_code)."' $status_filter $active_filter";
}
}
@ -407,10 +419,11 @@ class Statistics {
/**
* Show some stats about the accesses to the different course tools
*/
static function print_tool_stats() {
global $_configuration;
static function print_tool_stats()
{
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
$table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
$tools = array('announcement','assignment','calendar_event',
@ -421,14 +434,13 @@ class Statistics {
foreach ($tools as $tool) {
$tool_names[$tool] = get_lang(ucfirst($tool), '');
}
if ($_configuration['multiple_access_urls']) {
$sql = "SELECT access_tool, count( access_id ) ".
"AS number_of_logins FROM $table, $access_url_rel_course_table ".
"WHERE access_tool IN ('".implode("','",$tools)."') AND course_code = access_cours_code AND access_url_id='".$current_url_id."' ".
if (api_is_multiple_url_enabled()) {
$sql = "SELECT access_tool, count( access_id ) AS number_of_logins
FROM $table, $access_url_rel_course_table u, $tableCourse c
WHERE access_tool IN ('".implode("','",$tools)."') AND c.id = u.c_id AND c.code = access_cours_code AND access_url_id='".$current_url_id."' ".
"GROUP BY access_tool ";
} else {
$sql = "SELECT access_tool, count( access_id ) ".
"AS number_of_logins FROM $table ".
$sql = "SELECT access_tool, count( access_id ) AS number_of_logins FROM $table ".
"WHERE access_tool IN ('".implode("','",$tools)."') ".
"GROUP BY access_tool ";
}
@ -444,17 +456,17 @@ class Statistics {
* Show some stats about the number of courses per language
*/
static function print_course_by_language_stats() {
global $_configuration;
$table = Database :: get_main_table(TABLE_MAIN_COURSE);
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
if ($_configuration['multiple_access_urls']) {
if (api_is_multiple_url_enabled()) {
$sql = "SELECT course_language, count( c.code ) AS number_of_courses ".
"FROM $table as c, $access_url_rel_course_table as u
WHERE u.course_code=c.code AND access_url_id='".$current_url_id."'
WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'
GROUP BY course_language ORDER BY number_of_courses DESC";
} else {
$sql = "SELECT course_language, count( code ) AS number_of_courses ".
$sql = "SELECT course_language, count(code) AS number_of_courses ".
"FROM $table GROUP BY course_language ORDER BY number_of_courses DESC";
}
$res = Database::query($sql);
@ -528,8 +540,8 @@ class Statistics {
/**
* Shows statistics about the time of last visit to each course.
*/
static function print_course_last_visit() {
global $_configuration;
static function print_course_last_visit()
{
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
@ -561,8 +573,10 @@ class Statistics {
$values = $form->exportValues();
$date_diff = $values['date_diff'];
$table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
if ($_configuration['multiple_access_urls']) {
$sql = "SELECT * FROM $table, $access_url_rel_course_table WHERE course_code = access_cours_code AND access_url_id='".$current_url_id."' ".
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
if (api_is_multiple_url_enabled()) {
$sql = "SELECT * FROM $table, $access_url_rel_course_table, $tableCourse c
WHERE c.id c_id AND access_cours_code = c.code AND access_url_id='".$current_url_id."' ".
"GROUP BY access_cours_code ".
"HAVING access_cours_code <> '' ".
"AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;

@ -331,7 +331,7 @@ class Template
//Here we can add system parameters that can be use in any template
$_s = array(
'software_name' => $_configuration['software_name'],
'software_name' => api_get_software_name(),
'system_version' => $_configuration['system_version'],
'site_name' => api_get_setting('siteName'),
'institution' => api_get_setting('Institution')
@ -674,7 +674,7 @@ class Template
if (api_get_setting('show_teacher_data') == 'true') {
// course manager
$id_course = api_get_course_id();
$id_course = api_get_course_int_id();
if (isset($id_course) && $id_course != -1) {
$teacher_data = '';
$mail = CourseManager::get_emails_of_tutors_to_course($id_course);
@ -790,7 +790,7 @@ class Template
$clean_url = replace_dangerous_char($url);
$clean_url = str_replace('/', '-', $clean_url);
$clean_url .= '/';
$homep = api_get_path(SYS_PATH).'home/'.$clean_url; //homep for Home Path
$homep = api_get_path(SYS_DATA_PATH).'home/'.$clean_url; //homep for Home Path
//we create the new dir for the new sites
if (!is_dir($homep)) {
mkdir($homep, api_get_permissions_for_new_directories());

@ -397,15 +397,15 @@ class Tracking
$tbl_session_course_rel_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql = 'SELECT DISTINCT course_code
FROM '.$tbl_course_rel_user.'
WHERE user_id = '.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH;
FROM '.$tbl_course_rel_user.'
WHERE user_id = '.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH;
$rs = Database::query($sql);
$nb_courses = Database::num_rows($rs);
if ($include_sessions) {
$sql = 'SELECT DISTINCT course_code
FROM '.$tbl_session_course_rel_user.'
WHERE id_user = '.$user_id;
FROM '.$tbl_session_course_rel_user.'
WHERE id_user = '.$user_id;
$rs = Database::query($sql);
$nb_courses += Database::num_rows($rs);
}
@ -1360,15 +1360,23 @@ class Tracking
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = 'SELECT DISTINCT scu.course_code FROM '.$tbl_session_course_user.' scu INNER JOIN '.$tbl_course_rel_access_url.' cru
ON (scu.course_code = cru.course_code)
WHERE scu.id_user='.$coach_id.' AND scu.status=2 AND cru.access_url_id = '.$access_url_id;
$sql = 'SELECT DISTINCT scu.course_code
FROM '.$tbl_session_course_user.' scu
INNER JOIN '.$tbl_course.' c
ON (scu.course_code = c.code)
INNER JOIN '.$tbl_course_rel_access_url.' cru
ON (cru.c_id = c.id)
WHERE scu.id_user='.$coach_id.' AND
scu.status=2 AND
cru.access_url_id = '.$access_url_id;
}
}
if (!empty($id_session))
$sql .= ' AND id_session='.$id_session;
$result = Database::query($sql);
while ($row = Database::fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
}
@ -1376,12 +1384,12 @@ class Tracking
// Then, courses where $coach_id is coach of the session
$sql = 'SELECT DISTINCT session_course.course_code
FROM '.$tbl_session_course.' as session_course
INNER JOIN '.$tbl_session.' as session
ON session.id = session_course.id_session
AND session.id_coach = '.$coach_id.'
INNER JOIN '.$tbl_course.' as course
ON course.code = session_course.course_code';
FROM '.$tbl_session_course.' as session_course
INNER JOIN '.$tbl_session.' as session
ON session.id = session_course.id_session
AND session.id_coach = '.$coach_id.'
INNER JOIN '.$tbl_course.' as course
ON course.code = session_course.course_code';
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
@ -1395,7 +1403,7 @@ class Tracking
INNER JOIN '.$tbl_course.' as course
ON course.code = session_course.course_code
INNER JOIN '.$tbl_course_rel_access_url.' course_rel_url
ON (session_course.course_code = course_rel_url.course_code)';
ON (course.id = course_rel_url.c_id)';
}
}
@ -1947,7 +1955,7 @@ class Tracking
* @param int Session id (optional)
* @return array Inactives users
*/
public static function get_inactives_students_in_course($course_code, $since = 'never', $session_id = 0)
public static function get_inactives_students_in_course($courseId, $since = 'never', $session_id = 0)
{
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
@ -1969,7 +1977,7 @@ class Tracking
LEFT JOIN '.$tbl_track_login.' stats_login
ON course_user.user_id = stats_login.user_id AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' '.
$inner.'
WHERE course_user.course_code = \''.Database::escape_string($course_code).'\'
WHERE course_user.c_id = \''.Database::escape_string($courseId).'\'
AND stats_login.login_course_date IS NULL
GROUP BY course_user.user_id';
}
@ -2275,7 +2283,6 @@ class Tracking
*/
static function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true)
{
global $_configuration;
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
@ -2288,11 +2295,15 @@ class Tracking
// get course list
if (api_is_multiple_url_enabled()) {
$sql = 'SELECT cu.course_code as code, title
FROM '.$tbl_course_user.' cu INNER JOIN '.$tbl_access_rel_course.' a ON(a.course_code = cu.course_code) INNER JOIN '.$tbl_course.' c ON( cu.course_code = c.code)
WHERE user_id='.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND access_url_id = '.api_get_current_access_url_id().' ORDER BY title ';
FROM '.$tbl_course_user.' cu INNER JOIN '.$tbl_access_rel_course.' a
ON(a.c_id = cu.c_id) INNER JOIN '.$tbl_course.' c ON( cu.c_id = c.id)
WHERE user_id='.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND access_url_id = '.api_get_current_access_url_id().'
ORDER BY title ';
} else {
$sql = 'SELECT course_code as code, title FROM '.$tbl_course_user.' u INNER JOIN '.$tbl_course.' c ON(course_code = c.code)
WHERE u.user_id='.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ORDER BY title ';
$sql = 'SELECT course_code as code, title
FROM '.$tbl_course_user.' u INNER JOIN '.$tbl_course.' c ON(u.c_id = c.id)
WHERE u.user_id='.$user_id.' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.'
ORDER BY title ';
}
$rs = Database::query($sql);
@ -2303,11 +2314,17 @@ class Tracking
// Get the list of sessions where the user is subscribed as student
if (api_is_multiple_url_enabled()) {
$sql = 'SELECT DISTINCT cu.course_code, id_session as session_id, name FROM '.$tbl_session_course_user.' cu INNER JOIN '.$tbl_access_rel_session.' a ON(a.session_id = cu.id_session) INNER JOIN '.$tbl_session.' s ON(s.id = a.session_id)
WHERE id_user='.$user_id.' AND access_url_id = '.api_get_current_access_url_id().' ORDER BY name ';
$sql = 'SELECT DISTINCT cu.course_code, id_session as session_id, name
FROM '.$tbl_session_course_user.' cu INNER JOIN '.$tbl_access_rel_session.' a
ON(a.session_id = cu.id_session)
INNER JOIN '.$tbl_session.' s ON(s.id = a.session_id)
WHERE id_user='.$user_id.' AND access_url_id = '.api_get_current_access_url_id().'
ORDER BY name ';
} else {
$sql = 'SELECT DISTINCT course_code, id_session as session_id, name FROM '.$tbl_session_course_user.' u INNER JOIN '.$tbl_session.' s ON(s.id = u.id_session)
WHERE id_user='.$user_id.' ORDER BY name ';
$sql = 'SELECT DISTINCT course_code, id_session as session_id, name
FROM '.$tbl_session_course_user.' u INNER JOIN '.$tbl_session.' s ON(s.id = u.id_session)
WHERE id_user='.$user_id.'
ORDER BY name ';
}
$rs = Database::query($sql);
@ -4548,5 +4565,4 @@ class TrackingUserLogCSV
}
return array($title_line, $line);
}
}

File diff suppressed because it is too large Load Diff

@ -375,7 +375,8 @@ class UserManager {
* @assert (-1) === false
* @assert ('abc') === false
*/
public static function can_delete_user($user_id) {
public static function can_delete_user($user_id)
{
global $_configuration;
if (isset($_configuration['delete_users']) && $_configuration['delete_users'] == false) {
return false;
@ -391,7 +392,7 @@ class UserManager {
$sql = "SELECT * FROM $table_course_user WHERE status = '1' AND user_id = '".$user_id."'";
$res = Database::query($sql);
while ($course = Database::fetch_object($res)) {
$sql = "SELECT user_id FROM $table_course_user WHERE status='1' AND course_code ='".Database::escape_string($course->course_code)."'";
$sql = "SELECT user_id FROM $table_course_user WHERE status='1' AND c_id ='".Database::escape_string($course->c_id)."'";
$res2 = Database::query($sql);
if (Database::num_rows($res2) == 1) {
return false;
@ -427,7 +428,6 @@ class UserManager {
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$usergroup_rel_user = Database :: get_main_table(TABLE_USERGROUP_REL_USER);
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
//$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$table_admin = Database :: get_main_table(TABLE_MAIN_ADMIN);
$table_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
@ -437,7 +437,7 @@ class UserManager {
// Unsubscribe the user from all groups in all his courses
$sql = "SELECT c.id FROM $table_course c, $table_course_user cu
WHERE cu.user_id = '".$user_id."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c.code = cu.course_code";
WHERE cu.user_id = '".$user_id."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c.id = cu.c_id";
$res = Database::query($sql);
while ($course = Database::fetch_object($res)) {
$sql = "DELETE FROM $table_group WHERE c_id = {$course->id} AND user_id = $user_id";
@ -1165,26 +1165,6 @@ class UserManager {
return false;
}
/** Get the teacher list
* @param int the course ID
* @param array Content the list ID of user_id selected
*/
//for survey
// TODO: Ivan, 14-SEP-2009: It seems that this method is not used at all (it can be located in a test unit only. To be deprecated?
public static function get_teacher_list($course_id, $sel_teacher = '') {
$user_course_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
$course_id = Database::escape_string($course_id);
$sql_query = "SELECT * FROM $user_table a, $user_course_table b where a.user_id=b.user_id AND b.status=1 AND b.course_code='$course_id'";
$sql_result = Database::query($sql_query);
echo "<select name=\"author\">";
while ($result = Database::fetch_array($sql_result)) {
if ($sel_teacher == $result['user_id']) $selected ="selected";
echo "\n<option value=\"".$result['user_id']."\" $selected>".$result['firstname']."</option>";
}
echo "</select>";
}
/**
* Get user picture URL or path from user ID (returns an array).
* The return format is a complete path, enabling recovery of the directory
@ -2559,7 +2539,8 @@ class UserManager {
* @param integer $user_id
* @return array list of statuses (session_id-course_code => status)
*/
public static function get_personal_session_course_list($user_id) {
public static function get_personal_session_course_list($user_id)
{
// Database Table Definitions
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
@ -2577,7 +2558,7 @@ class UserManager {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$join_access_url = "INNER JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code = course.code";
$join_access_url = "INNER JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id = course.id";
$where_access_url = " AND access_url_id = $access_url_id ";
}
}
@ -2591,7 +2572,7 @@ class UserManager {
course_rel_user.user_course_cat user_course_cat
FROM $tbl_course_user course_rel_user
INNER JOIN $tbl_course course
ON course.code = course_rel_user.course_code
ON course.id = course_rel_user.c_id
INNER JOIN $tbl_user_course_category user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
$join_access_url
@ -3538,7 +3519,8 @@ class UserManager {
* @deprecated this function is never use in chamilo, use CourseManager::get_special_course_list
* @since Dokeos 1.8.6.2
*/
public static function get_special_course_list() {
public static function get_special_course_list()
{
// Database Table Definitions
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
@ -3553,7 +3535,7 @@ class UserManager {
$access_url_id = api_get_current_access_url_id();
$tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$join_access_url= "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= course.code";
$join_access_url= "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id = course.id";
$where_access_url=" AND access_url_id = $access_url_id ";
}
@ -3578,7 +3560,7 @@ class UserManager {
$course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM ".$tbl_course_user." course_rel_user
LEFT JOIN ".$tbl_course." course
ON course.code = course_rel_user.course_code
ON course.id = course_rel_user.c_id
LEFT JOIN ".$tbl_user_course_category." user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
$join_access_url
@ -3803,18 +3785,21 @@ class UserManager {
}
/**
* get user id of teacher or session administrator
* @param string The course id
* @param array course info
* @return int The user id
*/
public static function get_user_id_of_course_admin_or_session_admin ($course_id) {
$session=api_get_session_id();
public static function get_user_id_of_course_admin_or_session_admin($courseInfo) {
$session = api_get_session_id();
$courseCode = $courseInfo['code'];
$courseId = $courseInfo['real_id'];
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$table_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
if ($session==0 || is_null($session)) {
$sql='SELECT u.user_id FROM '.$table_user.' u
INNER JOIN '.$table_course_user.' ru ON ru.user_id=u.user_id
WHERE ru.status=1 AND ru.course_code="'.Database::escape_string($course_id).'" ';
WHERE ru.status=1 AND ru.course_code="'.Database::escape_string($courseId).'" ';
$rs=Database::query($sql);
$num_rows=Database::num_rows($rs);
if ($num_rows==1) {
@ -3828,13 +3813,12 @@ class UserManager {
} elseif ($session>0) {
$sql='SELECT u.user_id FROM '.$table_user.' u
INNER JOIN '.$table_session_course_user.' sru
ON sru.id_user=u.user_id WHERE sru.course_code="'.Database::escape_string($course_id).'" ';
ON sru.id_user=u.user_id WHERE sru.course_code="'.Database::escape_string($courseCode).'" ';
$rs=Database::query($sql);
$row=Database::fetch_array($rs);
return $row['user_id'];
}
}
}
/**
* Determines if a user is a gradebook certified

@ -747,7 +747,7 @@ if ((isset($uidReset) && $uidReset) || (isset($cidReset) && $cidReset)) {
//Checking if the user filled the course legal agreement
if ($_course['activate_legal'] == 1 && !api_is_platform_admin()) {
$user_is_subscribed = CourseManager::is_user_accepted_legal($user_id, $_course['id'], $session_id) || $user_pass_open_course;
$user_is_subscribed = CourseManager::is_user_accepted_legal($user_id, $_course, $session_id) || $user_pass_open_course;
if (!$user_is_subscribed) {
$url = api_get_path(WEB_CODE_PATH).'course_info/legal.php?course_code='.$_course['code'].'&session_id='.$session_id;
header('Location: '.$url);
@ -756,13 +756,13 @@ if ((isset($uidReset) && $uidReset) || (isset($cidReset) && $cidReset)) {
}
}
if (isset($user_id) && $user_id && isset($_cid) && $_cid) {
if (isset($user_id) && $user_id && isset($_cid) && !empty($_cid) && $_cid != -1) {
//Check if user is subscribed in a course
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "SELECT * FROM $course_user_table
WHERE user_id = '".$user_id."' AND relation_type <> ".COURSE_RELATION_TYPE_RRHH."
AND course_code = '$cidReq'";
AND c_id = ".$_course['real_id'];
$result = Database::query($sql);
$cuData = null;

@ -1568,12 +1568,12 @@ INSERT INTO access_url_rel_user VALUES(1, 1);
DROP TABLE IF EXISTS access_url_rel_course;
CREATE TABLE IF NOT EXISTS access_url_rel_course (
id int unsigned NOT NULL auto_increment,
access_url_id int unsigned NOT NULL,
course_code char(40) NOT NULL,
PRIMARY KEY (access_url_id, course_code)
c_id int unsigned NOT NULL default 0,
PRIMARY KEY (id)
);
DROP TABLE IF EXISTS access_url_rel_session;
CREATE TABLE IF NOT EXISTS access_url_rel_session (
access_url_id int unsigned NOT NULL,
@ -3332,15 +3332,13 @@ DROP TABLE IF EXISTS track_e_hotspot;
CREATE TABLE track_e_hotspot (
hotspot_id int NOT NULL auto_increment,
hotspot_user_id int NOT NULL,
hotspot_course_code varchar(50) NOT NULL,
hotspot_exe_id int NOT NULL,
hotspot_question_id int NOT NULL,
hotspot_answer_id int NOT NULL,
hotspot_correct tinyint(3) unsigned NOT NULL,
hotspot_coordinate text NOT NULL,
c_id int NOT NULL default 0,
PRIMARY KEY (hotspot_id),
KEY hotspot_course_code (hotspot_course_code),
PRIMARY KEY (hotspot_id),
KEY hotspot_user_id (hotspot_user_id),
KEY hotspot_exe_id (hotspot_exe_id),
KEY hotspot_question_id (hotspot_question_id)

@ -194,6 +194,7 @@ ALTER TABLE track_e_hotpotatoes ADD COLUMN c_id int unsigned NOT NULL default 0;
ALTER TABLE track_e_exercices ADD COLUMN c_id int unsigned NOT NULL default 0;
ALTER TABLE track_e_attempt ADD COLUMN c_id int unsigned NOT NULL default 0;
ALTER TABLE track_e_hotspot ADD COLUMN c_id int unsigned NOT NULL default 0;
ALTER TABLE access_url_rel_course ADD COLUMN c_id int unsigned NOT NULL default 0;
ALTER TABLE c_quiz ADD COLUMN autolaunch int DEFAULT 0;
RENAME TABLE c_quiz_question_category TO c_quiz_category;

@ -41,28 +41,6 @@ $tbl_session_rel_course_rel_user = Database :: get_main_table(TABLE_MAIN_SESSIO
$tbl_session_rel_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
/*
FUNCTIONS
*/
/*Posible Deprecated*/
function is_coach() {
global $tbl_session_course;
$sql = "SELECT course_code FROM $tbl_session_course WHERE id_coach='".intval($_SESSION["_uid"])."'";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
return true;
}
return false;
}
/**
* MAIN PART
*/
if (isset($_POST['export'])) {
$order_clause = api_is_western_name_order(PERSON_NAME_DATA_EXPORT) ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
} else {
@ -80,9 +58,11 @@ if (isset($_GET["id_student"])) {
WHERE srcru.id_user=user_id AND srcru.status=2 ".$order_clause;
} else {
$sql_coachs = "SELECT DISTINCT id_user as id_coach, $tbl_user.user_id, lastname, firstname
FROM $tbl_user as user, $tbl_session_rel_course_user as srcu, $tbl_course_user as course_rel_user
WHERE course_rel_user.course_code=srcu.course_code AND course_rel_user.status='1' AND course_rel_user.user_id='".intval($_SESSION["_uid"])."'
AND srcu.id_user=user.user_id AND srcu.status=2 ".$order_clause;
FROM $tbl_user as user, $tbl_session_rel_course_user as srcu, $tbl_course_user as course_rel_user, $tbl_course course
WHERE course_rel_user.c_id = course.id AND srcu.course_code = course.code AND
course_rel_user.status='1' AND
course_rel_user.user_id='".api_get_user_id()."' AND
srcu.id_user=user.user_id AND srcu.status=2 ".$order_clause;
}
}
@ -108,7 +88,7 @@ if (Database::num_rows($result_coachs) > 0) {
$id_coach = $coachs["id_coach"];
if (isset($_GET["id_student"])) {
$sql_infos_coach = "SELECT lastname, firstname FROM $tbl_user WHERE user_id='$id_coach'";
$sql_infos_coach = "SELECT lastname, firstname FROM $tbl_user WHERE user_id = '$id_coach'";
$result_coachs_infos = Database::query($sql_infos_coach);
$lastname = Database::result($result_coachs_infos, 0, "lastname");
$firstname = Database::result($result_coachs_infos, 0, "firstname");
@ -177,4 +157,4 @@ if (isset($_POST['export'])){
echo "<br /><br />";
echo "<form method='post' action='coaches.php'><button type='submit' class='save' name='export' value='".get_lang('exportExcel')."'>".get_lang('exportExcel')."</button><form>";
Display::display_footer();
Display::display_footer();

@ -164,9 +164,11 @@ if (is_array($a_courses)) {
// students directly subscribed to the course
if (empty($id_session)) {
$sql = "SELECT user_id FROM $tbl_user_course as course_rel_user WHERE course_rel_user.status='5' AND course_rel_user.course_code='$course_code'";
$sql = "SELECT user_id FROM $tbl_user_course as course_rel_user
WHERE course_rel_user.status='5' AND course_rel_user.c_id =".$course['real_id'];
} else {
$sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu WHERE srcu. course_code='$course_code' AND id_session = '$id_session' AND srcu.status<>2";
$sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu
WHERE srcu. course_code='$course_code' AND id_session = '$id_session' AND srcu.status<>2";
}
$rs = Database::query($sql);

@ -39,7 +39,7 @@ if (!empty($my_courses)) {
continue;
}
$teachers = CourseManager::get_teacher_list_from_course_code($course_code);
$teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
$teacher_list = array();
//$teacher_list = array($course_info['titular']);

@ -39,7 +39,7 @@ if (isset($_GET['course'])) {
$user_infos = UserManager :: get_user_info_by_id($user_id);
$name = api_get_person_name($user_infos['firstname'], $user_infos['lastname']);
if (!api_is_platform_admin(true) && !CourseManager :: is_course_teacher(api_get_user_id(), $cidReq) && !Tracking :: is_allowed_to_coach_student(api_get_user_id(), $_GET['student_id']) && !api_is_drh() && !api_is_course_tutor()) {
if (!api_is_platform_admin(true) && !CourseManager :: is_course_teacher(api_get_user_id(), api_get_course_int_id()) && !Tracking :: is_allowed_to_coach_student(api_get_user_id(), $_GET['student_id']) && !api_is_drh() && !api_is_course_tutor()) {
api_not_allowed();
}
$course_exits = CourseManager::course_exists($cidReq);

@ -25,7 +25,7 @@ api_block_anonymous_users();
if (!api_is_allowed_to_create_course() && !api_is_session_admin() && !api_is_drh()) {
// Check if the user is tutor of the course
$user_course_status = CourseManager::get_tutor_in_course_status(api_get_user_id(), api_get_course_id());
$user_course_status = CourseManager::get_tutor_in_course_status(api_get_user_id(), api_get_course_int_id());
if ($user_course_status != 1) {
api_not_allowed(true);
}

@ -419,7 +419,7 @@ class MySpace {
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql = "SELECT code AS col0, title AS col1 FROM $main_course_table";
$sql = "SELECT code AS col0, title AS col1, id FROM $main_course_table";
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$result = Database::query($sql);
@ -444,6 +444,8 @@ class MySpace {
// the table header
$return = '<table class="data_table" style="width: 100%;border:0;padding:0;border-collapse:collapse;table-layout: fixed">';
$courseInfo = api_get_course_info($course_code);
// database table definition
$tbl_course_rel_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
@ -451,7 +453,7 @@ class MySpace {
// getting all the courses of the user
$sql = "SELECT * FROM $tbl_user AS u
INNER JOIN $tbl_course_rel_user AS cu ON cu.user_id = u.user_id
WHERE cu.course_code = '".$course_code."' AND ISNULL(cu.role);";
WHERE cu.c_id = '".$courseInfo['real_id']."' AND ISNULL(cu.role);";
$result = Database::query($sql);
$time_spent = 0;
$progress = 0;
@ -543,7 +545,8 @@ class MySpace {
* This function exports the table that we see in display_tracking_course_overview()
*
*/
function export_tracking_course_overview() {
function export_tracking_course_overview()
{
// database table definition
$tbl_course_rel_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
@ -590,13 +593,14 @@ class MySpace {
foreach ($course_data as $key => $course) {
$course_code = $course[0];
$course_title = $course[1];
$courseId = $course[2];
$csv_row = array();
$csv_row[] = $course_title;
// getting all the courses of the session
$sql = "SELECT * FROM $tbl_user AS u INNER JOIN $tbl_course_rel_user AS cu ON cu.user_id = u.user_id
WHERE cu.course_code = '".$course_code."' AND ISNULL(cu.role);";
WHERE cu.c_id = '".$courseId."' AND ISNULL(cu.role);";
$result = Database::query($sql);
$time_spent = 0;
$progress = 0;
@ -1119,9 +1123,8 @@ class MySpace {
* @version Dokeos 1.8.6
* @since October 2008
*/
function export_tracking_user_overview() {
function export_tracking_user_overview()
{
// database table definitions
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
@ -1190,7 +1193,8 @@ class MySpace {
// the other lines (the data)
foreach ($user_data as $key => $user) {
// getting all the courses of the user
$sql = "SELECT code, id FROM $tbl_course_user WHERE user_id = '".Database::escape_string($user[4])."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." ";
$sql = "SELECT code, id FROM $tbl_course_user
WHERE user_id = '".Database::escape_string($user[4])."' AND relation_type <> ".COURSE_RELATION_TYPE_RRHH." ";
$result = Database::query($sql);
while ($row = Database::fetch_array($result, 'ASSOC')) {
$csv_row = array();
@ -1262,7 +1266,7 @@ class MySpace {
}
// get all courses with limit
$sql = "SELECT course.code as col1, course.title as col2
$sql = "SELECT course.code as col1, course.title as col2, id
FROM $tbl_course course
WHERE course.code IN (".implode(',',$courses_code).")";
@ -1276,16 +1280,16 @@ class MySpace {
$res = Database::query($sql);
while ($row_course = Database::fetch_row($res)) {
$course_code = $row_course[0];
$course_info = api_get_course_info($course_code);
$courseId = $row_course[2];
$avg_assignments_in_course = $avg_messages_in_course = $nb_students_in_course = $avg_progress_in_course = $avg_score_in_course = $avg_time_spent_in_course = $avg_score_in_exercise = 0;
// students directly subscribed to the course
if (empty($session_id)) {
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user WHERE course_rel_user.status='5' AND course_rel_user.course_code='$course_code'";
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user WHERE course_rel_user.status='5' AND course_rel_user.course_code='$courseId'";
} else {
$sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu WHERE srcu. course_code='$course_code' AND id_session = '$session_id' AND srcu.status<>2";
$sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu WHERE srcu.course_code='$course_code' AND id_session = '$session_id' AND srcu.status<>2";
}
$rs = Database::query($sql);
$users = array();

@ -192,7 +192,7 @@ if ($ajax_search) {
INNER JOIN $tbl_session_rel_course session_rel_course
ON course.code = session_rel_course.course_code
AND session_rel_course.id_session = ".intval($id_session)."
INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.course_code=course.code)
INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.c_id = course.id)
WHERE access_url_id = $access_url_id
ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";
}
@ -221,7 +221,7 @@ if ($ajax_search) {
LEFT JOIN $tbl_session_rel_course session_rel_course
ON course.code = session_rel_course.course_code
AND session_rel_course.id_session = ".intval($id_session)."
INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.course_code=course.code)
INNER JOIN $tbl_course_rel_access_url url_course ON (url_course.c_id = course.id)
WHERE access_url_id = $access_url_id
ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";
}

@ -183,7 +183,7 @@ $stok = Security::get_token();
echo '</div>';
echo '<div class="span4">';
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['code']);
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['real_id']);
$teachers = '<h5>'.$teachers.'</h5>';
echo '<div class="categories-course-description"><h3>'.Text::cut($title, 60).'</h3>'.$teachers.$rating.'</div>';

@ -183,7 +183,7 @@ $stok = Security::get_token();
echo '</div>';
echo '<div class="span4">';
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['code']);
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['real_id']);
$teachers = '<h5>'.$teachers.'</h5>';
echo '<div class="categories-course-description"><h3>'.Text::cut($title, 60).'</h3>'.$teachers.$rating.'</div>';

@ -249,7 +249,7 @@ if (api_is_allowed_to_edit(null, true)) {
}
$description .= '<tr><td>'.get_lang('Course').': </td><td class="highlight">'.$course_info['name'].'</td>';
$teachers = CourseManager::get_teacher_list_from_course_code($course_info['code']);
$teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
//If I'm a teacher in this course show just my name
if (isset($teachers[$user_id])) {
@ -259,7 +259,7 @@ if (api_is_allowed_to_edit(null, true)) {
}
} else {
//If not show all teachers
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course_info['code']);
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course_info['real_id']);
if (!empty($teachers)) {
$description .= '<tr><td>'.get_lang('Teachers').': </td><td class="highlight">'.$teachers.'</td>';
}

@ -3975,16 +3975,12 @@ function WSSubscribeUserToCourse($params)
$result['result'] = 0;
} else {
// User was found
$course_id = CourseManager::get_course_id_from_original_id(
$original_course_id['original_course_id_value'],
$original_course_id['original_course_id_name']
);
$course_id = CourseManager::get_course_id_from_original_id($original_course_id['original_course_id_value'], $original_course_id['original_course_id_name']);
if ($course_id == 0) {
// Course was not found
$result['result'] = 0;
} else {
$course_code = CourseManager::get_course_code_from_course_id($course_id);
if (!CourseManager::add_user_to_course($user_id, $course_code, $status)) {
if (!CourseManager::add_user_to_course($user_id, $course_id, $status)) {
$result['result'] = 0;
}
}
@ -4070,7 +4066,7 @@ function WSSubscribeUserToCourseSimple($params)
return $result;
}
if (!empty($course_code)) {
$course_data = CourseManager::get_course_information($course_code);
$course_data = api_get_course_info($course_code);
if (empty($course_data)) {
// Course was not found
$result = "Course $course_code does not exist in the platform ";
@ -4081,7 +4077,7 @@ function WSSubscribeUserToCourseSimple($params)
if ($debug) {
error_log('Try to register: user_id= '.$user_id.' to course: '.$course_data['code']);
}
if (!CourseManager::add_user_to_course($user_id, $course_data['code'], $status)) {
if (!CourseManager::add_user_to_course($user_id, $course_data['real_id'], $status)) {
$result = 'User was not registered possible reasons: User already registered to the course, Course visibility doesnt allow user subscriptions ';
if ($debug) {
error_log($result);

@ -145,22 +145,21 @@ class BlockCourse extends Block {
* @return array
*/
function get_course_information_data() {
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$a_course_students = array();
$course_data = array();
$courses = $this->courses;
$thematic = new Thematic();
foreach ($courses as $row_course) {
$course_code = $row_course['code'];
$avg_assignments_in_course = $avg_messages_in_course = $nb_students_in_course = $avg_progress_in_course = $avg_score_in_course = $avg_time_spent_in_course = $avg_score_in_exercise = 0;
$courseId = $row_course['real_id'];
$nb_students_in_course = $avg_progress_in_course = $avg_score_in_course = $avg_time_spent_in_course = $avg_score_in_exercise = 0;
// students directly subscribed to the course
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user WHERE course_rel_user.status=".STUDENT." AND course_rel_user.course_code='$course_code'";
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user
WHERE course_rel_user.status=".STUDENT." AND course_rel_user.c_id = $courseId";
$rs = Database::query($sql);
$users = array();
while ($row = Database::fetch_array($rs)) {

@ -187,9 +187,8 @@ class BlockDaily extends Block {
$attendances[] = get_lang("NotAvailable");
}
// quantidade de alunos
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user WHERE course_rel_user.status=".STUDENT." AND course_rel_user.course_code='$course_code'";
$sql = "SELECT user_id FROM $tbl_course_user as course_rel_user
WHERE course_rel_user.status=".STUDENT." AND course_rel_user.c_id = ".$course_info['real_id'];
$rs = Database::query($sql);
$users = array();
while ($row = Database::fetch_array($rs)) {

@ -108,7 +108,7 @@ class RegisterCourseWidget
$user_id = $_user['user_id'];
}
return (bool)CourseManager::add_user_to_course($user_id, $course_code);
return (bool)CourseManager::add_user_to_course($user_id, $course['real_id']);
}
/**

@ -393,7 +393,7 @@ EOT;
course.title i, course.tutor_name t, course.db_name db, course.directory dir, course_rel_user.status status,
course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM $course_table course, $user_course_table course_rel_user
WHERE course.code = course_rel_user.course_code
WHERE course.id = course_rel_user.c_id
AND course_rel_user.user_id = $user_id
ORDER BY course_rel_user.sort ASC";
$result = array();

@ -199,11 +199,8 @@ class InstallCommand extends CommonCommand
'verbose_backup',
'session_stored_in_db',
'session_lifetime',
'software_name',
'software_url',
'deny_delete_users',
'system_version',
'system_stable'
);
// Getting default configuration parameters in the $_configuration array
require_once api_get_path(SYS_PATH).'main/install/configuration.dist.yml.php';

@ -430,18 +430,6 @@ class UserManagerTest extends PHPUnit_Framework_TestCase
);
}
/**
* @covers UserManager::get_teacher_list
* @todo Implement testGet_teacher_list().
*/
public function testGet_teacher_list()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers UserManager::get_user_picture_path_by_id
* @todo Implement testGet_user_picture_path_by_id().

Loading…
Cancel
Save