function get_rows_filter() { $back_url = $this->back_url; $jump_url = $this->jump_url; $next_url = $this->next_url; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php'; $lang =& DoceboLanguage::createInstance('report', 'framework'); //$sel = new Course_Manager(); //$sel->setLink('index.php?modname=report&op=report_rows_filter'); if (isset($_POST['undo_filter'])) { Util::jump_to($back_url); } //set $_POST data in $_SESSION['report_tempdata'] if (!isset($_SESSION['report_tempdata']['rows_filter'])) { $_SESSION['report_tempdata']['rows_filter'] = array('all_courses' => true, 'selected_courses' => array()); } $ref =& $_SESSION['report_tempdata']['rows_filter']; $selector = new Selector_Course(); if (isset($_POST['update_tempdata'])) { $selector->parseForState($_POST); $ref['all_courses'] = Get::req('all_courses', DOTY_INT, 1) == 1 ? true : false; } else { $selector->resetSelection($ref['selected_courses']); } //filter setting done, go to next step if (isset($_POST['import_filter'])) { $ref['selected_courses'] = $selector->getSelection($_POST); Util::jump_to($next_url); } $ref =& $_SESSION['report_tempdata']['rows_filter']; $temp = count($ref['selected_courses']); $box = new ReportBox('courses_selector'); $box->title = $this->lang->def('_COURSES_SELECTION_TITLE'); $box->description = false; $boxlang =& DoceboLanguage::createInstance('report', 'framework'); $box->body .= '<div class="fc_filter_line filter_corr">'; $box->body .= '<input id="all_courses" name="all_courses" type="radio" value="1" ' . ($ref['all_courses'] ? 'checked="checked"' : '') . ' />'; $box->body .= ' <label for="all_courses">' . $boxlang->def('_ALL_COURSES') . '</label>'; $box->body .= ' <input id="sel_courses" name="all_courses" type="radio" value="0" ' . ($ref['all_courses'] ? '' : 'checked="checked"') . ' />'; $box->body .= ' <label for="sel_courses">' . $boxlang->def('_SEL_COURSES') . '</label>'; $box->body .= '</div>'; $box->body .= '<div id="selector_container"' . ($ref['all_courses'] ? ' style="display:none"' : '') . '>'; $box->body .= $selector->loadCourseSelector(true) . '</div>'; $box->footer = $boxlang->def('_CURRENT_SELECTION') . ': <span id="csel_foot">' . ($ref['all_courses'] ? $boxlang->def('_ALL') : ($temp != '' ? $temp : '0')) . '</span>'; YuiLib::load('datasource'); Util::get_js(Get::rel_path('lms') . '/admin/modules/report/courses_filter.js', true, true); cout('<script type="text/javascript"> ' . "\n" . 'var courses_count="' . ($temp != '' ? $temp : '0') . '";' . "\n" . 'var courses_all="' . $boxlang->def('_ALL') . '";' . "\n" . 'YAHOO.util.Event.addListener(window, "load", function(e){ courses_selector_init(); });' . "\n" . '</script>', 'page_head'); cout(Form::openForm('first_step_user_filter', $jump_url, false, 'post') . $box->get() . Form::getHidden('update_tempdata', 'update_tempdata', 1) . Form::openButtonSpace() . Form::getButton('ok_filter', 'import_filter', $lang->def('_NEXT')) . Form::getButton('undo_filter', 'undo_filter', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm(), 'content'); }
function get_LO_filter() { //addCss('style_filterbox'); $back_url = $this->back_url; $jump_url = $this->jump_url; $next_url = $this->next_url; require_once _base_ . '/lib/lib.form.php'; require_once _lms_ . '/lib/lib.course.php'; $ref =& $_SESSION['report_tempdata']['columns_filter']; YuiLib::load(); Util::get_js(Get::rel_path('lms') . '/admin/modules/report/courses_filter.js', true, true); //back to columns category selection if (isset($_POST['undo_filter'])) { //go back at the previous step Util::jump_to($back_url); } //set $_POST data in $_SESSION['report_tempdata'] $selector = new Selector_Course(); if (isset($_POST['update_tempdata'])) { $selector->parseForState($_POST); $temp = array('all_courses' => $_POST['all_courses'] == 1 ? true : false, 'selected_courses' => $selector->getSelection(), 'lo_types' => isset($_POST['lo_types']) ? $_POST['lo_types'] : array(), 'lo_milestones' => isset($_POST['lo_milestones']) ? $_POST['lo_milestones'] : array(), 'showed_columns' => isset($_POST['cols']) ? $_POST['cols'] : array(), 'custom_fields' => array(), 'order_by' => Get::req('order_by', DOTY_STRING, 'userid'), 'order_dir' => Get::req('order_dir', DOTY_STRING, 'asc'), 'show_suspended' => Get::req('show_suspended', DOTY_INT, 0) > 0); foreach ($ref['custom_fields'] as $val) { $temp['custom_fields'][] = array('id' => $val['id'], 'label' => $val['label'], 'selected' => isset($_POST['custom'][$val['id']]) ? true : false); } $_SESSION['report_tempdata']['columns_filter'] = $temp; } else { //first loading of this page -> prepare $_SESSION data structure //if (isset($_SESSION['report_update']) /* && is equal to id_report */) break; //get users' custom fields require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(); $custom = array(); foreach ($fields as $key => $val) { $custom[] = array('id' => $key, 'label' => $val, 'selected' => false); } if (!isset($_SESSION['report_tempdata']['columns_filter'])) { $_SESSION['report_tempdata']['columns_filter'] = array('all_courses' => false, 'selected_courses' => $selector->getSelection(), 'lo_types' => array(), 'lo_milestones' => array(), 'showed_columns' => array(), 'custom_fields' => $custom, 'order_by' => 'userid', 'order_dir' => 'asc', 'show_suspended' => 'show_suspended'); } } //filter setting done, go to next step if (isset($_POST['import_filter']) || isset($_POST['show_filter']) || isset($_POST['pre_filter'])) { $temp_url = $next_url; if (isset($_POST['pre_filter'])) { $temp_url .= '&show=1&nosave=1'; } if (isset($_POST['show_filter'])) { $temp_url .= '&show=1'; } Util::jump_to($temp_url); } cout(Form::getHidden('update_tempdata', 'update_tempdata', 1), 'content'); $lang = $this->lang; //box for direct course selection $selection =& $ref['selected_courses']; $selector->parseForState($_POST); $selector->resetSelection($selection); $temp = count($selection); $box = new ReportBox('course_selector'); $box->title = Lang::t('_REPORT_COURSE_SELECTION', 'report'); $box->description = false; $box->body .= '<div class="fc_filter_line filter_corr">'; $box->body .= '<input id="all_courses" name="all_courses" type="radio" value="1" ' . ($ref['all_courses'] ? 'checked="checked"' : '') . ' />'; $box->body .= ' <label for="all_courses">' . $lang->def('_ALL_COURSES') . '</label>'; $box->body .= ' <input id="sel_courses" name="all_courses" type="radio" value="0" ' . ($ref['all_courses'] ? '' : 'checked="checked"') . ' />'; $box->body .= ' <label for="sel_courses">' . $lang->def('_SEL_COURSES') . '</label>'; $box->body .= '</div>'; $box->body .= '<div id="selector_container"' . ($ref['all_courses'] ? ' style="display:none"' : '') . '>'; //$box->body .= Form::openElementSpace(); $box->body .= $selector->loadCourseSelector(true); //$box->body .= Form::closeElementSpace(); $box->body .= '<br /></div>'; $box->footer = $lang->def('_CURRENT_SELECTION') . ': <span id="csel_foot">' . ($ref['all_courses'] ? Lang::t('_ALL', 'standard') : ($temp != '' ? $temp : '0')) . '</span>'; //.'</div>'; cout($box->get(), 'content'); cout('<script type="text/javascript">courses_count=' . ($temp == '' ? '0' : $temp) . ';' . 'courses_all="' . Lang::t('_ALL', 'standard') . '";' . "\n" . 'YAHOO.util.Event.addListener(window, "load", courses_selector_init);</script>', 'page_head'); $box = new ReportBox('lo_selection'); $box->title = $lang->def('_SELECT_LO_OPTIONS'); //LO columns selection $lo_trans = $this->getLOTypesTranslations(); $box->body .= Form::getOpenFieldset(Lang::t('_RU_LO_TYPES', 'report'), 'lotypes_fieldset'); $res = sql_query("SELECT * FROM %lms_lo_types"); while ($row = mysql_fetch_assoc($res)) { $trans = isset($lo_trans[$row['objectType']]) ? $lo_trans[$row['objectType']] : ""; $box->body .= Form::getCheckBox($trans, 'lo_type_' . $row['objectType'], 'lo_types[' . $row['objectType'] . ']', $row['objectType'], in_array($row['objectType'], $ref['lo_types']) ? true : false); } $box->body .= Form::getCloseFieldset(); $box->body .= Form::getOpenFieldset($lang->def('_RU_LO_MILESTONES'), 'lomilestones_fieldset'); $box->body .= Form::getCheckBox($lang->def('_NONE'), 'lo_milestone_0', 'lo_milestones[]', _MILESTONE_NONE, in_array(_MILESTONE_NONE, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCheckBox($lang->def('_START'), 'lo_milestone_1', 'lo_milestones[]', _MILESTONE_START, in_array(_MILESTONE_START, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCheckBox($lang->def('_END'), 'lo_milestone_2', 'lo_milestones[]', _MILESTONE_END, in_array(_MILESTONE_END, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCloseFieldset(); cout($box->get(), 'content'); function is_showed($which) { if (isset($_SESSION['report_tempdata']['columns_filter'])) { return in_array($which, $_SESSION['report_tempdata']['columns_filter']['showed_columns']); } else { return false; } } //box for columns selection $arr_fieldset = array('user' => '', 'course' => '', 'lo' => ''); $box = new ReportBox('columns_selection'); $box->title = $lang->def('_SELECT_THE_DATA_COL_NEEDED'); $box->description = false; //prepare fieldsets foreach ($this->LO_columns as $val) { if ($val['select']) { $line = Form::getCheckBox($val['label'], 'col_sel_' . $val['key'], 'cols[]', $val['key'], is_showed($val['key'])); switch ($val['group']) { case 'user': $arr_fieldset['user'] .= $line; break; case 'course': $arr_fieldset['course'] .= $line; break; case 'lo': $arr_fieldset['lo'] .= $line; break; } } else { if ($val['key'] == '_CUSTOM_FIELDS_') { //custom fields if (count($ref['custom_fields']) > 0) { foreach ($ref['custom_fields'] as $key => $val) { $arr_fieldset['user'] .= Form::getCheckBox($val['label'], 'col_custom_' . $val['id'], 'custom[' . $val['id'] . ']', $val['id'], $val['selected']); } } } } } //print fieldsets foreach ($arr_fieldset as $fid => $fieldset) { $ftitle = ''; switch ($fid) { case 'user': $ftitle = Lang::t('_USER_CUSTOM_FIELDS', 'report'); break; case 'course': $ftitle = Lang::t('_COURSE_FIELDS', 'report'); break; case 'lo': $ftitle = Lang::t('_LEARNING_OBJECTS', 'standard'); break; } $box->body .= Form::getOpenFieldset($ftitle, 'fieldset_' . $fid . '_fields'); $box->body .= $fieldset; $box->body .= Form::getCloseFieldset(); } cout($box->get(), 'content'); //other options $box = new ReportBox('other_options'); $box->title = Lang::t('_OTHER_OPTION', 'course'); $box->description = false; $sort_list = array('userid' => Lang::t('_USERID', 'standard'), 'firstname' => Lang::t('_FIRSTNAME', 'standard'), 'lastname' => Lang::t('_LASTNAME', 'standard'), 'email' => Lang::t('_EMAIL', 'standard'), 'course_code' => Lang::t('_COURSE_CODE', 'standard'), 'course_name' => Lang::t('_COURSE_NAME', 'standard'), 'object_title' => Lang::t('_LEARNING_OBJECTS', 'standard'), 'object_type' => Lang::t('_RU_LO_TYPES', 'report'), 'first_attempt' => Lang::t('_LO_COL_FIRSTATT', 'report'), 'last_attempt' => Lang::t('_LO_COL_LASTATT', 'report')); $dir_list = array('asc' => Lang::t('_ORD_ASC_TITLE', 'standard'), 'desc' => Lang::t('_ORD_DESC_TITLE', 'standard')); $sort_selected = array_key_exists($ref['order_by'], $sort_list) ? $ref['order_by'] : 'userid'; $dir_selected = array_key_exists($ref['order_dir'], $dir_list) ? $ref['order_dir'] : 'asc'; $sort_dir_dropdown = Form::getInputDropdown('', 'order_dir', 'order_dir', $dir_list, $dir_selected, ''); $box->body .= Form::getDropdown(Lang::t('_ORDER_BY', 'standard'), 'order_by', 'order_by', $sort_list, $sort_selected, $sort_dir_dropdown); $box->body .= Form::getCheckbox(Lang::t('_SHOW_SUSPENDED', 'organization_chart'), 'show_suspended', 'show_suspended', 1, (bool) $ref['show_suspended']); cout($box->get(), 'content'); }
function get_courses_filter() { $back_url = $this->back_url; $jump_url = $this->jump_url; $next_url = $this->next_url; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php'; $lang =& DoceboLanguage::createInstance('report', 'framework'); //$sel = new Course_Manager(); //$sel->setLink('index.php?modname=report&op=report_rows_filter'); if (isset($_POST['undo_filter'])) { Util::jump_to($back_url); } //set $_POST data in $_SESSION['report_tempdata'] $selector = new Selector_Course(); if (!isset($_SESSION['report_tempdata']['columns_filter'])) { $_SESSION['report_tempdata']['columns_filter'] = array('all_courses' => true, 'selected_courses' => array(), 'showed_columns' => array('completed' => true, 'initinere' => true, 'notstarted' => true, 'show_percentages' => true)); } $ref =& $_SESSION['report_tempdata']['columns_filter']; if (isset($_POST['update_tempdata'])) { $selector->parseForState($_POST); $temp = $selector->getSelection($_POST); $ref['selected_courses'] = $temp; $ref['all_courses'] = Get::req('all_courses', DOTY_INT, 1) == 1 ? true : false; $ref['showed_columns'] = array('completed' => Get::req('cols_completed', DOTY_INT, 0) > 0 ? true : false, 'initinere' => Get::req('cols_initinere', DOTY_INT, 0) > 0 ? true : false, 'notstarted' => Get::req('cols_notstarted', DOTY_INT, 0) > 0 ? true : false, 'show_percentages' => Get::req('cols_show_percentages', DOTY_INT, 0) > 0 ? true : false); } else { $selector->resetSelection($ref['selected_courses']); } //back to columns category selection if (isset($_POST['undo_filter'])) { Util::jump_to($back_url); } //filter setting done, go to next step if (isset($_POST['import_filter']) || isset($_POST['show_filter']) || isset($_POST['pre_filter'])) { $temp_url = $next_url; if (isset($_POST['pre_filter'])) { $temp_url .= '&show=1&nosave=1'; } if (isset($_POST['show_filter'])) { $temp_url .= '&show=1'; } Util::jump_to($temp_url); } $temp = count($ref['selected_courses']); $box = new ReportBox('courses_selector'); $box->title = $this->lang->def('_COURSES_SELECTION_TITLE'); $box->description = false; $boxlang =& DoceboLanguage::createInstance('report', 'framework'); $box->body .= '<div class="fc_filter_line filter_corr">'; $box->body .= '<input id="all_courses" name="all_courses" type="radio" value="1" ' . ($ref['all_courses'] ? 'checked="checked"' : '') . ' />'; $box->body .= ' <label for="all_courses">' . $boxlang->def('_ALL_COURSES') . '</label>'; $box->body .= ' <input id="sel_courses" name="all_courses" type="radio" value="0" ' . ($ref['all_courses'] ? '' : 'checked="checked"') . ' />'; $box->body .= ' <label for="sel_courses">' . $boxlang->def('_SEL_COURSES') . '</label>'; $box->body .= '</div>'; $box->body .= '<div id="selector_container"' . ($ref['all_courses'] ? ' style="display:none"' : '') . '>'; $box->body .= $selector->loadCourseSelector(true) . '</div>'; $box->footer = $boxlang->def('_CURRENT_SELECTION') . ': <span id="csel_foot">' . ($ref['all_courses'] ? $boxlang->def('_ALL') : ($temp != '' ? $temp : '0')) . '</span>'; YuiLib::load(array('yahoo' => 'yahoo-min.js', 'yahoo-dom-event' => 'yahoo-dom-event.js', 'element' => 'element-beta-min.js', 'datasource' => 'datasource-beta-min.js', 'connection' => 'connection-min.js', 'event' => 'event-min.js', 'json' => 'json-beta-min.js'), array('/assets/skins/sam' => 'skin.css')); addJs($GLOBALS['where_lms_relative'] . '/admin/modules/report/', 'courses_filter.js'); cout('<script type="text/javascript"> ' . "\n" . 'var courses_count="' . ($temp != '' ? $temp : '0') . '";' . "\n" . 'var courses_all="' . $boxlang->def('_ALL') . '";' . "\n" . 'YAHOO.util.Event.addListener(window, "load", function(e){ courses_selector_init(); });' . "\n" . '</script>', 'page_head'); //columns selection $col_box = new ReportBox('columns_selection'); $col_box->title = $this->lang->def('_REPORT_SEL_COLUMNS'); $col_box->description = $this->lang->def('_SELECT_THE_DATA_COL_NEEDED'); $col_box->body .= Form::getOpenFieldSet($this->lang->def('_STATUS')); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_SUBS', 'course'), 'cols_notstarted', 'cols_notstarted', 1, $ref['showed_columns']['notstarted']); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_BEGIN', 'course'), 'cols_initinere', 'cols_initinere', 1, $ref['showed_columns']['initinere']); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_END', 'course'), 'cols_completed', 'cols_completed', 1, $ref['showed_columns']['completed']); $col_box->body .= Form::getCheckBox(Lang::t('_PERCENTAGE', 'course'), 'cols_show_percentages', 'cols_show_percentages', 1, $ref['showed_columns']['show_percentages']); $col_box->body .= Form::getCloseFieldSet(); cout(Form::openForm('first_step_user_filter', $jump_url, false, 'post') . $box->get() . $col_box->get() . Form::getHidden('update_tempdata', 'update_tempdata', 1)); }
function assignCourse() { require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; $lang =& DoceboLanguage::createInstance('code'); $code_manager = new CodeManager(); $selector = new Selector_Course(); $id_code_group = Get::req('id_code_group', DOTY_INT, '0'); if (Get::req('confirm', DOTY_MIXED, '')) { $selector->parseForState($_POST); $course_selected = $selector->getSelection(); if ($code_manager->insertCourseAssociation($course_selected, $id_code_group)) { Util::jump_to('index.php?modname=code&op=list&result=ok'); } Util::jump_to('index.php?modname=code&op=list&result=err'); } $array_course_associated = $code_manager->getCourseAssociated($id_code_group); $selector->resetSelection($array_course_associated); cout(getTitleArea(array('index.php?modname=code&op=list' => $lang->def('_CODE'), $lang->def('_COURSES'))) . '<div class="std_block">'); $selector->parseForState($_POST); cout(Form::openForm('add_group_code_form', 'index.php?modname=code&op=assign_course&id_code_group=' . $id_code_group) . $selector->loadCourseSelector(true)); cout(Form::openButtonSpace() . Form::getButton('confirm', 'confirm', $lang->def('_INSERT')) . Form::getButton('undo_group', 'undo_group', $lang->def('_UNDO')) . Form::closeButtonSpace()); cout('</div>'); }
public function copy_course() { $users = Get::req('users', DOTY_STRING, ""); $move = Get::req('move', DOTY_STRING, ""); if (!$this->permissions['subscribe_course']) { $this->render('invalid', array('message' => $this->_getErrorMessage('no permission'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } require_once _lms_ . '/lib/lib.course.php'; $course_selector = new Selector_Course(); $course_selector->parseForState($_POST); if (isset($_POST['undo'])) { Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $this->model->getIdCourse()); } if (isset($_POST['copy'])) { $course_selected = $course_selector->getSelection(); if (count($course_selected) == 0) { Util::jump_to('index.php?r=' . $this->link . '/copy_course&load=1&id_course=' . $this->model->getIdCourse() . '&err=_no_course_sel'); } require_once _lms_ . '/lib/lib.course.php'; foreach ($course_selected as $id_course) { $docebo_course = new DoceboCourse($id_course); $level_idst =& $docebo_course->getCourseLevel($id_course); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst =& $docebo_course->createCourseLevel($id_course); } $query = "SELECT idUser, MIN(level) AS level" . " FROM %lms_courseuser" . " WHERE idUser IN (" . $users . ")" . " GROUP BY idUser"; $result = sql_query($query); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $limited_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.limit_course_subscribe'); $max_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.max_course_subscribe'); $direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe'); if ($limited_subscribe == 'on') { $limited_subscribe = true; } else { $limited_subscribe = false; } if ($direct_subscribe == 'on') { $direct_subscribe = true; } else { $direct_subscribe = false; } } else { $limited_subscribe = false; $max_subscribe = 0; $direct_subscribe = true; } require_once _lms_ . '/lib/lib.course.php'; $docebo_course = new DoceboCourse($id_course); $level_idst =& $docebo_course->getCourseLevel($id_course); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst =& $docebo_course->createCourseLevel($id_course); } $waiting = 0; if (!$direct_subscribe) { $waiting = 1; } $old_id_course = $_GET['id_course']; $_GET['id_course'] = $id_course; $course = new self(); while (list($id_user, $level) = sql_fetch_row($result)) { if (!$limited_subscribe || $max_subscribe) { if ($course->model->subscribeUser($id_user, $level, $waiting)) { //$this->acl_man->addToGroup($level_idst[$level], $id_user); $course->_addToCourseGroup($level_idst[$level], $id_user); $max_subscribe--; } } } if ($move) { $db = DbConn::getInstance(); $arr_users = explode(",", $users); $re = $db->query("DELETE FROM learning_courseuser\r\n\t\t\t\t\t\tWHERE idUser IN ( " . implode(',', $arr_users) . " ) AND idCourse = '" . $old_id_course . "'"); } } Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $this->model->getIdCourse() . '&res=_copy_ok'); //////////////////////////////// } else { $id_cat = Get::req('id_cat', DOTY_INT, 0); if (isset($_GET['load']) && $_GET['load'] == 1) { $course_selector->resetSelection(array()); } if (isset($_GET['err']) && $_GET['err'] !== '') { UIFeedback::error(Lang::t(strtoupper($_GET['err']), 'subscription')); } $course_info = $this->model->getCourseInfoForSubscription(); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $this->render('copy_course', array('model' => $this->model, 'id_cat' => $id_cat, 'users' => $users, 'move' => $move, 'course_selector' => $course_selector, 'course_name' => $course_name, 'id_course' => $this->id_course, 'id_edition' => $this->id_edition, 'id_date' => $this->id_date)); } }
function importcourse() { checkPerm('mod'); require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.coursepath.php'; $out =& $GLOBALS['page']; $lang =& DoceboLanguage::createInstance('coursepath', 'lms'); $id_path = importVar('id_path', true, 0); $id_slot = importVar('id_slot', true, 0); $selector = new Selector_Course(); $selector->parseForState($_POST); $path_man = new CoursePath_Manager(); if (isset($_GET['load'])) { $initial_selection = $path_man->getSlotElem($id_path, $id_slot); if (isset($_GET['load'])) { $selector->resetSelection($initial_selection); } } if (isset($_POST['import'])) { $initial_selection = $path_man->getSlotElem($id_path, $id_slot); $selected_courses = $selector->getSelection(); $to_add = array_diff($selected_courses, $initial_selection); $to_del = array_diff($initial_selection, $selected_courses); $re = true; $added_courses = array(); $removed_courses = array(); while (list(, $id_c) = each($to_add)) { $re_s = $path_man->addToSlot($id_path, $id_slot, $id_c); if ($re_s) { $added_courses[] = $id_c; } $re &= $re_s; } while (list(, $id_c) = each($to_del)) { $re_s = $path_man->delFromSlot($id_path, $id_slot, $id_c); if ($re_s) { $removed_courses[] = $id_c; } $re &= $re_s; } // update users course subscription require_once $GLOBALS['where_lms'] . '/lib/lib.coursepath.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.subscribe.php'; $cpath_man = new CoursePath_Manager(); $subs_man = new CourseSubscribe_Management(); $users = $cpath_man->getSubscribed($id_path); if (!empty($added_courses) && !empty($users)) { $re &= $subs_man->multipleSubscribe($users, $added_courses, 3); } if (!$re) { die('<a href="index.php?modname=coursepath&op=pathelem&id_path=' . $id_path . '">waths happen in insert ???</a>'); } if (!empty($removed_courses) && !empty($users)) { $re &= $subs_man->multipleUnsubscribe($users, $removed_courses); } $cpath_man->fixSequence($id_path, $id_slot); Util::jump_to('index.php?modname=coursepath&op=pathelem&id_path=' . $id_path . '&result=' . ($re ? 'ok' : 'err')); } $query_pathlist = "\r\n\tSELECT path_name, path_descr\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursepath\r\n\tWHERE id_path = '" . (int) $id_path . "'\r\n\tORDER BY path_name"; list($path_name, $path_descr) = sql_fetch_row(sql_query($query_pathlist)); $page_title = array('index.php?modname=coursepath&op=pathlist' => $lang->def('_COURSEPATH'), 'index.php?modname=coursepath&op=pathelem&id_path=' . $id_path => $path_name, $lang->def('_IMPORT_COURSE')); $out->add(getTitleArea($page_title, 'coursepath') . '<div class="std_block">' . Form::openForm('mancoursepath', 'index.php?modname=coursepath&op=importcourse') . Form::getHidden('id_path', 'id_path', $id_path) . Form::getHidden('id_slot', 'id_slot', $id_slot), 'content'); $selector->loadCourseSelector(false, true); $out->add(Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('import', 'import', $lang->def('_IMPORT')) . Form::getButton('undoelem', 'undoelem', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>', 'content'); }