Add new session dates #7719

1.10.x
Julio Montoya 10 years ago
parent 4b84f43a14
commit 2a50844629
  1. 5
      main/cron/create_course_sessions.php
  2. 70
      main/cron/import_csv.php
  3. 84
      main/inc/ajax/model.ajax.php
  4. 48
      main/inc/lib/api.lib.php
  5. 58
      main/inc/lib/course_home.lib.php
  6. 993
      main/inc/lib/sessionmanager.lib.php
  7. 256
      main/session/resume_session.php
  8. 282
      main/session/session_add.php
  9. 255
      main/session/session_edit.php
  10. 8
      main/session/session_list.php
  11. 107
      main/webservices/webservice_session.php
  12. 52
      src/Chamilo/CoreBundle/Entity/Session.php
  13. 11
      src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150528103216.php
  14. 4
      tests/phpunit/classes/SessionManager.lib.php

@ -161,8 +161,9 @@ function createCourseSessions($courses, $administratorId, $startDate, $endDate)
$sessionName,
$startDate,
$endDate,
0,
0,
null,
null,
null,
null,
$administratorId,
0,

@ -1020,8 +1020,8 @@ class ImportCsv
$categoryId = isset($session['category_id']) ? $session['category_id'] : null;
// 2014-06-30
$dateStart = explode('/', $session['DateStart']);
$dateEnd = explode('/', $session['DateEnd']);
$dateStart = str_replace('/', '-', $session['DateStart']);
$dateEnd = str_replace('/', '-', $session['DateEnd']);
$visibility = $this->defaultSessionVisibility;
$coachId = null;
@ -1030,22 +1030,30 @@ class ImportCsv
$coachId = $coachInfo['user_id'];
}
$coachStartDate = null;
if (!empty($this->daysCoachAccessBeforeBeginning)) {
$day = intval($this->daysCoachAccessBeforeBeginning);
$coachStartDate = date('Y-m-d ', strtotime($dateStart. ' + '.$day.' days'));
}
$coachEndDate = null;
if (!empty($this->daysCoachAccessAfterBeginning)) {
$day = intval($this->daysCoachAccessAfterBeginning);
$coachEndDate = date('Y-m-d ', strtotime($dateEnd. ' + '.$day.' days'));
}
if (empty($sessionId)) {
$result = SessionManager::create_session(
$session['SessionName'],
$dateStart[0],
$dateStart[1],
$dateStart[2],
$dateEnd[0],
$dateEnd[1],
$dateEnd[2],
$this->daysCoachAccessBeforeBeginning,
$this->daysCoachAccessAfterBeginning,
null,
$coachUserName,
$dateStart,
$dateEnd,
$dateStart,
$dateEnd,
$coachStartDate,
$coachEndDate,
$coachId,
$categoryId,
$visibility,
1
$visibility
);
if (is_numeric($result)) {
@ -1059,43 +1067,21 @@ class ImportCsv
} else {
$sessionInfo = api_get_session_info($sessionId);
$accessBefore = null;
$accessAfter = null;
if (empty($sessionInfo['nb_days_access_before_beginning']) ||
(!empty($sessionInfo['nb_days_access_before_beginning']) &&
$sessionInfo['nb_days_access_before_beginning'] < $this->daysCoachAccessBeforeBeginning)
) {
$accessBefore = intval($this->daysCoachAccessBeforeBeginning);
}
$accessAfter = null;
if (empty($sessionInfo['nb_days_access_after_end']) ||
(!empty($sessionInfo['nb_days_access_after_end']) &&
$sessionInfo['nb_days_access_after_end'] < $this->daysCoachAccessAfterBeginning)
) {
$accessAfter = intval($this->daysCoachAccessAfterBeginning);
}
$showDescription = isset($sessionInfo['show_description']) ? $sessionInfo['show_description'] : 1;
$result = SessionManager::edit_session(
$sessionId,
$session['SessionName'],
$dateStart[0],
$dateStart[1],
$dateStart[2],
$dateEnd[0],
$dateEnd[1],
$dateEnd[2],
$accessBefore,
$accessAfter,
null,
$dateStart,
$dateEnd,
$dateStart,
$dateEnd,
$sessionInfo['coach_access_start_date'],
$sessionInfo['coach_access_end_date'],
$coachId,
$categoryId,
$visibility,
true, //$start_limit =
true, //$end_limit =
null, //$description
$showDescription // $showDescription = null,
);

@ -106,8 +106,10 @@ $searchOperator = isset($_REQUEST['searchOper']) ? $_REQUEST['searchOper'] :
$searchString = isset($_REQUEST['searchString']) ? $_REQUEST['searchString'] : false;
$search = isset($_REQUEST['_search']) ? $_REQUEST['_search'] : false;
$forceSearch = isset($_REQUEST['_force_search']) ? $_REQUEST['_force_search'] : false;
$extra_fields = array();
if ($search || $forceSearch) {
$whereCondition = ' 1 = 1 ';
$whereConditionInForm = getWhereClause($searchField, $searchOperator, $searchString);
if (!empty($whereConditionInForm)) {
@ -116,7 +118,7 @@ if ($search || $forceSearch) {
$filters = isset($_REQUEST['filters']) ? json_decode($_REQUEST['filters']) : false;
if (!empty($filters) && !empty($filters->rules)) {
/*if (!empty($filters) && !empty($filters->rules)) {
$whereCondition .= ' AND ( ';
$counter = 0;
foreach ($filters->rules as $key => $rule) {
@ -128,6 +130,44 @@ if ($search || $forceSearch) {
$counter++;
}
$whereCondition .= ' ) ';
}*/
// for now
if (!empty($filters)) {
switch($action) {
case 'get_questions':
$type = 'question';
break;
case 'get_sessions':
$type = 'session';
break;
}
// Extra field.
$extraField = new ExtraField($type);
$result = $extraField->getExtraFieldRules($filters, 'extra_');
$extra_fields = $result['extra_fields'];
$condition_array = $result['condition_array'];
if (!empty($condition_array)) {
$whereCondition .= ' AND ( ';
$whereCondition .= implode($filters->groupOp, $condition_array);
$whereCondition .= ' ) ';
}
// Question field
$resultQuestion = $extraField->getExtraFieldRules($filters, 'question_');
$questionFields = $resultQuestion['extra_fields'];
$condition_array = $resultQuestion['condition_array'];
if (!empty($condition_array)) {
$whereCondition .= ' AND ( ';
$whereCondition .= implode($filters->groupOp, $condition_array);
$whereCondition .= ' ) ';
}
}
}
@ -394,12 +434,17 @@ switch ($action) {
}
break;
case 'get_sessions':
$courseId = isset($_GET['course_id']) && !empty($_GET['course_id']) ? intval($_GET['course_id']) : null;
$whereCondition = str_replace('category_name', 'sc.name', $whereCondition);
if (!empty($courseId)) {
$whereCondition .= " AND c.id = $courseId";
$list_type = isset($_REQUEST['list_type']) ? $_REQUEST['list_type'] : 'simple';
if ($list_type == 'simple') {
$count = SessionManager::get_sessions_admin(
array('where' => $whereCondition, 'extra' => $extra_fields),
true
);
} else {
$count = SessionManager::get_count_admin_complete(
array('where' => $whereCondition, 'extra' => $extra_fields)
);
}
$count = SessionManager::get_count_admin($whereCondition);
break;
case 'get_session_lp_progress':
case 'get_session_progress':
@ -883,6 +928,31 @@ switch ($action) {
break;
case 'get_sessions':
$session_columns = SessionManager::get_session_columns($list_type);
$columns = $session_columns['simple_column_name'];
if ($list_type == 'simple') {
$result = SessionManager::get_sessions_admin(
array(
'where' => $whereCondition,
'order' => "$sidx $sord",
'extra' => $extra_fields,
'limit' => "$start , $limit",
),
false
);
} else {
$result = SessionManager::get_sessions_admin_complete(
array(
'where' => $whereCondition,
'order' => "$sidx $sord",
'extra' => $extra_fields,
'limit' => "$start , $limit",
)
);
}
break;
/*
$columns = array(
'name',
'nbr_courses',
@ -915,7 +985,7 @@ switch ($action) {
)
);
}
*/
break;
case 'get_exercise_progress':
$sessionId = intval($_GET['session_id']);

@ -2218,9 +2218,7 @@ function api_get_session_visibility(
$visibility = $original_visibility = $row['visibility'];
// I don't care the session visibility.
if ($row['date_start'] == '0000-00-00' &&
$row['date_end'] == '0000-00-00'
) {
if (empty($row['access_start_date']) && empty($row['access_end_date'])) {
// Session duration per student.
if (isset($row['duration']) && !empty($row['duration'])) {
@ -2230,11 +2228,13 @@ function api_get_session_visibility(
$session_id,
api_get_user_id()
);
// If there is a session duration but there is no previous
// access by the user, then the session is still available
if (count($courseAccess) == 0) {
return SESSION_AVAILABLE;
}
$currentTime = time();
$firstAccess = 0;
if (isset($courseAccess['login_course_date'])) {
@ -2262,11 +2262,10 @@ function api_get_session_visibility(
return SESSION_AVAILABLE;
} else {
// If start date was set.
if (!empty($row['date_start']) && $row['date_start'] != '0000-00-00') {
// The beginning of the day starts at 00:00:00
$row['date_start'] = $row['date_start'].' 00:00:00';
if ($now > api_strtotime($row['date_start'], 'UTC')) {
if (!empty($row['access_start_date'])) {
if ($now > api_strtotime($row['access_start_date'], 'UTC')) {
$visibility = SESSION_AVAILABLE;
} else {
$visibility = SESSION_INVISIBLE;
@ -2274,13 +2273,10 @@ function api_get_session_visibility(
}
// If the end date was set.
if (!empty($row['date_end']) && $row['date_end'] != '0000-00-00') {
// End date finish at midnight.
$row['date_end'] = $row['date_end'].' 23:59:59';
if (!empty($row['access_end_date'])) {
// Only if date_start said that it was ok
if ($visibility == SESSION_AVAILABLE) {
if ($now < api_strtotime($row['date_end'], 'UTC')) {
if ($now < api_strtotime($row['access_end_date'], 'UTC')) {
// Date still available
$visibility = SESSION_AVAILABLE;
} else {
@ -2292,21 +2288,15 @@ function api_get_session_visibility(
}
/* 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 */
the coach dates */
$is_coach = api_is_coach($session_id, $courseId);
if ($is_coach) {
// 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(substr($row['date_end'], 0 ,10).' 23:59:59');
$number_of_days = "P".intval($row['nb_days_access_after_end']).'D';
$end_date_for_coach->add(new DateInterval($number_of_days));
if ($end_date_for_coach->getTimestamp() >= $now) {
if (!empty($row['coach_access_end_date'])) {
$endDateCoach = api_strtotime($row['coach_access_end_date'], 'UTC');
if ($endDateCoach >= $now) {
$visibility = SESSION_AVAILABLE;
} else {
$visibility = SESSION_INVISIBLE;
@ -2314,15 +2304,9 @@ function api_get_session_visibility(
}
// 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(substr($row['date_start'], 0, 10).' 00:00:00');
$number_of_days = "P".intval($row['nb_days_access_before_beginning']).'D';
$start_date_for_coach->sub(new DateInterval($number_of_days));
if ($start_date_for_coach->getTimestamp() < $now) {
if (!empty($row['coach_access_start_date'])) {
$start = api_strtotime($row['coach_access_start_date'], 'UTC');
if ($start < $now) {
$visibility = SESSION_AVAILABLE;
} else {
$visibility = SESSION_INVISIBLE;

@ -965,39 +965,15 @@ class CourseHome
$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))) {
$sessionInfo = api_get_session_info($id_session);
if (empty($sessionInfo)) {
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);
$sql = 'SELECT name FROM '.$session_category_table.'
WHERE id = "'.intval($sessionInfo['session_category_id']).'"';
$rs_category = Database::query($sql);
$session_category = '';
if (Database::num_rows($rs_category) > 0) {
$rows_session_category = Database::store_result($rs_category);
@ -1005,19 +981,25 @@ class CourseHome
$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'];
}
$coachInfo = api_get_user_info($sessionInfo['id_coach']);
$output = '';
if (!empty($session_category)) {
$output .= '<tr><td>'.get_lang('SessionCategory').': '.'<b>'.$session_category.'</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>';
$dateInfo = SessionManager::parseSessionDates($sessionInfo);
$msgDate = $dateInfo['access'];
$output .= '<tr>
<td style="width:50%">'.get_lang('SessionName').': '.'<b>'.$sessionInfo['name'].'</b></td>
<td>'.get_lang('GeneralCoach').': '.'<b>'.$coachInfo['complete_name'].'</b></td></tr>';
$output .= '<tr>
<td>'.get_lang('SessionIdentifier').': '.
Display::return_icon('star.png', ' ', array('align' => 'absmiddle')).'
</td>
<td>'.get_lang('Date').': '.'<b>'.$msgDate.'</b>
</td>
</tr>';
return $output;
}

File diff suppressed because it is too large Load Diff

@ -41,33 +41,10 @@ $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_C
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$table_access_url_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$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,
show_description, description
FROM '.$tbl_session.'
LEFT JOIN '.$tbl_user.'
ON id_coach = user_id
WHERE '.$tbl_session.'.id='.$sessionId;
$rs = Database::query($sql);
$session = Database::store_result($rs);
$session = $session[0];
$sessionInfo = api_get_session_info($sessionId);
$sql = 'SELECT name FROM '.$tbl_session_category.'
WHERE id = "'.intval($session['session_category_id']).'"';
WHERE id = "'.intval($sessionInfo['session_category_id']).'"';
$rs = Database::query($sql);
$session_category = '';
@ -97,9 +74,11 @@ switch ($action) {
$result = UrlManager::add_user_to_url($user_id, $url_id);
$user_info = api_get_user_info($user_id);
if ($result) {
$message = Display::return_message(
get_lang('UserAdded').' '.api_get_person_name($user_info['firstname'], $user_info['lastname']),
'confirm'
Display::addFlash(
Display::return_message(
get_lang('UserAdded').' '.api_get_person_name($user_info['firstname'], $user_info['lastname']),
'confirm'
)
);
}
break;
@ -133,163 +112,43 @@ switch ($action) {
}
break;
}
Display::display_header($tool_name);
if (!empty($_GET['warn'])) {
Display::display_warning_message(urldecode($_GET['warn']));
}
if (!empty($message)) {
echo $message;
}
echo Display::page_header(
Display::return_icon('session.png', get_lang('Session')).' '.$session['name']
$sessionHeader = Display::page_header(
Display::return_icon('session.png', get_lang('Session')).' '.$sessionInfo['name']
);
$url = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL),
"session_edit.php?page=resume_session.php&id=$sessionId"
);
echo Display::page_subheader(get_lang('GeneralProperties').$url);
?>
<!-- General properties -->
<table class="data_table">
<tr>
<td><?php echo get_lang('GeneralCoach'); ?> :</td>
<td><?php echo api_get_person_name($session['firstname'], $session['lastname']).' ('.$session['username'].')' ?></td>
</tr>
<?php if(!empty($session_category)) { ?>
<tr>
<td><?php echo get_lang('SessionCategory') ?></td>
<td><?php echo $session_category; ?></td>
</tr>
<?php } ?>
<tr>
<td><?php echo get_lang('Date'); ?> :</td>
<td>
<?php
if ($session['date_start'] == '00-00-0000' && $session['date_end']== '00-00-0000' )
echo get_lang('NoTimeLimits');
else {
if ($session['date_start'] != '00-00-0000') {
$session['date_start'] = get_lang('From').' '.$session['date_start'];
} else {
$session['date_start'] = '';
}
if ($session['date_end'] == '00-00-0000') {
$session['date_end'] ='';
} else {
$session['date_end'] = get_lang('Until').' '.$session['date_end'];
}
echo $session['date_start'].' '.$session['date_end'];
}
?>
</td>
</tr>
<!-- show nb_days_before and nb_days_after only if they are different from 0 -->
<tr>
<td>
<?php echo api_ucfirst(get_lang('DaysBefore')) ?> :
</td>
<td>
<?php echo intval($session['nb_days_access_before_beginning']) ?>
</td>
</tr>
<tr>
<td>
<?php echo api_ucfirst(get_lang('DaysAfter')) ?> :
</td>
<td>
<?php echo intval($session['nb_days_access_after_end']) ?>
</td>
</tr>
<tr>
<td>
<?php echo api_ucfirst(get_lang('SessionVisibility')) ?> :
</td>
<td>
<?php
if ($session['visibility']==1)
echo get_lang('ReadOnly');
elseif($session['visibility']==2)
echo get_lang('Visible');
elseif($session['visibility']==3)
echo api_ucfirst(get_lang('Invisible'));
?>
</td>
</tr>
$sessionTitle = Display::page_subheader(get_lang('GeneralProperties').$url);
$generalCoach = api_get_user_info($sessionInfo['id_coach']);
<?php
$sessionField = new ExtraField('session');
$extraFieldData = $sessionField->getDataAndFormattedValues($sessionId);
foreach ($extraFieldData as $displayExtraField) {
?>
<tr>
<td><?php echo $displayExtraField['text'] ?></td>
<td><?php echo $displayExtraField['value'] ?></td>
</tr>
<?php
}
$multiple_url_is_on = api_get_multiple_access_url();
$url_list = [];
if ($multiple_url_is_on) {
echo '<tr><td>';
echo 'URL';
echo '</td>';
echo '<td>';
$url_list = UrlManager::get_access_url_from_session($sessionId);
foreach ($url_list as $url_data) {
echo $url_data['url'].'<br />';
}
echo '</td></tr>';
}
$sessionInfo = api_get_session_info($sessionId);
echo '<tr><td>';
echo get_lang('Duration');
echo '</td>';
echo '<td>';
echo $sessionInfo['duration'].' ';
echo get_lang('Days');
echo '</td></tr>';
?>
<tr>
<td><?php echo get_lang('Description'); ?></td>
<td><?php echo $session['description'] ?></td>
</tr>
<tr>
<td><?php echo get_lang('ShowDescription'); ?></td>
<td><?php echo $session['show_description'] == 1 ? get_lang('Yes') : get_lang('No') ?></td>
</tr>
</table>
<br />
<?php
$url = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL),
"add_courses_to_session.php?page=resume_session.php&id_session=$sessionId"
);
echo Display::page_subheader(get_lang('CourseList').$url);
?>
$courseListToShow = Display::page_subheader(get_lang('CourseList').$url);
<!--List of courses -->
<table class="data_table">
$courseListToShow .= '<table class="data_table">
<tr>
<th width="35%"><?php echo get_lang('CourseTitle'); ?></th>
<th width="30%"><?php echo get_lang('CourseCoach'); ?></th>
<th width="10%"><?php echo get_lang('UsersNumber'); ?></th>
<th width="25%"><?php echo get_lang('Actions'); ?></th>
</tr>
<?php
if ($session['nbr_courses'] == 0) {
echo '<tr>
<th width="35%">'.get_lang('CourseTitle').'</th>
<th width="30%">'.get_lang('CourseCoach').'</th>
<th width="10%">'.get_lang('UsersNumber').'</th>
<th width="25%">'.get_lang('Actions').'</th>
</tr>';
if ($sessionInfo['nbr_courses'] == 0) {
$courseListToShow .= '<tr>
<td colspan="4">'.get_lang('NoCoursesForThisSession').'</td>
</tr>';
} else {
@ -297,7 +156,8 @@ if ($session['nbr_courses'] == 0) {
$orderBy = "ORDER BY position";
$sql = "SELECT c.id, code, title, visual_code, nbr_users
FROM $tbl_course c INNER JOIN $tbl_session_rel_course sc
FROM $tbl_course c
INNER JOIN $tbl_session_rel_course sc
ON (c.id = sc.c_id)
WHERE
sc.c_id = c.id AND
@ -307,7 +167,7 @@ if ($session['nbr_courses'] == 0) {
$result = Database::query($sql);
$courses = Database::store_result($result);
$count = 0;
$courseItem = '';
foreach ($courses as $course) {
//select the number of users
$sql = "SELECT count(*)
@ -378,29 +238,35 @@ if ($session['nbr_courses'] == 0) {
);
//hide_course_breadcrumb the parameter has been added to hide the name of the course, that appeared in the default $interbreadcrumb
echo '
$courseItem .= '
<tr>
<td>'.Display::url($course['title'].' ('.$course['visual_code'].')', api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$sessionId),'</td>
<td>'.Display::url(
$course['title'].' ('.$course['visual_code'].')',
api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$sessionId
).'</td>
<td>'.$coach.'</td>
<td>'.$course['nbr_users'].'</td>
<td>
<a href="'.api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$sessionId.'">'.Display::return_icon('course_home.gif', get_lang('Course')).'</a>
<a href="'.api_get_path(WEB_COURSE_PATH).$course['code'].'/?id_session='.$sessionId.'">'.
Display::return_icon('course_home.gif', get_lang('Course')).'</a>
'.$orderButtons.'
<a href="session_course_user_list.php?id_session='.$sessionId.'&course_code='.$course['code'].'">'.Display::return_icon('user.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'/user/user_import.php?action=import&cidReq='.$course['code'].'&id_session='.$sessionId.'">'.Display::return_icon('import_csv.png', get_lang('ImportUsersToACourse'), null, ICON_SIZE_SMALL).'</a>
<a href="../tracking/courseLog.php?id_session='.$sessionId.'&cidReq='.$course['code'].$orig_param.'&hide_course_breadcrumb=1">'.Display::return_icon('statistics.gif', get_lang('Tracking')).'</a>&nbsp;
<a href="session_course_edit.php?id_session='.$sessionId.'&page=resume_session.php&course_code='.$course['code'].''.$orig_param.'">'.Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_self().'?id_session='.$sessionId.'&action=delete&idChecked[]='.$course['code'].'" onclick="javascript:if(!confirm(\''.get_lang('ConfirmYourChoice').'\')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>
<a href="session_course_user_list.php?id_session='.$sessionId.'&course_code='.$course['code'].'">'.
Display::return_icon('user.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'/user/user_import.php?action=import&cidReq='.$course['code'].'&id_session='.$sessionId.'">'.
Display::return_icon('import_csv.png', get_lang('ImportUsersToACourse'), null, ICON_SIZE_SMALL).'</a>
<a href="../tracking/courseLog.php?id_session='.$sessionId.'&cidReq='.$course['code'].$orig_param.'&hide_course_breadcrumb=1">'.
Display::return_icon('statistics.gif', get_lang('Tracking')).'</a>&nbsp;
<a href="session_course_edit.php?id_session='.$sessionId.'&page=resume_session.php&course_code='.$course['code'].''.$orig_param.'">'.
Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>
<a href="'.api_get_self().'?id_session='.$sessionId.'&action=delete&idChecked[]='.$course['code'].'" onclick="javascript:if(!confirm(\''.get_lang('ConfirmYourChoice').'\')) return false;">'.
Display::return_icon('delete.png', get_lang('Delete')).'</a>
</td>
</tr>';
$count++;
}
$courseListToShow .= $courseItem;
}
?>
</table>
<br />
<?php
$courseListToShow .= '</table><br />';
$url = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL),
@ -410,7 +276,8 @@ $url .= Display::url(
Display::return_icon('import_csv.png', get_lang('ImportUsers'), array(), ICON_SIZE_SMALL),
"session_user_import.php?id_session=$sessionId"
);
echo Display::page_subheader(get_lang('UserList').$url);
$userListToShow = Display::page_subheader(get_lang('UserList').$url);
$userList = SessionManager::get_users_by_session($sessionId);
@ -491,21 +358,38 @@ if (!empty($userList)) {
$table->setCellContents($row, 2, $link);
$row++;
}
$table->display();
$userListToShow .= $table->toHtml();
}
/** @var SequenceRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloCoreBundle:SequenceResource');
$requirementAndDependencies = $repo->getRequirementAndDependencies($sessionId, SequenceResource::SESSION_TYPE);
$requirements = '';
if (!empty($requirementAndDependencies['requirements'])) {
echo Display::page_subheader(get_lang('Requirements'));
echo implode(',', array_column($requirementAndDependencies['requirements'], 'name'));
$requirements = Display::page_subheader(get_lang('Requirements'));
$requirements .= implode(',', array_column($requirementAndDependencies['requirements'], 'name'));
}
$dependencies = '';
if (!empty($requirementAndDependencies['dependencies'])) {
echo Display::page_subheader(get_lang('Dependencies'));
echo implode(',', array_column($requirementAndDependencies['dependencies'], 'name'));
$dependencies = Display::page_subheader(get_lang('Dependencies'));
$dependencies .= implode(',', array_column($requirementAndDependencies['dependencies'], 'name'));
}
Display :: display_footer();
$tpl = new Template();
$tpl->assign('session_header', $sessionHeader);
$tpl->assign('title', $sessionTitle);
$tpl->assign('general_coach', $generalCoach);
$tpl->assign('session', $sessionInfo);
$tpl->assign('session_category', $session_category);
$tpl->assign('session_dates', SessionManager::parseSessionDates($sessionInfo));
$tpl->assign('session_visibility', SessionManager::getSessionVisibility($sessionInfo));
$tpl->assign('url_list', $url_list);
$tpl->assign('extra_fields', $extraFieldData);
$tpl->assign('course_list', $courseListToShow);
$tpl->assign('user_list', $userListToShow);
$tpl->assign('dependencies', $dependencies);
$tpl->assign('requirements', $requirements);
$layout = $tpl->get_template('session/resume_session.tpl');
$tpl->display($layout);

@ -32,8 +32,6 @@ $interbreadcrumb[] = array(
'name' => get_lang('SessionList'),
);
// Database Table Definitions
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
function search_coachs($needle) {
global $tbl_user;
@ -87,45 +85,32 @@ $xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = "
<script type=\"text/javascript\">
<script>
$(document).ready( function() {
accessSwitcher(0);
});
function fill_coach_field (username) {
document.getElementById('coach_username').value = username;
document.getElementById('ajax_list_coachs').innerHTML = '';
}
function setDisable(select){
document.forms['edit_session'].elements['session_visibility'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['session_visibility'].selectedIndex = 0;
document.forms['edit_session'].elements['start_limit'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['start_limit'].checked = false;
document.forms['edit_session'].elements['end_limit'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['end_limit'].checked = false;
var end_div = document.getElementById('end_date');
end_div.style.display = 'none';
var start_div = document.getElementById('start_date');
start_div.style.display = 'none';
}
function disable_endtime(select) {
var end_div = document.getElementById('end_date');
if (end_div.style.display == 'none')
end_div.style.display = 'block';
else
end_div.style.display = 'none';
function accessSwitcher(accessFromReady) {
var access = $('#access option:selected').val();
emptyDuration();
}
if (accessFromReady >= 0) {
access = accessFromReady;
}
function disable_starttime(select) {
var start_div = document.getElementById('start_date');
if (start_div.style.display == 'none')
start_div.style.display = 'block';
else
start_div.style.display = 'none';
if (access == 1) {
$('#duration').hide();
$('#date_fields').show();
} else {
$('#duration').show();
$('#date_fields').hide();
}
emptyDuration();
}
@ -140,34 +125,10 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
$formSent = 1;
}
global $_configuration;
$before = api_get_setting('session_days_before_coach_access');
$defaultBeforeDays = $before ? $before : 0;
$after = api_get_setting('session_days_after_coach_access');
$defaultAfterDays = $after ? $after : 0;
$nb_days_acess_before = $defaultBeforeDays;
$nb_days_acess_after = $defaultAfterDays;
$thisYear = date('Y');
$thisMonth = date('m');
$thisDay = date('d');
$tool_name = get_lang('AddSession');
$urlAction = api_get_self();
$categoriesList = SessionManager::get_all_session_category();
$categoriesOptions = array(
'0' => get_lang('None')
);
if ($categoriesList != false) {
foreach ($categoriesList as $categoryItem) {
$categoriesOptions[$categoryItem['id']] = $categoryItem['name'];
}
}
function check_session_name($name) {
$session = SessionManager::get_session_by_name($name);
@ -175,194 +136,21 @@ function check_session_name($name) {
}
$form = new FormValidator('add_session', 'post', $urlAction);
$form->addElement('header', $tool_name);
$form->addElement('text', 'name', get_lang('SessionName'), array(
'maxlength' => 50,
'value' => $formSent ? api_htmlentities($name, ENT_QUOTES, $charset) : '',
));
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('name', get_lang('SessionNameAlreadyExists'), 'callback', 'check_session_name');
$userInfo = api_get_user_info();
if (!api_is_platform_admin() && api_is_teacher()) {
$form->addElement(
'select',
'coach_username',
get_lang('CoachName'),
[api_get_user_id() => $userInfo['complete_name']],
array(
'id' => 'coach_username',
'class' => 'chzn-select',
'style' => 'width:370px;'
)
);
} else {
$sql = "SELECT COUNT(1) FROM $tbl_user WHERE status = 1";
$rs = Database::query($sql);
$countUsers = Database::result($rs, 0, 0);
if (intval($countUsers) < 50) {
$orderClause = "ORDER BY ";
$orderClause .= api_sort_by_first_name() ? "firstname, lastname, username" : "lastname, firstname, username";
$sql = "SELECT user_id, lastname, firstname, username
FROM $tbl_user
WHERE status = '1' ".
$orderClause;
if (api_is_multiple_url_enabled()) {
$userRelAccessUrlTable = Database::get_main_table(
TABLE_MAIN_ACCESS_URL_REL_USER
);
$accessUrlId = api_get_current_access_url_id();
if ($accessUrlId != -1) {
$sql = "SELECT user.user_id, username, lastname, firstname
FROM $tbl_user user
INNER JOIN $userRelAccessUrlTable url_user
ON (url_user.user_id = user.user_id)
WHERE
access_url_id = $accessUrlId AND
status = 1 "
.$orderClause;
}
}
$result = Database::query($sql);
$coachesList = Database::store_result($result);
$coachesOptions = array();
foreach ($coachesList as $coachItem) {
$coachesOptions[$coachItem['user_id']] =
api_get_person_name($coachItem['firstname'], $coachItem['lastname']).' ('.$coachItem['username'].')';
}
$form->addElement(
'select',
'coach_username',
get_lang('CoachName'),
$coachesOptions,
array(
'id' => 'coach_username',
'class' => 'chzn-select',
'style' => 'width:370px;'
)
);
} else {
$form->addElement(
'text',
'coach_username',
get_lang('CoachName'),
array(
'maxlength' => 50,
'onkeyup' => "xajax_search_coachs(document.getElementById('coach_username').value)",
'id' => 'coach_username'
)
);
}
}
$form->addRule('coach_username', get_lang('ThisFieldIsRequired'), 'required');
$form->addHtml('<div id="ajax_list_coachs"></div>');
$form->addButtonAdvancedSettings('advanced_params');
$form->addElement('html','<div id="advanced_params_options" style="display:none">');
$form->addSelect('session_category', get_lang('SessionCategory'), $categoriesOptions, array(
'id' => 'session_category',
'class' => 'chzn-select',
'style' => 'width:370px;'
));
$form->addHtmlEditor(
'description',
get_lang('Description'),
false,
false,
array(
'ToolbarSet' => 'Minimal'
)
);
$form->addElement('checkbox', 'show_description', null, get_lang('ShowDescription'));
$form->addElement('text', 'nb_days_acess_before', array('', '', get_lang('DaysBefore')), array(
'input-size' => '2',
'value' => $nb_days_acess_before
));
$form->addElement('text', 'nb_days_acess_after', array('', '', get_lang('DaysAfter')), array(
'input-size' => '2',
'value' => $nb_days_acess_after
));
$form->addElement('checkbox', 'start_limit', '', get_lang('DateStartSession'), array(
'onchange' => 'disable_starttime(this)',
'id' => 'start_limit'
));
$form->addElement('html','<div id="start_date" style="display:none">');
$form->addElement('date_picker', 'date_start');
$form->addElement('html','</div>');
$form->addElement('checkbox', 'end_limit', '', get_lang('DateEndSession'), array(
'onchange' => 'disable_endtime(this)',
'id' => 'end_limit'
));
$form->addElement('html', '<div id="end_date" style="display:none">');
$form->addElement('date_picker', 'date_end');
$visibilityGroup = array();
$visibilityGroup[] = $form->createElement('select', 'session_visibility', null, array(
SESSION_VISIBLE_READ_ONLY => get_lang('SessionReadOnly'),
SESSION_VISIBLE => get_lang('SessionAccessible'),
SESSION_INVISIBLE => api_ucfirst(get_lang('SessionNotAccessible'))
));
$form->addGroup($visibilityGroup, 'visibility_group', get_lang('SessionVisibility'), null, false);
$form->addElement('html','</div>');
$form->addElement(
'text',
'duration',
array(
get_lang('SessionDurationTitle'),
get_lang('SessionDurationDescription')
),
array(
'maxlength' => 50
)
);
// Extra fields
$extra_field = new ExtraField('session');
$extra = $extra_field->addElements($form, null);
$form->addElement('html','</div>');
$result = SessionManager::setForm($form);
$htmlHeadXtra[] ='
<script>
$(function() {
'.$extra['jquery_ready_content'].'
'.$result['js'].'
});
</script>';
$form->addButtonNext(get_lang('NextStep'));
$formDefaults = array(
'nb_days_acess_before' => $nb_days_acess_before,
'nb_days_acess_after' => $nb_days_acess_after
);
if (!$formSent) {
$formDefaults['date_start'] = "$thisYear-$thisMonth-$thisDay";
$formDefaults['date_end'] = date('Y-m-d', strtotime("$thisYear-$thisMonth-$thisDay +1 year"));
$formDefaults['access_start_date'] = $formDefaults['display_start_date'] = api_get_local_time();
} else {
$formDefaults['name'] = api_htmlentities($name, ENT_QUOTES, $charset);
}
@ -373,27 +161,20 @@ if ($form->validate()) {
$params = $form->getSubmitValues();
$name = $params['name'];
$startDate = $params['date_start'];
$endDate = $params['date_end'];
$nb_days_acess_before = $params['nb_days_acess_before'];
$nb_days_acess_after = $params['nb_days_acess_after'];
$startDate = $params['access_start_date'];
$endDate = $params['access_end_date'];
$displayStartDate = $params['display_start_date'];
$displayendDate = $params['display_end_date'];
$coachStartDate = $params['coach_access_start_date'];
$coachEndDate = $params['coach_access_end_date'];
$coach_username = intval($params['coach_username']);
$id_session_category = $params['session_category'];
$id_visibility = $params['session_visibility'];
$end_limit = isset($params['end_limit']);
$start_limit = isset($params['start_limit']);
$duration = isset($params['duration']) ? $params['duration'] : null;
$description = $params['description'];
$showDescription = isset($params['show_description']) ? 1: 0;
if (empty($end_limit) && empty($start_limit)) {
$nolimit = 1;
} else {
$nolimit = null;
}
$extraFields = array();
foreach ($params as $key => $value) {
if (strpos($key, 'extra_') === 0) {
$extraFields[$key] = $value;
@ -404,14 +185,13 @@ if ($form->validate()) {
$name,
$startDate,
$endDate,
$nb_days_acess_before,
$nb_days_acess_after,
$nolimit,
$displayStartDate,
$displayendDate,
$coachStartDate,
$coachEndDate,
$coach_username,
$id_session_category,
$id_visibility,
$start_limit,
$end_limit,
false,
$duration,
$description,

@ -22,17 +22,17 @@ $id = intval($_GET['id']);
SessionManager::protectSession($id);
$infos = SessionManager::fetch($id);
$sessionInfo = SessionManager::fetch($id);
$id_coach = $infos['id_coach'];
$id_coach = $sessionInfo['id_coach'];
$tool_name = get_lang('EditSession');
//$interbreadcrumb[] = array('url' => 'index.php',"name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => "session_list.php","name" => get_lang('SessionList'));
$interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$id,"name" => get_lang('SessionOverview'));
list($year_start, $month_start, $day_start) = explode('-', $infos['date_start']);
list($year_end, $month_end, $day_end) = explode('-', $infos['date_end']);
list($year_start, $month_start, $day_start) = explode('-', $sessionInfo['date_start']);
list($year_end, $month_end, $day_end) = explode('-', $sessionInfo['date_end']);
if (isset($_POST['formSent']) && $_POST['formSent']) {
$formSent = 1;
@ -88,173 +88,28 @@ $formAction .= http_build_query(array(
));
$form = new FormValidator('edit_session', 'post', $formAction);
$form->addElement('header', $tool_name);
$result = SessionManager::setForm($form);
$form->addElement('text', 'name', get_lang('SessionName'), array(
'class' => 'span4',
'maxlength' => 50,
'value' => $formSent ? api_htmlentities($name,ENT_QUOTES, $charset) : ''
));
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('name', get_lang('SessionNameAlreadyExists'), 'callback', 'check_session_name');
if (!api_is_platform_admin() && api_is_teacher()) {
$userInfo = api_get_user_info();
$coachesOption = [api_get_user_id() => $userInfo['complete_name']];
}
$form->addElement('select', 'id_coach', get_lang('CoachName'), $coachesOption, array(
'id' => 'coach_username',
'class' => 'chzn-select',
'style' => 'width:370px;',
'title' => get_lang('Choose')
));
$form->addRule('id_coach', get_lang('ThisFieldIsRequired'), 'required');
$form->addButtonAdvancedSettings('advanced_params');
$form->addElement('html', '<div id="advanced_params_options" style="display:none">');
$form->addSelect('session_category', get_lang('SessionCategory'), $categoriesOption, array(
'id' => 'session_category',
'class' => 'chzn-select',
'style' => 'width:370px;'
));
$form->addHtmlEditor(
'description',
get_lang('Description'),
false,
false,
array(
'ToolbarSet' => 'Minimal'
)
);
$chkDescriptionAttributes = array();
if (!empty($infos['show_description'])) {
$chkDescriptionAttributes['checked'] = '';
}
$form->addElement('checkbox', 'show_description', null, get_lang('ShowDescription'), $chkDescriptionAttributes);
$form->addElement('text', 'nb_days_access_before', array('', '', get_lang('DaysBefore')), array(
'input-size' => '2',
));
$form->addElement('text', 'nb_days_access_after', array('', '', get_lang('DaysAfter')), array(
'input-size' => '2',
));
if ($year_start!="0000") {
$form->addElement('checkbox', 'start_limit', '', get_lang('DateStartSession'), array(
'onchange' => 'disable_starttime(this)',
'id' => 'start_limit',
'checked' => ''
));
$form->addElement('html','<div id="start_date" style="display:block">');
} else {
$form->addElement('checkbox', 'start_limit', '', get_lang('DateStartSession'), array(
'onchange' => 'disable_starttime(this)',
'id' => 'start_limit'
));
$form->addElement('html','<div id="start_date" style="display:none">');
}
$form->addElement('date_picker', 'date_start');
$form->addElement('html','</div>');
if ($year_end != "0000") {
$form->addElement('checkbox', 'end_limit', '', get_lang('DateEndSession'), array(
'onchange' => 'disable_endtime(this)',
'id' => 'end_limit',
'checked' => ''
));
$form->addElement('html','<div id="end_date" style="display:block">');
} else {
$form->addElement('checkbox', 'end_limit', '', get_lang('DateEndSession'), array(
'onchange' => 'disable_endtime(this)',
'id' => 'end_limit'
));
$form->addElement('html','<div id="end_date" style="display:none">');
}
$form->addElement('date_picker', 'date_end');
$visibilityGroup = array();
$visibilityGroup[] = $form->createElement(
'select',
'session_visibility',
null,
array(
SESSION_VISIBLE_READ_ONLY => get_lang('SessionReadOnly'),
SESSION_VISIBLE => get_lang('SessionAccessible'),
SESSION_INVISIBLE => api_ucfirst(get_lang('SessionNotAccessible')),
),
array(
'style' => 'width:250px;',
)
);
$form->addGroup($visibilityGroup, 'visibility_group', get_lang('SessionVisibility'), null, false);
$form->addElement('html','</div>');
$duration = empty($infos['duration']) ? null : $infos['duration'];
$form->addElement(
'text',
'duration',
array(
get_lang('SessionDurationTitle'),
get_lang('SessionDurationDescription')
),
array(
'maxlength' => 50
)
);
//Extra fields
$extra_field = new ExtraField('session');
$extra = $extra_field->addElements($form, $id);
$form->addElement('html','</div>');
$htmlHeadXtra[] ='
$htmlHeadXtra[] = '
<script>
$(function() {
'.$extra['jquery_ready_content'].'
'.$result['js'].'
});
</script>';
$form->addButtonUpdate(get_lang('ModifyThisSession'));
$formDefaults = array(
'id_coach' => $infos['id_coach'],
'session_category' => $infos['session_category_id'],
'date_start' => $infos['date_start'],
'date_end' => $infos['date_end'],
'session_visibility' => $infos['visibility'],
'description' => $infos['description']
);
$formDefaults = $sessionInfo;
$formDefaults['session_category'] = $sessionInfo['session_category_id'];
$formDefaults['session_visibility'] = $sessionInfo['visibility'];
if ($formSent) {
$formDefaults['name'] = api_htmlentities($name, ENT_QUOTES, $charset);
$formDefaults['nb_days_access_before'] = api_htmlentities($nb_days_access_before, ENT_QUOTES,$charset);
$formDefaults['nb_days_access_after'] = api_htmlentities($nb_days_access_after, ENT_QUOTES,$charset);
$formDefaults['duration'] = Security::remove_XSS($duration);
} else {
$formDefaults['name'] = Security::remove_XSS($infos['name']);
$formDefaults['nb_days_access_before'] = api_htmlentities($infos['nb_days_access_before_beginning'], ENT_QUOTES, $charset);
$formDefaults['nb_days_access_after'] = api_htmlentities($infos['nb_days_access_after_end'], ENT_QUOTES, $charset);
$formDefaults['duration'] = $duration;
$formDefaults['name'] = Security::remove_XSS($sessionInfo['name']);
}
$form->setDefaults($formDefaults);
@ -263,28 +118,20 @@ if ($form->validate()) {
$params = $form->getSubmitValues();
$name = $params['name'];
$startDate = $params['date_start'];
$endDate = $params['date_end'];
$nb_days_acess_before = $params['nb_days_access_before'];
$nb_days_acess_after = $params['nb_days_access_after'];
$id_coach = $params['id_coach'];
$startDate = $params['access_start_date'];
$endDate = $params['access_end_date'];
$displayStartDate = $params['display_start_date'];
$displayEndDate = $params['display_end_date'];
$coachStartDate = $params['coach_access_start_date'];
$coachEndDate = $params['coach_access_end_date'];
$coach_username = intval($params['coach_username']);
$id_session_category = $params['session_category'];
$id_visibility = $params['session_visibility'];
$duration = isset($params['duration']) ? $params['duration'] : null;
$description = $params['description'];
$showDescription = isset($params['show_description']) ? 1: 0;
$end_limit = isset($params['end_limit']);
$start_limit = isset($params['start_limit']);
if (!$end_limit && !$start_limit) {
$nolimit = 1;
} else {
$nolimit = null;
}
$extraFields = array();
foreach ($params as $key => $value) {
if (strpos($key, 'extra_') === 0) {
$extraFields[$key] = $value;
@ -296,14 +143,13 @@ if ($form->validate()) {
$name,
$startDate,
$endDate,
$nb_days_acess_before,
$nb_days_acess_after,
$nolimit,
$id_coach,
$displayStartDate,
$displayEndDate,
$coachStartDate,
$coachEndDate,
$coach_username,
$id_session_category,
$id_visibility,
$start_limit,
$end_limit,
$description,
$showDescription,
$duration,
@ -327,37 +173,40 @@ $form->display();
?>
<script type="text/javascript">
function setDisable(select) {
$(document).ready( function() {
<?php
if (!empty($sessionInfo['duration'])) {
echo 'accessSwitcher(0);';
} else {
echo 'accessSwitcher(1);';
}
?>
});
function setDisable(select) {
document.forms['edit_session'].elements['session_visibility'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['session_visibility'].selectedIndex = 0;
}
document.forms['edit_session'].elements['start_limit'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['start_limit'].checked = false;
document.forms['edit_session'].elements['end_limit'].disabled = (select.checked) ? true : false;
document.forms['edit_session'].elements['end_limit'].checked = false;
var end_div = document.getElementById('end_date');
end_div.style.display = 'none';
function accessSwitcher(accessFromReady) {
var access = $('#access option:selected').val();
var start_div = document.getElementById('start_date');
start_div.style.display = 'none';
}
if (accessFromReady >= 0) {
access = accessFromReady;
$('[name=access]').val(access);
}
function disable_endtime(select) {
var end_div = document.getElementById('end_date');
if (end_div.style.display == 'none')
end_div.style.display = 'block';
else
end_div.style.display = 'none';
emptyDuration();
}
if (access == 1) {
$('#duration').hide();
$('#date_fields').show();
} else {
function disable_starttime(select) {
var start_div = document.getElementById('start_date');
if (start_div.style.display == 'none')
start_div.style.display = 'block';
else
start_div.style.display = 'none';
$('#duration').show();
$('#date_fields').hide();
}
emptyDuration();
}

@ -115,8 +115,7 @@ $column_model = array(
array('name'=>'date_start', 'index'=>'s.date_start', 'width'=>'40', 'align'=>'left', 'search' => 'true'),
array('name'=>'date_end', 'index'=>'s.date_end', 'width'=>'40', 'align'=>'left', 'search' => 'true'),
array('name'=>'coach_name', 'index'=>'coach_name', 'width'=>'80', 'align'=>'left', 'search' => 'false'),
array('name'=>'status', 'index'=>'session_active','width'=>'45',
'align'=>'left', 'search' => 'true', 'stype'=>'select',
array('name'=>'status', 'index'=>'session_active','width'=>'50', 'align'=>'left', 'search' => 'true', 'stype'=>'select',
//for the bottom bar
'searchoptions' => array(
'defaultValue' => ':',
@ -127,9 +126,8 @@ $column_model = array(
'value' => ':'.get_lang('All').';1:'.get_lang('Active').';0:'.get_lang('Inactive')
)
),
array('name'=>'visibility', 'index'=>'visibility', 'width'=>'45', 'align'=>'left', 'search' => 'false'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'90',
'align'=>'left','formatter'=>'action_formatter','sortable'=>'false', 'search' => 'false')
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')
);
//Autowidth

@ -31,23 +31,51 @@ class WSSession extends WS
* @param array Array of extra fields
* @return mixed Generated id in case of success, WSError otherwise
*/
protected function createSessionHelper($name, $start_date, $end_date, $nb_days_access_before, $nb_days_access_after, $nolimit, $visibility, $user_id_field_name, $user_id_value, $session_id_field_name, $session_id_value, $extras) {
protected function createSessionHelper(
$name,
$start_date,
$end_date,
$nb_days_access_before,
$nb_days_access_after,
$nolimit,
$visibility,
$user_id_field_name,
$user_id_value,
$session_id_field_name,
$session_id_value,
$extras
) {
// Verify that coach exists and get its id
$user_id = $this->getUserId($user_id_field_name, $user_id_value);
if($user_id instanceof WSError) {
if ($user_id instanceof WSError) {
return $user_id;
}
// Build the date
$start_date_array = explode('-', $start_date);
foreach($start_date_array as &$sd_element) {
$sd_element = intval($sd_element);
$coachStartDate = null;
if (!empty($nb_days_access_before) {
$day = intval($nb_days_access_before);
$coachStartDate = date('Y-m-d ', strtotime($start_date. ' + '.$day.' days'));
}
$end_date_array = explode('-', $end_date);
foreach($end_date_array as &$ed_element) {
$ed_element = intval($ed_element);
$coachEndDate = null;
if (!empty($nb_days_access_after)) {
$day = intval($nb_days_access_after);
$coachEndDate = date('Y-m-d ', strtotime($end_date. ' + '.$day.' days'));
}
// Try to create the session
$session_id = SessionManager::create_session($name, $start_date_array[0], $start_date_array[1], $start_date_array[2], $end_date_array[0], $end_date_array[1], $end_date_array[2], (int)$nb_days_access_before, (int)$nb_days_access_after, (int)$nolimit, $user_id, 0, (int)$visibility);
$session_id = SessionManager::create_session(
$name,
$start_date,
$end_date,
$start_date,
$end_date,
$coachStartDate,
$coachEndDate,
$user_id,
0,
$visibility
);
if(!is_int($session_id)) {
return new WSError(301, 'Could not create the session');
} else {
@ -62,7 +90,11 @@ class WSSession extends WS
// Create the extra fields
foreach($extras_associative as $fname => $fvalue) {
SessionManager::create_session_extra_field($fname, 1, $fname);
SessionManager::update_session_extra_field_value($session_id, $fname, $fvalue);
SessionManager::update_session_extra_field_value(
$session_id,
$fname,
$fvalue
);
}
return $session_id;
}
@ -153,26 +185,55 @@ class WSSession extends WS
* @param array Array of extra fields
* @return mixed True on success, WSError otherwise
*/
protected function editSessionHelper($name, $start_date, $end_date, $nb_days_access_before, $nb_days_access_after, $nolimit, $visibility, $user_id_field_name, $user_id_value, $session_id_field_name, $session_id_value, $extras) {
protected function editSessionHelper(
$name,
$start_date,
$end_date,
$nb_days_access_before,
$nb_days_access_after,
$nolimit,
$visibility,
$user_id_field_name,
$user_id_value,
$session_id_field_name,
$session_id_value,
$extras
) {
$session_id = $this->getSessionId($session_id_field_name, $session_id_value);
if($session_id instanceof WSError) {
return $session_id;
} else {
// Verify that coach exists and get its id
$user_id = $this->getUserId($user_id_field_name, $user_id_value);
if($user_id instanceof WSError) {
if ($user_id instanceof WSError) {
return $user_id;
}
// Build the date
$start_date_array = explode('-', $start_date);
foreach($start_date_array as &$sd_element) {
$sd_element = intval($sd_element);
}
$end_date_array = explode('-', $end_date);
foreach($end_date_array as &$ed_element) {
$ed_element = intval($ed_element);
}
$result_id = SessionManager::edit_session($session_id, $name, $start_date_array[0], $start_date_array[1], $start_date_array[2], $end_date_array[0], $end_date_array[1], $end_date_array[2], (int)$nb_days_access_before, (int)$nb_days_access_after, (int)$nolimit, $user_id, 0, (int)$visibility);
$coachStartDate = null;
if (!empty($nb_days_access_before) {
$day = intval($nb_days_access_before);
$coachStartDate = date('Y-m-d ', strtotime($start_date. ' + '.$day.' days'));
}
$coachEndDate = null;
if (!empty($nb_days_access_after)) {
$day = intval($nb_days_access_after);
$coachEndDate = date('Y-m-d ', strtotime($end_date. ' + '.$day.' days'));
}
$result_id = SessionManager::edit_session(
$session_id,
$name,
$start_date,
$end_date,
$start_date,
$end_date,
$coachStartDate,
$coachEndDate,
$user_id,
0,
(int)$visibility
);
if(!is_int($result_id)) {
return new WSError(302, 'Could not edit the session');
} else {

@ -93,34 +93,6 @@ class Session
*/
private $nbrClasses;
/**
* @var \DateTime
*
* @ORM\Column(name="date_start", type="date", nullable=false)
*/
//private $dateStart;
/**
* @var \DateTime
*
* @ORM\Column(name="date_end", type="date", nullable=false)
*/
//private $dateEnd;
/**
* @var boolean
*
* @ORM\Column(name="nb_days_access_before_beginning", type="boolean", nullable=true)
*/
private $nbDaysAccessBeforeBeginning;
/**
* @var boolean
*
* @ORM\Column(name="nb_days_access_after_end", type="boolean", nullable=true)
*/
private $nbDaysAccessAfterEnd;
/**
* @var integer
*
@ -616,30 +588,6 @@ class Session
return $this->nbrClasses;
}
/**
* Set nbDaysAccessBeforeBeginning
*
* @param boolean $nbDaysAccessBeforeBeginning
* @return Session
*/
public function setNbDaysAccessBeforeBeginning($nbDaysAccessBeforeBeginning)
{
$this->nbDaysAccessBeforeBeginning = $nbDaysAccessBeforeBeginning;
return $this;
}
/**
* Get nbDaysAccessBeforeBeginning
*
* @return boolean
*/
public function getNbDaysAccessBeforeBeginning()
{
return $this->nbDaysAccessBeforeBeginning;
}
/**
* Set sessionAdminId
*

@ -27,6 +27,17 @@ class Version20150528103216 extends AbstractMigrationChamilo
$this->addSql('UPDATE session SET display_start_date = access_start_date');
$this->addSql('UPDATE session SET display_end_date = access_end_date');
// Set dates to NULL
$this->addSql('UPDATE session SET access_start_date = NULL WHERE access_start_date = "0000-00-00 00:00:00"');
$this->addSql('UPDATE session SET access_end_date = NULL WHERE access_end_date = "0000-00-00 00:00:00"');
$this->addSql('UPDATE session SET coach_access_start_date = NULL WHERE coach_access_start_date = "0000-00-00 00:00:00"');
$this->addSql('UPDATE session SET coach_access_end_date = NULL WHERE coach_access_end_date = "0000-00-00 00:00:00"');
$this->addSql('UPDATE session SET display_start_date = NULL WHERE display_start_date = "0000-00-00 00:00:00"');
$this->addSql('UPDATE session SET display_end_date = NULL WHERE display_end_date = "0000-00-00 00:00:00"');
}
/**

@ -87,10 +87,10 @@ class SessionManagerTest extends PHPUnit_Framework_TestCase
}
/**
* @covers SessionManager::generate_nice_next_session_name
* @covers SessionManager::generateNextSessionName
* @todo Implement testGenerate_nice_next_session_name().
*/
public function testGenerate_nice_next_session_name()
public function testGenerateNextSessionName()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(

Loading…
Cancel
Save