function publicAdminManager_assign_tree($adminidst) { checkPerm('view'); if ($adminidst == 0) { return; } require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.publicadminmanager.php'; $directory = new UserSelector(); $lang =& DoceboLanguage::createInstance('adminrules', 'framework'); $lang =& DoceboLanguage::createInstance('public_admin_manager', 'framework'); $aclManager = new DoceboACLManager(); $adminManager = new PublicAdminManager(); if (isset($_POST['okselector'])) { $arr_selected = $directory->getSelection($_POST); $arr_unselected = $directory->getUnselected(); foreach ($arr_unselected as $idstTree) { $adminManager->removeAdminTree($idstTree, $adminidst); } foreach ($arr_selected as $idstTree) { $adminManager->addAdminTree($idstTree, $adminidst); } Util::jump_to('index.php?modname=public_admin_manager&op=view'); } elseif (isset($_POST['cancelselector'])) { Util::jump_to('index.php?modname=public_admin_manager&op=view'); } else { if (!isset($_GET['stayon'])) { $directory->resetSelection($adminManager->getAdminTree($adminidst)); } $admin_info = $aclManager->getUser($adminidst, false); $directory->show_user_selector = FALSE; $directory->show_group_selector = TRUE; $directory->show_orgchart_selector = TRUE; $directory->show_orgchart_simple_selector = TRUE; $directory->multi_choice = TRUE; $directory->loadSelector('index.php?modname=public_admin_manager&op=assign_tree&adminidst=' . $adminidst . '&stayon=1', $lang->def('_ASSIGN_USERS', 'adminrules'), '<span class="text_bold">' . substr($admin_info[ACL_INFO_USERID], 1) . '</span>', TRUE); } }
public function users() { $id_user = Get::req('id_user', DOTY_INT, 0); require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; $user_selector = new UserSelector(); if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?r=adm/adminmanager/show'); } if (isset($_POST['okselector'])) { $user_selected = $user_selector->getSelection($_POST); if ($this->model->saveUsersAssociation($id_user, $user_selected)) { Util::jump_to('index.php?r=adm/adminmanager/show&res=ok_ins'); } Util::jump_to('index.php?r=adm/adminmanager/show&res=err_ins'); } else { $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = TRUE; $user_selector->show_orgchart_selector = TRUE; $user_selector->show_orgchart_simple_selector = FALSE; if (isset($_GET['load'])) { $user_selector->requested_tab = PEOPLEVIEW_TAB; $old_association = $this->model->loadUserSelectorSelection($id_user); $user_selector->resetSelection($old_association); } $user_selector->setUserFilter('exclude', array($this->acl_man->getAnonymousId())); $this->render('users', array('id_user' => $id_user, 'user_selector' => $user_selector, 'model' => $this->model, 'user_alredy_subscribed' => $old_association)); } }
function get_user_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 _adm_ . '/lib/lib.directory.php'; require_once _adm_ . '/class.module/class.directory.php'; require_once _lms_ . '/lib/lib.course.php'; $lang =& DoceboLanguage::createInstance('report', 'framework'); $org_chart_subdivision = importVar('org_chart_subdivision', true, 0); //detect the step in which we are $substep = _SUBSTEP_USERS; //first substep switch (Get::req('substep', DOTY_STRING, 'no_step')) { case 'users_selection': $substep = _SUBSTEP_USERS; break; case 'columns_selection': $substep = _SUBSTEP_COLUMNS; break; } //draw page depending on the $substep variable if (!isset($_SESSION['report_tempdata']['columns_filter'])) { $_SESSION['report_tempdata']['columns_filter'] = array('time_belt' => array('time_range' => '', 'start_date' => '', 'end_date' => ''), 'org_chart_subdivision' => 0, 'show_classrooms_editions' => false, 'showed_cols' => array(), 'show_percent' => true, 'show_suspended' => false, 'only_students' => false, 'show_assessment' => false); } $ref =& $_SESSION['report_tempdata']['columns_filter']; switch ($substep) { case _SUBSTEP_COLUMNS: //set session data if (Get::req('is_updating', DOTY_INT, 0) > 0) { $ref['showed_cols'] = Get::req('cols', DOTY_MIXED, array()); $ref['show_percent'] = Get::req('show_percent', DOTY_INT, 0) > 0 ? true : false; $ref['time_belt'] = array('time_range' => $_POST['time_belt'], 'start_date' => Format::dateDb($_POST['start_time'], 'date'), 'end_date' => Format::dateDb($_POST['end_time'], 'date')); $ref['org_chart_subdivision'] = isset($_POST['org_chart_subdivision']) ? 1 : 0; $ref['show_classrooms_editions'] = isset($_POST['show_classrooms_editions']) ? true : false; $ref['show_suspended'] = Get::req('show_suspended', DOTY_INT, 0) > 0; $ref['only_students'] = Get::req('only_students', DOTY_INT, 0) > 0; $ref['show_assessment'] = Get::req('show_assessment', DOTY_INT, 0) > 0; } else { //... } //check action if (isset($_POST['cancelselector'])) { Util::jump_to($jump_url . '&substep=users_selection'); } 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($this->page_title, 'content'); function is_showed($which, &$arr) { if (isset($arr['showed_cols'])) { return in_array($which, $arr['showed_cols']); } else { return false; } } /*$go_to_second_step = (isset($_POST['go_to_second_step']) ? true : false); $we_are_in_second_step = Get::req('second_step', DOTY_INT, false);*/ $time_belt = array(0 => $lang->def('_CUSTOM_BELT'), 7 => $lang->def('_LAST_WEEK'), 31 => $lang->def('_LAST_MONTH'), 93 => $lang->def('_LAST_THREE_MONTH'), 186 => $lang->def('_LAST_SIX_MONTH'), 365 => $lang->def('_LAST_YEAR')); cout(Form::openForm('user_report_rows_courses', $jump_url) . Form::getHidden('update_tempdata', 'update_tempdata', 1) . Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('substep', 'substep', 'columns_selection'), 'content'); //box for time belt $box = new ReportBox('timebelt_box'); $box->title = $lang->def('_REPORT_USER_TITLE_TIMEBELT'); $box->description = Lang::t('_TIME_PERIOD_FILTER', 'report'); $box->body = Form::getDropdown($lang->def('_TIME_BELT'), 'time_belt_' . $this->id_report, 'time_belt', $time_belt, isset($ref['time_belt']['time_range']) ? $ref['time_belt']['time_range'] : '', '', '', ' onchange="report_disableCustom( \'time_belt_' . $this->id_report . '\', \'start_time_' . $this->id_report . '\', \'end_time_' . $this->id_report . '\' )"') . Form::getOpenFieldset($lang->def('_CUSTOM_BELT'), 'fieldset_' . $this->id_report) . Form::getDatefield($lang->def('_START_TIME'), 'start_time_' . $this->id_report, 'start_time', Format::date($ref['time_belt']['start_date'], 'date')) . Form::getDatefield($lang->def('_TO'), 'end_time_' . $this->id_report, 'end_time', Format::date($ref['time_belt']['end_date'], 'date')) . Form::getCloseFieldset(); cout($box->get() . Form::getBreakRow(), 'content'); $box = new ReportBox('other_options'); $box->title = Lang::t('_OTHER_OPTION', 'course'); $box->description = false; $box->body = Form::getCheckbox($lang->def('ORG_CHART_SUBDIVISION'), 'org_chart_subdivision_' . $this->id_report, 'org_chart_subdivision', 1, $ref['org_chart_subdivision'] == 1 ? true : false) . Form::getCheckbox(Lang::t('_SHOW_SUSPENDED', 'organization_chart'), 'show_suspended', 'show_suspended', 1, (bool) $ref['show_suspended']) . Form::getCheckbox(Lang::t('_SHOW_ONLY', 'subscribe') . ': ' . Lang::t('_STUDENTS', 'coursereport'), 'only_students', 'only_students', 1, (bool) $ref['only_students']) . Form::getCheckbox(Lang::t('_SHOW', 'standard') . ': ' . Lang::t('_ASSESSMENT', 'standard'), 'show_assessment', 'show_assessment', 1, (bool) $ref['show_assessment']); cout($box->get() . Form::getBreakRow(), 'content'); $glang =& DoceboLanguage::createInstance('course', 'lms'); $show_classrooms_editions = $ref['show_classrooms_editions']; cout('<script type="text/javascript"> function activateClassrooms() { var Y = YAHOO.util.Dom; var b1 = Y.get("not_classrooms"), b2 = Y.get("use_classrooms"); var action = b1.style.display == "none" ? "hide" : "show"; switch (action) { case "hide": { b1.style.display = "block"; b2.style.display = "none"; } break; case "show": { b1.style.display = "none"; b2.style.display = "block"; } break; } } </script>', 'page_head'); $box = new ReportBox('columns_sel_box'); $box->title = $lang->def('_SELECT_THE_DATA_COL_NEEDED'); $box->description = false; $box->body = Form::getHidden('is_updating', 'is_updating', 2) . Form::getOpenFieldset($lang->def('_COURSE_FIELDS'), 'fieldset_course_fields') . Form::getCheckBox($lang->def('_COURSE_CODE'), 'col_sel_coursecode', 'cols[]', '_CODE_COURSE', is_showed('_CODE_COURSE', $ref)) . Form::getCheckBox($glang->def('_COURSE_NAME'), 'col_sel_coursename', 'cols[]', '_NAME_COURSE', is_showed('_NAME_COURSE', $ref)) . Form::getCheckBox($glang->def('_CATEGORY'), 'col_sel_category', 'cols[]', '_COURSE_CATEGORY', is_showed('_COURSE_CATEGORY', $ref)) . Form::getCheckBox($glang->def('_STATUS'), 'col_sel_status', 'cols[]', '_COURSESTATUS', is_showed('_COURSESTATUS', $ref)) . Form::getCheckBox($glang->def('_CATALOGUE'), 'col_sel_catalogue', 'cols[]', '_COURSECATALOGUE', is_showed('_COURSECATALOGUE', $ref)) . Form::getCheckBox($glang->def('_CREATION_DATE'), 'col_sel_publication', 'cols[]', '_PUBLICATION_DATE', is_showed('_PUBLICATION_DATE', $ref)) . Form::getCloseFieldset() . Form::getOpenFieldset(Form::getInputCheckbox('show_classrooms_editions', 'show_classrooms_editions', 1, $show_classrooms_editions, "onclick=activateClassrooms();") . " " . Lang::t('_CLASSROOM_FIELDS', 'report'), 'fieldset_classroom_fields') . '<div id="not_classrooms" style="display:' . ($show_classrooms_editions ? "none" : "block") . '">' . Lang::t('_ACTIVATE_CLASSROOM_FIELDS', 'report') . '</div>' . '<div id="use_classrooms" style="display:' . ($show_classrooms_editions ? "block" : "none") . '">' . Form::getCheckBox(Lang::t('_NAME', 'standard'), 'col_sel_classroomname', 'cols[]', '_TH_CLASSROOM_CODE', is_showed('_TH_CLASSROOM_CODE', $ref)) . Form::getCheckBox(Lang::t('_CODE', 'standard'), 'col_sel_classroomcode', 'cols[]', '_TH_CLASSROOM_NAME', is_showed('_TH_CLASSROOM_NAME', $ref)) . Form::getCheckBox(Lang::t('_DATE_BEGIN', 'standard'), 'col_sel_classroomdatebegin', 'cols[]', '_TH_CLASSROOM_MIN_DATE', is_showed('_TH_CLASSROOM_MIN_DATE', $ref)) . Form::getCheckBox(Lang::t('_DATE_END', 'standard'), 'col_sel_classroomdateend', 'cols[]', '_TH_CLASSROOM_MAX_DATE', is_showed('_TH_CLASSROOM_MAX_DATE', $ref)) . '</div>' . Form::getCloseFieldset() . Form::getOpenFieldset($lang->def('_COURSE_FIELDS_INFO'), 'fieldset_course_fields') . Form::getCheckBox($glang->def('_COURSE_LANG_METHOD'), 'col_course_lang_method', 'cols[]', '_LANGUAGE', is_showed('_LANGUAGE', $ref)) . Form::getCheckBox($glang->def('_DIFFICULTY'), 'col_course_difficult', 'cols[]', '_DIFFICULT', is_showed('_DIFFICULT', $ref)) . Form::getCheckBox($glang->def('_DATE_BEGIN'), 'col_date_begin', 'cols[]', '_DATE_BEGIN', is_showed('_DATE_BEGIN', $ref)) . Form::getCheckBox($glang->def('_DATE_END'), 'col_date_end', 'cols[]', '_DATE_END', is_showed('_DATE_END', $ref)) . Form::getCheckBox($glang->def('_HOUR_BEGIN'), 'col_time_begin', 'cols[]', '_TIME_BEGIN', is_showed('_TIME_BEGIN', $ref)) . Form::getCheckBox($glang->def('_HOUR_END'), 'col_time_end', 'cols[]', '_TIME_END', is_showed('_TIME_END', $ref)) . Form::getCheckBox($glang->def('_MAX_NUM_SUBSCRIBE'), 'col_max_num_subscribe', 'cols[]', '_MAX_NUM_SUBSCRIBED', is_showed('_MAX_NUM_SUBSCRIBED', $ref)) . Form::getCheckBox($glang->def('_MIN_NUM_SUBSCRIBE'), 'col_min_num_subscribe', 'cols[]', '_MIN_NUM_SUBSCRIBED', is_showed('_MIN_NUM_SUBSCRIBED', $ref)) . Form::getCheckBox(Lang::t('_CREDITS', 'standard'), 'col_credits', 'cols[]', '_CREDITS', is_showed('_CREDITS', $ref)) . Form::getCheckBox($glang->def('_COURSE_PRIZE'), 'col_course_price', 'cols[]', '_PRICE', is_showed('_PRICE', $ref)) . Form::getCheckBox($glang->def('_COURSE_ADVANCE'), 'col_course_advance', 'cols[]', '_ADVANCE', is_showed('_ADVANCE', $ref)) . Form::getCheckBox($glang->def('_COURSE_TYPE'), 'col_course_type', 'cols[]', '_COURSE_TYPE', is_showed('_COURSE_TYPE', $ref)) . Form::getCheckBox($glang->def('_COURSE_AUTOREGISTRATION_CODE'), 'col_autoregistration_code', 'cols[]', '_AUTOREGISTRATION_CODE', is_showed('_AUTOREGISTRATION_CODE', $ref)) . Form::getCloseFieldset() . Form::getOpenFieldset($lang->def('_STATS_FIELDS_INFO'), 'fieldset_course_fields') . Form::getCheckBox($lang->def('_USER_STATUS_SUBS'), 'col_inscr', 'cols[]', '_INSCR', is_showed('_INSCR', $ref)) . Form::getCheckBox($lang->def('_MUSTBEGIN'), 'col_mustbegin', 'cols[]', '_MUSTBEGIN', is_showed('_MUSTBEGIN', $ref)) . Form::getCheckBox($lang->def('_USER_STATUS_BEGIN'), 'col_user_status_begin', 'cols[]', '_USER_STATUS_BEGIN', is_showed('_USER_STATUS_BEGIN', $ref)) . Form::getCheckBox($lang->def('_COMPLETED'), 'col_completecourse', 'cols[]', '_COMPLETECOURSE', is_showed('_COMPLETECOURSE', $ref)) . Form::getCheckBox($lang->def('_TOTAL_SESSION'), 'col_total_session', 'cols[]', '_TOTAL_SESSION', is_showed('_TOTAL_SESSION', $ref)) . Form::getBreakRow() . Form::getCheckBox($lang->def('_PERCENTAGE'), 'show_percent', 'show_percent', '1', $ref['show_percent']) . Form::getCloseFieldset(); cout($box->get(), 'content'); cout(Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('pre_filter', 'pre_filter', $lang->def('_SHOW_NOSAVE', 'report')) . Form::getButton('ok_filter', 'import_filter', $lang->def('_SAVE_BACK')) . Form::getButton('show_filter', 'show_filter', $lang->def('_SAVE_SHOW')) . Form::getButton('undo_filter', 'undo_filter', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm(), 'content'); cout('</div>', 'content'); //stdblock div break; case _SUBSTEP_USERS: //$aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->use_suspended = true; if (Get::req('is_updating', DOTY_INT, 0) > 0) { $ref['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false; } else { //maybe redoundant if (!isset($ref['all_users'])) { $ref['all_users'] = false; } if (!isset($ref['users'])) { $ref['users'] = array(); } $user_select->requested_tab = PEOPLEVIEW_TAB; $user_select->resetSelection($ref['users']); //$ref['users'] = array(); it should already have been set to void array, if non existent } if (isset($_POST['cancelselector'])) { Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { $elem_selected = $user_select->getSelection($_POST); $ref['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false; $ref['users'] = $elem_selected; Util::jump_to($jump_url . '&substep=columns_selection'); } //set page if ($org_chart_subdivision == 0) { $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; } else { $user_select->show_user_selector = FALSE; $user_select->show_group_selector = FALSE; } $user_select->show_orgchart_selector = TRUE; //$user_select->show_orgchart_simple_selector = FALSE; //$user_select->multi_choice = TRUE; $user_select->addFormInfo(Form::getCheckbox($lang->def('_REPORT_FOR_ALL'), 'all_users', 'all_users', 1, $ref['all_users'] ? 1 : 0) . Form::getBreakRow() . Form::getHidden('org_chart_subdivision', 'org_chart_subdivision', $org_chart_subdivision) . Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('substep', 'substep', 'user_selection') . Form::getHidden('second_step', 'second_step', 1)); cout($this->page_title, 'content'); $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), false, $this->lang->def('_CHOOSE_USER_FOR_REPORT'), true); break; } }
function modcatalogueassoc() { checkPerm('mod'); $lang =& DoceboLanguage::createInstance('catalogue', 'lms'); $acl_man =& Docebo::user()->getAclManager(); require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; $id_catalogue = importVar('id_catalogue', true, 0); $out =& $GLOBALS['page']; $user_select = new UserSelector(); $user_select->show_user_selector = FALSE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; $user_select->show_orgchart_simple_selector = TRUE; $user_select->multi_choice = TRUE; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_select->setUserFilter('user', $admin_users); $user_select->setUserFilter('group', $admin_tree); } if (isset($_POST['okselector'])) { $old_members = array(); $re_members = sql_query("\r\n\t\tSELECT idst_member\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_catalogue_member\r\n\t\tWHERE idCatalogue = '" . $id_catalogue . "'"); while (list($id_members) = sql_fetch_row($re_members)) { $old_members[$id_members] = $id_members; } $new_members = $user_select->getSelection($_POST); $to_add = array_diff($new_members, $old_members); $to_del = array_diff($old_members, $new_members); $re = true; $re &= addToCatologue($to_add, $id_catalogue); $re &= removeFromCatologue($to_del, $id_catalogue); Util::jump_to('index.php?modname=catalogue&op=catlist&result=' . ($re ? 'ok' : 'err')); } if (isset($_GET['load'])) { $members = array(); $re_members = sql_query("\r\n\t\tSELECT idst_member\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_catalogue_member\r\n\t\tWHERE idCatalogue = '" . $id_catalogue . "'"); while (list($id_members) = sql_fetch_row($re_members)) { $members[$id_members] = $id_members; } $user_select->resetSelection($members); } $title_area = getTitleArea(array('index.php?modname=catalogue&op=catlist' => $lang->def('_CATALOGUE'), getCatalogueName($id_catalogue)), 'catalogue'); $user_select->setPageTitle($title_area); $user_select->loadSelector('index.php?modname=catalogue&op=modcatalogueassoc&id_catalogue=' . $id_catalogue, $lang->def('_CATALOGUE'), $lang->def('_ASSIGN_USERS'), true); }
function savemembers() { checkPerm('subscribe'); require_once _base_ . '/lib/lib.userselector.php'; $id_group = importVar('id_group', true, 0); $acl_man = new DoceboACLManager(); $user_select = new UserSelector(); $user_selected = $user_select->getSelection($_POST); $old_users = $acl_man->getGroupUMembers($id_group); $add_members = array_diff($user_selected, $old_users); $del_members = array_diff($old_users, $user_selected); $re = true; if ($user_selected === $old_users) { Util::jump_to('index.php?modname=groups&op=groups&result=ok'); return; } if (count($add_members)) { while (list(, $idst_user) = each($add_members)) { $re &= $acl_man->addToGroup($id_group, $idst_user); } } if (count($del_members)) { while (list(, $idst_user) = each($del_members)) { $re &= $acl_man->removeFromGroup($id_group, $idst_user); } } if (!$re) { Util::jump_to('index.php?modname=groups&op=groups&result=err'); } Util::jump_to('index.php?modname=groups&op=groups&result=ok'); }
function editviewer() { checkPerm('mod'); require_once _base_ . '/lib/lib.userselector.php'; require_once _base_ . '/lib/lib.form.php'; $lang =& DoceboLanguage::createInstance('admin_news', 'lms'); $form = new Form(); $out =& $GLOBALS['page']; $out->setWorkingZone('content'); $id_news = importVar('id_news', true, 0); $page_title = array('index.php?modname=internal_news&op=news' => $lang->def('_NEWS'), $lang->def('_RECIPIENTS')); $acl_manager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; $user_select->show_orgchart_simple_selector = false; //$user_select->multi_choice = TRUE; $query_news = "\r\n\tSELECT title, viewer\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_news_internal\r\n\tWHERE idNews = '" . $id_news . "'"; list($title, $viewer) = sql_fetch_row(sql_query($query_news)); // try to load previous saved if (isset($_GET['load'])) { $viewer = unserialize($viewer); if (is_array($viewer)) { $user_select->resetSelection($viewer); } else { $user_select->resetSelection(array()); } } if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?modname=internal_news&op=news'); } if (isset($_POST['okselector'])) { $selected = $user_select->getSelection($_POST); $query_news = "\r\n\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_news_internal\r\n\t\tSET viewer = '" . serialize($selected) . "'\r\n\t\tWHERE idNews = '" . $id_news . "'"; $re = sql_query($query_news); Util::jump_to('index.php?modname=internal_news&op=news&result=' . ($re ? 'ok' : 'err')); } cout(getTitleArea($page_title, 'news') . '<div class="std_block">'); $user_select->addFormInfo($form->getHidden('id_news', 'id_news', $id_news)); $user_select->loadSelector('index.php?modname=internal_news&op=editviewer', false, false, true); cout('</div>'); }
function schedule_recipients($idrep) { checkPerm('mod'); $lang =& DoceboLanguage::createInstance('report', 'framework'); if (Get::req('schedule_undo', DOTY_MIXED, false)) { //$back_op = Get::req() $back_url = 'index.php?modname=report&op=schedulelist&idrep=' . $idrep; Util::jump_to($back_url); } $back_url = 'index.php?modname=report&op=report_schedule&idrep=' . $idrep; $jump_url = 'index.php?modname=report&op=report_schedule&idrep=' . $idrep; $end_url = 'index.php?modname=report&op=schedulelist&idrep=' . $idrep; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php'; require_once _base_ . '/lib/lib.userselector.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.report.php'; //require_once($GLOBALS['where_lms'].'/lib/lib.course.php'); $aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $lang =& DoceboLanguage::createInstance('report', 'framework'); if (!isset($_POST['is_updating'])) { //save filter, if needed require_once $GLOBALS['where_lms'] . '/lib/lib.report.php'; //save schedulation data in session if (!isset($_SESSION['schedule_tempdata'])) { $_SESSION['schedule_tempdata'] = array(); } switch ($_POST['cron_radio']) { case 'day': $sched_info = ''; break; case 'week': $sched_info = $_POST['cron_weekly']; break; case 'month': $sched_info = $_POST['cron_monthly']; break; default: $sched_info = ''; break; } $sched_time = ''; //$_POST['cron_hours'].':'.$_POST['cron_minutes'].':00'; $ref =& $_SESSION['schedule_tempdata']; $ref['name'] = $_POST['sched_name']; $ref['period'] = $_POST['cron_radio']; $ref['period_info'] = $sched_info; $ref['time'] = $sched_time; $user_select->resetSelection($ref['recipients']); } $save_schedule_failed = false; if (isset($_POST['cancelselector'])) { //Util::jump_to($back_url); Util::jump_to('index.php?modname=report&op=schedulelist&idrep=' . $idrep); } elseif (isset($_POST['okselector'])) { $ref =& $_SESSION['schedule_tempdata']; $entity_selected = $user_select->getSelection($_POST); //$_temp = $ref['recipients']; $_name = $ref['name']; $_time = $ref['time']; $_period = $ref['period'] . ',' . $ref['period_info']; //get current saved report ID from session (check if report is saved, otherwise -> error) if (isset($_SESSION['schedule_update'])) { $sched = report_update_schedulation($_SESSION['schedule_update'], $_name, $_period, $_time, $entity_selected); } else { $id_report = $idrep; //$_SESSION['report_saved_data']['id']; $sched = report_save_schedulation($id_report, $_name, $_period, $_time, $entity_selected); } if ($sched !== false) { //unset($_SESSION['schedule_tempdata']); Util::jump_to($end_url); } else { $save_schedule_failed = true; } } $error_info = ''; if ($save_schedule_failed) { //$page_title .= ''; //... //addforminfo $error_info = getErrorUi($lang->def('_OPERATION_FAILURE')); } //draw selector $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; $user_select->show_orgchart_simple_selector = false; cout(getTitleArea($lang->def('_SCHEDULE')), 'content'); //add beck url cout('<div class="std_block">', 'content'); //$user_select->setPageTitle($page_title); $user_select->addFormInfo(getBackUi($back_url, $lang->def('_BACK'), 'content') . Form::getHidden('next_step', 'next_step', 'sched_setrecipients') . Form::getHidden('is_updating', 'is_updating', 1)); $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), false, true); cout('</div>', 'content'); }
function modAssignmentAssignMetaCertificate() { checkPerm('mod'); require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php'; require_once _base_ . '/lib/lib.userselector.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php'; $lang =& DoceboLanguage::createInstance('certificate', 'lms'); $id_certificate = importVar('id_certificate', true, 0); $id_meta = Get::req('idmeta', DOTY_INT, 0); $step = Get::req('step', DOTY_INT, 0); $out =& $GLOBALS['page']; $out->setWorkingZone('content'); $acl_man =& Docebo::user()->getAclManager(); $aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $form = new Form(); $sel = new Course_Manager(); $course_man = new Man_Course(); if (isset($_POST['okselector'])) { $user_selected = $user_select->getSelection($_POST); $_SESSION['meta_certificate']['users'] = $user_selected; $step++; } if (isset($_POST['import_filter'])) { $_SESSION['meta_certificate']['course'] = $sel->getCourseSelection($_POST); $step++; } if (isset($_POST['insert'])) { $step++; } if ($step == 3) { $array_user =& $aclManager->getAllUsersFromIdst($_SESSION['meta_certificate']['users']); $array_user = array_unique($array_user); $res = true; $user_reset = array(); $course_reset = array(); $reasign = array(); //array reasign $query = "SELECT idUser, idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); while (list($id_user, $id_course) = sql_fetch_row($result)) { $reasign[$id_user][$id_course] = 1; } //array user_reset $query = "SELECT DISTINCT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); while (list($id_user) = sql_fetch_row($result)) { $user_reset[$id_user] = $id_user; } //array course_reset $query = "SELECT DISTINCT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); while (list($id_course) = sql_fetch_row($result)) { $course_reset[$id_course] = $id_course; } //finish array initialization $query_course = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_certificate_meta_course (idMetaCertificate, idUser, idCourse)" . " VALUES "; $first = true; $array_user_flipped = array_flip($array_user); foreach ($user_reset as $id_user) { if (!isset($array_user_flipped[$id_user])) { $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idUser = '******'" . " AND idMetaCertificate = '" . $id_meta . "'"; if (!sql_query($query)) { $res = false; } } } if (!$res) { Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign'); } foreach ($course_reset as $id_course) { if (!isset($_SESSION['meta_certificate']['course'][$id_course])) { $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idCourse = '" . $id_course . "'" . " AND idMetaCertificate = '" . $id_meta . "'"; if (!sql_query($query)) { $res = false; } } } if (!$res) { Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign'); } reset($_SESSION['meta_certificate']['course']); foreach ($array_user as $id_user) { foreach ($_SESSION['meta_certificate']['course'] as $id_course) { if (isset($_POST['_' . $id_user . '_' . $id_course . '_'])) { if (!isset($reasign[$id_user][$id_course])) { if ($first) { $query_course .= "('" . $id_meta . "', '" . $id_user . "', '" . $id_course . "')"; $first = false; } else { $query_course .= ", ('" . $id_meta . "', '" . $id_user . "', '" . $id_course . "')"; } } } else { if (isset($reasign[$id_user][$id_course])) { $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idUser = '******'" . " AND idCourse = '" . $id_course . "'" . " AND idMetaCertificate = '" . $id_meta . "'"; if (!sql_query($query)) { $res = false; } } } } } if (!$res) { Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign'); } $res = sql_query($query_course); if ($res) { Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=ok'); } else { Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign'); } } elseif ($step == 2) { YuiLib::load(); Util::get_js(Get::rel_path('base') . '/lib/js_utils.js', true, true); $tb = new Table(0, $lang->def('_META_CERTIFICATE_NEW_ASSIGN_CAPTION'), $lang->def('_META_CERTIFICATE_NEW_ASSIGN_SUMMARY')); $tb->setLink('index.php?modname=meta_certificate&op=modassignment'); $out->add(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">' . $form->openForm('new_assign_step_2', 'index.php?modname=meta_certificate&op=modassignment') . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('step', 'step', 2) . $form->getHidden('reasign', 'reasign', 1)); $reasign = array(); if (!isset($_POST['reasign'])) { $query = "SELECT idUser, idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); while (list($id_user, $id_course) = sql_fetch_row($result)) { $reasign[$id_user][$id_course] = 1; } } $form_name = 'new_assign_step_2'; $type_h = array('', ''); $cont_h = array($lang->def('_FULLNAME'), $lang->def('_USERNAME')); foreach ($_SESSION['meta_certificate']['course'] as $id_course) { $type_h[] = 'align_center'; $course_info = $course_man->getCourseInfo($id_course); $cont_h[] = $course_info['code'] . ' - ' . $course_info['name']; } $type_h[] = 'image'; $cont_h[] = $lang->def('_CHECKALL'); $type_h[] = 'image'; $cont_h[] = $lang->def('_UNCHECKALL'); $tb->setColsStyle($type_h); $tb->addHead($cont_h); reset($_SESSION['meta_certificate']['course']); $array_user =& $aclManager->getAllUsersFromIdst($_SESSION['meta_certificate']['users']); $array_user = array_unique($array_user); $query = "SELECT idst" . " FROM " . $GLOBALS['prefix_fw'] . "_user" . " WHERE idst IN (" . implode(',', $array_user) . ")" . " ORDER BY userid"; $result = sql_query($query); $array_user = array(); while (list($id_user) = sql_fetch_row($result)) { $array_user[] = $id_user; } foreach ($array_user as $id_user) { $cont = array(); $user_info = $acl_man->getUser($id_user, false); $cont[] = $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME]; $cont[] = $acl_man->relativeId($user_info[ACL_INFO_USERID]); foreach ($_SESSION['meta_certificate']['course'] as $id_course) { if (isset($_POST['_' . $id_user . '_' . $id_course . '_']) || isset($_POST['select_all']) || isset($reasign[$id_user][$id_course])) { $checked = true; } else { $checked = false; } $cont[] = $form->getCheckbox('', '_' . $id_user . '_' . $id_course . '_', '_' . $id_user . '_' . $id_course . '_', 1, $checked); } $cont[] = '<a href="javascript:;" onclick="checkall_fromback_meta(\'' . $form_name . '\', \'' . $id_user . '\', true); return false;">' . $lang->def('_CHECKALL') . '</a>'; $cont[] = '<a href="javascript:;" onclick="checkall_fromback_meta(\'' . $form_name . '\', \'' . $id_user . '\', false); return false;">' . $lang->def('_UNCHECKALL') . '</a>'; $tb->addBody($cont); } reset($_SESSION['meta_certificate']['course']); $cont = array(); $cont[] = ''; $cont[] = ''; foreach ($_SESSION['meta_certificate']['course'] as $id_course) { $cont[] = '<a href="javascript:;" onclick="checkall_meta(\'' . $form_name . '\', \'' . $id_course . '\', true); return false;">' . $lang->def('_CHECKALL') . '</a><br/>' . '<a href="javascript:;" onclick="checkall_meta(\'' . $form_name . '\', \'' . $id_course . '\', false); return false;">' . $lang->def('_UNCHECKALL') . '</a>'; } $cont[] = ''; $cont[] = ''; $tb->addBody($cont); $out->add($form->openElementSpace() . $tb->getTable() . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('select_all', 'select_all', $lang->def('_SELECT_ALL')) . $form->getButton('insert', 'insert', $lang->def('_INSERT')) . $form->getButton('undo_assign', 'undo_assign', $lang->def('_UNDO')) . $form->closeButtonSpace() . $form->closeForm()); } elseif ($step == 1) { $sel->setLink('index.php?modname=meta_certificate&op=modassignment'); $out->add(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">' . $form->openForm('new_assign_step_1', 'index.php?modname=meta_certificate&op=modassignment') . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('step', 'step', 1) . $form->getHidden('course_reload', 'course_reload', 1)); if (!isset($_POST['course_reload'])) { $query = "SELECT DISTINCT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); $course_reset = array(); while (list($id_course) = sql_fetch_row($result)) { $course_reset[$id_course] = $id_course; } $sel->resetCourseSelection($course_reset); } $sel->loadSelector(); $out->add(Form::getHidden('update_tempdata', 'update_tempdata', 1) . Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('ok_filter', 'import_filter', $lang->def('_NEXT')) . Form::getButton('undo_filter', 'undo_filter', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>'); } else { $user_select->show_orgchart_simple_selector = FALSE; $user_select->multi_choice = TRUE; $user_select->addFormInfo($form->getHidden('step', 'step', 0) . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('user_reload', 'user_reload', 1)); $user_select->setPageTitle(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">'); if (!isset($_POST['user_reload'])) { $query = "SELECT DISTINCT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'"; $result = sql_query($query); $user_reset = array(); while (list($id_user) = sql_fetch_row($result)) { $user_reset[$id_user] = $id_user; } $user_select->resetSelection($user_reset); } $user_select->loadSelector('index.php?modname=meta_certificate&op=modassignment', false, $lang->def('_USER_FOR_META_CERTIFICATE_ASSIGN'), true); } }
public function assignmembers() { $id = Get::req('id_group', DOTY_INT, -1); $base_url = 'index.php?r=adm/groupmanagement/'; $back_url = $base_url . 'show_users&id=' . (int) $id; $jump_url = $base_url . 'assignmembers'; $next_url = $base_url . 'show_users&id=' . (int) $id; //check permissions: we should have add privileges to create groups if (!$this->permissions['associate_user']) { Util::jump_to($back_url); } if ($id > 0) { $acl = Docebo::user()->getAclManager(); $selector = new UserSelector(); $cancel = Get::req('cancelselector', DOTY_MIXED, false); $save = Get::req('okselector', DOTY_MIXED, false); if ($cancel) { Util::jump_to($back_url); } elseif ($save) { $selection = $selector->getSelection($_POST); $res = $this->model->saveGroupMembers($id, $selection); // apply rules $enrollrules = new EnrollrulesAlms(); $enrollrules->applyRulesMultiLang('_LOG_USERS_TO_GROUP', $selection, false, $id); Util::jump_to($next_url . ($res ? '&res=ok_assignuser' : '&res=err_assignuser')); } else { $selector->show_user_selector = TRUE; $selector->show_group_selector = TRUE; $selector->show_orgchart_selector = TRUE; $selector->show_fncrole_selector = FALSE; $group = $this->model->getGroupInfo($id, true); if (Get::req('is_updating', DOTY_INT, false)) { } else { $members = $this->model->getGroupMembers($id); $selector->requested_tab = PEOPLEVIEW_TAB; $selector->resetSelection($members); } $selector->addFormInfo(Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('id_group', 'id_group', $id)); $sel_title = array('index.php?r=adm/groupmanagement/show' => Lang::t('_GROUPS', 'admin_directory'), 'index.php?r=adm/groupmanagement/show_users&id=' . $id => Lang::t('_ASSIGN_USERS', 'admin_directory') . ': ' . Docebo::aclm()->relativeId($group->groupid), Lang::t('_ADD', 'admin_directory')); $selector->loadSelector(Util::str_replace_once('&', '&', $jump_url), $sel_title, '', true); } } else { } }
function select_permission() { checkPerm('view'); require_once $GLOBALS['where_lms'] . '/lib/lib.middlearea.php'; require_once _base_ . '/lib/lib.userselector.php'; require_once _base_ . '/lib/lib.form.php'; $lang =& DoceboLanguage::createInstance('middlearea', 'lms'); $obj_index = importVar('obj_index', false, ''); // first step load selector $man_ma = new Man_MiddleArea(); $acl_manager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; $user_select->show_orgchart_simple_selector = false; //$user_select->multi_choice = TRUE; // try to load previous saved if (isset($_GET['load'])) { $selected = $man_ma->getObjIdstList($obj_index); if (is_array($selected)) { $user_select->resetSelection($selected); } } if (isset($_POST['okselector'])) { $selected = $user_select->getSelection($_POST); $re = $man_ma->setObjIdstList($obj_index, $selected); Util::jump_to('index.php?modname=middlearea&op=view_area&result=' . ($re ? 'ok' : 'err')); } cout(getTitleArea(array('index.php?modname=middlearea&op=view_area' => $lang->def('_MIDDLE_AREA'), Lang::t('_VIEW_PERMISSION', 'standard')), 'middlearea') . '<div class="std_block">'); $user_select->addFormInfo(Form::getHidden('obj_index', 'obj_index', $obj_index)); $user_select->loadSelector('index.php?modname=middlearea&op=select_permission', false, false, true); cout('</div>'); }
function modassessadmin(&$url) { checkPerm('subscribe'); $id_assessment = importVar('id_assess', true, 0); require_once $GLOBALS['where_lms'] . '/lib/lib.preassessment.php'; $assess_man = new AssessmentList(); $info = $assess_man->getAssessment($id_assessment); $lang =& DoceboLanguage::createInstance('preassessment'); require_once _base_ . '/lib/lib.userselector.php'; require_once _base_ . '/lib/lib.form.php'; // instance assessment ================================================= $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; if (isset($_POST['okselector'])) { $selected = $user_select->getSelection($_POST); if (!$assess_man->updateAssessmentUser($id_assessment, USER_ASSES_TYPE_ADMIN, $selected)) { Util::jump_to($url->getUrl('result=error_assign')); } else { Util::jump_to($url->getUrl('result=ok_assign')); } } if (isset($_GET['load'])) { $user_select->requested_tab = PEOPLEVIEW_TAB; $selected = $assess_man->getAssessmentAdministrator($id_assessment); $user_select->resetSelection($selected); } $user_select->addFormInfo(Form::getHidden('id_assess', 'id_assess', $id_assessment)); $user_select->setPageTitle(getTitleArea(array($url->getUrl() => $lang->def('_ASSESSMENT'), $lang->def('_ASSIGN_ADMIN_TITLE') . ': ' . strip_tags($info['name'])), 'preassessment')); $user_select->loadSelector($url->getUrl('op=modassessadmin'), false, false, true); }
public function cataloguesubscribeusersTask() { require_once _adm_ . '/lib/lib.directory.php'; require_once _adm_ . '/class.module/class.directory.php'; require_once _lms_ . '/lib/lib.course.php'; require_once _lms_ . '/lib/lib.edition.php'; require_once _lms_ . '/lib/lib.date.php'; $acl_man =& Docebo::user()->getAclManager(); $edition_man = new EditionManager(); $date_man = new DateManager(); $id_catalogue = Get::req('id_catalogue', DOTY_INT, 0); $back_url = 'index.php?modname=catalogue&op=catlist&of_platform=lms'; $jump_url = 'index.php?r=' . $this->link . '/cataloguesubscribeusers'; //if we are a subadmin, check which courses/catalogues we can see $can_see_catalogue = true; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_courses = $adminManager->getAdminCourse(Docebo::user()->getIdST()); $all_courses = false; if (isset($admin_courses['course'][0])) { $all_courses = true; } if (isset($admin_courses['course'][-1])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); $admin_courses['catalogue'] = $cat_man->getUserAllCatalogueId(Docebo::user()->getIdSt()); if (count($admin_courses['catalogue']) == 0 && Get::sett('on_catalogue_empty', 'off') == 'on') { $all_courses = true; } } if (!isset($admin_courses['catalogue'][$id_catalogue])) { $can_see_catalogue = false; } } //invalid specified catalogue if ($id_catalogue <= 0 || !$can_see_catalogue) { $this->render('invalid', array('message' => Lang::t('_INVALID_CATALOGUE', 'subscribe'), 'back_url' => $back_url)); return; } //check if the selected catalogue has any courses $courses_list = $this->_getCatalogueCourses($id_catalogue, isset($admin_courses['course']) ? $admin_courses['course'] : false); if (count($courses_list) <= 0) { $this->render('invalid', array('message' => Lang::t('_NO_COURSES_IN_THE_CATALOGUE', 'subscribe'), 'back_url' => $back_url)); return; } $name = $this->_getCatalogueName($id_catalogue); if (isset($_POST['cancelselector'])) { //--- UNDO: return to catalogue list ------------------------------------- Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { //--- USERS SELECTION IS CONFIRMED: now select editions (if any) --------- //check user selection $_selector = new UserSelector(); $json = new Services_JSON(); $_entity_selected = $_selector->getSelection($_POST); $user_selected =& $acl_man->getAllUsersFromSelection($_entity_selected); //free some memory from garbage variables unset($_selector); unset($_entity_selected); //if no user selected, than give invalid screen if (!is_array($user_selected) || count($user_selected) <= 0) { $this->render('invalid', array('message' => Lang::t('_EMPTY_SELECTION', 'subscribe'), 'back_url' => $back_url)); return; } //extract editions info data by courses $editions_list = $edition_man->getEditionsInfoByCourses(array_keys($courses_list), true); //extract editions info data by courses $classrooms_list = $date_man->getDatesInfoByCourses(array_keys($courses_list), true); $tables = array('editions' => false, 'classrooms' => false); //check if the catalogue has editions; if any, than set the editions selector if (count($editions_list) > 0 || count($classrooms_list) > 0) { //set title $page_title_arr = array($back_url => Lang::t('_SUBSCRIBE', 'subscribe'), $name, Lang::t('_SUBSCRIBE', 'subscribe')); if (count($editions_list) > 0) { //instantiate a new table for editions selection require_once _base_ . '/lib/lib.table.php'; $tb = new Table(0, Lang::t('_CATALOGUE_SUBSCRIBE_CHOOSE_EDITIONS', 'subscribe'), Lang::t('_CATALOGUE_SUBSCRIBE_CHOOSE_EDITIONS', 'subscribe')); $head_style = array('align_center', '', 'align_center'); $head_label = array(Lang::t('_COURSE_CODE', 'course'), Lang::t('_COURSE_NAME', 'course'), Lang::t('_CLASSROOM_EDITION', 'course')); $tb->addHead($head_label, $head_style); //set table rows foreach ($editions_list as $id_course => $editions) { $line = array(); $cinfo = $courses_list[$id_course]; $line[] = $cinfo->code; $line[] = $cinfo->name; //create the dropdown with the editions for every course $_dropdown = array(); foreach ($editions as $id_edition => $ed_info) { $_line_content = ''; //print begin and end date if ($ed_info->date_begin != '') { $_line_content .= '[' . $ed_info->code . '] ' . $ed_info->name . ' ' . '(' . Format::date($ed_info->date_begin, 'date') . ' - ' . Format::date($ed_info->date_end, 'date') . ')'; } //check if the string is valid if ($_line_content == '') { //... } //add to dropdown list and sort the list alphabetically $_dropdown[$id_edition] = $_line_content; asort($_dropdown); } $line[] = Form::getInputDropdown('dropdown', 'sel_editions_' . $id_course, 'sel_editions[' . $id_course . ']', $_dropdown, false, ''); $tb->addBody($line); } $tables['editions'] = $tb; } if (count($classrooms_list) > 0) { //instantiate a new table for editions selection require_once _base_ . '/lib/lib.table.php'; $tb = new Table(0, Lang::t('_COURSE_TYPE_EDITION', 'course'), Lang::t('_CLASSROOM', 'standard')); $head_style = array('align_center', '', 'align_center'); $head_label = array(Lang::t('_COURSE_CODE', 'course'), Lang::t('_COURSE_NAME', 'course'), Lang::t('_CLASSROOM_EDITION', 'course')); $tb->addHead($head_label, $head_style); //set table rows foreach ($classrooms_list as $id_course => $classrooms) { $line = array(); $cinfo = $courses_list[$id_course]; $line[] = $cinfo->code; $line[] = $cinfo->name; //create the dropdown with the editions for every course $_dropdown = array(); foreach ($classrooms as $id_date => $cl_info) { $_line_content = ''; //print begin and end date if ($cl_info->date_begin != '') { $_line_content .= '[' . $cl_info->code . '] ' . $cl_info->name . ' ' . '(' . Format::date($cl_info->date_begin, 'date') . ' - ' . Format::date($cl_info->date_end, 'date') . ')'; } //check if the string is valid if ($_line_content == '') { //... } //add to dropdown list and sort the list alphabetically $_dropdown[$id_date] = $_line_content; asort($_dropdown); } $line[] = Form::getInputDropdown('dropdown', 'sel_classrooms_' . $id_course, 'sel_classrooms[' . $id_course . ']', $_dropdown, false, ''); $tb->addBody($line); } $tables['classrooms'] = $tb; } $this->render('catalogue_editions', array('id_catalogue' => $id_catalogue, 'page_title_arr' => $page_title_arr, 'num_users_selected' => count($user_selected), '_sel_users' => $json->encode($user_selected), 'tables' => $tables)); } else { //no editions in the catalogue's courses, call the save operation directly $data = array(); foreach ($user_selected as $user) { foreach ($courses_list as $idCourse => $course) { $data[] = array($user, $idCourse, false, false); } } $num_subscribed = $this->_subscribeUsersToCatalogue($data); Util::jump_to($back_url . '&res=' . $num_subscribed); //_operation_successful } } else { //--- USER SELECTION IS IN PROGRESS: show selector ----------------------- $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; //$user_select->show_orgchart_simple_selector = TRUE; //filter selectable user by sub-admin permission $user_select->setUserFilter('exclude', array($this->acl_man->getAnonymousId())); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $this->acl_man->getAllUsersFromIdst($admin_tree); $user_select->setUserFilter('user', $admin_users); $user_select->setUserFilter('group', $admin_tree); } if (Get::req('is_updating', DOTY_INT, false)) { //... } else { $user_select->requested_tab = PEOPLEVIEW_TAB; $user_select->resetSelection(); } $page_title_arr = array($back_url => Lang::t('_SUBSCRIBE', 'subscribe'), $name, Lang::t('_SUBSCRIBE', 'subscribe')); $user_select->addFormInfo(Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('id_catalogue', 'id_catalogue', $id_catalogue)); //$user_select->setPageTitle($page_title_arr); //$user_select->resetSelection($_SESSION['report_tempdata']['rows_filter']['users']); $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), $page_title_arr, false, true); } }
function assignuser() { $id = Get::req('id', DOTY_INT, -1); $base_url = 'index.php?r=' . $this->link . '/'; $back_url = $base_url . 'show'; $jump_url = $base_url . 'assignuser'; $next_url = $base_url . 'show'; //check permissions if (!$this->permissions['associate_user']) { Util::jump_to($back_url); } if ($id > 0) { require_once _adm_ . '/lib/lib.directory.php'; require_once _adm_ . '/class.module/class.directory.php'; $aclm = Docebo::user()->getAclManager(); $selector = new UserSelector(); $selector->use_suspended = true; $cancel = Get::req('cancelselector', DOTY_MIXED, false); $save = Get::req('okselector', DOTY_MIXED, false); if ($cancel) { Util::jump_to($back_url); } elseif ($save) { $selection = $selector->getSelection($_POST); $res = $this->model->assignUsers($id, $selection); if ($res) { $enrollrules = new EnrollrulesAlms(); $enrollrules->applyRulesMultiLang('_LOG_USERS_TO_ORGCHART', $selection, $id); } Util::jump_to($next_url . ($res ? '&res=ok_assignuser' : '&res=err_assignuser')); } else { $selector->show_user_selector = true; $selector->show_group_selector = false; $selector->show_orgchart_selector = false; $selector->show_fncrole_selector = false; if (Get::req('is_updating', DOTY_INT, false)) { } else { $members = $this->model->getFolderUsers($id); $selector->requested_tab = PEOPLEVIEW_TAB; $selector->resetSelection($members); } $selector->addFormInfo(Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('id', 'id', $id)); $selector->loadSelector(Util::str_replace_once('&', '&', $jump_url), array('index.php?r=' . $this->link . '/show' => Lang::t('_ORG_CHART', 'organization_chart'), Lang::t('_ASSIGN_USERS', 'organization_chart')), false, true); } } else { Util::jump_to($back_url); } }
function addsubscription() { checkPerm('subscribe'); require_once _base_ . '/lib/lib.form.php'; require_once _adm_ . '/class.module/class.directory.php'; require_once _lms_ . '/lib/lib.subscribe.php'; require_once _lms_ . '/lib/lib.coursepath.php'; $id_path = importVar('id_path', true, 0); $lang =& DoceboLanguage::createInstance('coursepath', 'lms'); $out =& $GLOBALS['page']; $acl_man =& Docebo::user()->getAclManager(); if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?modname=coursepath&op=pathlist'); } $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; $user_select->show_orgchart_simple_selector = TRUE; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_select->setUserFilter('user', $admin_users); $user_select->setUserFilter('group', $admin_tree); } $query_pathlist = "\r\n\tSELECT path_name, subscribe_method\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursepath\r\n\tWHERE id_path = '" . $id_path . "'\r\n\tORDER BY path_name "; list($path_name, $subscribe_method) = sql_fetch_row(sql_query($query_pathlist)); if (isset($_GET['load'])) { $cp_man = new CoursePath_Manager(); $users = $cp_man->getSubscribed($id_path); $user_select->resetSelection($users); } if (isset($_POST['okselector'])) { $acl_manager = new DoceboACLManager(); $user_selected = $user_select->getSelection($_POST); $user_selected =& $acl_manager->getAllUsersFromIdst($user_selected); $user_selected = array_unique($user_selected); $cp_man = new CoursePath_Manager(); $users = $cp_man->getSubscribed($id_path); $user_selected = array_diff($user_selected, $users); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_selected = array_intersect($user_selected, $admin_users); } if (empty($user_selected)) { Util::jump_to('index.php?modname=coursepath&op=pathlist'); } $cpath_man = new CoursePath_Manager(); $subs_man = new CourseSubscribe_Management(); $courses = $cpath_man->getAllCourses(array($id_path)); require_once $GLOBALS['where_lms'] . '/lib/lib.coursepath.php'; $course_man = new Man_Course(); $classroom = $course_man->getAllCourses(false, 'classroom', $courses); $edition = $course_man->getAllCourses(false, 'edition', $courses); if (!empty($classroom) || !empty($edition)) { $user_selected_post = urlencode(serialize($user_selected)); cout(getTitleArea(array('index.php?modname=coursepath&op=pathlist' => $lang->def('_COURSEPATH'), $path_name), 'coursepath') . '<div class="std_block">' . Form::openForm('edition_selection_form', 'index.php?modname=coursepath&op=addsubscriptionedition&id_path=' . $id_path) . Form::getHidden('users', 'users', $user_selected_post)); if (!empty($classroom)) { require_once _lms_ . '/lib/lib.date.php'; $date_man = new DateManager(); foreach ($classroom as $id_course => $info) { $editions = $date_man->getCourseDate($id_course, true); $edition_for_dropdown = array(); $edition_for_dropdown[0] = Lang::t('_NONE', 'coursepath'); foreach ($editions as $editions_info) { $edition_for_dropdown[$editions_info['id_date']] = $editions_info['code'] . ' - ' . $editions_info['name'] . ' - ' . Format::date($editions_info['date_begin'], 'date') . ' - ' . Format::date($editions_info['date_end'], 'date'); } cout(Form::getDropdown(Lang::t('_EDITION_SELECTION', 'coursepath') . ' : ' . $info['code'] . ' - ' . $info['name'], 'classroom_' . $id_course, 'classroom_' . $id_course, $edition_for_dropdown)); } } if (!empty($edition)) { require_once _lms_ . '/lib/lib.edition.php'; $edition_man = new EditionManager(); foreach ($edition as $id_course => $info) { $editions = $edition_man->getEditionsInfoByCourses($id_course); $edition_for_dropdown = array(); $edition_for_dropdown[0] = Lang::t('_NONE', 'coursepath'); foreach ($editions[$id_course] as $editions_info) { $edition_for_dropdown[$editions_info['id_edition']] = $editions_info['code'] . ' - ' . $editions_info['name'] . ' - ' . Format::date($editions_info['date_begin'], 'date') . ' - ' . Format::date($editions_info['date_end'], 'date'); } cout(Form::getDropdown(Lang::t('_EDITION_SELECTION', 'coursepath') . ' : ' . $info['code'] . ' - ' . $info['name'], 'edition_' . $id_course, 'edition_' . $id_course, $edition_for_dropdown)); } } cout(Form::openButtonSpace() . Form::getButton('save', 'save', Lang::t('_SAVE', 'coursepath')) . Form::getButton('undo', 'undo', Lang::t('_UNDO', 'coursepath')) . Form::closeButtonSpace() . Form::closeForm() . '</div>'); } else { $re = true; if ($subscribe_method != 1 && !checkPerm('moderate', true)) { $waiting = 1; } else { $waiting = 0; } $users_subsc = array(); require_once $GLOBALS['where_lms'] . '/lib/lib.coursepath.php'; $course_man = new Man_Course(); $assessment = $course_man->getAllCourses(false, 'assessment', $courses); while (list(, $id_user) = each($user_selected)) { $text_query = "\r\n\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_coursepath_user\r\n\t\t\t\t( id_path, idUser, waiting, subscribed_by ) VALUES\r\n\t\t\t\t( '" . $id_path . "', '" . $id_user . "', '" . $waiting . "', '" . getLogUserId() . "' )"; $re_s = sql_query($text_query); if ($re_s == true) { $users_subsc[] = $id_user; } $re &= $re_s; foreach ($assessment as $id_assessment => $assessment_info) { sql_query("INSERT INTO %lms_assessment_user (id_assessment, id_user, type_of) VALUES ('" . $id_assessment . "', '" . $id_user . "', 'user')"); } } // now subscribe user to all the course if ($waiting == 0) { $re &= $subs_man->multipleSubscribe($users_subsc, $courses, 3); } Util::jump_to('index.php?modname=coursepath&op=pathlist&result=' . ($re ? 'ok' : 'err')); } } else { $user_select->setPageTitle(getTitleArea(array('index.php?modname=coursepath&op=pathlist' => $lang->def('_COURSEPATH'), $path_name), 'coursepath')); $user_select->loadSelector('index.php?modname=coursepath&op=addsubscription&id_path=' . $id_path, $lang->def('_SUBSCRIBE'), false, true); } }
public function assign_users() { //check permissions if (!$this->permissions['associate_user']) { Util::jump_to('index.php?r=' . $this->base_link_competence . '/show'); } require_once _adm_ . '/lib/lib.directory.php'; require_once _adm_ . '/class.module/class.directory.php'; //read inputs $id_competence = Get::req('id_competence', DOTY_INT, -1); if ($id_competence <= 0) { $this->render('invalid', array('message' => $this->_getErrorMessage("invalid competence"), 'back_url' => 'index.php?r=' . $this->base_link_competence . '/show')); return; } //navigation urls $back_url = 'index.php?r=' . $this->base_link_competence . '/show_users&id=' . (int) $id_competence; $jump_url = 'index.php?r=' . $this->base_link_competence . '/assign_users&id=' . (int) $id_competence; //competence details $info = $this->model->getCompetenceInfo($id_competence); $name = $this->model->getCompetenceName($id_competence); //page_title $page_title_arr = array($back_url => Lang::t('_COMPETENCES', 'competences'), $name, Lang::t('_ASSIGN_USERS', 'competences')); if (isset($_POST['cancelselector'])) { //--- UNDO: return to catalogue list ------------------------------------- Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { //--- SAVE: users selection has been done -------------------------------- $acl_man = Docebo::user()->getAclManager(); $user_selector = new UserSelector(); $selection = $user_selector->getSelection($_POST); $users_selected =& $acl_man->getAllUsersFromIdst($selection); $competence_users = $this->model->getCompetenceUsers($id_competence, true); $users_existent = array_keys($competence_users); //retrieve newly selected users $_common_users = array_intersect($users_existent, $users_selected); $_new_users = array_diff($users_selected, $_common_users); $_old_users = array_diff($users_existent, $_common_users); unset($_common_users); //free some memory //if no users to add: check removed users (if any) then go back if (empty($_new_users)) { $res = $this->model->removeCompetenceUsers($id_competence, $_old_users, true); $message = $res ? 'ok_assign' : 'err_assign'; Util::jump_to('index.php?r=' . $this->base_link_competence . '/show_users&id=' . (int) $id_competence . '&res=' . $message); } //assign scores, if the competence type is 'score' (otherwise assign directly score 1 and go back) $type = $info->type; if ($type == 'score') { require_once _base_ . '/lib/lib.table.php'; $table = new Table(); $head_label = array(); $head_style = array(); $head_label[] = Lang::t('_USERNAME', 'standard'); $head_label[] = Lang::t('_NAME'); $head_label[] = Lang::t('_SCORE', 'competences'); $head_style[] = ''; $head_style[] = ''; $head_style[] = 'img-cell'; $table->addHead($head_label, $head_style); $user_model = new UsermanagementAdm(); $_user_data = $user_model->getUsersDetails($_new_users, true, true); $_std_score = 0; foreach ($_new_users as $id_user) { if (isset($_user_data[$id_user]) && is_object($_user_data[$id_user])) { $line = array(); $line[] = $acl_man->relativeId($_user_data[$id_user]->userid); $line[] = $_user_data[$id_user]->lastname . " " . $_user_data[$id_user]->firstname; $line[] = Form::getInputTextfield('textfield', 'assign_score_' . $id_user, 'assign_score[' . $id_user . ']', $_std_score, '', 255, ''); $table->addBody($line); } } $foot = array(); $foot[] = array('label' => '<b>' . Lang::t('_TOTAL', 'standard') . ': ' . count($_new_users) . '</b>', 'colspan' => 2); $foot[] = Form::getInputTextfield('textfield', '_score_', '_score_', $_std_score, '', 255, '') . '<br />' . Form::getButton('set_score', false, Lang::t('_SET', 'standard')) . Form::getButton('reset_score', false, Lang::t('_RESET', 'standard')); $table->addFoot($foot); $this->render('users_assign', array('id_competence' => $id_competence, 'title' => $page_title_arr, 'type' => $type, 'form_url' => 'index.php?r=' . $this->base_link_competence . '/assign_users_action', 'table' => $table, 'score_std_value' => $_std_score, 'del_selection' => implode(",", $_old_users))); } else { $data = array(); foreach ($_new_users as $id_user) { $data[$id_user] = 1; } $res1 = $this->model->assignCompetenceUsers($id_competence, $data, true); $res2 = $this->model->removeCompetenceUsers($id_competence, $_old_users, true); $message = $res1 && $res2 ? 'ok_assign' : 'err_assign'; Util::jump_to('index.php?r=' . $this->base_link_competence . '/show_users&id=' . (int) $id_competence . '&res=' . $message); } } else { //--- USER SELECTION IS IN PROGRESS: show selector ----------------------- $user_selector = new UserSelector(); $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = TRUE; $user_selector->show_orgchart_selector = TRUE; $user_selector->show_fncrole_selector = TRUE; //$user_select->show_orgchart_simple_selector = TRUE; //filter selectable user by sub-admin permission $acl_man = Docebo::user()->getAclManager(); $user_selector->setUserFilter('exclude', array($acl_man->getAnonymousId())); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_selector->setUserFilter('user', $admin_users); $user_selector->setUserFilter('group', $admin_tree); } if (Get::req('is_updating', DOTY_INT, false)) { //... } else { //set initial selection $selection = $this->model->getCompetenceUsers($id_competence); $user_selector->requested_tab = PEOPLEVIEW_TAB; $user_selector->resetSelection($selection); } $user_selector->addFormInfo(Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('id_competence', 'id_competence', $id_competence)); //draw selector $user_selector->loadSelector(Util::str_replace_once('&', '&', $jump_url), $page_title_arr, false, true); } }
public function add_admin() { $idst = Get::req('idst', DOTY_INT, 0); require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; $user_selector = new UserSelector(); if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?r=adm/adminrules/admin_manage&idst=' . $idst); } if (isset($_POST['okselector'])) { $user_selected = $user_selector->getSelection($_POST); $user_alredy_subscribed = $this->model->loadUserSelectorSelection($idst); $user_selected = array_diff($user_selected, $user_alredy_subscribed); if (count($user_selected) == 0) { Util::jump_to('index.php?r=adm/adminrules/add_admin&load=1&idst=' . $idst); } if ($this->model->saveNewAdmin($idst, $user_selected)) { Util::jump_to('index.php?r=adm/adminrules/admin_manage&idst=' . $idst . '&res=ok_ins'); } Util::jump_to('index.php?r=adm/adminrules/admin_manage&idst=' . $idst . '&res=err_ins'); } else { $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = FALSE; $user_selector->show_orgchart_selector = FALSE; if (isset($_GET['load'])) { $user_selector->requested_tab = PEOPLEVIEW_TAB; $user_alredy_subscribed = $this->model->loadUserSelectorSelection($idst); $user_selector->resetSelection($user_alredy_subscribed); } $user_selector->setUserFilter('exclude', array($this->acl_man->getAnonymousId())); $arr_idst = $this->acl_man->getGroupsIdstFromBasePath('/framework/level/admin'); $user_selector->setUserFilter('group', $arr_idst); $this->render('add_admin', array('idst' => $idst, 'user_selector' => $user_selector, 'model' => $this->model)); } }
function assignTree() { require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; $lang =& DoceboLanguage::createInstance('code'); $id_code_group = Get::req('id_code_group', DOTY_INT, '0'); $code_manager = new CodeManager(); $selector = new UserSelector(); $selector->show_user_selector = FALSE; $selector->show_group_selector = FALSE; $selector->show_orgchart_selector = TRUE; $selector->show_orgchart_simple_selector = TRUE; $array_user_associated = $code_manager->getOrgAssociated($id_code_group); $selector->resetSelection($array_user_associated); if (Get::req('okselector', DOTY_MIXED, '')) { $folder_selected = $selector->getSelection($_POST); if ($code_manager->insertOrgAssociation($folder_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'); } cout($selector->loadSelector('index.php?modname=code&op=assign_tree&id_code_group=' . $id_code_group, array('index.php?modname=code&op=list' => $lang->def('_CODE'), $lang->def('_ASSIGN_USERS')), '')); cout('</div>'); }
function manprjadmin() { checkPerm('mod'); require_once _base_ . '/lib/lib.userselector.php'; require_once _base_ . '/lib/lib.form.php'; $out =& $GLOBALS['page']; $out->setWorkingZone('content'); $lang =& DoceboLanguage::createInstance('project', "lms"); $from = new Form(); if (!isset($_GET["id"]) || $_GET["id"] < 1) { return 0; } $id = $_GET["id"]; $myprj = user_projects(Docebo::user()->getIdSt()); $view_perm = checkPerm('view', true); if ($view_perm && in_array($id, $myprj) && is_owner(Docebo::user()->getIdSt(), $id)) { $aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = FALSE; $user_select->show_orgchart_selector = FALSE; $user_select->show_fncrole_selector = FALSE; $user_select->learning_filter = 'course'; if (isset($_POST['recipients'])) { $recipients = unserialize(urldecode($_POST['recipients'])); } else { $recipients = getAdminList($id); } $user_select->resetSelection($recipients); $back_url = "index.php?modname=project&op=project"; if (isset($_POST["cancelselector"])) { Util::jump_to(str_replace("&", "&", $back_url)); } else { if (isset($_POST["okselector"])) { $arr_selection = $user_select->getSelection($_POST); //$arr_unselected=$user_select->getUnselected(); foreach ($arr_unselected as $userid) { $qtxt = "DELETE FROM " . $GLOBALS["prefix_lms"] . "_prj_users "; $qtxt .= "WHERE pid='" . $id . "' AND flag='1' AND userid='" . $userid . "'"; $q = sql_query($qtxt); } foreach ($arr_selection as $userid) { $qtxt = "INSERT INTO " . $GLOBALS["prefix_lms"] . "_prj_users "; $qtxt .= "(pid,userid,flag) VALUES('" . $id . "','{$userid}','1')"; $q = sql_query($qtxt); } Util::jump_to(str_replace("&", "&", $back_url)); } else { //$user_select->setGroupFilter('path', '/lms/course/'.$_SESSION['idCourse'].'/group'); $group_all = $aclManager->getGroupST('/lms/course/' . (int) $_SESSION['idCourse'] . '/group/alluser'); $query = "\r\n\t\t\tSELECT pgroup\r\n\t\t\tFROM " . $GLOBALS["prefix_lms"] . "_prj\r\n\t\t\tWHERE cid='" . $_SESSION["idCourse"] . "'\r\n\t\t\t\tAND id = '" . $id . "'"; list($group) = mysql_fetch_array(sql_query($query)); if ($group == $group_all) { $arr_idstGroup = $aclManager->getGroupsIdstFromBasePath('/lms/course/' . (int) $_SESSION['idCourse'] . '/subscribed/'); $user_select->setUserFilter('group', $arr_idstGroup); } else { $user_select->setUserFilter('group', array($group)); } $user_select->setPageTitle(getTitleArea(array($back_url => $lang->def('_PROJECT_MANAGER'), $lang->def('_PADMINS')), 'project', $lang->def('_PROJECT_MANAGER'))); $user_select->loadSelector('index.php?modname=project&op=manprjadmin&id=' . $id, false, "", true); } } } else { die("You can't access"); } }
public function sel_usersTask() { require_once _adm_ . '/lib/lib.directory.php'; require_once _adm_ . '/class.module/class.directory.php'; $base_url = 'index.php?r=adm/functionalroles/show'; //check permissions: we should have mod privileges to assign users to the role group if (!$this->permissions['mod']) { Util::jump_to($base_url); } //read inputs $id_fncrole = Get::req('id_fncrole', DOTY_INT, -1); if ($id_fncrole <= 0) { $this->render('invalid', array('message' => $this->_getErrorMessage('invalid fncrole'), 'back_url' => $base_url)); return; } //navigation urls $back_url = 'index.php?r=adm/functionalroles/man_users&id=' . (int) $id_fncrole; $jump_url = 'index.php?r=adm/functionalroles/sel_users&id_fncrole=' . (int) $id_fncrole; //competence details $info = $this->model->getFunctionalRoleInfo($id_fncrole); $name = $this->model->getFunctionalRoleName($id_fncrole); //page_title $page_title_arr = array($base_url => Lang::t('_FUNCTIONAL_ROLE', 'fncroles'), $back_url => Lang::t('_USERS', 'fncroles') . ': ' . $name, Lang::t('_ASSIGN_USERS', 'fncroles')); if (isset($_POST['cancelselector'])) { //--- UNDO: return to catalogue list ------------------------------------- Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { //--- SAVE: users selection has been done -------------------------------- $acl_man = Docebo::user()->getAclManager(); $user_selector = new UserSelector(); $selection = $user_selector->getSelection(); $members_existent = $this->model->getMembers($id_fncrole); //retrieve newly selected users $_common_members = array_intersect($members_existent, $selection); $_new_members = array_diff($selection, $_common_members); //new users to add $_old_members = array_diff($members_existent, $_common_members); //old users to delete unset($_common_members); //free some memory //insert newly selected users in database $res1 = $this->model->assignMembers($id_fncrole, $_new_members); $res2 = $this->model->deleteMembers($id_fncrole, $_old_members); // apply enroll rules $enrollrules = new EnrollrulesAlms(); $enrollrules->applyRulesMultiLang('_LOG_USERS_TO_FNCROLE', $_new_members, false, $id_fncrole); //go back to main page, with result message Util::jump_to($back_url . '&res=' . ($res1 && $res2 ? 'ok_users' : 'err_users')); } else { //--- USER SELECTION IS IN PROGRESS: show selector ----------------------- $user_selector = new UserSelector(); $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = TRUE; $user_selector->show_orgchart_selector = TRUE; $user_selector->show_fncrole_selector = FALSE; //we can't assign functional roles to other functional roles ... //there should be a "role selector" too ... //$user_select->show_orgchart_simple_selector = TRUE; //filter selectable user by sub-admin permission $acl_man = Docebo::user()->getAclManager(); $user_selector->setUserFilter('exclude', array($acl_man->getAnonymousId())); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_selector->setUserFilter('user', $admin_users); $user_selector->setUserFilter('group', $admin_tree); } if (Get::req('is_updating', DOTY_INT, false)) { //... } else { //set initial selection $selection = $this->model->getMembers($id_fncrole); $user_selector->requested_tab = PEOPLEVIEW_TAB; $user_selector->resetSelection($selection); } $user_selector->addFormInfo(Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('id_fncrole', 'id_fncrole', $id_fncrole)); //draw selector $user_selector->loadSelector(Util::str_replace_once('&', '&', $jump_url), $page_title_arr, Lang::t('_ASSIGN_USERS_TO_FNCROLE', 'fncroles'), true); } }
function selSendTo() { checkPerm('view'); if (isset($_GET["id_send"]) && $_GET["id_send"] > 0) { $id_send = $_GET["id_send"]; } else { die("Newsletter setup error."); } require_once _base_ . '/lib/lib.userselector.php'; $mdir = new UserSelector(); if (defined("IN_LMS")) { $mdir->learning_filter = 'course'; $mdir->show_fncrole_selector = FALSE; } if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = Docebo::aclm()->getAllUsersFromSelection($admin_tree); $mdir->setUserFilter('user', $admin_users); $mdir->setUserFilter('group', $admin_tree); } $out =& $GLOBALS['page']; $out->setWorkingZone("content"); $lang =& DoceboLanguage::createInstance('admin_newsletter', 'framework'); $back_url = "index.php?modname=newsletter&op=selsendto&id_send=" . $id_send; if (isset($_POST['okselector'])) { $arr_selection = $mdir->getSelection($_POST); $send_to_idst = array(); foreach ($arr_selection as $idstMember) { $arr = Docebo::aclm()->getGroupAllUser($idstMember); if (is_array($arr) && count($arr) > 0) { $send_to_idst = array_merge($arr, $send_to_idst); $send_to_idst = array_unique($send_to_idst); } else { $send_to_idst[] = $idstMember; } if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $send_to_idst = array_intersect($send_to_idst, $admin_users); } } foreach ($send_to_idst as $key => $val) { $qtxt = "INSERT INTO " . $GLOBALS["prefix_fw"] . "_newsletter_sendto (id_send, idst, stime) "; $qtxt .= "VALUES ('" . (int) $id_send . "', '" . (int) $val . "', NOW())"; $q = sql_query($qtxt); } $qtxt = "SELECT language FROM " . $GLOBALS["prefix_fw"] . "_newsletter WHERE id='" . $id_send . "'"; $q = sql_query($qtxt); list($lang) = sql_fetch_row($q); if ($lang != _ANY_LANG_CODE) { $tot = count(Docebo::aclm()->getUsersIdstByLanguage($lang, $send_to_idst)); } else { $tot = count($send_to_idst); } $qtxt = "UPDATE " . $GLOBALS["prefix_fw"] . "_newsletter SET tot='" . $tot . "' WHERE id='{$id_send}'"; $q = sql_query($qtxt); $back_url = "index.php?modname=newsletter&op=summary&tot=" . $tot . "&id_send=" . $id_send; Util::jump_to(str_replace("&", "&", $back_url)); } else { if (isset($_POST['cancelselector'])) { $info = get_send_info($id_send); $file = $info['file']; $path = '/appCore/newsletter/'; require_once _base_ . '/lib/lib.upload.php'; if ($file != '') { sl_open_fileoperations(); sl_unlink($path . $file); sl_close_fileoperations(); } Util::jump_to('index.php?modname=newsletter&op=newsletter'); } else { if (isset($_GET['load'])) { $mdir->resetSelection(array()); } $url = "index.php?modname=newsletter&op=selsendto&id_send=" . $id_send . "&stayon=1"; $mdir->show_user_selector = TRUE; $mdir->show_group_selector = TRUE; $mdir->show_orgchart_selector = TRUE; $mdir->show_orgchart_simple_selector = false; $acl_manager =& Docebo::user()->getAclManager(); if (defined("IN_LMS")) { $id_course = (int) $_SESSION['idCourse']; $arr_idstGroup = $acl_manager->getGroupsIdstFromBasePath('/lms/course/' . $id_course . '/subscribed/'); $mdir->setUserFilter('group', $arr_idstGroup); $mdir->setGroupFilter('path', '/lms/course/' . $id_course . '/group'); $mdir->show_orgchart_selector = FALSE; } // Exclude anonymous user! $mdir->setUserFilter('exclude', array($acl_manager->getAnonymousId())); $mdir->loadSelector($url, array(Lang::t('_NEWSLETTER', 'admin_newsletter'), Lang::t('_RECIPIENTS', 'admin_newsletter')), "", TRUE); } } }
function setRoomViewPerm() { checkPerm('view'); $id_event = importVar('id_event', true, 0); require_once $GLOBALS['where_lms'] . '/lib/lib.reservation_perm.php'; require_once _base_ . '/lib/lib.userselector.php'; $mdir = new UserSelector(); $out =& $GLOBALS["page"]; $out->setWorkingZone("content"); $lang =& DoceboLanguage::createInstance('reservation', 'lms'); $roomperm = new ReservationRoomPermissions(); //$res = getTitleArea($lang->def('_RESERVATION_TITLE'), 'reservation'); $back_url = 'index.php?modname=reservation&op=reservation&active_tab=subscribed_user'; if (isset($_POST['okselector'])) { $arr_selection = $mdir->getSelection($_POST); $arr_unselected = $mdir->getUnselected(); $roomperm->addReservationPerm("view", $id_event, $arr_selection); $roomperm->removeReservationPerm("view", $id_event, $arr_unselected); Util::jump_to(str_replace("&", "&", $back_url)); } else { if (isset($_POST['cancelselector'])) { Util::jump_to(str_replace("&", "&", $back_url)); } else { if (!isset($_GET['stayon'])) { $all_perm = $roomperm->getAllReservationPerm($id_event); if (isset($all_perm["view"])) { $mdir->resetSelection($all_perm["view"]); } } $acl_manager =& Docebo::user()->getAclManager(); $url = 'index.php?modname=reservation&op=set_room_view_perm&id_event=' . $id_event; $mdir->setNFields(0); $mdir->show_group_selector = TRUE; $mdir->show_orgchart_selector = FALSE; $arr_idstGroup = $acl_manager->getGroupsIdstFromBasePath('/lms/course/' . (int) $_SESSION['idCourse'] . '/subscribed/'); $me = array(getLogUserId()); $mdir->setUserFilter('exclude', $me); $mdir->setUserFilter('group', $arr_idstGroup); $mdir->setGroupFilter('path', '/lms/course/' . $_SESSION['idCourse'] . '/group'); $mdir->loadSelector($url, $lang->def('_VIEW_PERMISSION'), "", TRUE); } } }
/** * Modify and save the users that can see a games */ protected function mod_user() { if (!$this->permissions['subscribe']) { $this->render('invalid', array('message' => $this->_getMessage('no permission'), 'back_url' => 'index.php?r=alms/games/show')); return; } // undo selected if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?r=alms/games/show'); } $id_game = Get::req('id_game', DOTY_INT, 0); // instance of the user selector require_once _adm_ . '/class.module/class.directory.php'; $user_selector = new UserSelector(); $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = TRUE; $user_selector->show_orgchart_selector = TRUE; $user_selector->show_orgchart_simple_selector = FALSE; // save new setting if (isset($_POST['okselector'])) { //compute new selection $old_selection = $this->model->accessList($id_game); $new_selection = $user_selector->getSelection($_POST); //save if ($this->model->updateAccessList($id_game, $old_selection, $new_selection)) { Util::jump_to('index.php?r=alms/games/show&success=1'); } else { Util::jump_to('index.php?r=alms/games/show&error=1'); } } // load saved actions if (isset($_GET['load'])) { $selection = $this->model->accessList($id_game); $user_selector->resetSelection($selection); } // render the user selector $this->render('mod_user', array('id_game' => $id_game, 'user_selector' => $user_selector)); }
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_framework'] . '/lib/lib.directory.php'; require_once _base_ . '/lib/lib.userselector.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'); //update session $ref =& $_SESSION['report_tempdata']; if (!isset($ref['rows_filter'])) { $ref['rows_filter'] = array('select_all' => false, 'selection_type' => 'users', 'selection' => array()); } else { //already resolved in switch block } $step = Get::req('step', DOTY_ALPHANUM, 'sel_type'); switch ($step) { case 'sel_type': $values = array('users' => $this->lang->def('_USERS'), 'groups' => $this->lang->def('_GROUPS')); $sel_val = isset($ref['rows_filter']['selection_type']) ? $ref['rows_filter']['selection_type'] : 'users'; $out = Form::openForm('selection_type_form', $jump_url); $out .= Form::getRadioSet($this->lang->def('_AGGREGATE_ON'), 'selection_type', 'selection_type', array_flip($values), $sel_val) . '<div class="nofloat"></div>'; $out .= Form::openButtonSpace(); $out .= Form::getButton('ok_selection', 'ok_selection', $this->lang->def('_CONFIRM')); $out .= Form::getButton('undo', 'undo', $this->lang->def('_UNDO')); $out .= Form::closeButtonSpace(); $out .= Form::getHidden('step', 'step', 'sel_data'); $out .= Form::closeForm(); cout($out); break; case 'sel_data': $type = Get::req('selection_type', DOTY_ALPHANUM, 'users'); //$aclManager = new DoceboACLManager(); $user_select = new UserSelector(); if (Get::req('is_updating', DOTY_INT, 0) > 0) { $ref['rows_filter']['select_all'] = Get::req('select_all', DOTY_INT, 0) > 0 ? true : false; $ref['rows_filter']['selection_type'] = $type; //$ref['rows_filter']['selection'] = $user_select->getSelection($_POST); } else { //maybe redoundant if (!isset($ref['rows_filter']['select_all'])) { $ref['rows_filter']['select_all'] = false; } if (!isset($ref['rows_filter']['selection_type'])) { $ref['rows_filter']['selection_type'] = 'groups'; } if (!isset($ref['rows_filter']['selection'])) { $ref['rows_filter']['selection'] = array(); } $user_select->resetSelection($ref['rows_filter']['selection']); //$ref['users'] = array(); it should already have been set to void array, if non existent } if (isset($_POST['cancelselector'])) { Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { $ref['rows_filter']['selection'] = $user_select->getSelection($_POST); Util::jump_to($next_url); } //set page switch ($type) { case 'groups': $user_select->show_user_selector = FALSE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; break; case 'users': $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = TRUE; break; } //$user_select->show_orgchart_simple_selector = FALSE; //$user_select->multi_choice = TRUE; $user_select->addFormInfo(($type == 'users' ? Form::getCheckbox($lang->def('_REPORT_FOR_ALL'), 'select_all', 'select_all', 1, $ref['rows_filter']['select_all']) : '') . Form::getBreakRow() . Form::getHidden('selection_type', 'selection_type', $type) . Form::getHidden('step', 'step', 'sel_data') . Form::getHidden('is_updating', 'is_updating', 1) . Form::getHidden('substep', 'substep', 'user_selection') . Form::getHidden('second_step', 'second_step', 1)); $user_select->setPageTitle(''); $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), false, $this->lang->def('_CHOOSE_USER_FOR_REPORT'), true); break; } }
function chooselevel() { checkPerm('subscribe', false, 'course'); require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.table.php'; require_once _base_ . '/lib/lib.userselector.php'; $id_course = importVar('id_course', true, 0); $course_info = Man_Course::getCourseInfo($id_course); $edition_id = getCourseEditionId(); if ($edition_id > 0) { $edition_info = Man_Course::getEditionInfo($edition_id, $id_course); $course_info = $edition_info + $course_info; } $out =& $GLOBALS['page']; $acl_man =& Docebo::user()->getAclManager(); $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms'); $levels = CourseLevel::getLevels(); // Find limitation $can_subscribe = true; $max_num_subscribe = $course_info['max_num_subscribe']; $subscribe_method = $course_info['subscribe_method']; 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; } // Print page $page_title = array('index.php?modname=course&op=course_list' => $lang->def('_COURSES'), $lang->def('_SUBSCRIBE'), $course_info['name']); $GLOBALS['page']->add(getTitleArea($page_title, 'subscribe') . '<div class="std_block">' . getBackUi('index.php?modname=course&op=course_list', $lang->def('_BACK')), 'content'); // User selected $user_alredy_subscribed = getSubscribed($id_course, FALSE, FALSE, FALSE, $edition_id); $num_all_user = count($user_alredy_subscribed); if (!isset($_POST['user_level_sel'])) { $user_select = new UserSelector(); $entity_selected = $user_select->getSelection($_POST); // convert to user only $user_selected =& $acl_man->getAllUsersFromIdst($entity_selected); $user_selected = array_diff($user_selected, $user_alredy_subscribed); $num_selected = count($user_selected); } else { $num_selected = 0; $user_selected = array(); while (list($id_user, $lv) = each($_POST['user_level_sel'])) { $user_selected[$id_user] = $id_user; if ($lv != 0) { $num_selected++; } } reset($_POST['user_level_sel']); } $user_selected_info =& $acl_man->getUsers($user_selected); if ($num_selected == 0) { $GLOBALS['page']->add($lang->def('_EMPTY_SELECTION') . '</div>', 'content'); return; } if ($subscribe_method != 3 && !$direct_subscribe) { $GLOBALS['page']->add(getResultUi($lang->def('_BEFORE_THIS_APPROVE') . '<br />'), 'content'); } if (isset($_POST['subscribe']) && $can_subscribe) { // do subscription //retrive id of group of the course for the varioud level $level_idst =& getCourseLevel($id_course); if (count($level_idst) == 0) { //if the group doesn't exists create it $level_idst =& DoceboCourse::createCourseLevel($id_course); } // Subscirbing user $waiting = 0; $user_subscribed = array(); $user_waiting = array(); if ($subscribe_method != 3 && !$direct_subscribe) { $waiting = 1; } while (list($id_user, $lv_sel) = each($_POST['user_level_sel'])) { if (!$limited_subscribe || $max_subscribe) { if ($lv_sel != 0) { // Add in group for permission $acl_man->addToGroup($level_idst[$lv_sel], $id_user); // Add to edition group if ($edition_id > 0) { $group = '/lms/course_edition/' . $edition_id . '/subscribed'; $group_idst = $acl_man->getGroupST($group); if ($group_idst === FALSE) { $group_idst = $acl_man->registerGroup($group, 'all the user of a course edition', true, "course"); } $acl_man->addToGroup($group_idst, $id_user); } // Add in table $re = sql_query("\r\n\t\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t\t\t( idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr )\r\n\t\t\t\t\tVALUES\r\n\t\t\t\t\t( '" . $id_user . "', '" . $id_course . "', '" . $edition_id . "', '" . $lv_sel . "', '" . $waiting . "', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t"); if ($re) { if ($waiting) { $user_waiting[] = $id_user; } else { $user_subscribed[] = $id_user; } addUserToTimeTable($id_user, $id_course, $edition_id); } } $max_subscribe--; } } //end while Docebo::user()->loadUserSectionST('/lms/course/private/'); Docebo::user()->SaveInSession(); require_once _base_ . '/lib/lib.eventmanager.php'; $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name'], '[medium_time]' => $course_info['mediumTime'], '[course_name]' => $course_info['name'], '[course_code]' => $course['code']); if (!empty($user_subscribed)) { // message to user subscribed $msg_composer = new EventMessageComposer(); $msg_composer->setSubjectLangText('email', '_NEW_USER_SUBSCRIBED_SUBJECT', false); $msg_composer->setBodyLangText('email', '_NEW_USER_SUBSCRIBED_TEXT', $array_subst); $msg_composer->setBodyLangText('sms', '_NEW_USER_SUBSCRIBED_TEXT_SMS', $array_subst); // send message to the user subscribed createNewAlert('UserCourseInserted', 'subscribe', 'insert', '1', 'User subscribed', $user_subscribed, $msg_composer); } if (!empty($user_waiting)) { // message to user that is waiting $msg_composer = new EventMessageComposer(); $msg_composer->setSubjectLangText('email', '_NEW_USER_SUBS_WAITING_SUBJECT', false); $msg_composer->setBodyLangText('email', '_NEW_USER_SUBS_WAITING_TEXT', $array_subst); $msg_composer->setBodyLangText('sms', '_NEW_USER_SUBS_WAITING_TEXT_SMS', $array_subst); // send message to the user subscribed createNewAlert('UserCourseInsertModerate', 'subscribe', 'insert', '1', 'User subscribed with moderation', $user_waiting, $msg_composer); } if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { Docebo::user()->preference->setPreference('admin_rules.max_course_subscribe', $max_subscribe); } backcourse('ok_subs'); } $GLOBALS['page']->add(Form::openForm('levelselection', 'index.php?modname=subscribe&op=chooselevel') . 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')); $type_h = array('image', '', ''); $img = '<img src="' . getPathImage('fw') . 'standard/warning_triangle.png" '; $img .= 'alt="' . $lang->def("_USER_IS_BUSY") . '" title="' . $lang->def("_USER_IS_BUSY") . '" />'; $content_h = array($img, $lang->def('_USERNAME'), $lang->def('_FULLNAME')); 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('_CANCEL'); $tb->addHead($content_h, $type_h); if ($course_info["course_type"] === "elearning") { $busy_users = array(); } else { require_once $GLOBALS['where_framework'] . "/lib/resources/lib.timetable.php"; $tt = new TimeTable(); $busy_users = $tt->getResourcesInUse("user", $course_info["date_begin"], $course_info["date_end"], TRUE); } $num_user_sel = 0; $enought_credit = true; reset($user_selected_info); $jsArr = "var elementi = new Array("; $i = 0; while ((list($id_user, $user_info) = each($user_selected_info)) && $enought_credit) { if ($i != 0) { $jsArr .= ","; } $i++; $jsArr .= "'" . $id_user . "'"; // if the user isn't alredy subscribed to the course if (!isset($user_alredy_subscribed[$id_user])) { if (in_array($id_user, $busy_users)) { $img = '<img src="' . getPathImage('fw') . 'standard/warning_triangle.png" '; $img .= 'alt="' . $lang->def("_USER_IS_BUSY") . '" title="' . $lang->def("_USER_IS_BUSY") . '" />'; $msg = $lang->def("_USER_IS_BUSY_MSG"); $is_user_busy = $img; //."</a>"; } else { $is_user_busy = " "; } $content = array($is_user_busy, 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, isset($_POST['user_level_sel']) ? $lv == $_POST['user_level_sel'][$id_user] : $lv == 3, '') . '<label class="access-only" for="user_level_sel_' . $id_user . '_' . $lv . '">' . $lv_name . '</label>'; } $content[] = Form::getInputRadio('user_level_sel_' . $id_user . '_0', 'user_level_sel[' . $id_user . ']', 0, isset($_POST['user_level_sel']) ? 0 == $_POST['user_level_sel'][$id_user] : false, '') . '<label class="access-only" for="user_level_sel_' . $id_user . '_0">' . $lang->def('_CANCEL') . '</label>'; $tb->addBody($content); $num_user_sel++; } } $GLOBALS['page']->add($tb->getTable(), 'content'); $GLOBALS['page']->add(Form::openButtonSpace() . '<br />' . Form::getButton('subscribe', 'subscribe', $lang->def('_SUBSCRIBE')) . 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>'); }
function get_rows_filter() { if (!isset($_SESSION['report_tempdata']['rows_filter'])) { $_SESSION['report_tempdata']['rows_filter'] = array('users' => array(), 'all_users' => false); } $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_framework'] . '/lib/lib.directory.php'; require_once _base_ . '/lib/lib.userselector.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; $lang =& DoceboLanguage::createInstance('report', 'framework'); $org_chart_subdivision = importVar('org_chart_subdivision', true, 0); $aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->use_suspended = true; if (isset($_POST['cancelselector'])) { Util::jump_to($back_url); } elseif (isset($_POST['okselector'])) { $aclManager = new DoceboACLManager(); $temp = $user_select->getSelection($_POST); $_SESSION['report_tempdata']['rows_filter']['users'] = $temp; $_SESSION['report_tempdata']['rows_filter']['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false; Util::jump_to($next_url); } else { // first step load selector if ($org_chart_subdivision == 0) { $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; } else { $user_select->show_user_selector = FALSE; $user_select->show_group_selector = FALSE; } $user_select->show_orgchart_selector = TRUE; //$user_select->show_orgchart_simple_selector = FALSE; //$user_select->multi_choice = TRUE; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) { $acl_man = new DoceboACLManager(); require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $user_select->setUserFilter('user', $admin_users); $user_select->setUserFilter('group', $admin_tree); } if (Get::req('is_updating', DOTY_INT, false)) { //$_SESSION['report_tempdata']['rows_filter']['users'] = $user_select->getSelection($_POST); $_SESSION['report_tempdata']['rows_filter']['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false; } else { $user_select->requested_tab = PEOPLEVIEW_TAB; $user_select->resetSelection($_SESSION['report_tempdata']['rows_filter']['users']); } $user_select->addFormInfo(Form::getCheckbox($lang->def('_REPORT_FOR_ALL'), 'all_users', 'all_users', 1, $_SESSION['report_tempdata']['rows_filter']['all_users']) . Form::getBreakRow() . Form::getHidden('org_chart_subdivision', 'org_chart_subdivision', $org_chart_subdivision) . Form::getHidden('is_updating', 'is_updating', 1)); //$user_select->setPageTitle($this->page_title); cout($this->page_title, 'content'); //$user_select->resetSelection($_SESSION['report_tempdata']['rows_filter']['users']); $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), false, $lang->def('_CHOOSE_USER_FOR_REPORT'), true); } }
function modforumaccess() { checkPerm('mod'); require_once _base_ . '/lib/lib.userselector.php'; $lang =& DoceboLanguage::createInstance('forum', 'lms'); $out =& $GLOBALS['page']; $id_forum = importVar('idForum', true, 0); $aclManager = new DoceboACLManager(); $user_select = new UserSelector(); $user_select->show_user_selector = TRUE; $user_select->show_group_selector = TRUE; $user_select->show_orgchart_selector = FALSE; $user_select->show_fncrole_selector = FALSE; $user_select->learning_filter = 'course'; $user_select->nFields = 0; if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?modname=forum&op=forum'); } if (isset($_POST['okselector'])) { $user_selected = $user_select->getSelection($_POST); $query_reader = "\r\n\t\tSELECT idMember\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_forum_access\r\n\t\tWHERE idForum = '" . $id_forum . "'"; $re_reader = sql_query($query_reader); $old_users = array(); while (list($id_user) = sql_fetch_row($re_reader)) { $old_users[] = $id_user; } $add_reader = array_diff($user_selected, $old_users); $del_reader = array_diff($old_users, $user_selected); if (is_array($add_reader)) { while (list(, $idst) = each($add_reader)) { $query_insert = "\r\n\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_forum_access\r\n\t\t\t\t( idForum, idMember ) VALUES\r\n\t\t\t\t( \t'" . $id_forum . "',\r\n\t\t\t\t\t'" . $idst . "' )"; sql_query($query_insert); } } if (is_array($del_reader)) { while (list(, $idst) = each($del_reader)) { $query_delete = "\r\n\t\t\t\tDELETE FROM " . $GLOBALS['prefix_lms'] . "_forum_access\r\n\t\t\t\tWHERE idForum = '" . $id_forum . "' AND idMember = '" . $idst . "'"; sql_query($query_delete); } } Util::jump_to('index.php?modname=forum&op=forum&result=ok'); } if (isset($_GET['load'])) { $query_reader = "\r\n\t\tSELECT idMember\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_forum_access\r\n\t\tWHERE idForum = '" . $id_forum . "'"; $re_reader = sql_query($query_reader); $users = array(); while (list($id_user) = sql_fetch_row($re_reader)) { $users[$id_user] = $id_user; } $user_select->resetSelection($users); } $query_forum_name = "SELECT f.title\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_forum AS f\r\n\tWHERE f.idCourse = " . (int) $_SESSION['idCourse'] . "\r\n\t\tAND f.idForum = " . (int) $id_forum . " "; $row = sql_fetch_row(sql_query($query_forum_name)); $forum_name = $row[0]; $arr_idstGroup = $aclManager->getGroupsIdstFromBasePath('/lms/course/' . (int) $_SESSION['idCourse'] . '/subscribed/'); $user_select->setUserFilter('group', $arr_idstGroup); $user_select->setGroupFilter('path', '/lms/course/' . $_SESSION['idCourse'] . '/group'); cout(getTitleArea(array('index.php?modname=forum&op=forum' => $lang->def('_FORUM'), $lang->def('_FORUM_ACCESS') . ' "' . $forum_name . '" ' . $lang->def('_TO') . ''), 'forum') . '<div class="std_block">', 'content'); $user_select->loadSelector('index.php?modname=forum&op=modforumaccess&idForum=' . $id_forum, '', $lang->def('_CHOOSE_FORUM_ACCESS'), true); cout('</div>', 'content'); }
function updreader() { checkPerm('mod'); require_once _base_ . '/lib/lib.userselector.php'; $lang =& DoceboLanguage::createInstance('advice', 'lms'); $id_advice = importVar('id_advice', true, 0); $user_select = new UserSelector(); $user_selected = $user_select->getSelection($_POST); $query_reader = "\r\n\t\tSELECT idUser\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_adviceuser\r\n\t\tWHERE idAdvice = '" . $id_advice . "'"; $re_reader = sql_query($query_reader); $old_users = array(); $found = false; $me = getLogUserId(); while (list($id_user) = sql_fetch_row($re_reader)) { $old_users[] = $id_user; if ($id_user == $me) { $found = true; } } $add_reader = array_diff($user_selected, $old_users); $del_reader = array_diff($old_users, $user_selected); if (!$found) { $add_reader[] = $me; } $dest = array(); if (is_array($add_reader)) { while (list(, $idst) = each($add_reader)) { $query_insert = "\r\n\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_adviceuser\r\n\t\t\t\t( idUser, idAdvice ) VALUES\r\n\t\t\t\t( \t'" . $idst . "',\r\n\t\t\t\t\t'" . $id_advice . "' )"; sql_query($query_insert); $dest[] = $idst; } } if (is_array($del_reader)) { while (list(, $idst) = each($del_reader)) { $query_delete = "\r\n\t\t\t\tDELETE FROM " . $GLOBALS['prefix_lms'] . "_adviceuser\r\n\t\t\t\tWHERE idUser='******' AND idAdvice='" . $id_advice . "'"; sql_query($query_delete); } } if (is_array($dest)) { require_once _base_ . '/lib/lib.eventmanager.php'; $query_advice = "\r\n\t\t\tSELECT title, description, important\r\n\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_advice\r\n\t\t\tWHERE idAdvice='" . (int) $id_advice . "'"; list($title, $description, $impo) = sql_fetch_row(sql_query($query_advice)); $msg_composer = new EventMessageComposer(); $msg_composer->setSubjectLangText('email', '_ALERT_SUBJECT', false); $msg_composer->setBodyLangText('email', '_ALERT_TEXT', array('[url]' => Get::sett('url'), '[course]' => $GLOBALS['course_descriptor']->getValue('name'), '[title]' => stripslashes($title), '[text]' => stripslashes($description))); $msg_composer->setBodyLangText('sms', '_ALERT_TEXT_SMS', array('[url]' => Get::sett('url'), '[course]' => $GLOBALS['course_descriptor']->getValue('name'), '[title]' => stripslashes($title), '[text]' => stripslashes($description))); createNewAlert('AdviceNew', 'advice', 'add', '1', 'Inserted advice ' . $title . ' in course ' . $_SESSION['idCourse'], $dest, $msg_composer); } Util::jump_to('index.php?modname=advice&op=advice'); }
function writemessage() { $send_all = true; // checkPerm('send_all', true); $send_upper = true; // checkPerm('send_upper', true); if (!$send_all && !$send_upper) { die("You can't access"); } require_once _base_ . '/lib/lib.userselector.php'; $out = $GLOBALS['page']; $out->setWorkingZone('content'); $from = importVar('out'); $acl_man =& Docebo::user()->getAclManager(); $um =& UrlManager::getInstance("message"); if (!isset($_POST['message']['recipients'])) { if (isset($_GET['reply_recipients'])) { $user_selected = unserialize(stripslashes(urldecode($_GET['reply_recipients']))); $recipients = urlencode(serialize($user_selected)); } else { $user_select = new UserSelector(); $user_selected = $user_select->getSelection($_POST); $recipients = urlencode(serialize($user_selected)); } } else { $user_selected = unserialize(urldecode($_POST['message']['recipients'])); $recipients = urlencode($_POST['message']['recipients']); } $title_url = $this->mvc_urls ? "index.php?r=message/show" . ($from == 'out' ? '&active_tab=outbox' : '') : $um->getUrl($from == 'out' ? '&active_tab=outbox' : ''); $output = ""; $output .= $this->messageGetTitleArea(array($title_url => Lang::t('_MESSAGES'), Lang::t('_SEND')), 'message') . '<div class="std_block">'; if (isset($_POST['send'])) { if ($_POST['message']['subject'] == '') { $output .= getErrorUi(Lang::t('_MUST_INS_SUBJECT')); } else { // send message $attach = ''; if ($_FILES['message']['tmp_name']['attach'] != '') { $attach = $this->saveMessageAttach($_FILES['message']); } $query_mess = "\r\n\t\t\t\tINSERT INTO %adm_message\r\n\t\t\t\t( idCourse, sender, posted, title, textof, attach, priority ) VALUES\r\n\t\t\t\t(\r\n\t\t\t\t\t'" . $_POST['msg_course_filter'] . "',\r\n\t\t\t\t\t'" . getLogUserId() . "',\r\n\t\t\t\t\t'" . date("Y-m-d H:i:s") . "',\r\n\t\t\t\t\t'" . $_POST['message']['subject'] . "',\r\n\t\t\t\t\t'" . $_POST['message_textof'] . "',\r\n\t\t\t\t\t'" . addslashes($attach) . "',\r\n\t\t\t\t\t'" . $_POST['message']['priority'] . "'\r\n\t\t\t\t)"; if (!$this->db->query($query_mess)) { if ($attach) { deleteAttach($attach); } $jump_url = $this->mvc_urls ? "index.php?r=message/show&result=err" : $um->getUrl('result=err'); Util::jump_to($jump_url); } list($id_message) = $this->db->fetch_row($this->db->query("SELECT LAST_INSERT_ID()")); if (!in_array(getLogUserId(), $user_selected)) { $user_selected[] = getLogUserId(); } $send_to_idst =& $acl_man->getAllUsersFromIdst($user_selected); $re = true; $recip_alert = array(); if (is_array($send_to_idst)) { $logged_user = getLogUserId(); while (list(, $id_recipient) = each($send_to_idst)) { $query_recipients = "\r\n\t\t\t\t\t\tINSERT INTO %adm_message_user\r\n\t\t\t\t\t\t( idMessage, idUser, idCourse, `read` ) VALUES\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t'" . $id_message . "',\r\n\t\t\t\t\t\t\t'" . $id_recipient . "',\r\n\t\t\t\t\t\t\t'" . $_POST['msg_course_filter'] . "',\r\n\t\t\t\t\t\t\t'" . ($id_recipient == $logged_user ? _MESSAGE_MY : _MESSAGE_UNREADED) . "'\r\n\t\t\t\t\t\t) "; $re_single = $this->db->query($query_recipients); if ($re_single && $id_recipient != $logged_user) { $recip_alert[] = $id_recipient; } $re &= $re_single; } if (!empty($recip_alert)) { require_once _lms_ . '/lib/lib.course.php'; require_once _base_ . '/lib/lib.eventmanager.php'; $is_course = false; if (isset($_SESSION['idCourse']) && isset($GLOBALS['course_descriptor'])) { $course_name = $GLOBALS['course_descriptor']->getValue('name'); $is_course = true; } elseif ($_POST['msg_course_filter'] != 0 && is_numeric($_POST['msg_course_filter'])) { $idCourse = $_POST['msg_course_filter']; $query_course = "SELECT name FROM %lms_course WHERE idCourse = " . $idCourse; $course_result = $this->db->fetch_row($this->db->query($query_course)); list($name) = $course_result; $course_name = $name; $is_course = true; } else { $course_name = ''; } // message to user that is odified $msg_composer = new EventMessageComposer(); $msg_composer->setSubjectLangText('email', '_YOU_RECIVE_MSG_SUBJECT', false); if (!$is_course) { $msg_composer->setBodyLangText('email', '_YOU_RECIVE_MSG_TEXT', array('[url]' => _MESSAGE_PL_URL, '[course]' => $course_name, '[from]' => Docebo::user()->getUsername())); $msg_composer->setBodyLangText('sms', '_YOU_RECIVE_MSG_TEXT_SMS', array('[url]' => _MESSAGE_PL_URL, '[course]' => $course_name, '[from]' => Docebo::user()->getUsername())); } else { $msg_composer->setBodyLangText('email', '_YOU_RECIVE_MSG_TEXT_COURSE', array('[url]' => _MESSAGE_PL_URL, '[course]' => $course_name, '[from]' => Docebo::user()->getUsername())); $msg_composer->setBodyLangText('sms', '_YOU_RECIVE_MSG_TEXT_SMS_COURSE', array('[url]' => _MESSAGE_PL_URL, '[course]' => $course_name, '[from]' => Docebo::user()->getUsername())); } createNewAlert('MsgNewReceived', 'directory', 'moderate', '1', 'User group subscription to moderate', $recip_alert, $msg_composer); } } $jump_url = $this->mvc_urls ? "index.php?r=message/show&result=" . ($re ? 'ok' : 'err') : $um->getUrl('result=' . ($re ? 'ok' : 'err')); Util::jump_to($jump_url); } } $prio_arr = array('5' => Lang::t('_VERYHIGH', 'message'), '4' => Lang::t('_HIGH', 'message'), '3' => Lang::t('_NORMAL', 'message'), '2' => Lang::t('_LOW', 'message'), '1' => Lang::t('_VERYLOW', 'message')); $first = true; $attach = ''; if (!is_array($user_selected) || empty($user_selected)) { $write_url = $this->mvc_urls ? 'index.php?r=message/write' : $um->getUrl('op=writemessage'); $output .= '<span class="text_bold">' . Lang::t('_NO_RECIPIENTS_SELECTED') . '</span>' . Form::openForm('message', $write_url, false, false, 'multipart/form-data') . Form::getHidden('out', 'out', $from) . Form::getHidden('msg_course_filter', 'msg_course_filter', $_POST['msg_course_filter']) . Form::getHidden('message_recipients', 'message[recipients]', $recipients) . Form::openButtonSpace() . Form::getButton('back_recipients', 'back_recipients', Lang::t('_BACK')) . Form::closeButtonSpace() . Form::closeForm(); return; } $only_users =& $acl_man->getUsers($user_selected); $only_groups = $acl_man->getGroups($user_selected); $output .= '<span class="text_bold">' . Lang::t('_RECIPIENTS') . '</span>' . '<div class="recipients">'; if (is_array($only_groups) && !empty($only_groups)) { $output .= '<strong>'; while (list(, $group_info) = each($only_groups)) { if ($first) { $first = false; } else { $attach = ', '; } $groupid = substr($group_info[ACL_INFO_GROUPID], strrpos($group_info[ACL_INFO_GROUPID], '/') + 1); $output .= $attach . $groupid; // find user of group $members = $acl_man->getGroupAllUser($group_info[ACL_INFO_IDST]); $group_users =& $acl_man->getUsers($members); $output .= ' <span class="message_group_members">( '; $m_first = true; while (list(, $user_info) = each($group_users)) { if ($m_first) { $m_first = false; } else { $attach = ', '; } $output .= $attach . ($user_info[ACL_INFO_LASTNAME] . $user_info[ACL_INFO_FIRSTNAME] ? $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME] : $acl_man->relativeId($user_info[ACL_INFO_USERID])); } $output .= ' )</span> '; } $output .= '</strong>'; } $acl_man->setContext('/'); if (is_array($only_users) && !empty($only_users)) { while (list(, $user_info) = each($only_users)) { if ($first) { $first = false; } else { $attach = ', '; } $output .= $attach . ($user_info[ACL_INFO_LASTNAME] . $user_info[ACL_INFO_FIRSTNAME] ? $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME] : $acl_man->relativeId($user_info[ACL_INFO_USERID])); } } $id_forward = importVar('id_forward', true, 0); $sql_text = "SELECT message.textof, message.title FROM %adm_message AS message WHERE message.idMessage = '" . $id_forward . "'"; $title = ''; $text_message = ''; if ($message_forward = $this->db->fetch_row($this->db->query($sql_text))) { list($text_message, $title) = $message_forward; $title = 'Reply: ' . $title; $text_message = '<br /><br /><font color="#808080">-------<br /><br />' . $text_message . '</font>'; } $write_url = $this->mvc_urls ? 'index.php?r=message/write' : $um->getUrl('op=writemessage'); $output .= '</div><br />' . Form::openForm('message', $write_url, false, false, 'multipart/form-data') . Form::getHidden('out', 'out', $from) . Form::getHidden('msg_course_filter', 'msg_course_filter', $_POST['msg_course_filter']) . Form::getHidden('message_recipients', 'message[recipients]', $recipients) . Form::getTextfield(Lang::t('_SUBJECT'), 'message_subject', 'message[subject]', 255, isset($_POST['message']['subject']) ? $_POST['message']['subject'] : "{$title}") . Form::getDropdown(Lang::t('_PRIORITY'), 'message_priority', 'message[priority]', $prio_arr, isset($_POST['message']['priority']) ? $_POST['message']['priority'] : 3) . Form::getTextarea(Lang::t('_TEXTOF'), 'message_textof', 'message_textof', isset($_POST['message_textof']) ? $_POST['message_textof'] : "{$text_message}") . Form::getFilefield(Lang::t('_ATTACHMENT'), 'message_attach', 'message[attach]', 255) . Form::openButtonSpace() . Form::getButton('back_recipients', 'back_recipients', Lang::t('_BACK')) . Form::getButton('send', 'send', Lang::t('_SEND')) . Form::getButton('undo', 'undo', Lang::t('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>'; cout($output, 'content'); }