/** * Shows the right menu of the Social Network tool * * @param string $show highlight link possible values: * group_add, * home, * messages, * messages_inbox, * messages_compose , * messages_outbox, * invitations, * shared_profile, * friends, * groups search * @param int $group_id group id * @param int $user_id user id * @param bool $show_full_profile show profile or not (show or hide the user image/information) * @param bool $show_delete_account_button * */ public static function show_social_menu($show = '', $group_id = 0, $user_id = 0, $show_full_profile = false, $show_delete_account_button = false) { if (empty($user_id)) { $user_id = api_get_user_id(); } $usergroup = new UserGroup(); $user_info = api_get_user_info($user_id, true); $current_user_id = api_get_user_id(); $current_user_info = api_get_user_info($current_user_id, true); if ($current_user_id == $user_id) { $user_friend_relation = null; } else { $user_friend_relation = SocialManager::get_relation_between_contacts($current_user_id, $user_id); } $show_groups = array('groups', 'group_messages', 'messages_list', 'group_add', 'mygroups', 'group_edit', 'member_list', 'invite_friends', 'waiting_list', 'browse_groups'); // get count unread message and total invitations $count_unread_message = MessageManager::get_number_of_messages(true); $count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null; $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id()); $group_pending_invitations = $usergroup->get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false); $group_pending_invitations = count($group_pending_invitations); $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations; $total_invitations = !empty($total_invitations) ? Display::badge($total_invitations) : ''; $filesIcon = Display::return_icon('sn-files.png', get_lang('MyFiles'), '', ICON_SIZE_SMALL); $friendsIcon = Display::return_icon('sn-friends.png', get_lang('Friends'), '', ICON_SIZE_SMALL); $groupsIcon = Display::return_icon('sn-groups.png', get_lang('SocialGroups'), '', ICON_SIZE_SMALL); $homeIcon = Display::return_icon('sn-home.png', get_lang('Home'), '', ICON_SIZE_SMALL); $invitationsIcon = Display::return_icon('sn-invitations.png', get_lang('Invitations'), '', ICON_SIZE_SMALL); $messagesIcon = Display::return_icon('sn-message.png', get_lang('Messages'), '', ICON_SIZE_SMALL); $sharedProfileIcon = Display::return_icon('sn-profile.png', get_lang('ViewMySharedProfile')); $searchIcon = Display::return_icon('sn-search.png', get_lang('Search'), '', ICON_SIZE_SMALL); $html = ''; $active = null; if (!in_array($show, array('shared_profile', 'groups', 'group_edit', 'member_list', 'waiting_list', 'invite_friends'))) { $links = '<ul class="nav nav-pills nav-stacked">'; $active = $show == 'home' ? 'active' : null; $links .= ' <li class="home-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/home.php"> ' . $homeIcon . ' ' . get_lang('Home') . ' </a> </li>'; $active = $show == 'messages' ? 'active' : null; $links .= ' <li class="messages-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'messages/inbox.php?f=social"> ' . $messagesIcon . ' ' . get_lang('Messages') . $count_unread_message . ' </a> </li>'; //Invitations $active = $show == 'invitations' ? 'active' : null; $links .= ' <li class="invitations-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/invitations.php"> ' . $invitationsIcon . ' ' . get_lang('Invitations') . $total_invitations . ' </a> </li>'; //Shared profile and groups $active = $show == 'shared_profile' ? 'active' : null; $links .= ' <li class="shared-profile-icon' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/profile.php"> ' . $sharedProfileIcon . ' ' . get_lang('ViewMySharedProfile') . ' </a> </li>'; $active = $show == 'friends' ? 'active' : null; $links .= ' <li class="friends-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/friends.php"> ' . $friendsIcon . ' ' . get_lang('Friends') . ' </a> </li>'; $active = $show == 'browse_groups' ? 'active' : null; $links .= ' <li class="browse-groups-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/groups.php"> ' . $groupsIcon . ' ' . get_lang('SocialGroups') . ' </a> </li>'; //Search users $active = $show == 'search' ? 'active' : null; $links .= ' <li class="search-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/search.php"> ' . $searchIcon . ' ' . get_lang('Search') . ' </a> </li>'; //My files $active = $show == 'myfiles' ? 'active' : null; $myFiles = ' <li class="myfiles-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/myfiles.php"> ' . $filesIcon . ' ' . get_lang('MyFiles') . ' </a> </li>'; if (api_get_setting('platform.allow_my_files') === 'false') { $myFiles = ''; } $links .= $myFiles; $links .= '</ul>'; $html .= Display::panelCollapse(get_lang('SocialNetwork'), $links, 'social-network-menu', null, 'sn-sidebar', 'sn-sidebar-collapse'); } if (in_array($show, $show_groups) && !empty($group_id)) { $html .= $usergroup->show_group_column_information($group_id, api_get_user_id(), $show); } if ($show == 'shared_profile') { $links = '<ul class="nav nav-pills nav-stacked">'; // My own profile if ($show_full_profile && $user_id == intval(api_get_user_id())) { $links .= ' <li class="home-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/home.php"> ' . $homeIcon . ' ' . get_lang('Home') . ' </a> </li> <li class="messages-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'messages/inbox.php?f=social"> ' . $messagesIcon . ' ' . get_lang('Messages') . $count_unread_message . ' </a> </li>'; $active = $show == 'invitations' ? 'active' : null; $links .= ' <li class="invitations-icon' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/invitations.php"> ' . $invitationsIcon . ' ' . get_lang('Invitations') . $total_invitations . ' </a> </li>'; $links .= ' <li class="shared-profile-icon active"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/profile.php"> ' . $sharedProfileIcon . ' ' . get_lang('ViewMySharedProfile') . ' </a> </li> <li class="friends-icon"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/friends.php"> ' . $friendsIcon . ' ' . get_lang('Friends') . ' </a> </li> <li class="browse-groups-icon"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/groups.php"> ' . $groupsIcon . ' ' . get_lang('SocialGroups') . ' </a> </li>'; $active = $show == 'search' ? 'active' : null; $links .= ' <li class="search-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/search.php"> ' . $searchIcon . ' ' . get_lang('Search') . ' </a> </li>'; $active = $show == 'myfiles' ? 'active' : null; $myFiles = ' <li class="myfiles-icon ' . $active . '"> <a href="' . api_get_path(WEB_CODE_PATH) . 'social/myfiles.php"> ' . $filesIcon . ' ' . get_lang('MyFiles') . ' </a> </li>'; if (api_get_setting('platform.allow_my_files') === 'false') { $myFiles = ''; } $links .= $myFiles; } // My friend profile. if ($user_id != api_get_user_id()) { $sendMessageText = get_lang('SendMessage'); $sendMessageIcon = Display::return_icon('new-message.png', $sendMessageText); $sendMesssageUrl = api_get_path(WEB_AJAX_PATH) . 'user_manager.ajax.php?' . http_build_query(['a' => 'get_user_popup', 'user_id' => $user_id]); $links .= '<li>'; $links .= Display::url("{$sendMessageIcon} {$sendMessageText}", $sendMesssageUrl, ['class' => 'ajax', 'title' => $sendMessageText, 'data-title' => $sendMessageText]); $links .= '</li>'; } // Check if I already sent an invitation message $invitation_sent_list = SocialManager::get_list_invitation_sent_by_user_id(api_get_user_id()); if (isset($invitation_sent_list[$user_id]) && is_array($invitation_sent_list[$user_id]) && count($invitation_sent_list[$user_id]) > 0) { $links .= '<li><a href="' . api_get_path(WEB_CODE_PATH) . 'social/invitations.php">' . Display::return_icon('invitation.png', get_lang('YouAlreadySentAnInvitation')) . ' ' . get_lang('YouAlreadySentAnInvitation') . '</a></li>'; } else { if (!$show_full_profile) { $links .= '<li><a class="btn-to-send-invitation" href="#" data-send-to="' . $user_id . '" title="' . get_lang('SendInvitation') . '">' . Display::return_icon('invitation.png', get_lang('SocialInvitationToFriends')) . ' ' . get_lang('SendInvitation') . '</a></li>'; } } $links .= '</ul>'; $html .= Display::panelCollapse(get_lang('SocialNetwork'), $links, 'social-network-menu', null, 'sn-sidebar', 'sn-sidebar-collapse'); if ($show_full_profile && $user_id == intval(api_get_user_id())) { $personal_course_list = UserManager::get_personal_session_course_list($user_id); $course_list_code = array(); $i = 1; if (is_array($personal_course_list)) { foreach ($personal_course_list as $my_course) { if ($i <= 10) { $course_list_code[] = array('code' => $my_course['code']); } else { break; } $i++; } // To avoid repeated courses $course_list_code = ArrayClass::array_unique_dimensional($course_list_code); } // Announcements $my_announcement_by_user_id = intval($user_id); $announcements = array(); foreach ($course_list_code as $course) { $course_info = api_get_course_info($course['code']); if (!empty($course_info)) { $content = AnnouncementManager::get_all_annoucement_by_user_course($course_info['code'], $my_announcement_by_user_id); if (!empty($content)) { $url = Display::url(Display::return_icon('announcement.png', get_lang('Announcements')) . $course_info['name'] . ' (' . $content['count'] . ')', api_get_path(WEB_CODE_PATH) . 'announcements/announcements.php?cidReq=' . $course['code']); $announcements[] = Display::tag('li', $url); } } } if (!empty($announcements)) { $html .= '<div class="social_menu_items">'; $html .= '<ul>'; foreach ($announcements as $announcement) { $html .= $announcement; } $html .= '</ul>'; $html .= '</div>'; } } } if ($show_delete_account_button) { $html .= '<div class="sidebar-nav"><ul><li>'; $url = api_get_path(WEB_CODE_PATH) . 'auth/unsubscribe_account.php'; $html .= Display::url(Display::return_icon('delete.png', get_lang('Unsubscribe'), array(), ICON_SIZE_TINY) . get_lang('Unsubscribe'), $url); $html .= '</li></ul></div>'; } $html .= ''; return $html; }
<div class="topics">' . $subTitle2 . '</div> <h4 class="title-topics">' . Display::returnFontAwesomeIcon('book') . $thematic_info2['title'] . '</h4> <p class="date">' . Display::returnFontAwesomeIcon('calendar-o') . $thematic_advance_info2['start_date'] . '</p> <div class="views">' . Display::returnFontAwesomeIcon('file-text-o') . strip_tags($thematic_advance_info2['content']) . '</div> <p class="time">' . Display::returnFontAwesomeIcon('clock-o') . get_lang('DurationInHours') . ' : ' . $thematic_advance_info2['duration'] . ' - <a href="' . $thematicUrl . '">' . get_lang('SeeDetail') . '</a></p> </div> </div>'; } $thematicPanel = '<div class="row">'; $thematicPanel .= '<div class="col-md-2">' . $infoUser . '</div>'; $thematicPanel .= '<div class="col-md-10"><div class="row">' . $thematicItemOne . $thematicItemTwo . '</div></div>'; $thematicPanel .= '</div>'; $thematicPanel .= '<div class="separate"> <a href="' . $thematicUrl . '" class="btn btn-default btn-block">' . get_lang('ShowFullCourseAdvance') . '</a> </div>'; $thematicProgress = Display::panelCollapse($titleThematic, $thematicPanel, 'thematic', null, 'accordion-thematic', 'collapse-thematic', false); } } $introduction_section .= '<div class="row">'; if (!empty($thematic_advance_info)) { $introduction_section .= '<div class="col-md-12">'; $introduction_section .= $thematic_description_html; $introduction_section .= $thematicProgress; $introduction_section .= '</div>'; } $editIconButton = ''; if (api_is_allowed_to_edit() && empty($session_id)) { $editIconButton = Display::url('<em class="fa fa-wrench"></em> ', api_get_path(WEB_CODE_PATH) . 'course_info/tools.php?' . api_get_cidreq(), ['class' => 'btn btn-default', 'title' => get_lang('CustomizeIcons')]); } $toolbar = ''; $textIntro = '';
$extra_field_title = ucfirst($extraFieldInfo['display_text']); if ($extra_field_title == 'Skype') { $data = '<a href="skype:' . $data . '?chat">' . get_lang('Chat') . '</a>'; $extra_information_value .= '<li class="list-group-item">' . Display::return_icon('skype.png', $extraFieldInfo['display_text'], null, ICON_SIZE_TINY, false) . ' ' . $data . '</li>'; } else { $extra_information_value .= '<dt>' . ucfirst($extraFieldInfo['display_text']) . ':</dt><dd>' . $data . '</dd>'; } } break; } } } $extra_information_value .= '</ul>'; // if there are information to show if (!empty($extra_information_value)) { $extra_information .= Display::panelCollapse(get_lang('ExtraInformation'), $extra_information_value, 'sn-extra-information', null, 'sn-extra-accordion', 'sn-extra-collapse'); } } // If there are information to show Block Extra Information if (!empty($extra_information_value)) { $social_extra_info_block = $extra_information; } // MY GROUPS $results = $userGroup->get_groups_by_user($my_user_id, 0); $grid_my_groups = array(); $max_numbers_of_group = 4; if (is_array($results) && count($results) > 0) { $i = 1; foreach ($results as $result) { if ($i > $max_numbers_of_group) { break;
$remind_highlight = 'no_remind_highlight'; } $exercise_actions = ''; $is_remind_on = false; $attributes = array('id' => 'remind_list[' . $questionId . ']'); if (in_array($questionId, $remind_list)) { $is_remind_on = true; $attributes['checked'] = 1; $remind_question = true; $remind_highlight = ' remind_highlight '; } // Showing the exercise description if (!empty($objExercise->description)) { if ($objExercise->type == ONE_PER_PAGE || $objExercise->type != ONE_PER_PAGE && $i == 1) { //echo Display::panel($objExercise->description, get_lang('ExerciseDescriptionLabel')); echo Display::panelCollapse('<span>' . get_lang('ExerciseDescriptionLabel') . '</span>', $objExercise->description, 'exercise-description', [], 'description', 'exercise-collapse', false, true); } } echo '<div id="question_div_' . $questionId . '" class="main-question ' . $remind_highlight . '" >'; // Shows the question and its answers ExerciseLib::showQuestion($questionId, false, $origin, $i, true, false, $user_choice, false); // Button save and continue switch ($objExercise->type) { case ONE_PER_PAGE: $exercise_actions .= $objExercise->show_button($questionId, $current_question); break; case ALL_ON_ONE_PAGE: $button = '<a href="javascript://" class="btn btn-info" onclick="save_now(\'' . $questionId . '\'); ">' . get_lang('SaveForNow') . '</a>'; $button .= '<span id="save_for_now_' . $questionId . '"></span> '; $exercise_actions .= Display::div($button, array('class' => 'exercise_save_now_button')); break;
/** * @param string string $update_audio * @param bool $drop_element_here * @return string */ public function return_new_tree($update_audio = 'false', $drop_element_here = false) { $return = ''; $is_allowed_to_edit = api_is_allowed_to_edit(null, true); $course_id = api_get_course_int_id(); $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM); $sql = "SELECT * FROM {$tbl_lp_item}\n WHERE c_id = {$course_id} AND lp_id = " . $this->lp_id; $result = Database::query($sql); $arrLP = array(); while ($row = Database::fetch_array($result)) { $arrLP[] = array('id' => $row['id'], 'item_type' => $row['item_type'], 'title' => Security::remove_XSS($row['title']), 'path' => $row['path'], 'description' => Security::remove_XSS($row['description']), 'parent_item_id' => $row['parent_item_id'], 'previous_item_id' => $row['previous_item_id'], 'next_item_id' => $row['next_item_id'], 'max_score' => $row['max_score'], 'min_score' => $row['min_score'], 'mastery_score' => $row['mastery_score'], 'prerequisite' => $row['prerequisite'], 'display_order' => $row['display_order'], 'audio' => $row['audio'], 'prerequisite_max_score' => $row['prerequisite_max_score'], 'prerequisite_min_score' => $row['prerequisite_min_score']); } $this->tree_array($arrLP); $arrLP = isset($this->arrMenu) ? $this->arrMenu : null; unset($this->arrMenu); $default_data = null; $default_content = null; $elements = array(); $return_audio = null; for ($i = 0; $i < count($arrLP); $i++) { $title = $arrLP[$i]['title']; $title_cut = cut($arrLP[$i]['title'], 25); //Link for the documents if ($arrLP[$i]['item_type'] == 'document') { $url = api_get_self() . '?' . api_get_cidreq() . '&action=view_item&mode=preview_document&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id; $title_cut = Display::url($title_cut, $url, array('class' => 'ajax', 'data-title' => $title_cut)); } if ($i % 2 == 0) { $oddClass = 'row_odd'; } else { $oddClass = 'row_even'; } $return_audio .= '<tr id ="lp_item_' . $arrLP[$i]['id'] . '" class="' . $oddClass . '">'; $icon_name = str_replace(' ', '', $arrLP[$i]['item_type']); $icon = ''; if (file_exists('../img/lp_' . $icon_name . '.png')) { $icon = '<img src="../img/lp_' . $icon_name . '.png" />'; } else { if (file_exists('../img/lp_' . $icon_name . '.gif')) { $icon = '<img src="../img/lp_' . $icon_name . '.gif" />'; } else { $icon = '<img src="../img/folder_document.gif" />'; } } // The audio column. $return_audio .= '<td align="left" style="padding-left:10px;">'; $audio = ''; if (!$update_audio || $update_audio != 'true') { if (!empty($arrLP[$i]['audio'])) { /*$audio .= '<span id="container'.$i.'"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</span>'; $audio .= '<script type="text/javascript" src="../inc/lib/mediaplayer/swfobject.js"></script>'; $audio .= '<script type="text/javascript"> var s1 = new SWFObject("../inc/lib/mediaplayer/player.swf","ply","250","20","9","#FFFFFF"); s1.addParam("allowscriptaccess","always"); s1.addParam("flashvars","file=../../courses/' . $_course['path'] . '/document/audio/' . $arrLP[$i]['audio'] . '"); s1.write("container' . $i . '"); </script>';*/ } else { $audio .= ''; } } else { $types = self::getChapterTypes(); if (!in_array($arrLP[$i]['item_type'], $types)) { $audio .= '<input type="file" name="mp3file' . $arrLP[$i]['id'] . '" id="mp3file" />'; if (!empty($arrLP[$i]['audio'])) { $audio .= '<br />' . Security::remove_XSS($arrLP[$i]['audio']) . '<br /> <input type="checkbox" name="removemp3' . $arrLP[$i]['id'] . '" id="checkbox' . $arrLP[$i]['id'] . '" />' . get_lang('RemoveAudio'); } } } $return_audio .= Display::span($icon . ' ' . $title) . Display::tag('td', $audio, array('style' => '')); $return_audio .= '</td>'; $move_icon = ''; $move_item_icon = ''; $edit_icon = ''; $delete_icon = ''; $audio_icon = ''; $prerequisities_icon = ''; if ($is_allowed_to_edit) { if (!$update_audio || $update_audio != 'true') { $move_icon .= '<a class="moved" href="#">'; $move_icon .= Display::return_icon('move_everywhere.png', get_lang('Move'), array(), ICON_SIZE_TINY); $move_icon .= '</a>'; } // No edit for this item types if (!in_array($arrLP[$i]['item_type'], array('sco', 'asset'))) { if (!in_array($arrLP[$i]['item_type'], array('dokeos_chapter', 'dokeos_module'))) { $edit_icon .= '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=edit_item&view=build&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '&path_item=' . $arrLP[$i]['path'] . '">'; $edit_icon .= Display::return_icon('edit.png', get_lang('LearnpathEditModule'), array(), ICON_SIZE_TINY); $edit_icon .= '</a>'; } else { $edit_icon .= '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=edit_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '&path_item=' . $arrLP[$i]['path'] . '">'; $edit_icon .= Display::return_icon('edit.png', get_lang('LearnpathEditModule'), array(), ICON_SIZE_TINY); $edit_icon .= '</a>'; } } $delete_icon .= ' <a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=delete_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '" onClick="return confirmation(\'' . addslashes($title) . '\');">'; $delete_icon .= Display::return_icon('delete.png', get_lang('LearnpathDeleteModule'), array(), ICON_SIZE_TINY); $delete_icon .= '</a>'; $url = api_get_self() . '?' . api_get_cidreq() . '&view=build&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id; if (!in_array($arrLP[$i]['item_type'], array('dokeos_chapter', 'dokeos_module', 'dir'))) { $prerequisities_icon = Display::url(Display::return_icon('accept.png', get_lang('LearnpathPrerequisites'), array(), ICON_SIZE_TINY), $url . '&action=edit_item_prereq'); $move_item_icon = Display::url(Display::return_icon('move.png', get_lang('Move'), array(), ICON_SIZE_TINY), $url . '&action=move_item'); $audio_icon = Display::url(Display::return_icon('audio.png', get_lang('UplUpload'), array(), ICON_SIZE_TINY), $url . '&action=add_audio'); } } if ($update_audio != 'true') { $row = $move_icon . ' ' . $icon . Display::span($title_cut) . Display::span($audio . $edit_icon . $prerequisities_icon . $move_item_icon . $audio_icon . $delete_icon, array('class' => 'button_actions')); } else { $row = Display::span($title . $icon) . Display::span($audio, array('class' => 'button_actions')); } $parent_id = $arrLP[$i]['parent_item_id']; $default_data[$arrLP[$i]['id']] = $row; $default_content[$arrLP[$i]['id']] = $arrLP[$i]; if (empty($parent_id)) { $elements[$arrLP[$i]['id']]['data'] = $row; $elements[$arrLP[$i]['id']]['type'] = $arrLP[$i]['item_type']; } else { $parent_arrays = array(); if ($arrLP[$i]['depth'] > 1) { //Getting list of parents for ($j = 0; $j < $arrLP[$i]['depth']; $j++) { foreach ($arrLP as $item) { if ($item['id'] == $parent_id) { if ($item['parent_item_id'] == 0) { $parent_id = $item['id']; break; } else { $parent_id = $item['parent_item_id']; if (empty($parent_arrays)) { $parent_arrays[] = intval($item['id']); } $parent_arrays[] = $parent_id; break; } } } } } if (!empty($parent_arrays)) { $parent_arrays = array_reverse($parent_arrays); $val = '$elements'; $x = 0; foreach ($parent_arrays as $item) { if ($x != count($parent_arrays) - 1) { $val .= '["' . $item . '"]["children"]'; } else { $val .= '["' . $item . '"]["children"]'; } $x++; } $val .= ""; $code_str = $val . "[" . $arrLP[$i]['id'] . "][\"load_data\"] = '" . $arrLP[$i]['id'] . "' ; "; eval($code_str); } else { $elements[$parent_id]['children'][$arrLP[$i]['id']]['data'] = $row; $elements[$parent_id]['children'][$arrLP[$i]['id']]['type'] = $arrLP[$i]['item_type']; } } } $list = '<ul id="lp_item_list">'; $tree = self::print_recursive($elements, $default_data, $default_content); if (!empty($tree)) { $list .= $tree; } else { if ($drop_element_here) { $list .= Display::return_message(get_lang("DragAndDropAnElementHere")); } } $list .= '</ul>'; //$return .= Display::panel($list, $this->name); $return .= Display::panelCollapse($this->name, $list, 'scorm-list', null, 'scorm-list-accordion', 'scorm-list-collapse'); if ($update_audio == 'true') { $return = $return_audio; } return $return; }
/** * @param string string $update_audio * @param bool $drop_element_here * @return string */ public function return_new_tree($update_audio = 'false', $drop_element_here = false) { $return = ''; $is_allowed_to_edit = api_is_allowed_to_edit(null, true); $course_id = api_get_course_int_id(); $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM); $sql = "SELECT * FROM {$tbl_lp_item}\n WHERE c_id = {$course_id} AND lp_id = " . $this->lp_id; $result = Database::query($sql); $arrLP = array(); while ($row = Database::fetch_array($result)) { $arrLP[] = array('id' => $row['id'], 'item_type' => $row['item_type'], 'title' => Security::remove_XSS($row['title']), 'path' => $row['path'], 'description' => Security::remove_XSS($row['description']), 'parent_item_id' => $row['parent_item_id'], 'previous_item_id' => $row['previous_item_id'], 'next_item_id' => $row['next_item_id'], 'max_score' => $row['max_score'], 'min_score' => $row['min_score'], 'mastery_score' => $row['mastery_score'], 'prerequisite' => $row['prerequisite'], 'display_order' => $row['display_order'], 'audio' => $row['audio'], 'prerequisite_max_score' => $row['prerequisite_max_score'], 'prerequisite_min_score' => $row['prerequisite_min_score']); } $this->tree_array($arrLP); $arrLP = isset($this->arrMenu) ? $this->arrMenu : null; unset($this->arrMenu); $default_data = null; $default_content = null; $elements = array(); $return_audio = null; for ($i = 0; $i < count($arrLP); $i++) { $title = $arrLP[$i]['title']; $title_cut = cut($arrLP[$i]['title'], 25); $url = api_get_self() . '?' . api_get_cidreq() . '&action=view_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id; $title_cut = Display::url($title_cut, $url, array('class' => 'ajax moved', 'data-title' => $title_cut)); if ($i % 2 == 0) { $oddClass = 'row_odd'; } else { $oddClass = 'row_even'; } $return_audio .= '<tr id ="lp_item_' . $arrLP[$i]['id'] . '" class="' . $oddClass . '">'; $icon_name = str_replace(' ', '', $arrLP[$i]['item_type']); if (file_exists('../img/lp_' . $icon_name . '.png')) { $icon = Display::return_icon('lp_' . $icon_name . '.png'); } else { if (file_exists('../img/lp_' . $icon_name . '.gif')) { $icon = Display::return_icon('lp_' . $icon_name . '.gif'); } else { $icon = Display::return_icon('folder_document.gif'); } } // The audio column. $return_audio .= '<td align="left" style="padding-left:10px;">'; $audio = ''; if (!$update_audio || $update_audio != 'true') { if (!empty($arrLP[$i]['audio'])) { } else { $audio .= ''; } } else { $types = self::getChapterTypes(); if (!in_array($arrLP[$i]['item_type'], $types)) { $audio .= '<input type="file" name="mp3file' . $arrLP[$i]['id'] . '" id="mp3file" />'; if (!empty($arrLP[$i]['audio'])) { $audio .= '<br />' . Security::remove_XSS($arrLP[$i]['audio']) . '<br /> <input type="checkbox" name="removemp3' . $arrLP[$i]['id'] . '" id="checkbox' . $arrLP[$i]['id'] . '" />' . get_lang('RemoveAudio'); } } } $return_audio .= Display::span($icon . ' ' . $title) . Display::tag('td', $audio, array('style' => '')); $return_audio .= '</td>'; $move_icon = ''; $move_item_icon = ''; $edit_icon = ''; $delete_icon = ''; $audio_icon = ''; $prerequisities_icon = ''; $forumIcon = ''; $previewIcon = ''; if ($is_allowed_to_edit) { if (!$update_audio || $update_audio != 'true') { $move_icon .= '<a class="moved" href="#">'; $move_icon .= Display::return_icon('move_everywhere.png', get_lang('Move'), array(), ICON_SIZE_TINY); $move_icon .= '</a>'; } // No edit for this item types if (!in_array($arrLP[$i]['item_type'], array('sco', 'asset'))) { if (!in_array($arrLP[$i]['item_type'], array('dokeos_chapter', 'dokeos_module'))) { $edit_icon .= '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=edit_item&view=build&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '&path_item=' . $arrLP[$i]['path'] . '" class="btn btn-default">'; $edit_icon .= Display::return_icon('edit.png', get_lang('LearnpathEditModule'), array(), ICON_SIZE_TINY); $edit_icon .= '</a>'; if (!in_array($arrLP[$i]['item_type'], ['forum', 'thread'])) { if ($this->items[$arrLP[$i]['id']]->getForumThread($this->course_int_id, $this->lp_session_id)) { $forumIconUrl = api_get_self() . '?' . api_get_cidreq() . '&' . http_build_query(['action' => 'dissociate_forum', 'id' => $arrLP[$i]['id'], 'lp_id' => $this->lp_id]); $forumIcon = Display::url(Display::return_icon('forum.png', get_lang('DissociateForumToLPItem'), [], ICON_SIZE_TINY), $forumIconUrl, ['class' => 'btn btn-default lp-btn-dissociate-forum']); } else { $forumIconUrl = api_get_self() . '?' . api_get_cidreq() . '&' . http_build_query(['action' => 'create_forum', 'id' => $arrLP[$i]['id'], 'lp_id' => $this->lp_id]); $forumIcon = Display::url(Display::return_icon('forum.png', get_lang('AssociateForumToLPItem'), [], ICON_SIZE_TINY), $forumIconUrl, ['class' => "btn btn-default lp-btn-associate-forum"]); } } } else { $edit_icon .= '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=edit_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '&path_item=' . $arrLP[$i]['path'] . '" class="btn btn-default">'; $edit_icon .= Display::return_icon('edit.png', get_lang('LearnpathEditModule'), array(), ICON_SIZE_TINY); $edit_icon .= '</a>'; } } $delete_icon .= ' <a href="' . api_get_self() . '?' . api_get_cidreq() . '&action=delete_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id . '" onclick="return confirmation(\'' . addslashes($title) . '\');" class="btn btn-default">'; $delete_icon .= Display::return_icon('delete.png', get_lang('LearnpathDeleteModule'), array(), ICON_SIZE_TINY); $delete_icon .= '</a>'; $url = api_get_self() . '?' . api_get_cidreq() . '&view=build&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id; if ($arrLP[$i]['item_type'] == 'document') { $urlPreviewLink = api_get_self() . '?' . api_get_cidreq() . '&action=view_item&mode=preview_document&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id; $previewIcon = Display::url(Display::return_icon('preview_view.png', get_lang('Preview'), array(), ICON_SIZE_TINY), $urlPreviewLink, array('class' => 'btn btn-default ajax', 'data-title' => $arrLP[$i]['title'])); } else { $previewIcon = Display::url(Display::return_icon('preview_view.png', get_lang('Preview'), array(), ICON_SIZE_TINY), $url . '&action=view_item', ['class' => 'btn btn-default']); } if (!in_array($arrLP[$i]['item_type'], array('dokeos_chapter', 'dokeos_module', 'dir'))) { $prerequisities_icon = Display::url(Display::return_icon('accept.png', get_lang('LearnpathPrerequisites'), array(), ICON_SIZE_TINY), $url . '&action=edit_item_prereq', ['class' => 'btn btn-default']); $move_item_icon = Display::url(Display::return_icon('move.png', get_lang('Move'), array(), ICON_SIZE_TINY), $url . '&action=move_item', ['class' => 'btn btn-default']); $audio_icon = Display::url(Display::return_icon('audio.png', get_lang('UplUpload'), array(), ICON_SIZE_TINY), $url . '&action=add_audio', ['class' => 'btn btn-default']); } } if ($update_audio != 'true') { $row = $move_icon . ' ' . $icon . Display::span($title_cut) . Display::tag('div', "<div class=\"btn-group btn-group-xs\">{$previewIcon} {$audio} {$edit_icon} {$forumIcon} {$prerequisities_icon} {$move_item_icon} {$audio_icon} {$delete_icon}</div>", array('class' => 'btn-toolbar button_actions')); } else { $row = Display::span($title . $icon) . Display::span($audio, array('class' => 'button_actions')); } $parent_id = $arrLP[$i]['parent_item_id']; $default_data[$arrLP[$i]['id']] = $row; $default_content[$arrLP[$i]['id']] = $arrLP[$i]; if (empty($parent_id)) { $elements[$arrLP[$i]['id']]['data'] = $row; $elements[$arrLP[$i]['id']]['type'] = $arrLP[$i]['item_type']; } else { $parent_arrays = array(); if ($arrLP[$i]['depth'] > 1) { //Getting list of parents for ($j = 0; $j < $arrLP[$i]['depth']; $j++) { foreach ($arrLP as $item) { if ($item['id'] == $parent_id) { if ($item['parent_item_id'] == 0) { $parent_id = $item['id']; break; } else { $parent_id = $item['parent_item_id']; if (empty($parent_arrays)) { $parent_arrays[] = intval($item['id']); } $parent_arrays[] = $parent_id; break; } } } } } if (!empty($parent_arrays)) { $parent_arrays = array_reverse($parent_arrays); $val = '$elements'; $x = 0; foreach ($parent_arrays as $item) { if ($x != count($parent_arrays) - 1) { $val .= '["' . $item . '"]["children"]'; } else { $val .= '["' . $item . '"]["children"]'; } $x++; } $val .= ""; $code_str = $val . "[" . $arrLP[$i]['id'] . "][\"load_data\"] = '" . $arrLP[$i]['id'] . "' ; "; eval($code_str); } else { $elements[$parent_id]['children'][$arrLP[$i]['id']]['data'] = $row; $elements[$parent_id]['children'][$arrLP[$i]['id']]['type'] = $arrLP[$i]['item_type']; } } } $list = '<ul id="lp_item_list">'; $tree = self::print_recursive($elements, $default_data, $default_content); if (!empty($tree)) { $list .= $tree; } else { if ($drop_element_here) { $list .= Display::return_message(get_lang("DragAndDropAnElementHere")); } } $list .= '</ul>'; $return .= Display::panelCollapse($this->name, $list, 'scorm-list', null, 'scorm-list-accordion', 'scorm-list-collapse'); if ($update_audio == 'true') { $return = $return_audio; } return $return; }
for ($i = 0; $i < $list; $i++) { $social_group_block .= '<div class="row">'; $social_group_block .= '<div class="col-md-2">' . $groups_pop[$i][0] . '</div>'; $social_group_block .= '<div class="col-md-10">' . $groups_pop[$i][1]; $social_group_block .= $groups_pop[$i][2] . '</div>'; $social_group_block .= "</div>"; } $social_group_block .= "</div>"; } // My friends $friend_html = SocialManager::listMyFriendsBlock($user_id, '', $show_full_profile); //Block Social Sessions $social_session_block = null; $user_info = api_get_user_info($user_id); $sessionList = SessionManager::getSessionsFollowedByUser($user_id, $user_info['status']); if (count($sessionList) > 0) { $social_session_block = $sessionList; } $social_group_block = Display::panelCollapse(get_lang('Group'), $social_group_block, 'sm-groups', null, 'grups-acordion', 'groups-collapse'); //$tpl = new Template(get_lang('SocialNetwork')); $tpl = \Chamilo\CoreBundle\Framework\Container::getTwig(); SocialManager::setSocialUserBlock($tpl, api_get_user_id(), 'home'); $tpl->addGlobal('social_menu_block', $social_menu_block); $tpl->addGlobal('social_friend_block', $friend_html); $tpl->addGlobal('sessionList', $social_session_block); $tpl->addGlobal('social_search_block', $social_search_block); $tpl->addGlobal('social_skill_block', SocialManager::getSkillBlock($user_id)); $tpl->addGlobal('social_group_block', $social_group_block); $tpl->addGlobal('social_right_content', ''); $tpl->addGlobal('social_auto_extend_link', ''); echo $tpl->render('@template_style/social/home.html.twig');
global $_custom; if (isset($_custom['exercises_hidden_when_no_start_date']) && $_custom['exercises_hidden_when_no_start_date']) { if (empty($objExercise->start_time) || $objExercise->start_time == '0000-00-00 00:00:00') { Display::display_warning_message(sprintf(get_lang('ExerciseNoStartedYet'), $exercise_title, $objExercise->selectAttempts())); if ($origin != 'learnpath') { Display::display_footer(); } } } //Timer control if ($time_control) { echo $objExercise->return_time_left_div(); echo '<div style="display:none" class="warning-message" id="expired-message-id">' . get_lang('ExerciseExpiredTimeMessage') . '</div>'; } if (!empty($objExercise->description)) { echo Display::panelCollapse(get_lang('ExerciseDescriptionLabel'), $objExercise->description, 'exercise-description', null, 'description', 'exercise-collapse'); } if ($origin != 'learnpath') { echo '<div id="highlight-plugin" class="glossary-content">'; } if ($reminder == 2) { if ($debug) { error_log(' $reminder == 2'); } $data_tracking = $exercise_stat_info['data_tracking']; $data_tracking = explode(',', $data_tracking); $current_question = 1; //set by default the 1st question if (!empty($my_remind_list)) { //Checking which questions we are going to call from the remind list for ($i = 0; $i < count($data_tracking); $i++) {
$item_1 = Display::tag('p', $url_open . $name . $url_close); $block_groups .= ' <div class="col-md-4"> <div class="items-user"> <div class="items-user-avatar"> ' . $group['picture'] . ' </div> <div class="user-info"> ' . $item_1 . ' <p>' . $members . '</p> <p>' . $group['description'] . '</p> <p>' . $tags . '</p> <p>' . $url_open . get_lang('SeeMore') . $url_close . '</p> </div> </div> </div>'; } $block_groups .= '</div></div></div>'; } $visibility = array(true, true, true, true, true); $block_groups .= Display::return_sortable_grid('groups', null, $grid_groups, array('hide_navigation' => false, 'per_page' => $itemPerPage), $query_vars, false, $visibility, true, array(), $totalGroups); $block_search .= Display::panelCollapse(get_lang('Groups'), $block_groups, 'search-groups', null, 'groups-acorderon', 'groups-collapse'); } $tpl = \Chamilo\CoreBundle\Framework\Container::getTwig(); // Block Social Avatar SocialManager::setSocialUserBlock($tpl, api_get_user_id(), 'search'); $tpl->addGlobal('social_menu_block', $social_menu_block); $tpl->addGlobal('social_search', $block_search); $tpl->addGlobal('search_form', $searchForm); $tpl->addGlobal('invitation_form', MessageManager::generate_invitation_form('send_invitation')); echo $tpl->render('@template_style/social/search.html.twig');