function subscribemod() { checkPerm('subscribe', false, 'course'); require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; require_once _base_ . '/lib/lib.table.php'; $id_course = importVar('id_course', true, 0); $course_info = Man_Course::getCourseInfo($id_course); $edition_id = getCourseEditionId(); $fman = new FieldList(); //addScriptaculousJs(); YuiLib::load(array('json' => 'json-min.js')); $GLOBALS['page']->add('<script type="text/javascript">' . ' function reloadInfo() { var $ = YAHOO.util.Dom.get; var selection = $("extra_info").value; var id_course = $("id_course").value; var data = "op=get_info&id_course="+id_course+"&id_field=" + selection; var objAjax = YAHOO.util.Connect.asyncRequest("POST", "' . $GLOBALS['where_lms_relative'] . '/ajax.adm_server.php?mn=subscribe", {onSuccess: callback_change}, data ); $("extra_info").disabled = true; } ' . ' function callback_change(o) { var result = YAHOO.lang.JSON.parse(o.responseText); var table = $("subscribed_list"); for(var i= 0;i < table.rows.length;i++) { var ind = table.rows[i].id.indexOf("user_"); if(ind >= 0) { var id_user = table.rows[i].id.substr(5); table.rows[i].cells[1].innerHTML = result[id_user]; } } $("extra_info").disabled = false; }' . '</script>', 'page_head'); $out =& $GLOBALS['page']; $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms'); $acl_man =& Docebo::user()->getAclManager(); $levels = CourseLevel::getLevels(); $arr_absent = array(0 => $lang->def('_NO'), 1 => $lang->def('_JUSTIFIED'), 2 => $lang->def('_NOT_JUSTIFIED')); $arr_status = array(_CUS_CONFIRMED => $lang->def('_USER_STATUS_CONFIRMED'), _CUS_SUBSCRIBED => $lang->def('_USER_STATUS_SUBS'), _CUS_BEGIN => $lang->def('_USER_STATUS_BEGIN'), _CUS_END => $lang->def('_USER_STATUS_END'), _CUS_SUSPEND => $lang->def('_USER_STATUS_SUSPEND'), _CUS_CANCELLED => $lang->def('_USER_STATUS_CANCELLED')); $field = $fman->getFlatAllFields(); $field = array('name' => $lang->def('_FULLNAME'), 'email' => $lang->def('_EMAIL')) + $field; // Retrive info about the selected user $user_alredy_subscribed = getSubscribed($id_course, false, false, true, $edition_id); $user_levels = getSubscribedInfo($id_course, false, false, false, false, $edition_id); require_once $GLOBALS['where_framework'] . '/lib/lib.adminmanager.php'; $adminManager = new AdminManager(); $acl_manager = new DoceboACLManager(); $idst_associated = $adminManager->getAdminTree(getLogUserId()); $array_user_associated =& $acl_manager->getAllUsersFromIdst($idst_associated); $user_level = Docebo::user()->getUserLevelId(); if ($user_level != ADMIN_GROUP_GODADMIN) { $user_alredy_subscribed = array_intersect($user_alredy_subscribed, $array_user_associated); } $user_selected_info =& $acl_man->getUsers($user_alredy_subscribed); $page_title = array('index.php?modname=course&op=course_list' => $lang->def('_COURSES'), $course_info['name'], $lang->def('_SUBSCRIBE')); $GLOBALS['page']->add(getTitleArea($page_title, 'subscribe') . '<div class="std_block">' . Form::openForm('levelselection', 'index.php?modname=subscribe&op=subscribeupdate') . Form::getHidden('id_course', 'id_course', $id_course) . Form::getHidden('edition_id', 'edition_id', $edition_id), 'content'); $tb = new Table(0, $lang->def('_CAPTION_SELECT_LEVELS'), $lang->def('_SUMMARY_SELECT_LEVEL')); $tb->setTableId('subscribed_list'); $type_h = array('', ''); $content_h = array($lang->def('_USERNAME'), Form::getInputDropdown('dropdown_nowh', 'extra_info', 'extra_info', $field, 0, ' onchange="reloadInfo();"')); foreach ($levels as $lv => $lv_name) { $type_h[] = 'image'; $content_h[] = '<a href="javascript:SelAll(\'' . $lv . '\');">' . $lv_name . '</a>'; } $type_h[] = 'image'; $content_h[] = $lang->def('_STATUS'); if ($course_info['course_type'] != 'elearning') { $type_h[] = 'image'; $content_h[] = $lang->def('_ABSENT'); } $tb->addHead($content_h, $type_h); $num_user_sel = 0; if (is_array($user_selected_info)) { reset($user_selected_info); $jsArr = "var elementi = new Array("; $i = 0; while (list($id_user, $user_info) = each($user_selected_info)) { if ($i != 0) { $jsArr .= ","; } $i++; $jsArr .= "'" . $id_user . "'"; // if the user isn't alredy subscribed to the course $content = array(substr($user_info[ACL_INFO_USERID], 1), $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME]); foreach ($levels as $lv => $lv_name) { $content[] = Form::getInputRadio('user_level_sel_' . $id_user . '_' . $lv, 'user_level_sel[' . $id_user . ']', $lv, $lv == $user_levels[$id_user]['level'], '') . '<label class="access-only" for="user_level_sel_' . $id_user . '_' . $lv . '">' . $lv_name . '</label>'; } $content[] = Form::getInputDropdown('dropdown', 'user_status_sel_' . $id_user . '', 'user_status_sel[' . $id_user . ']', $arr_status, $user_levels[$id_user]['status'], '') . '<label class="access-only" for="user_status_sel_' . $id_user . '">' . $lang->def('_STATUS') . '</label>'; if ($course_info['course_type'] != 'elearning') { $content[] = Form::getInputDropdown('dropdown_nowh', 'user_absent' . $id_user . '', 'user_absent[' . $id_user . ']', $arr_absent, $user_levels[$id_user]['absent'], '') . '<label class="access-only" for="user_absent_' . $id_user . '">' . $lang->def('_ABSENT') . '</label>'; } $tb->addBody($content, false, false, 'user_' . $id_user); } $GLOBALS['page']->add($tb->getTable(), 'content'); } $GLOBALS['page']->add(Form::openButtonSpace() . '<br />' . Form::getButton('subscribe', 'subscribe', $lang->def('_MOD')) . Form::getButton('cancelselector', 'cancelselector', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm(), 'content'); $GLOBALS['page']->add('</div>', 'content'); $GLOBALS['page']->add(' <script> ' . $jsArr . '); function SelAll (lvl) { var nb; ne = elementi.length; mod = document.getElementById(\'levelselection\'); for (var i=0;i<ne;i++) { elem = \'user_level_sel_\'+elementi[i]+\'_\'+lvl; var e = document.getElementById(elem); e.checked = 1; } } </script>'); }