Exemple #1
0
/**
 *	This function retrieves all the agenda items of all the courses the user is subscribed to
 */
function get_myagendaitems($user_id, $courses_dbs, $month, $year)
{
    global $setting_agenda_link;
    $user_id = intval($user_id);
    $items = array();
    $my_list = array();
    // get agenda-items for every course
    foreach ($courses_dbs as $key => $array_course_info) {
        //databases of the courses
        $TABLEAGENDA = Database::get_course_table(TABLE_AGENDA);
        $TABLE_ITEMPROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY);
        $group_memberships = GroupManager::get_group_ids($array_course_info["real_id"], $user_id);
        $course_user_status = CourseManager::get_user_in_course_status($user_id, $array_course_info["code"]);
        // if the user is administrator of that course we show all the agenda items
        if ($course_user_status == '1') {
            //echo "course admin";
            $sqlquery = "SELECT DISTINCT agenda.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.ref\n\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " agenda,\n\t\t\t\t\t\t\t\t " . $TABLE_ITEMPROPERTY . " ip\n\t\t\t\t\t\t\tWHERE agenda.id = ip.ref\n\t\t\t\t\t\t\tAND MONTH(agenda.start_date)='" . $month . "'\n\t\t\t\t\t\t\tAND YEAR(agenda.start_date)='" . $year . "'\n\t\t\t\t\t\t\tAND ip.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\tAND ip.visibility='1'\n\t\t\t\t\t\t\tGROUP BY agenda.id\n\t\t\t\t\t\t\tORDER BY start_date ";
        } else {
            // if the user is not an administrator of that course
            if (is_array($group_memberships) && count($group_memberships) > 0) {
                $sqlquery = "SELECT\tagenda.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.ref\n\t\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " agenda,\n\t\t\t\t\t\t\t\t\t" . $TABLE_ITEMPROPERTY . " ip\n\t\t\t\t\t\t\t\tWHERE agenda.id = ip.ref\n\t\t\t\t\t\t\t\tAND MONTH(agenda.start_date)='" . $month . "'\n\t\t\t\t\t\t\t\tAND YEAR(agenda.start_date)='" . $year . "'\n\t\t\t\t\t\t\t\tAND ip.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\t\tAND\t( ip.to_user_id='" . $user_id . "' OR ip.to_group_id IN (0, " . implode(", ", $group_memberships) . ") )\n\t\t\t\t\t\t\t\tAND ip.visibility='1'\n\t\t\t\t\t\t\t\tORDER BY start_date ";
            } else {
                $sqlquery = "SELECT agenda.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.ref\n\t\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " agenda,\n\t\t\t\t\t\t\t\t\t" . $TABLE_ITEMPROPERTY . " ip\n\t\t\t\t\t\t\t\tWHERE agenda.id = ip.ref\n\t\t\t\t\t\t\t\tAND MONTH(agenda.start_date)='" . $month . "'\n\t\t\t\t\t\t\t\tAND YEAR(agenda.start_date)='" . $year . "'\n\t\t\t\t\t\t\t\tAND ip.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\t\tAND ( ip.to_user_id='" . $user_id . "' OR ip.to_group_id='0')\n\t\t\t\t\t\t\t\tAND ip.visibility='1'\n\t\t\t\t\t\t\t\tORDER BY start_date ";
            }
        }
        $result = Database::query($sqlquery);
        while ($item = Database::fetch_array($result, 'ASSOC')) {
            $agendaday = -1;
            if ($item['start_date'] != '0000-00-00 00:00:00') {
                $item['start_date'] = api_get_local_time($item['start_date']);
                $item['start_date_tms'] = api_strtotime($item['start_date']);
                $agendaday = date("j", $item['start_date_tms']);
            }
            if ($item['end_date'] != '0000-00-00 00:00:00') {
                $item['end_date'] = api_get_local_time($item['end_date']);
            }
            $url = api_get_path(WEB_CODE_PATH) . "calendar/agenda.php?cidReq=" . urlencode($array_course_info["code"]) . "&day={$agendaday}&month={$month}&year={$year}#{$agendaday}";
            $item['url'] = $url;
            $item['course_name'] = $array_course_info['title'];
            $item['calendar_type'] = 'course';
            $item['course_id'] = $array_course_info['course_id'];
            $my_list[$agendaday][] = $item;
        }
    }
    // sorting by hour for every day
    $agendaitems = array();
    while (list($agendaday, $tmpitems) = each($items)) {
        if (!isset($agendaitems[$agendaday])) {
            $agendaitems[$agendaday] = '';
        }
        sort($tmpitems);
        while (list($key, $val) = each($tmpitems)) {
            $agendaitems[$agendaday] .= $val;
        }
    }
    return $my_list;
}
 /**
  * Get registered users inside current course
  * @param 	int	   $attendance_id attendance id for showing attendance result field (optional)
  * @param int $groupId
  * @return 	array  users data
  */
 public function get_users_rel_course($attendance_id = 0, $groupId = null)
 {
     $current_session_id = api_get_session_id();
     $current_course_id = api_get_course_id();
     $currentCourseIntId = api_get_course_int_id();
     $studentInGroup = array();
     if (!empty($current_session_id)) {
         $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, $current_session_id, '', 'lastname');
     } else {
         $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, 0, '', 'lastname');
         if (!empty($groupId)) {
             $students = GroupManager::getStudents($groupId);
             if (!empty($students)) {
                 foreach ($students as $student) {
                     $studentInGroup[$student['user_id']] = true;
                 }
             }
         }
     }
     // get registered users inside current course
     $a_users = array();
     foreach ($a_course_users as $key => $user_data) {
         $value = array();
         $uid = $user_data['user_id'];
         $userInfo = api_get_user_info($uid);
         $status = $user_data['status'];
         if (!empty($groupId)) {
             if (!isset($studentInGroup[$uid])) {
                 continue;
             }
         }
         $user_status_in_session = null;
         $user_status_in_course = null;
         if (api_get_session_id()) {
             $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $currentCourseIntId, $current_session_id);
         } else {
             $user_status_in_course = CourseManager::get_user_in_course_status($uid, $current_course_id);
         }
         // Not taking into account DRH or COURSEMANAGER
         if ($uid <= 1 || $status == DRH || $user_status_in_course == COURSEMANAGER || $user_status_in_session == 2) {
             continue;
         }
         if (!empty($attendance_id)) {
             $user_faults = $this->get_faults_of_user($uid, $attendance_id, $groupId);
             $value['attendance_result'] = $user_faults['faults'] . '/' . $user_faults['total'] . ' (' . $user_faults['faults_porcent'] . '%)';
             $value['result_color_bar'] = $user_faults['color_bar'];
         }
         $photo = Display::img($userInfo['avatar_small'], $userInfo['complete_name'], [], false);
         $value['photo'] = $photo;
         $value['firstname'] = $user_data['firstname'];
         $value['lastname'] = $user_data['lastname'];
         $value['username'] = $user_data['username'];
         $value['user_id'] = $uid;
         //Sending only 5 items in the array instead of 60
         $a_users[$key] = $value;
     }
     return $a_users;
 }
            $row = array();
            $row[] = Display::url($url['url'], $url['url']);
            $csvContent[] = array_map('strip_tags', $row);
            $data[] = $row;
        }
        $urlInformation = Display::page_subheader(get_lang('URLList'));
        $urlInformation .= Display::return_sortable_table($header, $data, array(), array(), array('user_id' => intval($_GET['user_id'])));
    } else {
        $urlInformation = '<p>' . get_lang('NoUrlForThisUser') . '</p>';
    }
}
$message = null;
if (isset($_GET['action'])) {
    switch ($_GET['action']) {
        case 'unsubscribe':
            if (CourseManager::get_user_in_course_status($_GET['user_id'], $_GET['course_code']) == STUDENT) {
                CourseManager::unsubscribe_user($_GET['user_id'], $_GET['course_code'], $_GET['id_session']);
                $message = Display::return_message(get_lang('UserUnsubscribed'));
            } else {
                $message = Display::return_message(get_lang('CannotUnsubscribeUserFromCourse'), 'error');
            }
            break;
        case 'unsubscribeSessionCourse':
            SessionManager::removeUsersFromCourseSession(array($_GET['user_id']), $_GET['id_session'], api_get_course_info($_GET['course_code']));
            $message = Display::return_message(get_lang('UserUnsubscribed'));
            break;
        case 'export':
            Export::arrayToCsv($csvContent, 'user_information_' . $user);
            exit;
            break;
    }
    /**
     * Displays the header for the gradebook containing the navigation tree and links
     * @param Category $catobj
     * @param int $showtree '1' will show the browse tree and naviation buttons
     * @param boolean $is_course_admin
     * @param boolean $is_platform_admin
     * @param boolean Whether to show or not the link to add a new qualification
     * (we hide it in case of the course-embedded tool where we have only one
     * calification per course or session)
     * @param boolean Whether to show or not the link to add a new item inside
     * the qualification (we hide it in case of the course-embedded tool
     * where we have only one calification per course or session)
     * @return void Everything is printed on screen upon closing
     */
    static function display_header_gradebook($catobj, $showtree, $selectcat, $is_course_admin, $is_platform_admin, $simple_search_form, $show_add_qualification = true, $show_add_link = true, $certificateLinkInfo = null)
    {
        // Student.
        $status = CourseManager::get_user_in_course_status(api_get_user_id(), api_get_course_id());
        $objcat = new Category();
        $course_id = Database::get_course_by_category($selectcat);
        $message_resource = $objcat->show_message_resource_delete($course_id);
        $grade_model_id = $catobj->get_grade_model_id();
        $header = null;
        //@todo move these in a function
        $sum_categories_weight_array = array();
        if (isset($catobj) && !empty($catobj)) {
            $categories = Category::load(null, null, null, $catobj->get_id());
            if (!empty($categories)) {
                foreach ($categories as $category) {
                    $sum_categories_weight_array[$category->get_id()] = $category->get_weight();
                }
            } else {
                $sum_categories_weight_array[$catobj->get_id()] = $catobj->get_weight();
            }
        }
        if (!$is_course_admin && $status != 1 && $selectcat != 0) {
            $user_id = api_get_user_id();
            $catcourse = Category::load($catobj->get_id());
            $main_weight = $catcourse[0]->get_weight();
            $scoredisplay = ScoreDisplay::instance();
            //$categories = Category::getCategories($catcourse[0]->get_id());
            // generating the total score for a course
            /*if (count($categories) > 0) {
                  foreach ($categories as $category) {
                      $allevals = $category->get_evaluations($user_id, true);
                      $alllinks = $category->get_links($user_id, true);
                      $catEvalsLinks = array_merge($allevals, $alllinks);
                  }
              }*/
            $allevals = $catcourse[0]->get_evaluations($user_id, true);
            $alllinks = $catcourse[0]->get_links($user_id, true);
            $allEvalsLinks = array_merge($allevals, $alllinks);
            $item_value_total = 0;
            $scoreinfo = null;
            for ($count = 0; $count < count($allEvalsLinks); $count++) {
                $item = $allEvalsLinks[$count];
                $score = $item->calc_score($user_id);
                if (!empty($score)) {
                    $divide = $score[1] == 0 ? 1 : $score[1];
                    //$sub_cat_percentage = $sum_categories_weight_array[$item->get_category_id()];
                    //$item_value = $score[0] / $divide * $item->get_weight() / $sub_cat_percentage * $sub_cat_percentage / $main_weight * $main_weight;
                    $item_value = $score[0] / $divide * $item->get_weight();
                    //var_dump($score[0], $divide, $item->get_weight(), $sub_cat_percentage, $main_weight, $item_value);
                    $item_value_total += $item_value;
                }
            }
            $item_total = $main_weight;
            $total_score = array($item_value_total, $item_total);
            $scorecourse_display = $scoredisplay->display_score($total_score, SCORE_DIV_PERCENT);
            if (!$catobj->get_id() == '0' && !isset($_GET['studentoverview']) && !isset($_GET['search'])) {
                $certificateLink = null;
                if (!empty($certificateLinkInfo) && isset($certificateLinkInfo['certificate_link'])) {
                    $certificateLink .= '<span style="float:right"> ' . $certificateLinkInfo['certificate_link'] . "</span>";
                }
                $scoreinfo .= '<h4>' . get_lang('Total') . ' : ' . $scorecourse_display . $certificateLink . '</h4>';
            }
            Display::display_normal_message($scoreinfo, false);
        }
        // show navigation tree and buttons?
        if ($showtree == '1' || isset($_GET['studentoverview'])) {
            $header = '<div class="actions"><table>';
            $header .= '<tr>';
            if (!$selectcat == '0') {
                $header .= '<td><a href="' . api_get_self() . '?selectcat=' . $catobj->get_parent_id() . '">' . Display::return_icon('back.png', get_lang('BackTo') . ' ' . get_lang('RootCat'), '', ICON_SIZE_MEDIUM) . '</a></td>';
            }
            $header .= '<td>' . get_lang('CurrentCategory') . '</td>' . '<td><form name="selector"><select name="selectcat" onchange="document.selector.submit()">';
            $cats = Category::load();
            $tree = $cats[0]->get_tree();
            unset($cats);
            $line = null;
            foreach ($tree as $cat) {
                for ($i = 0; $i < $cat[2]; $i++) {
                    $line .= '&mdash;';
                }
                $line = isset($line) ? $line : '';
                if (isset($_GET['selectcat']) && $_GET['selectcat'] == $cat[0]) {
                    $header .= '<option selected value=' . $cat[0] . '>' . $line . ' ' . $cat[1] . '</option>';
                } else {
                    $header .= '<option value=' . $cat[0] . '>' . $line . ' ' . $cat[1] . '</option>';
                }
                $line = '';
            }
            $header .= '</select></form></td>';
            if (!empty($simple_search_form) && $message_resource === false) {
                $header .= '<td style="vertical-align: top;">' . $simple_search_form->toHtml() . '</td>';
            } else {
                $header .= '<td></td>';
            }
            if ($is_course_admin && $message_resource === false && $_GET['selectcat'] != 0) {
                /* $header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/view_list.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
                   if ($is_course_admin && $message_resource===false) {
                   $header .= '<td style="vertical-align: top;"><a href="gradebook_scoring_system.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() .'"><img src="../img/acces_tool.gif" alt="' . get_lang('ScoreEdit') . '" /> ' . get_lang('ScoreEdit') . '</a>';
                   } */
            } elseif (!isset($_GET['studentoverview'])) {
                if ($message_resource === false) {
                    //$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&selectcat=' . $catobj->get_id() . '"><img src="../img/view_list.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
                }
            } else {
                $header .= '<td style="vertical-align: top;"><a href="' . api_get_self() . '?' . api_get_cidreq() . '&studentoverview=&exportpdf=&selectcat=' . $catobj->get_id() . '" target="_blank">
							<img src="../img/icons/32/pdf.png" alt="' . get_lang('ExportPDF') . '" /> ' . get_lang('ExportPDF') . '</a>';
            }
            $header .= '</td></tr>';
            $header .= '</table></div>';
        }
        // for course admin & platform admin add item buttons are added to the header
        $header .= '<div class="actions">';
        $my_category = $catobj->shows_all_information_an_category($catobj->get_id());
        $user_id = api_get_user_id();
        $my_api_cidreq = api_get_cidreq();
        //$course_code = $my_category['course_code'];
        //$status_user = api_get_status_of_user_in_course ($user_id,$course_code);
        if (api_is_allowed_to_edit(null, true)) {
            if (empty($grade_model_id) || $grade_model_id == -1) {
                $header .= '<a href="gradebook_add_cat.php?' . api_get_cidreq() . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_folder.png', get_lang('AddGradebook'), array(), ICON_SIZE_MEDIUM) . '</a></td>';
            }
            if ($selectcat == '0') {
            } else {
                $my_category = $catobj->shows_all_information_an_category($catobj->get_id());
                if ($my_api_cidreq == '') {
                    $my_api_cidreq = 'cidReq=' . $my_category['course_code'];
                }
                if ($show_add_link && !$message_resource) {
                    $header .= '<td><a href="gradebook_add_eval.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '" >' . Display::return_icon('new_evaluation.png', get_lang('NewEvaluation'), '', ICON_SIZE_MEDIUM) . '</a>';
                    $cats = Category::load($selectcat);
                    if ($cats[0]->get_course_code() != null && !$message_resource) {
                        $header .= '<td><a href="gradebook_add_link.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_online_evaluation.png', get_lang('MakeLink'), '', ICON_SIZE_MEDIUM) . '</a>';
                    } else {
                        $header .= '<td><a href="gradebook_add_link_select_course.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('new_online_evaluation.png', get_lang('MakeLink'), '', ICON_SIZE_MEDIUM) . '</a>';
                    }
                }
                if (!$message_resource) {
                    $header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('stats.png', get_lang('FlatView'), '', ICON_SIZE_MEDIUM) . '</a>';
                    $header .= '<td style="vertical-align: top;"><a href="gradebook_display_certificate.php?' . $my_api_cidreq . '&amp;cat_id=' . (int) $_GET['selectcat'] . '">' . Display::return_icon('certificate_list.png', get_lang('GradebookSeeListOfStudentsCertificates'), '', ICON_SIZE_MEDIUM) . '</a>';
                    // Right icons
                    $modify_icons = '<a href="gradebook_edit_cat.php?editcat=' . $catobj->get_id() . '&amp;cidReq=' . $catobj->get_course_code() . '&id_session=' . $catobj->get_session_id() . '">' . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_MEDIUM) . '</a>';
                    $modify_icons .= '<a href="../document/document.php?curdirpath=/certificates&' . $my_api_cidreq . '&origin=gradebook&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('certificate.png', get_lang('AttachCertificate'), '', ICON_SIZE_MEDIUM) . '</a>';
                    if (empty($categories)) {
                        $modify_icons .= '<a href="gradebook_edit_all.php?id_session=' . api_get_session_id() . '&amp;' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('percentage.png', get_lang('EditAllWeights'), '', ICON_SIZE_MEDIUM) . '</a>';
                    }
                    $score_display_custom = api_get_setting('gradebook_score_display_custom');
                    if (api_get_setting('teachers_can_change_score_settings') == 'true' && $score_display_custom['my_display_custom'] == 'true') {
                        $modify_icons .= '<a href="gradebook_scoring_system.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('ranking.png', get_lang('ScoreEdit'), '', ICON_SIZE_MEDIUM) . '</a>';
                    }
                    $header .= Display::div($modify_icons, array('class' => 'right'));
                }
            }
        } elseif (isset($_GET['search'])) {
            $header .= '<b>' . get_lang('SearchResults') . ' :</b>';
        }
        $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(api_get_user_id(), api_get_course_info());
        if ($isDrhOfCourse) {
            $header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?' . $my_api_cidreq . '&selectcat=' . $catobj->get_id() . '">' . Display::return_icon('stats.png', get_lang('FlatView'), '', ICON_SIZE_MEDIUM) . '</a>';
            /*$header .= '<td style="vertical-align: top;"><a href="gradebook_display_certificate.php?' . $my_api_cidreq . '&amp;cat_id=' . (int) $_GET['selectcat'] . '">' .
              Display::return_icon('certificate_list.png', get_lang('GradebookSeeListOfStudentsCertificates'), '', ICON_SIZE_MEDIUM) . '</a>';*/
        }
        $header .= '</div>';
        echo $header;
        if (api_is_allowed_to_edit(null, true)) {
            $weight = intval($catobj->get_weight()) > 0 ? $catobj->get_weight() : 0;
            $weight = get_lang('TotalWeight') . ' : ' . $weight;
            $min_certification = intval($catobj->get_certificate_min_score() > 0) ? $catobj->get_certificate_min_score() : 0;
            $min_certification = get_lang('CertificateMinScore') . ' : ' . $min_certification;
            $edit_icon = '<a class="right_link" href="gradebook_edit_cat.php?editcat=' . $catobj->get_id() . '&amp;cidReq=' . $catobj->get_course_code() . '&id_session=' . $catobj->get_session_id() . '">' . Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL) . '</a>';
            //$msg = Display::tag('h3', $weight.' - '.$min_certification);
            $msg = Display::tag('h4', $weight . ' - ' . $min_certification . $edit_icon);
            //@todo show description
            $description = $catobj->get_description() == "" || is_null($catobj->get_description()) ? '' : '<strong>' . get_lang('GradebookDescriptionLog') . '</strong>' . ': ' . $catobj->get_description();
            Display::display_normal_message($msg, false);
            if (!empty($description)) {
                echo Display::div($description, array());
            }
        }
    }
 /**
  * Display code for one specific course a logged in user is subscribed to.
  * Shows a link to the course, what's new icons...
  *
  * $my_course['d'] - course directory
  * $my_course['i'] - course title
  * $my_course['c'] - visual course code
  * $my_course['k']  - system course code
  *
  * @param   array       Course details
  * @param   integer     Session ID
  * @param   string      CSS class to apply to course entry
  * @param   boolean     Whether the session is supposedly accessible now
  * (not in the case it has passed and is in invisible/unaccessible mode)
  * @param bool      Whether to show the document quick-loader or not
  * @return  string      The HTML to be printed for the course entry
  *
  * @version 1.0.3
  * @todo refactor into different functions for database calls | logic | display
  * @todo replace single-character $my_course['d'] indices
  * @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)
 {
     $entityManager = Database::getManager();
     $user_id = api_get_user_id();
     $course_info = api_get_course_info_by_id($course['real_id']);
     $status_course = CourseManager::get_user_in_course_status($user_id, $course_info['code']);
     $course_info['status'] = empty($session_id) ? $status_course : STUDENT;
     $course_info['id_session'] = $session_id;
     $objUser = $entityManager->find('ChamiloUserBundle:User', $user_id);
     $objCourse = $entityManager->find('ChamiloCoreBundle:Course', $course['real_id']);
     $objSession = $entityManager->find('ChamiloCoreBundle:Session', $session_id);
     /*$date_start = $sess[$course_info['id_session']]['access_start_date'];
       $date_end = $sess[$course_info['id_session']]['access_end_date'];*/
     $now = date('Y-m-d h:i:s');
     // 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'];
     if ($course_visibility == COURSE_VISIBILITY_HIDDEN) {
         return '';
     }
     $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_info['real_id']);
     // Display course entry.
     // Show a hyperlink to the course, unless the course is closed and user is not course admin.
     $session_url = '';
     $session_title = '';
     $params = array();
     $params['icon'] = Display::return_icon('blackboard_blue.png', api_htmlentities($course_info['name']), array(), ICON_SIZE_LARGE);
     // Display the "what's new" icons
     $notifications = '';
     if ($course_visibility != COURSE_VISIBILITY_CLOSED && $course_visibility != COURSE_VISIBILITY_HIDDEN) {
         $notifications .= Display::show_notification($course_info);
     }
     if ($session_accessible) {
         if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) {
             if (empty($course_info['id_session'])) {
                 $course_info['id_session'] = 0;
             }
             $sessionCourseAvailable = false;
             $sessionCourseStatus = api_get_session_visibility($session_id, $course_info['real_id']);
             if (in_array($sessionCourseStatus, array(SESSION_VISIBLE_READ_ONLY, SESSION_VISIBLE, SESSION_AVAILABLE))) {
                 $sessionCourseAvailable = true;
             }
             if ($user_in_course_status == COURSEMANAGER || $sessionCourseAvailable) {
                 $session_url = $course_info['course_public_url'] . '?id_session=' . $course_info['id_session'];
                 $session_title = '<h4><a href="' . $session_url . '">' . $course_info['name'] . '</a>' . $notifications . '</h4>';
             } else {
                 $session_title = $course_info['name'];
             }
         } else {
             $session_title = $course_info['name'] . ' ' . Display::tag('span', get_lang('CourseClosed'), array('class' => 'item_closed'));
         }
     } else {
         $session_title = $course_info['name'];
     }
     $showCustomIcon = api_get_setting('course.course_images_in_courses_list');
     $iconName = basename($course_info['course_image']);
     if ($showCustomIcon === 'true' && $iconName != 'course.png') {
         $params['icon'] = Display::img($course_info['course_image'], api_htmlentities($course_info['name']), array());
     }
     $params['link'] = $session_url;
     $params['title'] = $session_title;
     $params['right_actions'] = '';
     if ($course_visibility != COURSE_VISIBILITY_CLOSED && $course_visibility != COURSE_VISIBILITY_HIDDEN) {
         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'] .= Display::div('', array('id' => 'document_result_' . $course_info['real_id'] . '_' . $course_info['id_session'], 'class' => 'document_preview_container'));
         }
     }
     if (api_get_setting('course.display_coursecode_in_courselist') == 'true') {
         $session_title .= ' (' . $course_info['visual_code'] . ') ';
     }
     if (api_get_setting('course.display_teacher_in_courselist') == 'true') {
         $teacher_list = CourseManager::getTeacherListFromCourseToString($course_info['real_id'], self::USER_SEPARATOR, true);
         $course_coachs = self::get_coachs_from_course($course_info['id_session'], $course_info['real_id']);
         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;
         }
     }
     $session_title .= isset($course['special_course']) ? ' ' . Display::return_icon('klipper.png', get_lang('CourseAutoRegister')) : '';
     $params['title'] = $session_title;
     $params['extra'] = '';
     $html = $params;
     $session_category_id = null;
     if (1) {
         $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['access_start_date'] == '0000-00-00') {
                 //$session['dates'] = get_lang('WithoutTimeLimits');
                 $session['dates'] = '';
                 if (api_get_setting('session.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['access_start_date'] . ' ' . get_lang('To') . ' ' . $course_info['access_end_date'];
                 if (api_get_setting('session.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);
         if (api_get_setting('skill.allow_skills_tool') === 'true') {
             $skill = $entityManager->getRepository('ChamiloCoreBundle:Skill')->getLastByUser($objUser, $objCourse, $objSession);
             $output['skill'] = null;
             if ($skill) {
                 $output['skill']['name'] = $skill->getName();
                 $output['skill']['icon'] = $skill->getIcon();
             }
         }
     } else {
         $output = array($course_info['user_course_cat'], $html);
     }
     return $output;
 }
Exemple #6
0
/**
 * @param int $user_id
 *
 * @return array
 */
function api_get_user_platform_status($user_id = null)
{
    $status = array();
    $user_id = intval($user_id);
    if (empty($user_id)) {
        $user_id = api_get_user_id();
    }
    if (empty($user_id)) {
        return false;
    }
    $group_id = api_get_group_id();
    $course_id = api_get_course_int_id();
    $course_code = api_get_course_id();
    $session_id = api_get_session_id();
    //Group (in course)
    if ($group_id && $course_id) {
        $group_status = array();
        $is_subscribed = GroupManager::is_subscribed($user_id, $group_id);
        if ($is_subscribed) {
            $group_status = array('id' => $group_id, 'status' => 'student');
            $is_tutor = GroupManager::is_tutor_of_group($user_id, $group_id);
            if ($is_tutor) {
                $group_status['status'] = 'tutor';
            } else {
                $group_status['status'] = 'student';
            }
        }
        $status['group'] = $group_status;
    }
    //Session
    if ($session_id && $course_id) {
        $session_status = array('id' => $session_id, 'course_id' => $course_id);
        $session_user_status = SessionManager::get_user_status_in_course_session($user_id, $course_id, $session_id);
        switch ($session_user_status) {
            case 0:
                $session_status['status'] = 'student';
                break;
            case 2:
                $session_status['status'] = 'coach';
                break;
        }
        $is_general_coach = SessionManager::user_is_general_coach($user_id, $session_id);
        if ($is_general_coach) {
            $session_status['status'] = 'general_coach';
        }
        $status['session'] = $session_status;
    } elseif ($course_id) {
        //Course
        $course_status = array();
        if ($course_id) {
            $user_course_status = CourseManager::get_user_in_course_status($user_id, $course_code);
            if ($user_course_status) {
                $course_status = array('id' => $course_id);
                switch ($user_course_status) {
                    case 1:
                        $course_status['status'] = 'teacher';
                        break;
                    case 5:
                        $course_status['status'] = 'student';
                        //check if tutor
                        $tutor_course_status = CourseManager::get_tutor_in_course_status($user_id, $course_code);
                        if ($tutor_course_status) {
                            $course_status['status'] = 'tutor';
                        }
                        break;
                }
            }
        }
        $status['course'] = $course_status;
    }
    return $status;
}
    /**
     * Helper functions definition
     */
    public static function get_logged_user_course_html($my_course, $count)
    {
        global $nosession, $nbDigestEntries, $orderKey, $digest, $thisCourseSysCode;
        if (!$nosession) {
            global $now, $date_start, $date_end;
        }
        //initialise
        $result = '';
        // Table definitions
        $main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
        $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);

        $course_code = $my_course['code'];
        $course_visual_code = $my_course['course_info']['official_code'];
        $course_title = $my_course['course_info']['title'];

        $course_info = Database :: get_course_info($course_code);

        $course_id = $course_info['real_id'];

        $course_access_settings = CourseManager :: get_access_settings($course_code);

        $course_visibility = $course_access_settings['visibility'];

        $user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_code);
        //function logic - act on the data
        $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course_code);
        if ($is_virtual_course) {
            // If the current user is also subscribed in the real course to which this
            // virtual course is linked, we don't need to display the virtual course entry in
            // the course list - it is combined with the real course entry.
            $target_course_code = CourseManager :: get_target_of_linked_course($course_code);
            $is_subscribed_in_target_course = CourseManager :: is_user_subscribed_in_course(api_get_user_id(), $target_course_code);
            if ($is_subscribed_in_target_course) {
                return; //do not display this course entry
            }
        }

        $s_htlm_status_icon = Display::return_icon('course.gif', get_lang('Course'));

        //display course entry
        $result .= '<div id="div_'.$count.'">';
        //$result .= '<h3><img src="../img/nolines_plus.gif" id="btn_'.$count.'" onclick="toogle_course(this,\''.$course_id.'\' )">';
        $result .= $s_htlm_status_icon;

        //show a hyperlink to the course, unless the course is closed and user is not course admin
        if ($course_visibility != COURSE_VISIBILITY_HIDDEN && ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER)) {
           //$result .= '<a href="javascript:void(0)" id="ln_'.$count.'"  onclick=toogle_course(this,\''.$course_id.'\');>&nbsp;'.$course_title.'</a>';
           $result .= $course_title;
        } else {
            $result .= $course_title." "." ".get_lang('CourseClosed')."";
        }
        $result .= '</h3>';
        //$current_course_settings = CourseManager :: get_access_settings($my_course['k']);
        // display the what's new icons
        /*if ($nbDigestEntries > 0) {
            reset($digest);
            $result .= '<ul>';
            while (list ($key2) = each($digest[$thisCourseSysCode])) {
                $result .= '<li>';
                if ($orderKey[1] == 'keyTools') {
                    $result .= "<a href=\"$toolsList[$key2] [\"path\"] $thisCourseSysCode \">";
                    $result .= "$toolsList[$key2][\"name\"]</a>";
                } else {
                    $result .= api_convert_and_format_date($key2, DATE_FORMAT_LONG, date_default_timezone_get());
                }
                $result .= '</li>';
                $result .= '<ul>';
                reset($digest[$thisCourseSysCode][$key2]);
                while (list ($key3, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2])) {
                    $result .= '<li>';
                    if ($orderKey[2] == 'keyTools') {
                        $result .= "<a href=\"$toolsList[$key3] [\"path\"] $thisCourseSysCode \">";
                        $result .= "$toolsList[$key3][\"name\"]</a>";
                    } else {
                        $result .= api_convert_and_format_date($key3, DATE_FORMAT_LONG, date_default_timezone_get());
                    }
                    $result .= '<ul compact="compact">';
                    reset($digest[$thisCourseSysCode][$key2][$key3]);
                    while (list ($key4, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2][$key3])) {
                        $result .= '<li>';
                        $result .= htmlspecialchars(substr(strip_tags($dataFromCourse), 0, CONFVAL_NB_CHAR_FROM_CONTENT));
                        $result .= '</li>';
                    }
                    $result .= '</ul>';
                    $result .= '</li>';
                }
                $result .= '</ul>';
                $result .= '</li>';
            }
            $result .= '</ul>';
        }*/
        $result .= '</li>';
        $result .= '</div>';

        if (!$nosession) {
            $session = '';
            $active = false;
            if (!empty($my_course['session_name'])) {

                // Request for the name of the general coach
                $sql = 'SELECT lastname, firstname
                        FROM '.$tbl_session.' ts  LEFT JOIN '.$main_user_table.' tu
                        ON ts.id_coach = tu.user_id
                        WHERE ts.id='.(int) $my_course['id_session'].' LIMIT 1';
                $rs = Database::query($sql);
                $sessioncoach = Database::store_result($rs);
                $sessioncoach = $sessioncoach[0];

                $session = array();
                $session['title'] = $my_course['session_name'];
                if ($my_course['date_start'] == '0000-00-00') {
                    $session['dates'] = get_lang('WithoutTimeLimits');
                    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').' '.$my_course['date_start'].' '.get_lang('To').' '.$my_course['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) ? true : false;
                }
            }
            $my_course['id_session'] = isset($my_course['id_session']) ? $my_course['id_session'] : 0;
            $output = array($my_course['user_course_cat'], $result, $my_course['id_session'], $session, 'active' => $active);
        } else {
            $output = array($my_course['user_course_cat'], $result);
        }
        //$my_course['creation_date'];
        return $output;
    }
    private function build_edit_column($item)
    {
        $status = CourseManager::get_user_in_course_status(api_get_user_id(), api_get_course_id());
        $locked_status = $this->evaluation->get_locked();
        if (api_is_allowed_to_edit(null, true) && $locked_status == 0) {
            //api_is_course_admin()
            $edit_column = '<a href="' . api_get_self() . '?editres=' . $item['result_id'] . '&selecteval=' . $this->evaluation->get_id() . '&' . api_get_cidreq() . '">' . Display::return_icon('edit.png', get_lang('Modify'), '', '22') . '</a>';
            $edit_column .= ' <a href="' . api_get_self() . '?delete_mark=' . $item['result_id'] . '&selecteval=' . $this->evaluation->get_id() . '&' . api_get_cidreq() . '">' . Display::return_icon('delete.png', get_lang('Delete'), '', '22') . '</a>';
        }
        if ($this->evaluation->get_course_code() == null) {
            $edit_column .= '&nbsp;<a href="' . api_get_self() . '?resultdelete=' . $item['result_id'] . '&selecteval=' . $this->evaluation->get_id() . '" onclick="return confirmationuser();">
			<img src="../img/delete.gif" border="0" title="' . get_lang('Delete') . '" alt="" /></a>';
            $edit_column .= '&nbsp;<a href="user_stats.php?userid=' . $item['id'] . '&selecteval=' . $this->evaluation->get_id() . '&' . api_get_cidreq() . '">
		    <img src="../img/statistics.gif" width="17px" border="0" title="' . get_lang('Statistics') . '" alt="" /></a>';
        }
        // Evaluation's origin is a link
        if ($this->evaluation->get_category_id() < 0) {
            $link = LinkFactory::get_evaluation_link($this->evaluation->get_id());
            $doc_url = $link->get_view_url($item['id']);
            if ($doc_url != null) {
                $edit_column .= '&nbsp;<a href="' . $doc_url . '" target="_blank">' . '<img src="' . api_get_path(WEB_CODE_PATH) . 'img/link.gif" border="0" title="' . get_lang('OpenDocument') . '" alt="" />' . '</a>';
            }
        }
        return $edit_column;
    }
 /**
  * Helper functions definition
  */
 public static function get_logged_user_course_html($my_course, $count)
 {
     $result = '';
     // Table definitions
     $main_user_table = Database::get_main_table(TABLE_MAIN_USER);
     $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
     $course_code = $my_course['code'];
     $course_directory = $my_course['course_info']['directory'];
     $course_title = $my_course['course_info']['title'];
     $course_access_settings = CourseManager::get_access_settings($course_code);
     $course_visibility = $course_access_settings['visibility'];
     $user_in_course_status = CourseManager::get_user_in_course_status(api_get_user_id(), $course_code);
     //$valor = api_get_settings_params();
     $course_path = api_get_path(SYS_COURSE_PATH) . $course_directory;
     // course path
     if (api_get_setting('course.course_images_in_courses_list') === 'true') {
         if (file_exists($course_path . '/course-pic85x85.png')) {
             $image = $my_course['course_info']['course_image'];
             $imageCourse = Display::img($image, $course_title, array('class' => 'img-course'));
         } else {
             $imageCourse = Display::return_icon('session_default_small.png', $course_title, array('class' => 'img-course'));
         }
     } else {
         $imageCourse = Display::return_icon('course.png', get_lang('Course'), array('class' => 'img-default'));
     }
     //display course entry
     if (api_get_setting('course.course_images_in_courses_list') === 'true') {
         $result .= '<li id="course_' . $count . '" class="list-group-item" style="min-height:65px;">';
     } else {
         $result .= '<li id="course_' . $count . '" class="list-group-item" style="min-height:44px;">';
     }
     $result .= $imageCourse;
     //show a hyperlink to the course, unless the course is closed and user is not course admin
     if ($course_visibility != COURSE_VISIBILITY_HIDDEN && ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER)) {
         $result .= '<span class="title">' . $course_title . '<span>';
     } else {
         $result .= $course_title . " " . " " . get_lang('CourseClosed') . "";
     }
     $result .= '</li>';
     $session = '';
     if (!empty($my_course['session_name']) && !empty($my_course['id_session'])) {
         // Request for the name of the general coach
         $sql = 'SELECT lastname, firstname
                 FROM ' . $tbl_session . ' ts
                 LEFT JOIN ' . $main_user_table . ' tu
                 ON ts.id_coach = tu.user_id
                 WHERE ts.id=' . (int) $my_course['id_session'] . ' LIMIT 1';
         $rs = Database::query($sql);
         $sessioncoach = Database::store_result($rs);
         $sessioncoach = $sessioncoach[0];
         $session = array();
         $session['title'] = $my_course['session_name'];
         if ($my_course['access_start_date'] == '0000-00-00') {
             $session['dates'] = get_lang('WithoutTimeLimits');
             if (api_get_setting('session.show_session_coach') === 'true') {
                 $session['coach'] = get_lang('GeneralCoach') . ': ' . api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']);
             }
         } else {
             $session['dates'] = ' - ' . get_lang('From') . ' ' . $my_course['access_start_date'] . ' ' . get_lang('To') . ' ' . $my_course['access_end_date'];
             if (api_get_setting('session.show_session_coach') === 'true') {
                 $session['coach'] = get_lang('GeneralCoach') . ': ' . api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']);
             }
         }
     }
     $my_course['id_session'] = isset($my_course['id_session']) ? $my_course['id_session'] : 0;
     $output = array($my_course['user_course_cat'], $result, $my_course['id_session'], $session);
     return $output;
 }
