function getBoxContent()
 {
     $html = array();
     if (!checkPerm('view_org_chart', true, 'directory', 'framework')) {
         return $html;
     }
     require_once _base_ . '/lib/lib.userselector.php';
     $user_dir = new UserSelector();
     $user_stats = $user_dir->getUsersStats();
     $lang =& DoceboLanguage::createInstance('dashboard', 'framework');
     if (Get::sett('welcome_use_feed') == 'on') {
         require_once _base_ . '/lib/lib.fsock_wrapper.php';
         $fp = new Fsock();
         $released_version = $fp->send_request('http://www.formalms.org/versions/release.txt');
         if (!$fp) {
             $released_version = '<strong class="old_release">' . $lang->def('_UNKNOWN_RELEASE') . '</strong>';
         } else {
             if ($released_version == false) {
                 $released_version = '<strong class="ok_release">' . $lang->def('_UNKNOWN_RELEASE') . '</strong>';
             }
             if ($released_version == Get::sett('core_version')) {
                 $released_version = '<strong class="ok_release">' . $released_version . '</strong>';
             } else {
                 $released_version = '<strong class="old_release">' . $released_version . ' (' . $lang->def('_NEW_RELEASE_AVAILABLE') . ')</strong>';
             }
         }
     }
     $html[] = '<h2 class="inline">' . $lang->def('_USERS_PANEL') . '</h2>' . '<p>' . $lang->def('_TOTAL_USER') . ': <b>' . ($user_stats['all'] - 1) . '</b>;<br />' . $lang->def('_SUSPENDED') . ': <b>' . $user_stats['suspended'] . '</b>;<br />' . (checkPerm('approve_waiting_user', true, 'directory', 'framework') ? $lang->def('_WAITING_USERS') . ': <b>' . $user_stats['waiting'] . '</b>;' : '') . '</p><p>' . $lang->def('_SUPERADMIN_USER') . ': <b>' . $user_stats['superadmin'] . '</b>;<br />' . $lang->def('_ADMIN_USER') . ': <b>' . $user_stats['admin'] . '</b>;<br />' . $lang->def('_PUBLIC_ADMIN_USER') . ': <b>' . $user_stats['public_admin'] . '</b>;' . '</p><p>' . $lang->def('_REG_TODAY') . ': <b>' . $user_stats['register_today'] . '</b>;<br />' . $lang->def('_REG_YESTERDAY') . ': <b>' . $user_stats['register_yesterday'] . '</b>;<br />' . $lang->def('_REG_LASTSEVENDAYS') . ': <b>' . $user_stats['register_7d'] . '</b>;' . '</p><p>' . $lang->def('_INACTIVE_USER') . ': <b>' . $user_stats['inactive_30d'] . '</b>;<br />' . $lang->def('_ONLINE_USER') . ': <b>' . $user_stats['now_online'] . '</b>;' . '</p><p>' . $lang->def('_CORE_VERSION') . ': <b>' . Get::sett('core_version') . '</b>;<br />' . (Get::sett('welcome_use_feed') == 'on' ? $lang->def('_LAST_RELEASED') . ': ' . $released_version . ';' : '') . '</p>';
     return $html;
 }
Exemplo n.º 2
0
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&amp;op=view_area&amp;result=' . ($re ? 'ok' : 'err'));
    }
    cout(getTitleArea(array('index.php?modname=middlearea&amp;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&amp;op=select_permission', false, false, true);
    cout('</div>');
}
Exemplo n.º 3
0
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&amp;op=view');
    } elseif (isset($_POST['cancelselector'])) {
        Util::jump_to('index.php?modname=public_admin_manager&amp;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&amp;op=assign_tree&amp;adminidst=' . $adminidst . '&amp;stayon=1', $lang->def('_ASSIGN_USERS', 'adminrules'), '<span class="text_bold">' . substr($admin_info[ACL_INFO_USERID], 1) . '</span>', TRUE);
    }
}
Exemplo n.º 4
0
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&amp;op=list&result=ok');
        }
        Util::jump_to('index.php?modname=code&amp;op=list&result=err');
    }
    cout($selector->loadSelector('index.php?modname=code&amp;op=assign_tree&amp;id_code_group=' . $id_code_group, array('index.php?modname=code&amp;op=list' => $lang->def('_CODE'), $lang->def('_ASSIGN_USERS')), ''));
    cout('</div>');
}
 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));
     }
 }
 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 . '&amp;res=ok_ins');
         }
         Util::jump_to('index.php?r=adm/adminrules/admin_manage&idst=' . $idst . '&amp;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));
     }
 }
