Lot of modifications due the date_start and date_end changes see BT#4874

skala
Julio Montoya 14 years ago
parent bf5041acfa
commit 7c2623633e
  1. 4
      main/admin/example_session.csv
  2. 4
      main/admin/example_session.xml
  3. 16
      main/admin/ldap_import_students_to_session.php
  4. 2
      main/admin/resume_session.php
  5. 78
      main/admin/session_add.php
  6. 390
      main/admin/session_export.php
  7. 169
      main/admin/session_import.php
  8. 16
      main/admin/session_list.php
  9. 2
      main/css/base.css
  10. 5
      main/inc/ajax/model.ajax.php
  11. 133
      main/inc/lib/course.lib.php
  12. 51
      main/inc/lib/course_home.lib.php
  13. 69
      main/inc/lib/display.lib.php
  14. 10
      main/inc/lib/formvalidator/Rule/CompareDateTimeText.php
  15. 86
      main/inc/lib/main_api.lib.php
  16. 4
      main/inc/lib/pear/HTML/QuickForm/Rule/Compare.php
  17. 79
      main/inc/lib/sessionmanager.lib.php
  18. 3
      main/inc/lib/social.lib.php
  19. 93
      main/inc/lib/usermanager.lib.php
  20. 112
      main/inc/lib/userportal.lib.php

@ -1,3 +1,3 @@
SessionName;Coach;DateStart;DateEnd;Users;Courses
Session1;jmontoya;2008/08/08;2012/12/12;username1|username2;course1[coach1][username1,username2]|course2[coach1][username1,username2]
Session2;jmontoya;2008/08/08;2012/12/12;username1|username2;course1[coach1][username1,username2]|course2[coach1][username1,username2]
Session1;jmontoya;2012-06-30 11:00:00;2016-06-30 11:00:00;username1|username2;course1[coach1][username1,username2]|course2[coach1][username1,username2]
Session2;jmontoya;2012-06-30 11:00:00;2016-06-30 11:00:00;username1|username2;course1[coach1][username1,username2]|course2[coach1][username1,username2]
1 SessionName Coach DateStart DateEnd Users Courses
2 Session1 jmontoya 2008/08/08 2012-06-30 11:00:00 2012/12/12 2016-06-30 11:00:00 username1|username2 course1[coach1][username1,username2]|course2[coach1][username1,username2]
3 Session2 jmontoya 2008/08/08 2012-06-30 11:00:00 2012/12/12 2016-06-30 11:00:00 username1|username2 course1[coach1][username1,username2]|course2[coach1][username1,username2]

@ -24,8 +24,8 @@
<Session>
<SessionName>The Universe</SessionName>
<Coach>Coach</Coach>
<DateStart>2008/08/01</DateStart>
<DateEnd>2020/12/12</DateEnd>
<DateStart>2012-06-30 11:00:00</DateStart>
<DateEnd>2016-06-30 11:00:00</DateEnd>
<User>jmontoya</User>
<User>jmontoya2</User>
<Course>