Exemple #10
0
 /**
  * Helper functions definition
  */
 public static function get_logged_user_course_html($my_course, $count)
 {
     //initialise
     $result = '';
     $course_code = $my_course['code'];
     $course_title = $my_course['course_info']['title'];
     $course_id = $my_course['course_info']['real_id'];
     $course_access_settings = CourseManager::get_access_settings($course_code);
     $course_visibility = $course_access_settings['visibility'];
     $user_in_course_status = CourseManager::get_user_in_course_status(api_get_user_id(), $course_code);
     $s_htlm_status_icon = Display::return_icon('course.gif', get_lang('Course'));
     //display course entry
     $result .= '<div id="div_' . $count . '">';
     $result .= '<h3>' . Display::return_icon('nolines_plus.gif', null, array('id' => 'btn_' . $count, 'onclick' => 'toogle_course(this,\'' . $course_id . '\' )'));
     $result .= $s_htlm_status_icon;
     //show a hyperlink to the course, unless the course is closed and user is not course admin
     if ($course_visibility != COURSE_VISIBILITY_HIDDEN && ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER)) {
         $result .= '<a href="javascript:void(0)" id="ln_' . $count . '"  onclick=toogle_course(this,\'' . $course_id . '\');>&nbsp;' . $course_title . '</a>';
     } else {
         $result .= $course_title . " " . " " . get_lang('CourseClosed') . "";
     }
     $result .= '</h3>';
     $result .= '</li>';
     $result .= '</div>';
     return $result;
 }