Exemplo n.º 7
0
    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();") . "&nbsp;&nbsp;" . 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('&', '&amp;', $jump_url), false, $this->lang->def('_CHOOSE_USER_FOR_REPORT'), true);
                break;
        }
    }
Exemplo n.º 8
0
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');
}
Exemplo n.º 9
0
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('&', '&amp;', $jump_url), false, true);
    cout('</div>', 'content');
}
 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('&', '&amp;', $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);
     }
 }
Exemplo n.º 11
0
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&amp;op=selsendto&amp;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&amp;op=summary&amp;tot=" . $tot . "&amp;id_send=" . $id_send;
        Util::jump_to(str_replace("&amp;", "&", $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&amp;op=selsendto&amp;id_send=" . $id_send . "&amp;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);
        }
    }
}
Exemplo n.º 12
0
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&amp;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&amp;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&amp;op=news&amp;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&amp;op=editviewer', false, false, true);
    cout('</div>');
}
 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&amp;id=' . $id => Lang::t('_ASSIGN_USERS', 'admin_directory') . ': ' . Docebo::aclm()->relativeId($group->groupid), Lang::t('_ADD', 'admin_directory'));
             $selector->loadSelector(Util::str_replace_once('&', '&amp;', $jump_url), $sel_title, '', true);
         }
     } else {
     }
 }
Exemplo n.º 14
0
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&amp;op=project";
        if (isset($_POST["cancelselector"])) {
            Util::jump_to(str_replace("&amp;", "&", $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("&amp;", "&", $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&amp;op=manprjadmin&amp;id=' . $id, false, "", true);
            }
        }
    } else {
        die("You can't access");
    }
}
 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('&', '&amp;', $jump_url), $page_title_arr, false, true);
     }
 }
Exemplo n.º 16
0
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('&', '&amp;', $jump_url), $page_title_arr, false, true);
     }
 }
Exemplo n.º 18
0
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&amp;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&amp;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&amp;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&amp;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&amp;op=modassignment', false, $lang->def('_USER_FOR_META_CERTIFICATE_ASSIGN'), true);
    }
}
Exemplo n.º 19
0
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');
}
 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('&', '&amp;', $jump_url), $page_title_arr, Lang::t('_ASSIGN_USERS_TO_FNCROLE', 'fncroles'), true);
     }
 }
Exemplo n.º 21
0
 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&amp;op=catlist' => $lang->def('_CATALOGUE'), getCatalogueName($id_catalogue)), 'catalogue');
     $user_select->setPageTitle($title_area);
     $user_select->loadSelector('index.php?modname=catalogue&amp;op=modcatalogueassoc&amp;id_catalogue=' . $id_catalogue, $lang->def('_CATALOGUE'), $lang->def('_ASSIGN_USERS'), true);
 }
Exemplo n.º 22
0
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&amp;op=reservation&amp;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("&amp;", "&", $back_url));
    } else {
        if (isset($_POST['cancelselector'])) {
            Util::jump_to(str_replace("&amp;", "&", $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&amp;op=set_room_view_perm&amp;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);
        }
    }
}
Exemplo n.º 23
0
 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&amp;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&amp;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&amp;op=pathlist' => $lang->def('_COURSEPATH'), $path_name), 'coursepath') . '<div class="std_block">' . Form::openForm('edition_selection_form', 'index.php?modname=coursepath&amp;op=addsubscriptionedition&amp;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&amp;op=pathlist&result=' . ($re ? 'ok' : 'err'));
         }
     } else {
         $user_select->setPageTitle(getTitleArea(array('index.php?modname=coursepath&amp;op=pathlist' => $lang->def('_COURSEPATH'), $path_name), 'coursepath'));
         $user_select->loadSelector('index.php?modname=coursepath&amp;op=addsubscription&amp;id_path=' . $id_path, $lang->def('_SUBSCRIBE'), false, true);
     }
 }
Exemplo n.º 24
0
 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('&', '&amp;', $jump_url), false, $this->lang->def('_CHOOSE_USER_FOR_REPORT'), true);
             break;
     }
 }
Exemplo n.º 25
0
 /**
  * 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));
 }
Exemplo n.º 26
0
 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('&', '&amp;', $jump_url), false, $lang->def('_CHOOSE_USER_FOR_REPORT'), true);
     }
 }
Exemplo n.º 27
0
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&amp;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&amp;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&amp;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 = "&nbsp;";
            }
            $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>');
}
Exemplo n.º 28
0
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&amp;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&amp;op=forum&amp;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&amp;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&amp;op=modforumaccess&amp;idForum=' . $id_forum, '', $lang->def('_CHOOSE_FORUM_ACCESS'), true);
    cout('</div>', 'content');
}
Exemplo n.º 29
0
 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');
 }