diff --git a/main/attendance/attendance_calendar.php b/main/attendance/attendance_calendar.php index d50f0e1965..6e864bc00b 100755 --- a/main/attendance/attendance_calendar.php +++ b/main/attendance/attendance_calendar.php @@ -20,9 +20,11 @@ if (!$is_locked_attendance || api_is_platform_admin()) { echo ''.Display::return_icon('back.png',get_lang('AttendanceCalendar'),'',ICON_SIZE_MEDIUM).''; } else { echo ''.Display::return_icon('back.png',get_lang('AttendanceSheet'),'',ICON_SIZE_MEDIUM).''; - - echo ''.Display::return_icon('add.png',get_lang('AddDateAndTime'),'',ICON_SIZE_MEDIUM).''; - echo ''.Display::return_icon('clean.png',get_lang('CleanCalendar'),'',ICON_SIZE_MEDIUM).''; + if (api_is_allowed_to_edit()) { + echo ''.Display::return_icon('add.png',get_lang('AddDateAndTime'),'',ICON_SIZE_MEDIUM).''; + echo ''. + Display::return_icon('clean.png',get_lang('CleanCalendar'),'',ICON_SIZE_MEDIUM).''; + } } echo ''; } @@ -48,7 +50,12 @@ if ($error_checkdate) { if (isset($action) && $action == 'calendar_add') { // calendar add form - $form = new FormValidator('attendance_calendar_add','POST','index.php?action=calendar_add&attendance_id='.$attendance_id.$param_gradebook.'&'.api_get_cidreq(),''); + $form = new FormValidator( + 'attendance_calendar_add', + 'POST', + 'index.php?action=calendar_add&attendance_id=' . $attendance_id . $param_gradebook . '&' . api_get_cidreq(), + '' + ); $form->addElement('header', get_lang('AddADateTime')); $form->addElement('date_time_picker', 'date_time'); $defaults['date_time'] = date('Y-m-d H:i', api_strtotime(api_get_local_time())); @@ -93,10 +100,17 @@ if (isset($action) && $action == 'calendar_add') { if (!empty($attendance_calendar)) { foreach ($attendance_calendar as $calendar) { echo '
'; - if ((isset($action) && $action == 'calendar_edit') && (isset($calendar_id) && $calendar_id == $calendar['id'])) { + if ((isset($action) && $action == 'calendar_edit') && + (isset($calendar_id) && $calendar_id == $calendar['id']) + ) { // calendar edit form echo '
'; - $form = new FormValidator('attendance_calendar_edit','POST','index.php?action=calendar_edit&attendance_id='.$attendance_id.'&calendar_id='.$calendar_id.'&'.api_get_cidreq().$param_gradebook,''); + $form = new FormValidator( + 'attendance_calendar_edit', + 'POST', + 'index.php?action=calendar_edit&attendance_id=' . $attendance_id . '&calendar_id=' . $calendar_id . '&' . api_get_cidreq() . $param_gradebook, + '' + ); $form->addElement('date_time_picker', 'date_time', '', array('form_name'=>'attendance_calendar_edit'), 5); $defaults['date_time'] = $calendar['date_time']; $form->addElement('style_submit_button', null, get_lang('Save'), 'class="save"'); @@ -107,10 +121,15 @@ if (isset($action) && $action == 'calendar_add') { } else { echo Display::return_icon('lp_calendar_event.png', get_lang('DateTime')).' '.substr($calendar['date_time'], 0, strlen($calendar['date_time'])- 3) .' '; if (!$is_locked_attendance || api_is_platform_admin()) { - echo ''; - echo ''.Display::return_icon('edit.png', get_lang('Edit'), array('style'=>'vertical-align:middle'), ICON_SIZE_SMALL).' '; - echo ''.Display::return_icon('delete.png', get_lang('Delete'), array('style'=>'vertical-align:middle'), ICON_SIZE_SMALL).''; - echo ''; + if (api_is_allowed_to_edit()) { + echo ''; + echo ''. + Display::return_icon('edit.png', get_lang('Edit'), array('style'=>'vertical-align:middle'), ICON_SIZE_SMALL).' '; + echo ''. + Display::return_icon('delete.png', get_lang('Delete'), array('style'=>'vertical-align:middle'), ICON_SIZE_SMALL).''; + echo ''; + } + } } echo '
'; diff --git a/main/attendance/attendance_controller.php b/main/attendance/attendance_controller.php index 921c160e82..6d35d5efec 100755 --- a/main/attendance/attendance_controller.php +++ b/main/attendance/attendance_controller.php @@ -212,10 +212,12 @@ class AttendanceController } /** - * It's used for controlling attendace sheet (list, add), + * It's used for controlling attendance sheet (list, add), * render to attendance_sheet view - * @param string action - * @param int attendance id + * @param string $action + * @param int $attendance_id + * @param int $student_id + * @param bool $edit */ public function attendance_sheet($action, $attendance_id, $student_id = 0, $edit = true) { @@ -230,8 +232,14 @@ class AttendanceController $filter_type = $_REQUEST['filter']; } + $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( + api_get_user_id(), + api_get_course_info() + ); + if ($edit == true) { - if (api_is_allowed_to_edit(null, true)) { + + if (api_is_allowed_to_edit(null, true) || $isDrhOfCourse) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); } } else { @@ -242,11 +250,12 @@ class AttendanceController } if (api_is_allowed_to_edit(null, true) || - api_is_coach(api_get_session_id(), api_get_course_id()) + api_is_coach(api_get_session_id(), api_get_course_id()) || + $isDrhOfCourse ) { - $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); + $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); } else { - $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, $user_id); + $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id, $user_id); } $data['faults'] = $attendance->get_faults_of_user($user_id, $attendance_id); @@ -257,7 +266,6 @@ class AttendanceController $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { - if (isset($_POST['hidden_input'])) { foreach ($_POST['hidden_input'] as $cal_id) { $users_present = array(); diff --git a/main/attendance/attendance_list.php b/main/attendance/attendance_list.php index 0039dc4c74..f871895e89 100755 --- a/main/attendance/attendance_list.php +++ b/main/attendance/attendance_list.php @@ -25,7 +25,12 @@ if ($attendance->get_number_of_attendances() == 0) { $attendance->set_description(get_lang('Attendances')); $attendance->attendance_add(); } -$table = new SortableTable('attendance_list', array('Attendance', 'get_number_of_attendances'), array('Attendance', 'get_attendance_data'), $default_column); +$table = new SortableTable( + 'attendance_list', + array('Attendance', 'get_number_of_attendances'), + array('Attendance', 'get_attendance_data'), + $default_column +); $table->set_additional_parameters($parameters); $table->set_header(0, '', false, array('style'=>'width:20px;')); $table->set_header(1, get_lang('Name'), true ); diff --git a/main/attendance/attendance_sheet.php b/main/attendance/attendance_sheet.php index 9aab5309f1..d74b70ae5b 100755 --- a/main/attendance/attendance_sheet.php +++ b/main/attendance/attendance_sheet.php @@ -8,23 +8,36 @@ * @package chamilo.attendance */ -// protect a course script +// Protect a course script api_protect_course_script(true); +$isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( + api_get_user_id(), + api_get_course_info() +); + if (api_is_allowed_to_edit(null, true) || - api_is_coach(api_get_session_id(), api_get_course_id()) + api_is_coach(api_get_session_id(), api_get_course_id()) || + $isDrhOfCourse ) { $param_gradebook = ''; if (isset($_SESSION['gradebook'])) { $param_gradebook = '&gradebook='.$_SESSION['gradebook']; } - $form = new FormValidator('filter', 'post', 'index.php?action=attendance_sheet_list&'.api_get_cidreq().$param_gradebook.'&attendance_id='.$attendance_id, null, array('class' => 'form-search pull-left')); + $form = new FormValidator( + 'filter', + 'post', + 'index.php?action=attendance_sheet_list&' . api_get_cidreq() . $param_gradebook . '&attendance_id=' . $attendance_id, + null, + array('class' => 'form-search pull-left') + ); + $values = array( - 'all' => get_lang('All'), - 'today' => get_lang('Today'), - 'all_done' => get_lang('AllDone'), - 'all_not_done' => get_lang('AllNotDone') + 'all' => get_lang('All'), + 'today' => get_lang('Today'), + 'all_done' => get_lang('AllDone'), + 'all_not_done' => get_lang('AllNotDone') ); $today = api_convert_and_format_date(null, DATE_FORMAT_SHORT); $exists_attendance_today = false; diff --git a/main/inc/lib/attendance.lib.php b/main/inc/lib/attendance.lib.php index 9f4f2da407..4eb5cef78a 100755 --- a/main/inc/lib/attendance.lib.php +++ b/main/inc/lib/attendance.lib.php @@ -142,7 +142,7 @@ class Attendance while ($attendance = Database::fetch_row($res)) { $student_param = ''; - if (api_is_drh() && ($_GET['student_id'])) { + if (api_is_drh() && $_GET['student_id']) { $student_param = '&student_id='.Security::remove_XSS($_GET['student_id']); } @@ -152,11 +152,17 @@ class Attendance $session_star = api_get_session_image(api_get_session_id(), $user_info['status']); } if ($attendance[5] == 1) { - if (api_is_allowed_to_edit(null, true)) { - //Link to edit + + $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( + api_get_user_id(), + api_get_course_info() + ); + + if (api_is_allowed_to_edit(null, true) || $isDrhOfCourse) { + // Link to edit $attendance[1] = ''.$attendance[1].''.$session_star; } else { - //Link to view + // Link to view $attendance[1] = ''.$attendance[1].''.$session_star; }