Exemple #11
0
$action = $_REQUEST['action'];
//safe as only used in if()'s
$seek = array('/', '%2F', '..');
$destroy = array('', '', '');
$cidReq = str_replace($seek, $destroy, $_REQUEST["cidReq"]);
$cidReq = Security::remove_XSS($cidReq);
$user_id = api_get_user_id();
$coursePath = api_get_path(SYS_COURSE_PATH) . $cidReq . '/document';
$_course = CourseManager::get_course_information($cidReq);
if ($_course == null) {
    die("problem when fetching course information");
}
// stupid variable initialisation for old version of DocumentManager functions.
$_course['path'] = $_course['directory'];
$_course['dbName'] = $_course['db_name'];
$is_manager = CourseManager::get_user_in_course_status($user_id, $cidReq) == COURSEMANAGER;
if ($debug > 0) {
    error_log($coursePath, 0);
}
// FIXME: check security around $_REQUEST["cwd"]
$cwd = $_REQUEST['cwd'];
// treat /..
$nParent = 0;
// the number of /.. into the url
while (substr($cwd, -3, 3) == '/..') {
    // go to parent directory
    $cwd = substr($cwd, 0, -3);
    if (strlen($cwd) == 0) {
        $cwd = '/';
    }
    $nParent++;
Exemple #12
0
 /**
  * Builds the course or platform admin icons to edit an evaluation
  * @param  Evaluation $eval evaluation object
  * @param int $selectcat id of selected category
  */
 public static function build_edit_icons_eval($eval, $selectcat)
 {
     $status = CourseManager::get_user_in_course_status(api_get_user_id(), api_get_course_id());
     $is_locked = $eval->is_locked();
     $eval->get_course_code();
     $cat = new Category();
     $message_eval = $cat->show_message_resource_delete($eval->get_course_code());
     if ($message_eval === false && api_is_allowed_to_edit(null, true)) {
         $visibility_icon = $eval->is_visible() == 0 ? 'invisible' : 'visible';
         $visibility_command = $eval->is_visible() == 0 ? 'set_visible' : 'set_invisible';
         if ($is_locked && !api_is_platform_admin()) {
             $modify_icons = Display::return_icon('edit_na.png', get_lang('Modify'), '', ICON_SIZE_SMALL);
         } else {
             $modify_icons = '<a href="gradebook_edit_eval.php?editeval=' . $eval->get_id() . '&cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '">' . Display::return_icon('edit.png', get_lang('Modify'), '', ICON_SIZE_SMALL) . '</a>';
         }
         $modify_icons .= '&nbsp;<a href="' . api_get_self() . '?visibleeval=' . $eval->get_id() . '&' . $visibility_command . '=&selectcat=' . $selectcat . '&id_session=' . $eval->getSessionId() . ' ">' . Display::return_icon($visibility_icon . '.png', get_lang('Visible'), '', ICON_SIZE_SMALL) . '</a>';
         if (api_is_allowed_to_edit(null, true)) {
             $modify_icons .= '&nbsp;<a href="gradebook_showlog_eval.php?visiblelog=' . $eval->get_id() . '&selectcat=' . $selectcat . ' &cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '">' . Display::return_icon('history.png', get_lang('GradebookQualifyLog'), '', ICON_SIZE_SMALL) . '</a>';
         }
         /*
                       if ($locked_status == 0){
                       $modify_icons .= "&nbsp;<a href=\"javascript:if (confirm('".addslashes(get_lang('AreYouSureToLockedTheEvaluation'))."')) { location.href='".api_get_self().'?lockedeval=' . $eval->get_id() . '&selectcat=' . $selectcat . ' &cidReq='.$eval->get_course_code()."'; }\">".Display::return_icon('unlock.png',get_lang('LockEvaluation'), array(), ICON_SIZE_SMALL)."</a>";
                       } else {
                       if (api_is_platform_admin()){
                       $modify_icons .= "&nbsp;<a href=\"javascript:if (confirm('".addslashes(get_lang('AreYouSureToUnLockedTheEvaluation'))."')) { location.href='".api_get_self().'?lockedeval=' . $eval->get_id() . '&typelocked=&selectcat=' . $selectcat . ' &cidReq='.$eval->get_course_code()."';\">".Display::return_icon('lock.png',get_lang('UnLockEvaluation'), array(), ICON_SIZE_SMALL)."</a>";
                       } else {
                       $modify_icons .= '&nbsp;<img src="../img/locked_na.png" border="0" title="' . get_lang('TheEvaluationIsLocked') . '" alt="" />';
                       }
                       } */
         if ($is_locked && !api_is_platform_admin()) {
             $modify_icons .= '&nbsp;' . Display::return_icon('delete_na.png', get_lang('Delete'), '', ICON_SIZE_SMALL);
         } else {
             $modify_icons .= '&nbsp;<a href="' . api_get_self() . '?deleteeval=' . $eval->get_id() . '&selectcat=' . $selectcat . ' &cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '" onclick="return confirmation();">' . Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL) . '</a>';
         }
         return $modify_icons;
     }
 }
 /**
  * Unsubscribe a class from a course.
  * Only students are unsubscribed. If a user is member of 2 classes which
  * are both subscribed to the course, the user stays in the course.
  * @param int $class_id The class id
  * @param string $course_code The course code
  */
 public static function unsubscribe_from_course($class_id, $course_code)
 {
     $tbl_course_class = Database::get_main_table(TABLE_MAIN_COURSE_CLASS);
     $tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER);
     $sql = "SELECT cu.user_id,COUNT(cc.class_id) FROM {$tbl_course_class} cc, {$tbl_class_user} cu WHERE  cc.class_id = cu.class_id AND cc.course_code = '" . Database::escape_string($course_code) . "' GROUP BY cu.user_id HAVING COUNT(cc.class_id) = 1";
     $single_class_users = Database::query($sql);
     while ($single_class_user = Database::fetch_object($single_class_users)) {
         $sql = "SELECT * FROM {$tbl_class_user} WHERE class_id = '" . intval($class_id) . "' AND user_id = '" . Database::escape_string($single_class_user->user_id) . "'";
         $res = Database::query($sql);
         if (Database::num_rows($res) > 0) {
             if (CourseManager::get_user_in_course_status($single_class_user->user_id, $course_code) == STUDENT) {
                 CourseManager::unsubscribe_user($single_class_user->user_id, $course_code);
             }
         }
     }
     $sql = "DELETE FROM {$tbl_course_class} WHERE course_code = '" . Database::escape_string($course_code) . "' AND class_id = '" . Database::escape_string($class_id) . "'";
     Database::query($sql);
 }
 /**
  * Gives a list of [session_category][session_id] for the current user.
  * @todo check with 1.10
  * @param integer $user_id
  * @param boolean optional true if we want to see expired sessions, false otherwise
  * @param boolean Whether to return only a count (true) or the full result (false)
  * @param boolean Whether to order by alphabetical order (false) or reverse-alphabetical (used in history to show latest sessions on top)
  * @return array  list of statuses [session_category][session_id]
  * @todo ensure multiple access urls are managed correctly
  */
 public static function get_sessions_by_category($user_id, $is_time_over = false, $get_count = false, $reverse_order = false, $start = 0, $maxPerPage = null, $categoryFilter = null, $ignore_visibility_for_admins = false)
 {
     // Database Table Definitions
     $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
     $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
     $tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
     $tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
     if ($user_id != strval(intval($user_id))) {
         return array();
     }
     $categories = array();
     $now = api_get_utc_datetime();
     // Get the list of sessions per user
     $condition_date_start1 = null;
     $condition_date_start2 = null;
     $condition_date_end1 = null;
     $condition_date_end2 = null;
     $order = ' ORDER BY name ';
     if ($reverse_order) {
         $order = ' ORDER BY name DESC ';
     }
     if ($is_time_over) {
         $condition_date_end1 = " AND ((session.access_end_date < '{$now}' AND access_end_date IS NOT NULL AND session.access_end_date != '0000-00-00 00:00:00' AND session.access_end_date != '' ) OR moved_to <> 0) ";
         $condition_date_end2 = " AND ((session.access_end_date < '{$now}' AND access_end_date IS NOT NULL AND session.access_end_date != '0000-00-00 00:00:00' AND session.access_end_date != '') ) ";
     } else {
         if (api_is_allowed_to_create_course()) {
             //Teachers can access the session depending in the access_coach date
             //$condition_date_start1 = " AND (session.coach_access_start_date <= '$now' OR session.coach_access_start_date = '0000-00-00 00:00:00') ";
             //$condition_date_start2 = " AND (session.coach_access_start_date <= '$now' OR session.coach_access_start_date = '0000-00-00 00:00:00') ";
         } else {
             //Student can't access before the start date or after the end date
             //$condition_date_start1 = " AND (session.access_start_date <= '$now' OR session.access_start_date = '0000-00-00 00:00:00') ";
             //$condition_date_start2 = " AND (session.access_start_date <= '$now' OR session.access_start_date = '0000-00-00 00:00:00') ";
             $condition_date_end1 = " AND (session.access_end_date >= '{$now}' OR session.access_end_date = '0000-00-00 00:00:00' OR session.access_end_date IS NULL ) ";
             $condition_date_end2 = " AND (session.access_end_date >= '{$now}' OR session.access_end_date = '0000-00-00 00:00:00' OR session.access_end_date IS NULL ) ";
         }
     }
     $select = "SELECT DISTINCT " . " session.id, " . " session.name, " . " access_start_date, " . " access_end_date, " . " coach_access_start_date, " . " coach_access_end_date, " . " display_start_date, " . " display_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, " . " id_coach ";
     $select_1 = ", moved_to, " . " moved_status, " . " scu.user_id ";
     if ($get_count) {
         $select = "SELECT count(session.id) as total_rows ";
     }
     $select1 = " {$select} " . ($get_count ? '' : $select_1) . "\n                    FROM {$tbl_session} as session\n                    LEFT JOIN {$tbl_session_category} session_category\n                    ON (session_category_id = session_category.id) ";
     $sql1 = $select1 . " INNER JOIN {$tbl_session_course_user} as scu\n                ON (scu.session_id = session.id and scu.user_id = {$user_id})\n                LEFT JOIN {$tbl_session_user} su\n                ON su.session_id = session.id AND su.user_id = scu.user_id\n                WHERE scu.user_id = {$user_id} {$condition_date_end1}";
     // This is bad because we asumme the user is a coach which is not the case
     // Select specific to session coaches
     $select2 = "\n            {$select} FROM {$tbl_session} as session\n            LEFT JOIN {$tbl_session_category} session_category\n            ON (session_category_id = session_category.id)\n        ";
     $sql2 = $select2 . " WHERE session.id_coach = {$user_id} {$condition_date_end2} ";
     if (isset($categoryFilter) && $categoryFilter != '') {
         switch ($categoryFilter) {
             case 'no_category':
                 $sql1 .= "AND (session_category_id = 0 OR session_category_id IS NULL)";
                 $sql2 .= "AND (session_category_id = 0 OR session_category_id IS NULL)";
                 break;
             case 'with_category':
                 $sql1 .= "AND (session_category_id <> 0 AND session_category_id IS NOT NULL) ";
                 $sql2 .= "AND (session_category_id <> 0 AND session_category_id IS NOT NULL)";
                 break;
             default:
                 if (!empty($categoryFilter) && is_numeric($categoryFilter)) {
                     $categoryFilter = intval($categoryFilter);
                     $sql1 .= "AND session_category_id = {$categoryFilter}";
                     $sql2 .= "AND session_category_id = {$categoryFilter}";
                 }
                 break;
         }
     }
     $sql3 = null;
     if ($get_count) {
         //$sql3 = $sql2;
         $sql3 = $sql1;
     } else {
         $sql1 .= $order;
         $sql2 .= $order;
     }
     if (isset($start) && isset($maxPerPage)) {
         $start = intval($start);
         $maxPerPage = intval($maxPerPage);
         $limitCondition = " LIMIT {$start}, {$maxPerPage}";
         $sql1 .= $limitCondition;
         $sql2 .= $limitCondition;
     }
     $join = array();
     $ordered_join = array();
     $ids = array();
     if ($get_count) {
         $result3 = Database::query($sql3);
         $row = Database::fetch_array($result3);
         return $row['total_rows'];
     } else {
         $result1 = Database::query($sql1);
         $result2 = Database::query($sql2);
     }
     if (Database::num_rows($result2) > 0) {
         // First take $row2, as it contains less data and this data is enough
         while ($row2 = Database::fetch_array($result2)) {
             $join[] = $row2;
             $ordered_join[] = $row2;
             $ids[] = $row2['id'];
         }
     }
     if (Database::num_rows($result1) > 0) {
         // Now add the diff with $row1, ordering elements as planned by query
         $i = 0;
         while ($row1 = Database::fetch_array($result1)) {
             if (!in_array($row1['id'], $ids)) {
                 if ($reverse_order) {
                     while (isset($join[$i]) && strcmp($row1['session_category_name'], $join[$i]['session_category_name']) <= 0) {
                         $ordered_join[] = $join[$i];
                         $i++;
                     }
                 } else {
                     while (isset($join[$i]) && strcmp($row1['session_category_name'], $join[$i]['session_category_name']) > 0) {
                         $ordered_join[] = $join[$i];
                         $i++;
                     }
                     if (isset($join[$i]) && strcmp($row1['session_category_name'], $join[$i]['session_category_name']) === 0) {
                         while (isset($join[$i]) && isset($row1['short_name']) && strcmp($row1['short_name'], $join[$i]['short_name']) > 0) {
                             $ordered_join[] = $join[$i];
                             $i++;
                         }
                     }
                 }
                 $ordered_join[] = $row1;
                 $join[] = $row1;
             }
         }
     }
     if (count($ordered_join) == 0) {
         $ordered_join = $join;
     }
     if (count($ordered_join) > 0) {
         foreach ($ordered_join as $row) {
             if ($get_count) {
                 return $row['total_rows'];
             }
             $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'];
             $session_id = $row['id'];
             // The only usage of $session_info is to call
             // api_get_session_date_validation, which only needs id and
             // dates from the session itself, so really no need to query
             // the session table again
             $session_info = $row;
             // Checking session visibility
             $visibility = api_get_session_visibility($session_id, null, $ignore_visibility_for_admins);
             switch ($visibility) {
                 case SESSION_VISIBLE_READ_ONLY:
                 case SESSION_VISIBLE:
                 case SESSION_AVAILABLE:
                     break;
                 case SESSION_INVISIBLE:
                     continue 2;
             }
             if ($is_time_over == false) {
                 $date_validation = api_get_session_date_validation($session_info, null, false, false);
                 if (!$date_validation) {
                     continue;
                 }
             }
             $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::parseSessionDates($row);
             $categories[$row['session_category_id']]['sessions'][$row['id']]['date_message'] = $date_message;
             $courses = UserManager::get_courses_list_by_session($user_id, $row['id']);
             $course_list = array();
             foreach ($courses as $course) {
                 // Checking course session visibility
                 $visibility = api_get_session_visibility($session_id, $course['real_id']);
                 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'] = isset($row['moved_to']) ? $row['moved_to'] : null;
             $categories[$row['session_category_id']]['sessions'][$row['id']]['moved_status'] = isset($row['moved_status']) ? $row['moved_status'] : null;
         }
     }
     return $categories;
 }
printf('<courseobject>');
foreach ($_SESSION['_course'] as $key => $val) {
    printf('<%s>%s</%s>', $key, api_utf8_encode($val), $key);
}
printf('</courseobject>');
printf('<userobject>');
foreach ($_SESSION['_user'] as $key => $val) {
    if ($key != "auth_source") {
        if (($key == "lastName" || $key == "firstName") && strlen($val) == 0) {
            $val = get_lang('Unknown');
        }
        printf('<%s>%s</%s>', $key, api_utf8_encode($val), $key);
    }
}
printf('<sid>%s</sid>', session_id());
$isadmin = CourseManager::get_user_in_course_status($_SESSION['_user']['user_id'], $_SESSION['_course']['sysCode']) == COURSEMANAGER || api_is_platform_admin() || api_is_course_tutor() || api_is_course_admin() || api_is_course_coach() ? "true" : "false";
printf('<key>%s</key>', md5($confkey . $challenge));
printf('<challenge>%s</challenge>', $challenge);
printf('<isUploadAllowed>%s</isUploadAllowed>', $isadmin);
printf('<canStartModerator>%s</canStartModerator>', $isadmin == 'true' || $_SESSION["roomType"] == "conference" ? 'true' : 'false');
printf('<mustStartModerator>%s</mustStartModerator>', $isadmin == 'true' || $_SESSION["roomType"] == "conference" ? 'true' : 'false');
printf('</userobject>');
printf('<config>');
printf('<host>' . api_get_setting('service_visio', 'visio_host') . '</host>');
printf('<port>' . api_get_setting('service_visio', 'visio_port') . '</port>');
printf('</config>');
$path = preg_replace('/^([^:]*:\\/\\/)/', '', api_get_path(WEB_PATH));
$path = str_replace('/', '_', $path);
printf('<roomConfig>');
printf('<portal>%s</portal>', $path);
printf('<roomType>%s</roomType>', $_SESSION['roomType']);
Exemple #16
0
     printf("</folders><files>");
     if (is_array($files)) {
         foreach ($files as $i) {
             $extension = strrpos($i['path'], '.') > 0 ? substr($i['path'], strrpos($i['path'], '.'), 10) : '';
             if ($i["filetype"] == "file" && in_array(strtolower($extension), $image_extension)) {
                 printf('<file><path>%s</path><title>%s</title><canDelete>%s</canDelete></file>', $i['path'], $i['title'], $can_delete ? 'true' : 'false');
             }
         }
     }
     printf("</files><ppts>");
     printf("</ppts>");
     printf("</fileList></dokeosobject>");
 } else {
     if ($subaction == "delete") {
         /*==== PERMISSION ====*/
         $permissions = CourseManager::get_user_in_course_status($user_id, $cidReq);
         if ($permissions != COURSEMANAGER) {
             if ($debug > 0) {
                 error_log("Upload from videoconf not allowed !!!", 0);
             }
             die;
             // this user is not allowed to add upload documents
         }
         /*==== DELETE ====*/
         $path = str_replace('../', '', $_REQUEST["path"]);
         if (substr($path, 0, strlen(VIDEOCONF_UPLOAD_PATH)) != VIDEOCONF_UPLOAD_PATH) {
             if ($debug > 0) {
                 error_log("Delete from videoconf for " + $path + " NOT ALLOWED", 0);
             }
             die;
         }
 /**
  * Get list of groups for current course.
  * @param int $category The id of the category from which the groups are
  * requested
  * @param string $course_code Default is current course
  * @return array An array with all information about the groups.
  */
 public static function get_group_list($category = null, $course_code = null)
 {
     $my_user_id = api_get_user_id();
     $course_info = api_get_course_info($course_code);
     $course_id = $course_info['real_id'];
     $table_group_user = Database::get_course_table(TABLE_GROUP_USER);
     $table_group = Database::get_course_table(TABLE_GROUP);
     //condition for the session
     $session_id = api_get_session_id();
     $my_status_of_user_in_course = CourseManager::get_user_in_course_status($my_user_id, $course_info['code']);
     $is_student_in_session = false;
     if (is_null($my_status_of_user_in_course) || $my_status_of_user_in_course == '') {
         if ($session_id > 0) {
             $is_student_in_session = true;
         }
     }
     // COURSEMANAGER or STUDENT
     if ($my_status_of_user_in_course == COURSEMANAGER || api_is_allowed_to_edit(null, true) || api_is_drh()) {
         $can_see_groups = 1;
         $sql = "SELECT g.iid,\n                        g.name,\n                        g.description,\n                        g.category_id,\n                        g.max_student maximum_number_of_members,\n                        g.secret_directory,\n                        g.self_registration_allowed,\n                        g.self_unregistration_allowed,\n                        g.session_id\n                    FROM {$table_group} g ";
     } elseif ($my_status_of_user_in_course == STUDENT || $is_student_in_session === true || $_SESSION['studentview'] == 'studentview') {
         $can_see_groups = 1;
         $sql = "SELECT g.iid,\n                        g.name,\n                        g.description,\n                        g.category_id,\n                        g.max_student maximum_number_of_members,\n                        g.secret_directory,\n                        g.self_registration_allowed,\n                        g.self_unregistration_allowed,\n                        g.session_id,\n                        ug.user_id is_member\n                    FROM {$table_group} g\n                    LEFT JOIN {$table_group_user} ug\n                    ON (ug.group_id = g.iid AND ug.user_id = '" . api_get_user_id() . "' AND ug.c_id = {$course_id} AND g.c_id = {$course_id})";
     }
     $sql .= " WHERE 1=1 ";
     if ($category != null) {
         $sql .= "  AND g.category_id = '" . Database::escape_string($category) . "' ";
         $session_condition = api_get_session_condition($session_id);
         if (!empty($session_condition)) {
             $sql .= $session_condition;
         }
     } else {
         $session_condition = api_get_session_condition($session_id, true);
     }
     $sql .= " AND g.c_id = {$course_id} ";
     if (!empty($session_condition)) {
         $sql .= $session_condition;
     }
     $sql .= " GROUP BY g.iid ORDER BY UPPER(g.name)";
     if ($can_see_groups == 1) {
         $groupList = Database::query($sql);
     } else {
         return array();
     }
     $groups = array();
     while ($thisGroup = Database::fetch_array($groupList)) {
         $thisGroup['id'] = $thisGroup['iid'];
         $thisGroup['is_member'] = self::is_subscribed($my_user_id, $thisGroup['id']);
         $thisGroup['number_of_members'] = count(self::get_subscribed_users($thisGroup['id']));
         if ($thisGroup['session_id'] != 0) {
             $sql = 'SELECT name FROM ' . Database::get_main_table(TABLE_MAIN_SESSION) . '
                     WHERE id=' . $thisGroup['session_id'];
             $rs_session = Database::query($sql);
             if (Database::num_rows($rs_session) > 0) {
                 $thisGroup['session_name'] = Database::result($rs_session, 0, 0);
             }
         }
         $groups[] = $thisGroup;
     }
     return $groups;
 }
 /**
  * Builds the course or platform admin icons to edit an evaluation
  * @param  Evaluation $eval evaluation object
  * @param int $selectcat id of selected category
  */
 public static function build_edit_icons_eval($eval, $selectcat)
 {
     $status = CourseManager::get_user_in_course_status(api_get_user_id(), api_get_course_id());
     $is_locked = $eval->is_locked();
     $eval->get_course_code();
     $cat = new Category();
     $message_eval = $cat->show_message_resource_delete($eval->get_course_code());
     if ($message_eval === false && api_is_allowed_to_edit(null, true)) {
         $visibility_icon = $eval->is_visible() == 0 ? 'invisible' : 'visible';
         $visibility_command = $eval->is_visible() == 0 ? 'set_visible' : 'set_invisible';
         if ($is_locked && !api_is_platform_admin()) {
             $modify_icons = Display::return_icon('edit_na.png', get_lang('Modify'), '', ICON_SIZE_SMALL);
         } else {
             $modify_icons = '<a href="gradebook_edit_eval.php?editeval=' . $eval->get_id() . '&cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '">' . Display::return_icon('edit.png', get_lang('Modify'), '', ICON_SIZE_SMALL) . '</a>';
         }
         $modify_icons .= '&nbsp;<a href="' . api_get_self() . '?visibleeval=' . $eval->get_id() . '&' . $visibility_command . '=&selectcat=' . $selectcat . '&id_session=' . $eval->getSessionId() . ' ">' . Display::return_icon($visibility_icon . '.png', get_lang('Visible'), '', ICON_SIZE_SMALL) . '</a>';
         if (api_is_allowed_to_edit(null, true)) {
             $modify_icons .= '&nbsp;<a href="gradebook_showlog_eval.php?visiblelog=' . $eval->get_id() . '&selectcat=' . $selectcat . ' &cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '">' . Display::return_icon('history.png', get_lang('GradebookQualifyLog'), '', ICON_SIZE_SMALL) . '</a>';
         }
         if ($is_locked && !api_is_platform_admin()) {
             $modify_icons .= '&nbsp;' . Display::return_icon('delete_na.png', get_lang('Delete'), '', ICON_SIZE_SMALL);
         } else {
             $modify_icons .= '&nbsp;<a href="' . api_get_self() . '?deleteeval=' . $eval->get_id() . '&selectcat=' . $selectcat . ' &cidReq=' . $eval->get_course_code() . '&id_session=' . $eval->getSessionId() . '" onclick="return confirmation();">' . Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL) . '</a>';
         }
         return $modify_icons;
     }
 }
 /**
  * Get registered users inside current course
  * @param 	int	   attendance id for showing attendance result field (optional)
  * @return 	array  users data
  */
 public function get_users_rel_course($attendance_id = 0)
 {
     $current_course_id = $this->get_course_id();
     $courseInfo = api_get_course_info($current_course_id);
     $courseId = $courseInfo['real_id'];
     $current_session_id = $this->get_session_id();
     if (!empty($current_session_id)) {
         $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, $current_session_id, '', 'lastname');
     } else {
         $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, 0, '', 'lastname');
     }
     // get registered users inside current course
     $a_users = array();
     foreach ($a_course_users as $key => $user_data) {
         $value = array();
         $uid = $user_data['user_id'];
         $status = $user_data['status'];
         $user_status_in_session = null;
         $user_status_in_course = null;
         if ($current_session_id) {
             $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $courseId, $current_session_id);
         } else {
             $user_status_in_course = CourseManager::get_user_in_course_status($uid, $courseId);
         }
         //Not taking into account DRH or COURSEMANAGER
         if ($uid <= 1 || $status == DRH || $user_status_in_course == COURSEMANAGER || $user_status_in_session == 2) {
             continue;
         }
         if (!empty($attendance_id)) {
             $user_faults = $this->get_faults_of_user($uid, $attendance_id);
             $value['attendance_result'] = $user_faults['faults'] . '/' . $user_faults['total'] . ' (' . $user_faults['faults_porcent'] . '%)';
             $value['result_color_bar'] = $user_faults['color_bar'];
         }
         // user's picture
         $image_path = UserManager::get_user_picture_path_by_id($uid, 'web', false);
         $user_profile = UserManager::get_picture_user($uid, $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
         if (!empty($image_path['file'])) {
             $photo = '<center><a class="thickbox" href="' . $image_path['dir'] . $image_path['file'] . '"  ><img src="' . $user_profile['file'] . '" ' . $user_profile['style'] . ' alt="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '"  title="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" /></a></center>';
         } else {
             $photo = '<center><img src="' . $user_profile['file'] . '" ' . $user_profile['style'] . ' alt="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '"  title="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" /></center>';
         }
         $value['photo'] = $photo;
         $value['firstname'] = $user_data['firstname'];
         $value['lastname'] = $user_data['lastname'];
         $value['username'] = $user_data['username'];
         $value['user_id'] = $uid;
         //Sending only 5 items in the array instead of 60
         $a_users[$key] = $value;
     }
     return $a_users;
 }