@ -87,18 +87,10 @@ elseif(!empty($annee) && empty($id_session))
echo Display::return_icon('course.gif', get_lang('SelectSessionToImportUsersTo')).' '.get_lang('SelectSessionToImportUsersTo').'<br />';
echo '<form method="post" action="'.api_get_self().'?annee='.Security::remove_XSS($annee).'"><br />';
echo '<select name="id_session">';
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT id,name,nbr_courses,date_start,date_end " .
" FROM $tbl_session ".
" ORDER BY name";
$result = Database::query($sql);
$sessions=Database::store_result($result);
$nbr_results=count($sessions);
foreach($sessions as $row)
{
echo '<option value="'.$row['id'].'">'.api_htmlentities($row['name'], ENT_COMPAT, api_get_system_encoding()).' ('.$row['date_start'].' - '.$row['date_end'].')</option>';
$sessions = SessionManager::get_sessions_list();
foreach ($sessions as $row) {
echo '<option value="'.$row['id'].'">'.api_htmlentities($row['name'], ENT_COMPAT, api_get_system_encoding()).' ('.api_get_local_time($row['access_start_date']).' - '.api_get_local_time($row['access_end_date']).')</option>';
}
echo '</select>';
echo '<input type="submit" value="'.get_lang('Submit').'">';

@ -112,7 +112,7 @@ $coach_info = api_get_user_info($session['id_coach']);
</td>
<td>
<?php
if (isset($session['date_end']) && $session['date_end'] != '00-00-0000') {
if (isset($session['access_end_date']) && $session['access_end_date'] != '0000-00-00 00:00:00') {
if ($session['visibility'] == 1)
echo get_lang('ReadOnly');
elseif($session['visibility'] == 2)

@ -32,9 +32,9 @@ $htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/dat
$htmlHeadXtra[] = '<link href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/datetimepicker/jquery-ui-timepicker-addon.css" rel="stylesheet" type="text/css" />';
$isocode = api_get_language_isocode();
//$isocode = 'es';
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/datetimepicker/localization/jquery-ui-timepicker-'.$isocode.'.js" type="text/javascript" language="javascript"></script>';
if ($isocode != 'en') {
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/datetimepicker/localization/jquery-ui-timepicker-'.$isocode.'.js" type="text/javascript" language="javascript"></script>';
}
$id = null;
$url_action = api_get_self();
@ -93,6 +93,22 @@ function check() {
$(function() {
$("#coach_id").fcbkcomplete({
json_url: "'.$url.'&a=find_coaches",
maxitems: 1,
addontab: false,
input_min_size: 1,
cache: false,
complete_text:"'.get_lang('StartToType').'",
firstselected: false,
onselect: check,
filter_selected: true,
newel: true
});
'.$add_coach.'
$("#display_end_date").datetimepicker({
dateFormat: "yy-mm-dd"
});
@ -111,12 +127,33 @@ $(function() {
hour: 9,
onSelect: function(selectedDateTime) {
var start = $(this).datetimepicker("getDate");
$("#access_end_date").val(selectedDateTime);
$("#access_end_date").val(selectedDateTime);
}
});
access_start_date_content = $("#access_end_date").val();
if (access_start_date_content.length > 0) {
$("#visibility_container").show();
} else {
$("#visibility_container").hide();
}
$("#access_end_date").datetimepicker({
dateFormat: "yy-mm-dd"
dateFormat: "yy-mm-dd",
onSelect: function(selectedDateTime) {
$("#visibility_container").show();
}
});
$("#access_end_date").on("change", function() {
content = $(this).val();
if (content.length > 0) {
$("#visibility_container").show();
} else {
$("#visibility_container").hide();
}
});
$("#coach_access_start_date").datetimepicker({
@ -132,21 +169,7 @@ $(function() {
dateFormat: "yy-mm-dd"
});
$("#coach_id").fcbkcomplete({
json_url: "'.$url.'&a=find_coaches",
maxitems: 1,
addontab: false,
input_min_size: 0,
cache: false,
filter_case: false,
filter_hide: true,
complete_text:"'.get_lang('StartToType').'",
firstselected: true,
onselect: check,
filter_selected: true,
newel: true
});
'.$add_coach.'
var value = 1;
@ -202,19 +225,22 @@ $form->addElement('html','<div id="options" style="display:none">');
//Dates
$form->addElement('text', 'display_start_date', array(get_lang('SessionDisplayStartDate'), get_lang('SessionDisplayStartDateComment')), array('id' => 'display_start_date'));
$form->addElement('text', 'display_end_date', array(get_lang('SessionDisplayEndDate'), get_lang('SessionDisplayEndDateComment')), array('id' => 'display_end_date'));
$form->addRule(array('display_start_date', 'display_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '<');
$form->addRule(array('display_start_date', 'display_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
$form->addElement('text', 'access_start_date', array(get_lang('SessionStartDate'), get_lang('SessionStartDateComment')), array('id' => 'access_start_date'));
$form->addElement('text', 'access_end_date', array(get_lang('SessionEndDate'), get_lang('SessionEndDate')), array('id' => 'access_end_date'));
$form->addRule(array('access_start_date', 'access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '<');
$form->addElement('text', 'coach_access_start_date', array(get_lang('SessionCoachStartDate'), get_lang('SessionCoachStartDateComment')), array('id' => 'coach_access_start_date'));
$form->addElement('text', 'coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date'));
$form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '<');
$form->addRule(array('access_start_date', 'access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
//Visibility
$visibility_list = array(SESSION_VISIBLE_READ_ONLY=>get_lang('SessionReadOnly'), SESSION_VISIBLE=>get_lang('SessionAccessible'), SESSION_INVISIBLE=>api_ucfirst(get_lang('SessionNotAccessible')));
$form->addElement('html','<div id="visibility_container">');
$form->addElement('select', 'visibility', get_lang('SessionVisibility'), $visibility_list, array('id' => 'visibility'));
$form->addElement('html','</div>');
$form->addElement('text', 'coach_access_start_date', array(get_lang('SessionCoachStartDate'), get_lang('SessionCoachStartDateComment')), array('id' => 'coach_access_start_date'));
$form->addElement('text', 'coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date'));
$form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
$form->addElement('html','</div>');

@ -1,7 +1,8 @@
<?php
/**
* @package chamilo.admin
*/
* @package chamilo.admin
*/
// name of the language file that needs to be included
$language_file = 'admin';
@ -13,237 +14,216 @@ include '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(true);
include api_get_path(LIBRARY_PATH).'fileManage.lib.php';
include api_get_path(LIBRARY_PATH) . 'fileManage.lib.php';
$session_id = intval($_GET['session_id']);
$formSent = 0;
$errorMsg = '';
// Database Table Definitions
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_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_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$archivePath = api_get_path(SYS_ARCHIVE_PATH);
$archiveURL = api_get_path(WEB_CODE_PATH).'course_info/download.php?archive=';
$archiveURL = api_get_path(WEB_CODE_PATH) . 'course_info/download.php?archive=';
$tool_name = get_lang('ExportSessionListXMLCSV');
$tool_name = get_lang('ExportSessionListXMLCSV');
global $_configuration;
$interbreadcrumb[] = array('url' => 'index.php',"name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => 'index.php', "name" => get_lang('PlatformAdmin'));
set_time_limit(0);
if ($_POST['formSent']) {
$formSent = $_POST['formSent'];
$file_type = ($_POST['file_type'] == 'csv')?'csv':'xml';
$session_id = $_POST['session_id'];
if (empty($session_id)) {
$sql = "SELECT id,name,id_coach,username,date_start,date_end,visibility,session_category_id FROM $tbl_session INNER JOIN $tbl_user
ON $tbl_user.user_id = $tbl_session.id_coach ORDER BY id";
if ($_configuration['multiple_access_urls']) {
$tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql = "SELECT id, name,id_coach,username,date_start,date_end,visibility,session_category_id FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url
$formSent = $_POST['formSent'];
$file_type = ($_POST['file_type'] == 'csv') ? 'csv' : 'xml';
$session_id = $_POST['session_id'];
if (empty($session_id)) {
$sql = "SELECT id,name,id_coach,username,access_start_date,access_end_date,visibility,session_category_id
FROM $tbl_session INNER JOIN $tbl_user
ON $tbl_user.user_id = $tbl_session.id_coach ORDER BY id";
if ($_configuration['multiple_access_urls']) {
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT id, name,id_coach,username,access_start_date,access_end_date,visibility,session_category_id
FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url
ON (s.id= session_rel_url.session_id) INNER JOIN $tbl_user u ON (u.user_id = s.id_coach)
WHERE access_url_id = $access_url_id
ORDER BY id";
}
}
$result=Database::query($sql);
}
else
{
$sql = "SELECT id,name,username,date_start,date_end,visibility,session_category_id
}
}
$result = Database::query($sql);
} else {
$sql = "SELECT id,name,username,access_start_date,access_end_date,visibility,session_category_id
FROM $tbl_session
INNER JOIN $tbl_user
ON $tbl_user.user_id = $tbl_session.id_coach
WHERE id='$session_id'";
$result = Database::query($sql);
}
if(Database::num_rows($result))
{
if(!file_exists($archivePath))
{
mkdir($archivePath, api_get_permissions_for_new_directories(), true);
}
if(!file_exists($archivePath.'index.html'))
{
$fp=fopen($archivePath.'index.html','w');
fputs($fp,'<html><head></head><body></body></html>');
fclose($fp);
}
$archiveFile='export_sessions_'.$session_id.'_'.date('Y-m-d_H-i-s').'.'.$file_type;
while( file_exists($archivePath.$archiveFile))
{
$archiveFile='export_users_'.$session_id.'_'.date('Y-m-d_H-i-s').'_'.uniqid('').'.'.$file_type;
}
$fp=fopen($archivePath.$archiveFile,'w');
if($file_type == 'csv')
{
$cvs = true;
fputs($fp,"SessionName;Coach;DateStart;DateEnd;Visibility;SessionCategory;Users;Courses;\n");
}
else
{
$cvs = false;
fputs($fp, "<?xml version=\"1.0\" encoding=\"".api_get_system_encoding()."\"?>\n<Sessions>\n");
}
while($row=Database::fetch_array($result))
{
$add = '';
$row['name'] = str_replace(';',',',$row['name']);
$row['username'] = str_replace(';',',',$row['username']);
$row['date_start'] = str_replace(';',',',$row['date_start']);
$row['date_end'] = str_replace(';',',',$row['date_end']);
$row['visibility'] = str_replace(';',',',$row['visibility']);
$row['session_category'] = str_replace(';',',',$row['session_category_id']);
if($cvs){
$add.= $row['name'].';'.$row['username'].';'.$row['date_start'].';'.$row['date_end'].';'.$row['visibility'].';'.$row['session_category'].';';
}
else {
$add = "\t<Session>\n"
."\t\t<SessionName>$row[name]</SessionName>\n"
."\t\t<Coach>$row[username]</Coach>\n"
."\t\t<DateStart>$row[date_start]</DateStart>\n"
."\t\t<DateEnd>$row[date_end]</DateEnd>\n"
."\t\t<Visibility>$row[visibility]</Visibility>\n"
."\t\t<SessionCategory>$row[session_category]</SessionCategory>\n";
}
//users
$sql = "SELECT DISTINCT $tbl_user.username FROM $tbl_user
$result = Database::query($sql);
}
if (Database::num_rows($result)) {
if (!file_exists($archivePath)) {
mkdir($archivePath, api_get_permissions_for_new_directories(), true);
}
if (!file_exists($archivePath . 'index.html')) {
$fp = fopen($archivePath . 'index.html', 'w');
fputs($fp, '<html><head></head><body></body></html>');
fclose($fp);
}
$archiveFile = 'export_sessions_' . $session_id . '_' . date('Y-m-d_H-i-s') . '.' . $file_type;
while (file_exists($archivePath . $archiveFile)) {
$archiveFile = 'export_users_' . $session_id . '_' . date('Y-m-d_H-i-s') . '_' . uniqid('') . '.' . $file_type;
}
$fp = fopen($archivePath . $archiveFile, 'w');
if ($file_type == 'csv') {
$cvs = true;
fputs($fp, "SessionName;Coach;DateStart;DateEnd;Visibility;SessionCategory;Users;Courses;\n");
} else {
$cvs = false;
fputs($fp, "<?xml version=\"1.0\" encoding=\"" . api_get_system_encoding() . "\"?>\n<Sessions>\n");
}
while ($row = Database::fetch_array($result)) {
$add = '';
$row['name'] = str_replace(';', ',', $row['name']);
$row['username'] = str_replace(';', ',', $row['username']);
$row['access_start_date'] = str_replace(';', ',', api_get_local_time($row['access_start_date'], null, null, true));
$row['access_end_date'] = str_replace(';', ',', api_get_local_time($row['access_end_date'], null, null, true));
$row['visibility'] = str_replace(';', ',', $row['visibility']);
$row['session_category'] = str_replace(';', ',', $row['session_category_id']);
if ($cvs) {
$add.= $row['name'] . ';' . $row['username'] . ';' . $row['access_start_date'] . ';' . $row['access_end_date'] . ';' . $row['visibility'] . ';' . $row['session_category'] . ';';
} else {
$add = "\t<Session>\n"
. "\t\t<SessionName>$row[name]</SessionName>\n"
. "\t\t<Coach>$row[username]</Coach>\n"
. "\t\t<DateStart>$row[access_start_date]</DateStart>\n"
. "\t\t<DateEnd>$row[access_end_date]</DateEnd>\n"
. "\t\t<Visibility>$row[visibility]</Visibility>\n"
. "\t\t<SessionCategory>$row[session_category]</SessionCategory>\n";
}
//users
$sql = "SELECT DISTINCT $tbl_user.username FROM $tbl_user
INNER JOIN $tbl_session_user
ON $tbl_user.user_id = $tbl_session_user.id_user AND $tbl_session_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
AND $tbl_session_user.id_session = '".$row['id']."'";
$rsUsers = Database::query($sql);
$users = '';
while($rowUsers = Database::fetch_array($rsUsers)){
if($cvs){
$users .= str_replace(';',',',$rowUsers['username']).'|';
}
else {
$users .= "\t\t<User>$rowUsers[username]</User>\n";
}
}
if(!empty($users) && $cvs)
$users = api_substr($users , 0, api_strlen($users)-1);
if($cvs)
$users .= ';';
$add .= $users;
//courses
$sql = "SELECT DISTINCT $tbl_course.code
ON $tbl_user.user_id = $tbl_session_user.id_user AND $tbl_session_user.relation_type<>" . SESSION_RELATION_TYPE_RRHH . "
AND $tbl_session_user.id_session = '" . $row['id'] . "'";
$rsUsers = Database::query($sql);
$users = '';
while ($rowUsers = Database::fetch_array($rsUsers)) {
if ($cvs) {
$users .= str_replace(';', ',', $rowUsers['username']) . '|';
} else {
$users .= "\t\t<User>$rowUsers[username]</User>\n";
}
}
if (!empty($users) && $cvs)
$users = api_substr($users, 0, api_strlen($users) - 1);
if ($cvs)
$users .= ';';
$add .= $users;
//courses
$sql = "SELECT DISTINCT $tbl_course.code
FROM $tbl_course
INNER JOIN $tbl_session_course_user
ON $tbl_course.code = $tbl_session_course_user.course_code
AND $tbl_session_course_user.id_session = '".$row['id']."'";
AND $tbl_session_course_user.id_session = '" . $row['id'] . "'";
$rsCourses = Database::query($sql);
$rsCourses = Database::query($sql);
$courses = '';
while($rowCourses = Database::fetch_array($rsCourses)){
$courses = '';
while ($rowCourses = Database::fetch_array($rsCourses)) {
// get coachs from a course
$sql = "SELECT u.username
// get coachs from a course
$sql = "SELECT u.username
FROM $tbl_session_course_user scu
INNER JOIN $tbl_user u ON u.user_id = scu.id_user
WHERE scu.course_code = '{$rowCourses['code']}'
AND scu.id_session = '".$row['id']."' AND scu.status = 2 ";
$rs_coachs = Database::query($sql);
$coachs = array();
while ($row_coachs = Database::fetch_array($rs_coachs)) {
$coachs[] = $row_coachs['username'];
}
$coachs = implode(",",$coachs);
if($cvs){
$courses .= str_replace(';',',',$rowCourses['code']);
$courses .= '['.str_replace(';',',',$coachs).'][';
}
else {
$courses .= "\t\t<Course>\n";
$courses .= "\t\t\t<CourseCode>$rowCourses[code]</CourseCode>\n";
$courses .= "\t\t\t<Coach>$coachs</Coach>\n";
}
// rel user courses
$sql = "SELECT DISTINCT u.username
AND scu.id_session = '" . $row['id'] . "' AND scu.status = 2 ";
$rs_coachs = Database::query($sql);
$coachs = array();
while ($row_coachs = Database::fetch_array($rs_coachs)) {
$coachs[] = $row_coachs['username'];
}
$coachs = implode(",", $coachs);
if ($cvs) {
$courses .= str_replace(';', ',', $rowCourses['code']);
$courses .= '[' . str_replace(';', ',', $coachs) . '][';
} else {
$courses .= "\t\t<Course>\n";
$courses .= "\t\t\t<CourseCode>$rowCourses[code]</CourseCode>\n";
$courses .= "\t\t\t<Coach>$coachs</Coach>\n";
}
// rel user courses
$sql = "SELECT DISTINCT u.username
FROM $tbl_session_course_user scu
INNER JOIN $tbl_session_user su ON scu.id_user = su.id_user AND scu.id_session = su.id_session AND su.relation_type<>".SESSION_RELATION_TYPE_RRHH."
INNER JOIN $tbl_session_user su ON scu.id_user = su.id_user AND scu.id_session = su.id_session AND su.relation_type<>" . SESSION_RELATION_TYPE_RRHH . "
INNER JOIN $tbl_user u
ON scu.id_user = u.user_id
AND scu.course_code='".$rowCourses['code']."'
AND scu.id_session='".$row['id']."'";
$rsUsersCourse = Database::query($sql);
$userscourse = '';
while($rowUsersCourse = Database::fetch_array($rsUsersCourse)){
if($cvs){
$userscourse .= str_replace(';',',',$rowUsersCourse['username']).',';
}
else {
$courses .= "\t\t\t<User>$rowUsersCourse[username]</User>\n";
}
}
if($cvs){
if(!empty($userscourse))
$userscourse = api_substr($userscourse , 0, api_strlen($userscourse)-1);
$courses .= $userscourse.']|';
}
else {
$courses .= "\t\t</Course>\n";
}
}
if(!empty($courses) && $cvs)
$courses = api_substr($courses , 0, api_strlen($courses)-1);
$add .= $courses;
if($cvs) {
$breakline = api_is_windows_os()?"\r\n":"\n";
$add .= ";$breakline";
} else {
$add .= "\t</Session>\n";
}
fputs($fp, $add);
}
if(!$cvs)
fputs($fp,"</Sessions>\n");
fclose($fp);
$errorMsg=get_lang('UserListHasBeenExported').'<br/><a class="btn" href="'.$archiveURL.$archiveFile.'">'.get_lang('ClickHereToDownloadTheFile').'</a>';
}
AND scu.course_code='" . $rowCourses['code'] . "'
AND scu.id_session='" . $row['id'] . "'";
$rsUsersCourse = Database::query($sql);
$userscourse = '';
while ($rowUsersCourse = Database::fetch_array($rsUsersCourse)) {
if ($cvs) {
$userscourse .= str_replace(';', ',', $rowUsersCourse['username']) . ',';
} else {
$courses .= "\t\t\t<User>$rowUsersCourse[username]</User>\n";
}
}
if ($cvs) {
if (!empty($userscourse))
$userscourse = api_substr($userscourse, 0, api_strlen($userscourse) - 1);
$courses .= $userscourse . ']|';
}
else {
$courses .= "\t\t</Course>\n";
}
}
if (!empty($courses) && $cvs)
$courses = api_substr($courses, 0, api_strlen($courses) - 1);
$add .= $courses;
if ($cvs) {
$breakline = api_is_windows_os() ? "\r\n" : "\n";
$add .= ";$breakline";
} else {
$add .= "\t</Session>\n";
}
fputs($fp, $add);
}
if (!$cvs)
fputs($fp, "</Sessions>\n");
fclose($fp);
$errorMsg = get_lang('UserListHasBeenExported') . '<br/><a class="btn" href="' . $archiveURL . $archiveFile . '">' . get_lang('ClickHereToDownloadTheFile') . '</a>';
}
}
// display the header
@ -253,29 +233,29 @@ Display::display_header($tool_name);
$sql = "SELECT id, name FROM $tbl_session ORDER BY name";
if ($_configuration['multiple_access_urls']) {
$tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql = "SELECT id, name FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT id, name FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url
ON (s.id= session_rel_url.session_id)
WHERE access_url_id = $access_url_id
ORDER BY name";
}
}
}
$result = Database::query($sql);
$Sessions = Database::store_result($result);
echo '<div class="actions">';
echo '<a href="../admin/index.php">'.Display::return_icon('back.png', get_lang('BackTo').' '.get_lang('PlatformAdmin'),'',ICON_SIZE_MEDIUM).'</a>';
echo '<a href="../admin/index.php">' . Display::return_icon('back.png', get_lang('BackTo') . ' ' . get_lang('PlatformAdmin'), '', ICON_SIZE_MEDIUM) . '</a>';
echo '</div>';
if (!empty($errorMsg)) {
Display::display_normal_message($errorMsg, false); //main API
Display::display_normal_message($errorMsg, false); //main API
}
$form = new FormValidator('session_export', 'post', api_get_self());
$form->addElement('hidden', 'formSent', 1);
$form->addElement('radio', 'file_type', get_lang('OutputFileType'), 'CSV' , 'csv', null, array('id' => 'file_type_csv'));
$form->addElement('radio', 'file_type', get_lang('OutputFileType'), 'CSV', 'csv', null, array('id' => 'file_type_csv'));
$form->addElement('radio', 'file_type', null, 'XML', 'xml', null, array('id' => 'file_type_xml'));
$options = array();
@ -284,7 +264,7 @@ foreach ($Sessions as $enreg) {
$options[$enreg['id']] = $enreg['name'];
}
$form->addElement('select', 'session_id', get_lang('WhichSessionToExport'), $options);
$form->addElement('select', 'session_id', get_lang('WhichSessionToExport'), $options);
$form->addElement('button', 'submit', get_lang('ExportSession'));
$defaults = array();

@ -22,10 +22,7 @@ if (isset($_GET['action']) && $_GET['action'] == 'show_message') {
$error_message = Security::remove_XSS($_GET['message']);
}
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -56,9 +53,7 @@ if ($_POST['formSent']) {
$session_counter = 0;
if ($file_type == 'xml') {
// XML
// SimpleXML for PHP5 deals with various encodings, but how many they are, what are version issues, do we need to waste time with configuration options?
// For avoiding complications we go some sort of "PHP4 way" - we convert the input xml-file into UTF-8 before passing it to the parser.
// Instead of:
@ -161,7 +156,7 @@ if ($_POST['formSent']) {
$params['user_id'] = api_get_user_id();
// Looking up for the teacher.
$username = trim(api_utf8_decode($courseNode->CourseTeacher));
$username = trim(api_utf8_decode($courseNode->CourseTeacher));
$sql = "SELECT user_id, lastname, firstname FROM $tbl_user WHERE username='$username'";
$rs = Database::query($sql);
list($user_id, $lastname, $firstname) = Database::fetch_array($rs);
@ -193,30 +188,7 @@ if ($_POST['formSent']) {
}
$date_start = trim(api_utf8_decode($node_session->DateStart)); // Just in case - encoding conversion.
if (!empty($date_start)) {
list($year_start, $month_start, $day_start) = explode('/', $date_start);
if(empty($year_start) || empty($month_start) || empty($day_start)) {
$error_message .= get_lang('WrongDate').' : '.$date_start.'<br />';
break;
} else {
$time_start = mktime(0, 0, 0, $month_start, $day_start, $year_start);
}
$date_end = trim(api_utf8_decode($node_session->DateEnd));
if (!empty($date_start)) {
list($year_end, $month_end, $day_end) = explode('/', $date_end);
if (empty($year_end) || empty($month_end) || empty($day_end)) {
$error_message .= get_lang('Error').' : '.$date_end.'<br />';
break;
} else {
$time_end = mktime(0, 0, 0, $month_end, $day_end, $year_end);
}
}
if ($time_end - $time_start < 0) {
$error_message .= get_lang('StartDateShouldBeBeforeEndDate').' : '.$date_end.'<br />';
}
}
$date_end = trim(api_utf8_decode($node_session->DateEnd));
$visibility = trim(api_utf8_decode($node_session->Visibility));
$session_category_id = trim(api_utf8_decode($node_session->SessionCategory));
@ -239,45 +211,48 @@ if ($_POST['formSent']) {
$session_name .= $suffix;
}
}
// Creating the session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET
name = '".Database::escape_string($session_name)."',
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id',
session_admin_id=".intval($_user['user_id']);
$rs_session = Database::query($sql_session);
$session_id = Database::insert_id();
$params = array (
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
$session_id = SessionManager::add($params);
$session_counter++;
} else {
// Update the session if it is needed.
$my_session_result = SessionManager::get_session_by_name($session_name);
if ($my_session_result === false) {
// Creating the session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET
name = '".Database::escape_string($session_name)."',
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id',
session_admin_id=".intval($_user['user_id']);
$rs_session = Database::query($sql_session);
$session_id = Database::insert_id();
$params = array (
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
$session_id = SessionManager::add($params);
$session_counter++;
} else {
// if the session already exists - update it.
$sql_session = "UPDATE $tbl_session SET
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id'
WHERE name = '$session_name'";
$rs_session = Database::query($sql_session);
$params = array (
'id' => $my_session_result['id'],
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
SessionManager::update($params);
$session_id = Database::query("SELECT id FROM $tbl_session WHERE name='$session_name'");
list($session_id) = Database::fetch_array($session_id);
Database::query("DELETE FROM $tbl_session_user WHERE id_session='$session_id'");
@ -296,7 +271,6 @@ if ($_POST['formSent']) {
UrlManager::add_session_to_url($session_id, 1);
}
// Adding users to the new session.
foreach ($node_session->User as $node_user) {
$username = UserManager::purify_username(api_utf8_decode($node_user), $purification_option_for_usernames);
@ -522,49 +496,44 @@ if ($_POST['formSent']) {
$session_name .= $suffix;
}
}
// Creating the session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET
name = '".Database::escape_string($session_name)."',
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id',
session_admin_id=".intval($_user['user_id']);
$rs_session = Database::query($sql_session);
$session_id = Database::insert_id();
$params = array (
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
$session_id = SessionManager::add($params);
$session_counter++;
} else {
$my_session_result = SessionManager::get_session_by_name($session_name);
if ($my_session_result === false) {
// Creating a session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET
name = '$session_name',
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id'";
$rs_session = Database::query($sql_session);
// We get the last insert id.
$my_session_result = SessionManager::get_session_by_name($session_name);
$session_id = $my_session_result['id'];
//echo '<br>';
$params = array (
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
$session_id = SessionManager::add($params);
} else {
// The session already exists, update it then.
$sql_session = "UPDATE $tbl_session SET
id_coach = '$coach_id',
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id'
WHERE name = '$session_name'";
$rs_session = Database::query($sql_session);
$session_id = Database::query("SELECT id FROM $tbl_session WHERE name='$session_name'");
list($session_id) = Database::fetch_array($session_id);
$session_id = $my_session_result['id'];
$params = array (
'id' => $session_id,
'id_coach' => $coach_id,
'visibility' => $visibility,
'name' => $session_name,
'access_start_date' => $date_start,
'access_end_date' => $date_end,
'session_category_id' => $session_category_id,
'session_admin_id' => api_get_user_id(),
);
SessionManager::update($params);
Database::query("DELETE FROM $tbl_session_user WHERE id_session='$session_id'");
Database::query("DELETE FROM $tbl_session_course WHERE id_session='$session_id'");
Database::query("DELETE FROM $tbl_session_course_user WHERE id_session='$session_id'");

@ -47,19 +47,21 @@ if (isset($_REQUEST['keyword'])) {
}
//The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(get_lang('Name'), get_lang('NumberOfCourses'), get_lang('NumberOfUsers'), get_lang('SessionCategoryName'),
/*$columns = array(get_lang('Name'), get_lang('NumberOfCourses'), get_lang('NumberOfUsers'), get_lang('SessionCategoryName'),
get_lang('StartDate'), get_lang('EndDate'), get_lang('Coach'), get_lang('Status'), get_lang('Visibility'), get_lang('Actions'));*/
$columns = array(get_lang('Name'), get_lang('SessionCategoryName'),
get_lang('StartDate'), get_lang('EndDate'), get_lang('Coach'), get_lang('Status'), get_lang('Visibility'), get_lang('Actions'));
//$activeurl = '?sidx=session_active';
//Column config
$column_model = array(
array('name'=>'name', 'index'=>'name', 'width'=>'120', 'align'=>'left', 'search' => 'true'),
array('name'=>'nbr_courses', 'index'=>'nbr_courses', 'width'=>'30', 'align'=>'left', 'search' => 'true'),
array('name'=>'nbr_users', 'index'=>'nbr_users', 'width'=>'30', 'align'=>'left', 'search' => 'true'),
// array('name'=>'nbr_courses', 'index'=>'nbr_courses', 'width'=>'30', 'align'=>'left', 'search' => 'true'),
// array('name'=>'nbr_users', 'index'=>'nbr_users', 'width'=>'30', 'align'=>'left', 'search' => 'true'),
array('name'=>'category_name', 'index'=>'category_name', 'width'=>'70', 'align'=>'left', 'search' => 'true'),
array('name'=>'date_start', 'index'=>'date_start', 'width'=>'40', 'align'=>'left', 'search' => 'true'),
array('name'=>'date_end', 'index'=>'date_end', 'width'=>'40', 'align'=>'left', 'search' => 'true'),
array('name'=>'coach_name', 'index'=>'coach_name', 'width'=>'80', 'align'=>'left', 'search' => 'false'),
array('name'=>'access_start_date', 'index'=>'access_start_date', 'width'=>'60', 'align'=>'left', 'search' => 'true'),
array('name'=>'access_end_date', 'index'=>'access_end_date', 'width'=>'60', 'align'=>'left', 'search' => 'true'),
array('name'=>'coach_name', 'index'=>'coach_name', 'width'=>'70', 'align'=>'left', 'search' => 'false'),
array('name'=>'status', 'index'=>'session_active','width'=>'40', 'align'=>'left', 'search' => 'true', 'stype'=>'select',
//for the bottom bar
@ -72,7 +74,7 @@ $column_model = array(
array('name'=>'visibility', 'index'=>'visibility', 'width'=>'40', 'align'=>'left', 'search' => 'false'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false', 'search' => 'false')
array('name'=>'actions', 'index'=>'actions', 'width'=>'80', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false', 'search' => 'false')
);
//Autowidth
$extra_params['autowidth'] = 'true';

@ -375,7 +375,7 @@ footer .container .row {
border:1px solid #ccc;
margin-bottom: 11px;
height:32px;
padding: 2px 2px 2px 14px;
padding: 2px 2px 2px 8px;
vertical-align:middle;
}

@ -230,7 +230,8 @@ switch ($action) {
$result = get_exam_results_data($start, $limit, $sidx, $sord, $exercise_id, $where_condition);
break;
case 'get_sessions':
$columns = array('name', 'nbr_courses', 'nbr_users', 'category_name', 'date_start','date_end', 'coach_name', 'session_active', 'visibility');
//'nbr_courses', 'nbr_users',
$columns = array('name', 'category_name', 'access_start_date','access_end_date', 'coach_name', 'session_active', 'visibility');
$result = SessionManager::get_sessions_admin(array('where'=> $where_condition, 'order'=>"$sidx $sord", 'limit'=> "$start , $limit"));
break;
case 'get_timelines':
@ -357,7 +358,7 @@ switch ($action) {
$result = $new_result;
break;
case 'get_usergroups':
$columns = array('name', 'users', 'courses','sessions','actions');
$columns = array('name', 'users', 'courses', 'sessions','actions');
$result = Database::select('*', $obj->table, array('order'=>"name $sord", 'LIMIT'=> "$start , $limit"));
$new_result = array();
if (!empty($result)) {

@ -2816,7 +2816,6 @@ class CourseManager {
$html .= $params['icon'];
$html .= '</div>';
}
$html .= '</div>';
$html .= '<div class="span6">';
@ -2825,13 +2824,18 @@ class CourseManager {
if (!empty($params['subtitle'])) {
$html .= '<small>'.$params['subtitle'].'</small>';
}
if (!empty($params['dates'])) {
if (!empty($params['subtitle'])) {
$html .= " | ";
}
$html .= '<small>'.$params['dates'].'</small>';
}
if (!empty($params['teachers'])) {
$html .= '<h5>'.Display::return_icon('teacher.png', get_lang('Teacher'), array(), ICON_SIZE_TINY).$params['teachers'].'</h5>';
}
if (!empty($params['coaches'])) {
$html .= '<h5>'.Display::return_icon('teacher.png', get_lang('Coach'), array(), ICON_SIZE_TINY).$params['coaches'].'</h5>';
}
}
$html .= '</div>';
$html .= '</div>';
@ -3172,51 +3176,21 @@ class CourseManager {
* @todo move code for what's new icons to a separate function to clear things up
* @todo add a parameter user_id so that it is possible to show the courselist of other users (=generalisation). This will prevent having to write a new function for this.
*/
public static function get_logged_user_course_html($course, $session_id = 0, $class = 'courses', $session_accessible = true, $load_dirs = false) {
global $nosession, $nbDigestEntries, $digest, $thisCourseSysCode, $orderKey;
$user_id = api_get_user_id();
$course_info = api_get_course_info($course['code']);
$status_course = CourseManager::get_user_in_course_status($user_id, $course_info['code']);
$course_info['status'] = empty($session_id) ? $status_course : STUDENT;
public static function get_logged_user_course_html($course, $session_id = 0, $class = 'courses', $session_accessible = true, $load_dirs = false) {
$course_info = api_get_course_info($course['code']);
$course_info['id_session'] = $session_id;
if (!$nosession) {
global $now, $date_start, $date_end;
}
// Table definitions
$main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_category = Database :: get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$course_access_settings = CourseManager :: get_access_settings($course_info['code']);
$course_visibility = $course_access_settings['visibility'];
$user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_info['code']);
$is_coach = api_is_coach($course_info['id_session'], $course['code']);
// Display course entry.
// Show a hyperlink to the course, unless the course is closed and user is not course admin.
// Show a link to the course, unless the course is closed and user is not course admin.
$session_url = '';
$session_title = '';
if ($session_accessible) {
if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) {
if (!$nosession) {
if (empty($course_info['id_session'])) {
$course_info['id_session'] = 0;
}
if ($user_in_course_status == COURSEMANAGER || ($date_start <= $now && $date_end >= $now) || $date_start == '0000-00-00') {
$session_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'];
$session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'].'">'.$course_info['name'].'</a>';
}
} else {
$session_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/';
$session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/">'.$course_info['name'].'</a>';
}
if ($course_info['visibility'] != COURSE_VISIBILITY_CLOSED || $course_info['user_status_in_course'] == COURSEMANAGER) {
if ($course_info['user_status_in_course'] == COURSEMANAGER) {
$session_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'];
$session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'].'">'.$course_info['name'].'</a>';
}
} else {
$session_title = $course_info['name'].' '.Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
}
@ -3231,9 +3205,10 @@ class CourseManager {
$params['right_actions'] = '';
if ($course_visibility != COURSE_VISIBILITY_CLOSED) {
if ($course_info['visibility'] != COURSE_VISIBILITY_CLOSED) {
if ($load_dirs) {
$params['right_actions'] .= '<a id="document_preview_'.$course_info['real_id'].'_'.$course_info['id_session'].'" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
$params['right_actions'] .= '<a id="document_preview_'.$course_info['real_id'].'_'.$course_info['id_session'].'" class="document_preview" href="javascript:void(0);">'.
Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
$params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course_info['real_id'].'_'.$course_info['id_session'], 'class'=>'document_preview_container'));
}
}
@ -3242,80 +3217,22 @@ class CourseManager {
$session_title .= ' ('.$course_info['visual_code'].') ';
}
if (api_get_setting('display_teacher_in_courselist') == 'true') {
if (!$nosession) {
$teacher_list = CourseManager::get_teacher_list_from_course_code_to_string($course_info['code'], self::USER_SEPARATOR, true);
$course_coachs = CourseManager::get_coachs_from_course_to_string($course_info['id_session'], $course['code'], self::USER_SEPARATOR, true);
if ($course_info['status'] == COURSEMANAGER || ($course_info['status'] == STUDENT && empty($course_info['id_session'])) || empty($course_info['status'])) {
$params['teachers'] = $teacher_list;
}
if (($course_info['status'] == STUDENT && !empty($course_info['id_session'])) || ($is_coach && $course_info['status'] != COURSEMANAGER)) {
$params['coaches'] = $course_coachs;
}
} else {
$params['teachers'] = $teacher_list;
}
if (api_get_setting('display_teacher_in_courselist') == 'true') {
$teacher_list = CourseManager::get_teacher_list_from_course_code_to_string($course_info['code'], self::USER_SEPARATOR, true);
$course_coachs = CourseManager::get_coachs_from_course_to_string($course_info['id_session'], $course['code'], self::USER_SEPARATOR, true);
$params['teachers'] = $teacher_list;
$params['coaches'] = $course_coachs;
}
$session_title .= isset($course['special_course']) ? ' '.Display::return_icon('klipper.png', get_lang('CourseAutoRegister')) : '';
// Display the "what's new" icons
if ($course_visibility != COURSE_VISIBILITY_CLOSED) {
if ($course_info['visibility'] != COURSE_VISIBILITY_CLOSED) {
$session_title .= Display :: show_notification($course_info);
}
$params['title'] = $session_title;
$params['extra'] = '';
$html = self::course_item_html($params, true);
$session_category_id = null;
if (!$nosession) {
$session = '';
$active = false;
if (!empty($course_info['session_name'])) {
// Request for the name of the general coach
$sql = 'SELECT lastname, firstname,sc.name
FROM '.$tbl_session.' ts
LEFT JOIN '.$main_user_table .' tu
ON ts.id_coach = tu.user_id
INNER JOIN '.$tbl_session_category.' sc ON ts.session_category_id = sc.id
WHERE ts.id='.(int) $course_info['id_session']. ' LIMIT 1';
$rs = Database::query($sql);
$sessioncoach = Database::store_result($rs);
$sessioncoach = $sessioncoach[0];
$session = array();
$session['title'] = $course_info['session_name'];
$session_category_id = CourseManager::get_session_category_id_by_session_id($course_info['id_session']);
$session['category'] = $sessioncoach['name'];
if ($course_info['date_start'] == '0000-00-00') {
//$session['dates'] = get_lang('WithoutTimeLimits');
$session['dates'] = '';
if (api_get_setting('show_session_coach') === 'true') {
$session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']);
}
$active = true;
} else {
$session ['dates'] = ' - '.get_lang('From').' '.$course_info['date_start'].' '.get_lang('To').' '.$course_info['date_end'];
if (api_get_setting('show_session_coach') === 'true') {
$session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']);
}
$active = ($date_start <= $now && $date_end >= $now);
}
}
$user_course_category = '';
if (isset($course_info['user_course_cat'])) {
$user_course_category = $course_info['user_course_cat'];
}
$output = array ($user_course_category, $html, $course_info['id_session'], $session, 'active' => $active, 'session_category_id' => $session_category_id);
} else {
$output = array ($course_info['user_course_cat'], $html);
}
return $output;
return $html;
}
/**

@ -819,47 +819,36 @@ class CourseHome {
* @return string session data
*/
public static function show_session_data($id_session) {
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
if ($id_session != strval(intval($id_session))) {
return '';
} else {
$id_session = intval($id_session);
}
$sql = 'SELECT name, nbr_courses, nbr_users, nbr_classes, DATE_FORMAT(date_start,"%d-%m-%Y") as date_start, DATE_FORMAT(date_end,"%d-%m-%Y") as date_end, lastname, firstname, username, session_admin_id, nb_days_access_before_beginning, nb_days_access_after_end, session_category_id, visibility
FROM '.$session_table.'
LEFT JOIN '.$user_table.'
ON id_coach = user_id
WHERE '.$session_table.'.id='.$id_session;
$rs = Database::query($sql);
$session = Database::store_result($rs);
$session = $session[0];
$sql_category = 'SELECT name FROM '.$session_category_table.' WHERE id = "'.intval($session['session_category_id']).'"';
$rs_category = Database::query($sql_category);
$session_category = '';
if (Database::num_rows($rs_category) > 0) {
$rows_session_category = Database::store_result($rs_category);
$rows_session_category = $rows_session_category[0];
$session_category = $rows_session_category['name'];
}
if ($session['date_start'] == '00-00-0000') {
$msg_date = get_lang('NoTimeLimits');
} else {
$msg_date = get_lang('From').' '.$session['date_start'].' '.get_lang('To').' '.$session['date_end'];
$session_info = api_get_session_info($id_session);
$session_category = SessionManager::get_session_category($session_info['session_category_id']);
$session_category_name = null;
if (!empty($session_category)) {
$session_category_name = $session_category['name'];
}
$user_info = api_get_user_info($session_info['id_coach']);
$general_coach = null;
if (!empty($user_info)) {
$general_coach = $user_info['complete_name'].' ('.$user_info['username'].')';
}
$msg_date = SessionManager::parse_session_dates($session_info);
$output = '';
if (!empty($session_category)) {
$output .= '<tr><td>'. get_lang('SessionCategory') . ': ' . '<b>' . $session_category .'</b></td></tr>';
$output .= '<tr><td>'. get_lang('SessionCategory') . ': ' . '<b>' . $session_category_name .'</b></td></tr>';
}
$output .= '<tr><td style="width:50%">'. get_lang('SessionName') . ': ' . '<b>' . $session['name'] .'</b></td><td>'. get_lang('GeneralCoach') . ': ' . '<b>' . $session['lastname'].' '.$session['firstname'].' ('.$session['username'].')' .'</b></td></tr>';
$output .= '<tr><td>'. get_lang('SessionIdentifier') . ': '. Display::return_icon('star.png', ' ', array('align' => 'absmiddle')) .'</td><td>'. get_lang('Date') . ': ' . '<b>' . $msg_date .'</b></td></tr>';
$output .= '<tr>
<td style="width:50%">'. get_lang('SessionName') . ': ' . '<b>' . $session_info['name'] .'</b></td>
<td>'. get_lang('GeneralCoach') . ': ' . '<b>' .$general_coach.'</b></td></tr>';
$output .= '<tr><td>'. get_lang('SessionIdentifier') . ': '. Display::return_icon('star.png', ' ', array('align' => 'absmiddle')) .'</td>
<td>'. get_lang('Date') . ': ' . '<b>' . $msg_date .'</b></td></tr>';
return $output;
}

@ -1220,75 +1220,6 @@ class Display {
}
} // End function display_digest
/**
* Get the session box details as an array
* @param int Session ID
* @return array Empty array or session array ['title'=>'...','category'=>'','dates'=>'...','coach'=>'...','active'=>true/false,'session_category_id'=>int]
*/
public static function get_session_title_box($session_id) {
global $nosession;
if (!$nosession) {
global $now, $date_start, $date_end;
}
$output = array();
if (!$nosession) {
$main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$active = false;
// Request for the name of the general coach
$sql ='SELECT tu.lastname, tu.firstname, ts.name, ts.date_start, ts.date_end, ts.session_category_id
FROM '.$tbl_session.' ts LEFT JOIN '.$main_user_table .' tu ON ts.id_coach = tu.user_id
WHERE ts.id='.intval($session_id);
$rs = Database::query($sql);
$session_info = Database::store_result($rs);
$session_info = $session_info[0];
$session = array();
$session['title'] = $session_info[2];
$session['coach'] = '';
$session['dates'] = '';
if ($session_info['date_end'] == '0000-00-00' && $session_info['date_start'] == '0000-00-00') {
if (api_get_setting('show_session_coach') === 'true') {
$session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($session_info[1], $session_info[0]);
}
$active = true;
} else {
$start = $stop = false;
$start_buffer = $stop_buffer = '';
if ($session_info['date_start'] == '0000-00-00') {
$session_info['date_start'] = '';
} else {
$start = true;
$start_buffer = $session_info['date_start'];
$session_info['date_start'] = get_lang('From').' '.$session_info['date_start'];
}
if ($session_info['date_end'] == '0000-00-00') {
$session_info['date_end'] = '';
} else {
$stop = true;
$stop_buffer = $session_info['date_end'];
$session_info['date_end'] = get_lang('Until').' '.$session_info['date_end'];
}
if ($start && $stop) {
$session['dates'] = Display::tag('i', sprintf(get_lang('FromDateXToDateY'), $start_buffer, $stop_buffer));
} else {
$session['dates'] = Display::tag('i', $session_info['date_start'].' '.$session_info['date_end']);
}
if ( api_get_setting('show_session_coach') === 'true' ) {
$session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($session_info[1], $session_info[0]);
}
$active = ($date_start <= $now && $date_end >= $now);
}
$session['active'] = $active;
$session['session_category_id'] = $session_info[5];
$output = $session;
}
return $output;
}
/**
* Return the five star HTML
*

@ -13,7 +13,15 @@ class HTML_QuickForm_Rule_CompareDateTimeText extends HTML_QuickForm_Rule_Compar
*/
function validate($values, $operator = null) {
$datetime1 = api_strtotime($values[0]);
$datetime2 = api_strtotime($values[1]);
$datetime2 = api_strtotime($values[1]);
if (strpos($operator, 'allow_empty') !== false) {
$operator = str_replace('allow_empty', '', $operator);
var_dump($datetime1, $datetime2, $operator);
if (!$datetime2 || empty($datetime2)) {
return true;
}
}
$result = parent::validate(array($datetime1, $datetime2), $operator);
return $result;
}

@ -1341,12 +1341,12 @@ function api_format_course_array($course_data) {
$_course['legal'] = $course_data['legal' ];
$_course['show_score'] = $course_data['show_score']; //used in the work tool
$_course['department_name'] = $course_data['department_name'];
$_course['department_url'] = $course_data['department_url' ];
$_course['disk_quota'] = $course_data['disk_quota'];
$_course['department_url'] = $course_data['department_url' ];
$_course['disk_quota'] = $course_data['disk_quota'];
$_course['course_public_url'] = api_get_path(WEB_COURSE_PATH).$course_data['directory'].'/index.php';
$_course['user_status_in_course'] = CourseManager::get_user_in_course_status(api_get_user_id(), $_course['code']);
if (file_exists(api_get_path(SYS_COURSE_PATH).$course_data['directory'].'/course-pic85x85.png')) {
$url_image = api_get_path(WEB_COURSE_PATH).$course_data['directory'].'/course-pic85x85.png';
} else {
@ -1820,52 +1820,50 @@ function api_get_session_info($session_id) {
* @param int session id
* @return int 0 = session still available, SESSION_VISIBLE_READ_ONLY = 1, SESSION_VISIBLE = 2, SESSION_INVISIBLE = 3
*/
function api_get_session_visibility($session_id) {
function api_get_session_visibility($session_id, $course_code = null, $ignore_visibility_for_admins = true) {
$visibility = 0; //means that the session is still available
if (api_is_platform_admin()) {
return SESSION_AVAILABLE;
if ($ignore_visibility_for_admins) {
return SESSION_AVAILABLE;
}
}
if (!empty($session_id)) {
$session_id = intval($session_id);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT visibility, date_start, date_end, nb_days_access_after_end, nb_days_access_before_beginning FROM $tbl_session
$sql = "SELECT id, visibility, access_start_date, access_end_date, coach_access_start_date, coach_access_end_date FROM $tbl_session
WHERE id = $session_id ";
$result = Database::query($sql);
if (Database::num_rows($result) > 0 ) {
$row = Database::fetch_array($result, 'ASSOC');
$row = Database::fetch_array($result, 'ASSOC');
$visibility = $original_visibility = $row['visibility'];
//I don't care the field visibility
if ($row['date_start'] == '0000-00-00' && $row['date_end'] == '0000-00-00') {
return SESSION_AVAILABLE;
if ($row['access_start_date'] == '0000-00-00 00:00:00' && $row['access_end_date'] == '0000-00-00 00:00:00') {
return SessionManager::DEFAULT_VISIBILITY;
} else {
$time = time();
//If datestart is set
if (!empty($row['date_start']) && $row['date_start'] != '0000-00-00') {
$row['date_start'] = $row['date_start'].' 00:00:00';
if ($time > api_strtotime($row['date_start'], 'UTC')) {
//If access_start_date is set
if (!empty($row['access_start_date']) && $row['access_start_date'] != '0000-00-00 00:00:00') {
if ($time > api_strtotime($row['access_start_date'], 'UTC')) {
$visibility = SESSION_AVAILABLE;
} else {
$visibility = SESSION_INVISIBLE;
}
}
//if date_end is set
if (!empty($row['date_end']) && $row['date_end'] != '0000-00-00') {
$row['date_end'] = $row['date_end'].' 00:00:00';
//if access_end_date is set
if (!empty($row['access_end_date']) && $row['access_end_date'] != '0000-00-00 00:00:00') {
//only if date_start said that it was ok
if ($visibility == SESSION_AVAILABLE) {
$visibility = $row['visibility'];
if ($time < api_strtotime($row['date_end'], 'UTC')) {
if ($time < api_strtotime($row['access_end_date'], 'UTC')) {
//date still available
$visibility = SESSION_AVAILABLE;
} else {
@ -1875,35 +1873,29 @@ function api_get_session_visibility($session_id) {
}
}
}
//If I'm a coach the visibility can change in my favor depending in the nb_days_access_after_end and nb_days_access_before_beginning values
$is_coach = api_is_coach($session_id);
$is_coach = api_is_coach($session_id, $course_code);
if ($is_coach) {
$today = new DateTime();
//Test end date
if (isset($row['date_end']) && !empty($row['date_end']) && $row['date_end'] != '0000-00-00' && $row['nb_days_access_after_end'] != '0') {
$end_date_for_coach = new DateTime($row['date_end']);
$number_of_days = "P".intval($row['nb_days_access_after_end']).'D';
$end_date_for_coach->add(new DateInterval($number_of_days));
$today = new DateTime();
if ($end_date_for_coach >= $today) {
if (isset($row['access_end_date']) && !empty($row['access_end_date']) && $row['access_end_date'] != '0000-00-00 00:00:00' &&
isset($row['coach_access_end_date']) && !empty($row['coach_access_end_date']) && $row['coach_access_end_date'] != '0000-00-00 00:00:00') {
$end_date_extra_for_coach = new DateTime($row['coach_access_end_date']);
if ($today <= $end_date_extra_for_coach) {
$visibility = SESSION_AVAILABLE;
} else {
$visibility = SESSION_INVISIBLE;
}
}
//Test start date
if (isset($row['date_start']) && !empty($row['date_start']) && $row['date_start'] != '0000-00-00' && $row['nb_days_access_before_beginning'] != '0') {
$start_date_for_coach = new DateTime($row['date_start']);
$number_of_days = "P".intval($row['nb_days_access_before_beginning']).'D';
$start_date_for_coach->sub(new DateInterval($number_of_days));
$today = new DateTime();
if (isset($row['access_start_date']) && !empty($row['access_start_date']) && $row['access_start_date'] != '0000-00-00 00:00:00' &&
isset($row['coach_start_date']) && !empty($row['coach_start_date']) && $row['coach_start_date'] != '0000-00-00 00:00:00') {
$start_date_for_coach = new DateTime($row['coach_start_date']);
if ($start_date_for_coach < $today) {
$visibility = SESSION_AVAILABLE;
} else {
@ -1916,8 +1908,7 @@ function api_get_session_visibility($session_id) {
if (isset($user_status['moved_to']) && $user_status['moved_to'] != 0) {
return $original_visibility;
}
}
}
} else {
$visibility = SESSION_INVISIBLE;
}
@ -2260,7 +2251,7 @@ function api_get_user_platform_status($user_id = false) {
* @param string - optional, course code
* @return boolean True if current user is a course or session coach
*/
function api_is_coach($session_id = 0, $course_code = '') {
function api_is_coach($session_id = 0, $course_code = null) {
//@todo Not sure about this one
/*if (api_is_platform_admin()) {
return true;
@ -2276,12 +2267,13 @@ function api_is_coach($session_id = 0, $course_code = '') {
} else {
$course_code = api_get_course_id();
}
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_rel_course_rel_user_table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sessionIsCoach = null;
if (!empty($course_code)) {
$sql = "SELECT DISTINCT id, name, date_start, date_end
$sql = "SELECT DISTINCT id
FROM $session_table INNER JOIN $session_rel_course_rel_user_table session_rc_ru
ON session_rc_ru.id_user = '".api_get_user_id()."'
WHERE session_rc_ru.course_code = '$course_code' AND
@ -2292,10 +2284,10 @@ function api_is_coach($session_id = 0, $course_code = '') {
}
if (!empty($session_id)) {
$sql = "SELECT DISTINCT id, name, date_start, date_end
$sql = "SELECT DISTINCT id
FROM $session_table
WHERE session.id_coach = '".api_get_user_id()."' AND id = '$session_id'
ORDER BY date_start, date_end, name";
WHERE session.id_coach = '".api_get_user_id()."' AND
id = '$session_id'";
$result = Database::query($sql);
if (!empty($sessionIsCoach)) {
$sessionIsCoach = array_merge($sessionIsCoach , Database::store_result($result));

@ -65,6 +65,7 @@ class HTML_QuickForm_Rule_Compare extends HTML_QuickForm_Rule
* @return string operator to use for validation
*/
function _findOperator($name) {
$name = trim($name);
if (empty($name)) {
return '===';
} elseif (isset($this->_operators[$name])) {
@ -77,8 +78,7 @@ class HTML_QuickForm_Rule_Compare extends HTML_QuickForm_Rule
}
function validate($values, $operator = null)
{
function validate($values, $operator = null) {
$operator = $this->_findOperator($operator);
if ('===' != $operator && '!==' != $operator) {
$compareFn = create_function('$a, $b', 'return floatval($a) ' . $operator . ' floatval($b);');

@ -17,7 +17,9 @@ class SessionManager {
CONST SESSION_CHANGE_USER_REASON_SCHEDULE = 1;
CONST SESSION_CHANGE_USER_REASON_CLASSROOM = 2;
CONST SESSION_CHANGE_USER_REASON_LOCATION = 3;
CONST SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION = 4;
CONST SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION = 4;
CONST DEFAULT_VISIBILITY = 4; //SESSION_AVAILABLE
private function __construct() {
}
@ -25,7 +27,7 @@ class SessionManager {
/**
* Fetches a session from the database
* @param int Session ID
* @return array Session details (id, id_coach, name, nbr_courses, nbr_users, nbr_classes, date_start, date_end, nb_days_access_before_beginning,nb_days_access_after_end, session_admin_id)
* @return array Session details
*/
public static function fetch($id) {
$t = Database::get_main_table(TABLE_MAIN_SESSION);
@ -49,10 +51,13 @@ class SessionManager {
if ($num >= $_configuration[$access_url_id]['hosting_limit_sessions']) {
return get_lang('PortalSessionsLimitReached');
}
}
}
$params = self::clean_parameters($params);
$session_id = Database::insert(Database::get_main_table(TABLE_MAIN_SESSION), $params);
$my_session_result = SessionManager::get_session_by_name($params['name']);
if (empty($my_session_result)) {
$session_id = Database::insert(Database::get_main_table(TABLE_MAIN_SESSION), $params);
}
if (!empty($session_id)) {
/*
@ -87,7 +92,7 @@ class SessionManager {
return $affected;
}
public function clean_parameters($params) {
public static function clean_parameters($params) {
//Convert dates
$params['display_start_date'] = api_get_utc_datetime($params['display_start_date'], true);
@ -97,6 +102,10 @@ class SessionManager {
$params['coach_access_start_date'] = api_get_utc_datetime($params['coach_access_start_date'], true);
$params['coach_access_end_date'] = api_get_utc_datetime($params['coach_access_end_date'], true);
$params['id_coach'] = is_array($params['id_coach']) ? $params['id_coach'][0] : $params['id_coach'];
if (empty($params['access_end_date'])) {
$params['visibility'] = SessionManager::DEFAULT_VISIBILITY;
}
unset($params['submit']);
return $params;
@ -310,18 +319,16 @@ class SessionManager {
}
$today = api_get_utc_datetime();
$today = api_strtotime($today, 'UTC');
$today = date('Y-m-d', $today);
$select = "SELECT * FROM (SELECT
IF (
(s.date_start <= '$today' AND '$today' < s.date_end) OR
(s.date_start = '0000-00-00' AND s.date_end = '0000-00-00' ) OR
(s.date_start <= '$today' AND '0000-00-00' = s.date_end) OR
('$today' < s.date_end AND '0000-00-00' = s.date_start)
(s.access_start_date <= '$today' AND '$today' < s.access_end_date) OR
(s.access_start_date = '0000-00-00 00:00:00' AND s.access_end_date = '0000-00-00 00:00:00' ) OR
(s.access_start_date <= '$today' AND '0000-00-00 00:00:00' = s.access_end_date) OR
('$today' < s.access_end_date AND '0000-00-00 00:00:00' = s.access_start_date)
, 1, 0)
as session_active,
s.name, nbr_courses, nbr_users, s.date_start, s.date_end, $coach_name, sc.name as category_name, s.visibility, u.user_id, s.id";
s.name, nbr_courses, nbr_users, s.access_start_date, s.access_end_date, $coach_name, sc.name as category_name, s.visibility, u.user_id, s.id";
$query = "$select FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
@ -360,28 +367,20 @@ class SessionManager {
$session['coach_name'] = Display::url($session['coach_name'], "user_information.php?user_id=".$session['user_id']);
if ($session['date_start'] == '0000-00-00' && $session['date_end'] == '0000-00-00') {
// $session['session_active'] = 1;
}
if ($session['session_active'] == 1) {
$session['session_active'] = Display::return_icon('accept.png', get_lang('Active'), array(), ICON_SIZE_SMALL);
} else {
$session['session_active'] = Display::return_icon('error.png', get_lang('Inactive'), array(), ICON_SIZE_SMALL);
}
if ($session['date_start'] == '0000-00-00') {
$session['date_start'] = '';
}
if ($session['date_end'] == '0000-00-00') {
$session['date_end'] = '';
}
$session = self::convert_dates_to_local($session);
switch ($session['visibility']) {
case SESSION_VISIBLE_READ_ONLY: //1
$session['visibility'] = get_lang('ReadOnly');
break;
case SESSION_VISIBLE: //2
case SESSION_AVAILABLE: //4
$session['visibility'] = get_lang('Visible');
break;
case SESSION_INVISIBLE: //3
@ -390,10 +389,21 @@ class SessionManager {
}
$formatted_sessions[] = $session;
}
}
}
return $formatted_sessions;
}
static function convert_dates_to_local($params) {
$params['display_start_date'] = api_get_local_time($params['display_start_date'], null, null, true);
$params['display_end_date'] = api_get_local_time($params['display_end_date'], null, null, true);
$params['access_start_date'] = api_get_local_time($params['access_start_date'], null, null, true);
$params['access_end_date'] = api_get_local_time($params['access_end_date'], null, null, true);
$params['coach_access_start_date'] = api_get_local_time($params['coach_access_start_date'], null, null, true);
$params['coach_access_end_date'] = api_get_local_time($params['coach_access_end_date'], null, null, true);
return $params;
}
/**
* Creates a new course code based in given code
@ -2180,4 +2190,21 @@ class SessionManager {
$result = Database::query($sql);
return Database::store_result($result, 'ASSOC');
}
static function parse_session_dates($session_info) {
$session_info['access_start_date'] = api_get_local_time($session_info['access_start_date'], null, null, true);
$session_info['access_end_date'] = api_get_local_time($session_info['access_start_date'], null, null, true);
if (!empty($session_info['access_start_date']) && !empty($session_info['access_end_date'])) {
$msg_date = get_lang('From').' '.$session_info['access_start_date'].' '.get_lang('To').' '.$session_info['access_end_date'];
} else {
if (!empty($session_info['access_start_date'])) {
$msg_date = get_lang('From').' '.$session_info['access_start_date'];
}
if (!empty($session_info['access_start_date'])) {
$msg_date = get_lang('From').' '.$session_info['access_start_date'];
}
}
return $msg_date;
}
}

@ -686,8 +686,7 @@ class SocialManager extends UserManager {
$i=1;
if (is_array($personal_course_list)) {
foreach ($personal_course_list as $my_course) {
if ($i<=10) {
//$list[] = SocialManager::get_logged_user_course_html($my_course,$i);
if ($i<=10) {
$course_list_code[] = array('code' => $my_course['code']);
} else {
break;

@ -1940,18 +1940,27 @@ class UserManager {
$condition_date_end = "";
if ($is_time_over) {
$condition_date_end = " AND ( (session.date_end < '$now' AND session.date_end != '0000-00-00') OR moved_to <> 0) ";
$condition_date_end = " AND ((session.access_end_date < '$now' AND session.access_end_date != '0000-00-00 00:00:00') OR moved_to <> 0) ";
} else {
$condition_date_end = " AND (session.date_end >= '$now' OR session.date_end = '0000-00-00') AND moved_to = 0 ";
$condition_date_end = " AND (session.access_end_date >= '$now' OR session.access_end_date = '0000-00-00 00:00:00') AND moved_to = 0 ";
}
$sql = "SELECT DISTINCT session.id, session.name, session.date_start, session.date_end, session_category_id,
$sql = "SELECT DISTINCT session.id,
session.name,
access_start_date,
access_end_date,
coach_access_start_date,
coach_access_end_date,
session_category_id,
session_category.name as session_category_name,
session_category.date_start session_category_date_start,
session_category.date_end session_category_date_end,
nb_days_access_before_beginning,
moved_to,
moved_status
moved_status,
id_coach
FROM $tbl_session as session LEFT JOIN $tbl_session_category session_category ON (session_category_id = session_category.id)
INNER JOIN $tbl_session_course_user as scu ON (scu.id_session = session.id)
@ -1960,27 +1969,67 @@ class UserManager {
scu.id_user = $user_id OR session.id_coach = $user_id
) $condition_date_end
ORDER BY session_category_name, name";
//var_dump($sql);
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) {
$categories[$row['session_category_id']]['session_category']['id'] = $row['session_category_id'];
$categories[$row['session_category_id']]['session_category']['name'] = $row['session_category_name'];
$categories[$row['session_category_id']]['session_category']['date_start'] = $row['session_category_date_start'];
$categories[$row['session_category_id']]['session_category']['date_end'] = $row['session_category_date_end'];
$categories[$row['session_category_id']]['session_category']['id'] = $row['session_category_id'];
$categories[$row['session_category_id']]['session_category']['name'] = $row['session_category_name'];
$categories[$row['session_category_id']]['session_category']['date_start'] = $row['session_category_date_start'];
$categories[$row['session_category_id']]['session_category']['date_end'] = $row['session_category_date_end'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['session_name'] = $row['name'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['session_id'] = $row['id'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['date_start'] = $row['date_start'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['date_end'] = $row['date_end'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['nb_days_access_before_beginning'] = $row['nb_days_access_before_beginning'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['courses'] = UserManager::get_courses_list_by_session($user_id, $row['id']);
$session_id = $row['id'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_to'] = $row['moved_to'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_status'] = $row['moved_status'];
$visibility = api_get_session_visibility($session_id, null, false);
}
}
switch ($visibility) {
case SESSION_VISIBLE_READ_ONLY:
case SESSION_VISIBLE:
case SESSION_AVAILABLE:
break;
case SESSION_INVISIBLE:
continue(2);
}
$categories[$row['session_category_id']]['sessions'][$row['id']]['session_name'] = $row['name'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['session_id'] = $row['id'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['id_coach'] = $row['id_coach'];
if (isset($row['id_coach']) && !empty($row['id_coach'])) {
$user_info = api_get_user_info($row['id_coach']);
$categories[$row['session_category_id']]['sessions'][$row['id']]['coach_info'] = $user_info;
}
$categories[$row['session_category_id']]['sessions'][$row['id']]['access_start_date'] = $row['access_start_date'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['access_end_date'] = $row['access_end_date'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['coach_access_start_date'] = $row['coach_access_start_date'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['coach_access_end_date'] = $row['coach_access_end_date'];
$date_message = SessionManager::parse_session_dates($row);
$categories[$row['session_category_id']]['sessions'][$row['id']]['date_message'] = $date_message;
$date_message = SessionManager::parse_session_dates($row);
$categories[$row['session_category_id']]['sessions'][$row['id']]['dates_message'] = $date_message;
$courses = UserManager::get_courses_list_by_session($user_id, $row['id']);
$course_list = array();
foreach ($courses as $course) {
$visibility = api_get_session_visibility($session_id, $course['code']);
if ($visibility == SESSION_INVISIBLE) {
continue;
}
$user_status_in_course = CourseManager::get_user_in_course_status($user_id, $course['code']);
$course['user_status_in_course'] = $user_status_in_course;
$course_list[] = $course;
}
$categories[$row['session_category_id']]['sessions'][$row['id']]['courses'] = $course_list;
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_to'] = $row['moved_to'];
$categories[$row['session_category_id']]['sessions'][$row['id']]['moved_status'] = $row['moved_status'];
}
}
return $categories;
}
@ -2138,9 +2187,7 @@ class UserManager {
$where_access_url=" AND access_url_id = $access_url_id AND url_rel_session.session_id = $session_id ";
}
}
// variable initialisation
$personal_course_list_sql = '';
$personal_course_list = array();
$courses = array();

@ -868,10 +868,8 @@ class IndexManager {
$session_categories = UserManager::get_sessions_by_category($user_id, false);
}
$html = '';
//Showing history title
$html = '';
//Showing history title
if ($load_history) {
$html .= Display::page_subheader(get_lang('HistoryTrainingSession'));
if (empty($session_categories)) {
@ -900,65 +898,45 @@ class IndexManager {
if ($session_category_id == 0) {
// Independent sessions
foreach ($session_category['sessions'] as $session) {
foreach ($session_category['sessions'] as $session) {
$session_id = $session['session_id'];
// Don't show empty sessions.
if (count($session['courses']) < 1) {
continue;
}
// Courses inside the current session.
$date_session_start = $session['date_start'];
$days_access_before_beginning = $session['nb_days_access_before_beginning'] * 24 * 3600;
$session_now = time();
$html_courses_session = '';
$count_courses_session = 0;
foreach ($session['courses'] as $course) {
$is_coach_course = api_is_coach($session_id, $course['code']);
$allowed_time = 0;
if ($date_session_start != '0000-00-00') {
if ($is_coach_course) {
$allowed_time = api_strtotime($date_session_start) - $days_access_before_beginning;
} else {
$allowed_time = api_strtotime($date_session_start);
}
}
if ($session_now > $allowed_time) {
//read only and accesible
if (api_get_setting('hide_courses_in_sessions') == 'false') {
$c = CourseManager :: get_logged_user_course_html($course, $session_id, 'session_course_item', true, $this->load_directories_preview);
$html_courses_session .= $c[1];
}
$count_courses_session++;
foreach ($session['courses'] as $course) {
//read only and accesible
if (api_get_setting('hide_courses_in_sessions') == 'false') {
$html_courses_session .= CourseManager :: get_logged_user_course_html($course, $session_id, 'session_course_item', true, $this->load_directories_preview);
}
$count_courses_session++;
}
if ($count_courses_session > 0) {
$params = array();
$session_box = Display :: get_session_title_box($session_id);
$params['icon'] = Display::return_icon('window_list.png', $session_box['title'], array('id' => 'session_img_'.$session_id), ICON_SIZE_LARGE);
$extra_info = !empty($session_box['coach']) ? $session_box['coach'] : null;
$extra_info .= !empty($session_box['coach']) ? ' - '.$session_box['dates'] : $session_box['dates'];
$params = array();
$params['icon'] = Display::return_icon('window_list.png', $session['session_name'], array('id' => 'session_img_'.$session_id), ICON_SIZE_LARGE);
if (api_is_drh()) {
$session_link = $session_box['title'];
$session_link = $session['session_name'];
$params['link'] = null;
} else {
$session_link = Display::tag('a', $session_box['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id));
$session_link = Display::tag('a', $session['session_name'], array('href'=>api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id));
$params['link'] = api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id;
}
$params['title'] = $session_link;
$moved_status = SessionManager::get_session_change_user_reason($session['moved_status']);
$moved_status = isset($moved_status) && !empty($moved_status) ? ' ('.$moved_status.')' : null;
$params['subtitle'] = $extra_info.$moved_status;
$moved_status = isset($moved_status) && !empty($moved_status) ? ' ('.$moved_status.')' : null;
$params['subtitle'] = isset($session['coach_info']) ? $session['coach_info']['complete_name'] : null.$moved_status;
$params['dates'] = $session['date_message'];
$params['right_actions'] = '';
if (api_is_platform_admin()) {
@ -972,57 +950,44 @@ class IndexManager {
$sessions_with_no_category .= CourseManager::course_item_parent(CourseManager::course_item_html($params, true), $html_courses_session);
}
}
} else {
} else {
// All sessions included in
$count_courses_session = 0;
$html_sessions = '';
foreach ($session_category['sessions'] as $session) {
$session_id = $session['session_id'];
//var_dump($session);var_dump($session_category);
$session_id = $session['session_id'];
// Don't show empty sessions.
if (count($session['courses']) < 1) {
continue;
}
$date_session_start = $session['date_start'];
//api_get_session_visibility($session_id);
$days_access_before_beginning = $session['nb_days_access_before_beginning'] * 24 * 3600;
$session_now = time();
$html_courses_session = '';
$count = 0;
foreach ($session['courses'] as $course) {
$is_coach_course = api_is_coach($session_id, $course['code']);
if ($is_coach_course) {
$allowed_time = api_strtotime($date_session_start) - $days_access_before_beginning;
} else {
$allowed_time = api_strtotime($date_session_start);
}
if ($session_now > $allowed_time) {
$c = CourseManager :: get_logged_user_course_html($course, $session_id, 'session_course_item');
$html_courses_session .= $c[1];
$count_courses_session++;
$count++;
}
foreach ($session['courses'] as $course) {
$html_courses_session .= CourseManager :: get_logged_user_course_html($course, $session_id, 'session_course_item');
$count_courses_session++;
$count++;
}
$params = array();
if ($count > 0) {
$session_box = Display :: get_session_title_box($session_id);
$params['icon'] = Display::return_icon('window_list.png', $session_box['title'], array('width' => '48px', 'align' => 'absmiddle', 'id' => 'session_img_'.$session_id)) . ' ';
if ($count > 0) {
$params['icon'] = Display::return_icon('window_list.png', $session['session_name'], array('width' => '48px', 'align' => 'absmiddle', 'id' => 'session_img_'.$session_id)) . ' ';
if (api_is_drh()) {
$session_link = $session_box['title'];
$session_link = $session['session_name'];
$params['link'] = null;
} else {
$session_link = Display::tag('a', $session_box['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id));
$session_link = Display::tag('a', $session['session_name'], array('href'=>api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id));
$params['link'] = api_get_path(WEB_CODE_PATH).'session/index.php?session_id='.$session_id;
}
$params['title'] .= $session_link;
$params['subtitle'] = (!empty($session_box['coach']) ? $session_box['coach'].' | ' : '').$session_box['dates'];
$moved_status = SessionManager::get_session_change_user_reason($session['moved_status']);
$moved_status = isset($moved_status) && !empty($moved_status) ? ' ('.$moved_status.')' : null;
$params['subtitle'] = isset($session['coach_info']) ? $session['coach_info']['complete_name'] : null.$moved_status;
$params['dates'] = $session['date_message'];
if (api_is_platform_admin()) {
$params['right_actions'] .= '<a href="'.api_get_path(WEB_CODE_PATH).'admin/resume_session.php?id_session='.$session_id.'">'.Display::return_icon('edit.png', get_lang('Edit'), array('align' => 'absmiddle'), ICON_SIZE_SMALL).'</a>';
@ -1057,10 +1022,9 @@ class IndexManager {
if (!empty($session_category_end_date) && $session_category_end_date != '0000-00-00') {
$params['subtitle'] = get_lang('Until').' '.$session_category_end_date;
}
}
}
$sessions_with_category .= CourseManager::course_item_parent(CourseManager::course_item_html($params, true), $html_sessions);
}
}
}
}
}

Loading…
Cancel
Save