/**
 * Return agenda items of the week
 * @deprecated
 */
function get_week_agendaitems($courses_dbs, $month, $year, $week = '')
{
    global $setting_agenda_link;
    $TABLEAGENDA = Database::get_course_table(TABLE_AGENDA);
    $TABLE_ITEMPROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY);
    $items = array();
    // The default value of the week
    if ($week == '') {
        $week_number = date("W", time());
    } else {
        $week_number = $week;
    }
    $start_end = calculate_start_end_of_week($week_number, $year);
    $start_filter = $start_end['start']['year'] . "-" . $start_end['start']['month'] . "-" . $start_end['start']['day'] . " 00:00:00";
    $start_filter = api_get_utc_datetime($start_filter);
    $end_filter = $start_end['end']['year'] . "-" . $start_end['end']['month'] . "-" . $start_end['end']['day'] . " 23:59:59";
    $end_filter = api_get_utc_datetime($end_filter);
    // get agenda-items for every course
    foreach ($courses_dbs as $key => $array_course_info) {
        //databases of the courses
        $TABLEAGENDA = Database::get_course_table(TABLE_AGENDA);
        $TABLE_ITEMPROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY);
        // getting all the groups of the user for the current course
        $group_memberships = GroupManager::get_group_ids($array_course_info["real_id"], api_get_user_id());
        $user_course_status = CourseManager::get_user_in_course_status(api_get_user_id(), $array_course_info["code"]);
        // if the user is administrator of that course we show all the agenda items
        if ($user_course_status == '1') {
            //echo "course admin";
            $sqlquery = "SELECT\n\t\t\t\t\t\t\tDISTINCT a.*, i.*\n\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " a,\n\t\t\t\t\t\t\t\t" . $TABLE_ITEMPROPERTY . " i\n\t\t\t\t\t\t\tWHERE a.id = i.ref\n\t\t\t\t\t\t\tAND a.start_date>='" . $start_filter . "' AND a.start_date<='" . $end_filter . "'\n\t\t\t\t\t\t\tAND i.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\tAND i.visibility='1'\n\t\t\t\t\t\t\tGROUP BY a.id\n\t\t\t\t\t\t\tORDER BY a.start_date";
        } else {
            //echo "GEEN course admin";
            if (is_array($group_memberships) && count($group_memberships) > 0) {
                $sqlquery = "SELECT\n\t\t\t\t\t\t\t\t\ta.*, i.*\n\t\t\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " a,\n\t\t\t\t\t\t\t\t\t\t " . $TABLE_ITEMPROPERTY . " i\n\t\t\t\t\t\t\t\t\tWHERE a.id = i.ref\n\t\t\t\t\t\t\t\t\tAND a.start_date>='" . $start_filter . "' AND a.start_date<='" . $end_filter . "'\n\t\t\t\t\t\t\t\t\tAND i.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\t\t\tAND\t( i.to_user_id='" . api_get_user_id() . "' OR i.to_group_id IN (0, " . implode(", ", $group_memberships) . ") )\n\t\t\t\t\t\t\t\t\tAND i.visibility='1'\n\t\t\t\t\t\t\t\t\tORDER BY a.start_date";
            } else {
                $sqlquery = "SELECT\n\t\t\t\t\t\t\t\t\ta.*, i.*\n\t\t\t\t\t\t\t\t\tFROM " . $TABLEAGENDA . " a,\n\t\t\t\t\t\t\t\t\t\t " . $TABLE_ITEMPROPERTY . " i\n\t\t\t\t\t\t\t\t\tWHERE a.id = i.ref\n\t\t\t\t\t\t\t\t\tAND a.start_date>='" . $start_filter . "' AND a.start_date<='" . $end_filter . "'\n\t\t\t\t\t\t\t\t\tAND i.tool='" . TOOL_CALENDAR_EVENT . "'\n\t\t\t\t\t\t\t\t\tAND ( i.to_user_id='" . api_get_user_id() . "' OR i.to_group_id='0')\n\t\t\t\t\t\t\t\t\tAND i.visibility='1'\n\t\t\t\t\t\t\t\t\tORDER BY a.start_date";
            }
        }
        $result = Database::query($sqlquery);
        while ($item = Database::fetch_array($result)) {
            $agendaday_string = api_convert_and_format_date($item['start_date'], "%d", date_default_timezone_get());
            $agendaday = intval($agendaday_string);
            $start_time = api_convert_and_format_date($item['start_date'], TIME_NO_SEC_FORMAT);
            $end_time = api_convert_and_format_date($item['end_date'], DATE_TIME_FORMAT_LONG);
            if ($setting_agenda_link == 'coursecode') {
                $title = $array_course_info['title'];
                $agenda_link = cut($title, 14, true);
            } else {
                $agenda_link = Display::return_icon('course_home.png', '&nbsp;', '', ICON_SIZE_SMALL);
            }
            $URL = api_get_path(WEB_CODE_PATH) . "calendar/agenda.php?cidReq=" . urlencode($array_course_info["code"]) . "&day={$agendaday}&month={$month}&year={$year}#{$agendaday}";
            // RH  //Patrick Cool: to highlight the relevant agenda item
            //Display the events in agenda
            $content = "<i>{$start_time} - {$end_time}</i> <a href=\"{$URL}\" title=\"" . $array_course_info["title"] . "\"> <br />" . $agenda_link . "</a>";
            $content .= "<div>" . $item['title'] . "</div><br>";
            $items[$agendaday][$item['start_date']] .= $content;
        }
    }
    $agendaitems = array();
    // sorting by hour for every day
    while (list($agendaday, $tmpitems) = each($items)) {
        sort($tmpitems);
        while (list($key, $val) = each($tmpitems)) {
            $agendaitems[$agendaday] .= $val;
        }
    }
    return $agendaitems;
}