function get_rows_filter()
 {
     if (!isset($_SESSION['report_tempdata']['rows_filter'])) {
         $_SESSION['report_tempdata']['rows_filter'] = array('users' => array(), 'all_users' => false);
     }
     $back_url = $this->back_url;
     $jump_url = $this->jump_url;
     $next_url = $this->next_url;
     require_once _base_ . '/lib/lib.form.php';
     require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php';
     require_once _base_ . '/lib/lib.userselector.php';
     require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
     $lang =& DoceboLanguage::createInstance('report', 'framework');
     $org_chart_subdivision = importVar('org_chart_subdivision', true, 0);
     $aclManager = new DoceboACLManager();
     $user_select = new UserSelector();
     $user_select->use_suspended = true;
     if (isset($_POST['cancelselector'])) {
         Util::jump_to($back_url);
     } elseif (isset($_POST['okselector'])) {
         $aclManager = new DoceboACLManager();
         $temp = $user_select->getSelection($_POST);
         $_SESSION['report_tempdata']['rows_filter']['users'] = $temp;
         $_SESSION['report_tempdata']['rows_filter']['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false;
         Util::jump_to($next_url);
     } else {
         // first step load selector
         if ($org_chart_subdivision == 0) {
             $user_select->show_user_selector = TRUE;
             $user_select->show_group_selector = TRUE;
         } else {
             $user_select->show_user_selector = FALSE;
             $user_select->show_group_selector = FALSE;
         }
         $user_select->show_orgchart_selector = TRUE;
         //$user_select->show_orgchart_simple_selector = FALSE;
         //$user_select->multi_choice = TRUE;
         if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) {
             $acl_man = new DoceboACLManager();
             require_once _base_ . '/lib/lib.preference.php';
             $adminManager = new AdminPreference();
             $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST());
             $admin_users = $acl_man->getAllUsersFromIdst($admin_tree);
             $user_select->setUserFilter('user', $admin_users);
             $user_select->setUserFilter('group', $admin_tree);
         }
         if (Get::req('is_updating', DOTY_INT, false)) {
             //$_SESSION['report_tempdata']['rows_filter']['users'] = $user_select->getSelection($_POST);
             $_SESSION['report_tempdata']['rows_filter']['all_users'] = Get::req('all_users', DOTY_INT, 0) > 0 ? true : false;
         } else {
             $user_select->requested_tab = PEOPLEVIEW_TAB;
             $user_select->resetSelection($_SESSION['report_tempdata']['rows_filter']['users']);
         }
         $user_select->addFormInfo(Form::getCheckbox($lang->def('_REPORT_FOR_ALL'), 'all_users', 'all_users', 1, $_SESSION['report_tempdata']['rows_filter']['all_users']) . Form::getBreakRow() . Form::getHidden('org_chart_subdivision', 'org_chart_subdivision', $org_chart_subdivision) . Form::getHidden('is_updating', 'is_updating', 1));
         //$user_select->setPageTitle($this->page_title);
         cout($this->page_title, 'content');
         //$user_select->resetSelection($_SESSION['report_tempdata']['rows_filter']['users']);
         $user_select->loadSelector(Util::str_replace_once('&', '&', $jump_url), false, $lang->def('_CHOOSE_USER_FOR_REPORT'), true);
     }
 }
function editviewer()
{
    checkPerm('mod');
    require_once _base_ . '/lib/lib.userselector.php';
    require_once _base_ . '/lib/lib.form.php';
    $lang =& DoceboLanguage::createInstance('admin_news', 'lms');
    $form = new Form();
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $id_news = importVar('id_news', true, 0);
    $page_title = array('index.php?modname=internal_news&op=news' => $lang->def('_NEWS'), $lang->def('_RECIPIENTS'));
    $acl_manager = new DoceboACLManager();
    $user_select = new UserSelector();
    $user_select->show_user_selector = TRUE;
    $user_select->show_group_selector = TRUE;
    $user_select->show_orgchart_selector = TRUE;
    $user_select->show_orgchart_simple_selector = false;
    //$user_select->multi_choice = TRUE;
    $query_news = "\r\n\tSELECT title, viewer\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_news_internal\r\n\tWHERE idNews = '" . $id_news . "'";
    list($title, $viewer) = sql_fetch_row(sql_query($query_news));
    // try to load previous saved
    if (isset($_GET['load'])) {
        $viewer = unserialize($viewer);
        if (is_array($viewer)) {
            $user_select->resetSelection($viewer);
        } else {
            $user_select->resetSelection(array());
        }
    }
    if (isset($_POST['cancelselector'])) {
        Util::jump_to('index.php?modname=internal_news&op=news');
    }
    if (isset($_POST['okselector'])) {
        $selected = $user_select->getSelection($_POST);
        $query_news = "\r\n\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_news_internal\r\n\t\tSET viewer = '" . serialize($selected) . "'\r\n\t\tWHERE idNews = '" . $id_news . "'";
        $re = sql_query($query_news);
        Util::jump_to('index.php?modname=internal_news&op=news&result=' . ($re ? 'ok' : 'err'));
    }
    cout(getTitleArea($page_title, 'news') . '<div class="std_block">');
    $user_select->addFormInfo($form->getHidden('id_news', 'id_news', $id_news));
    $user_select->loadSelector('index.php?modname=internal_news&amp;op=editviewer', false, false, true);
    cout('</div>');
}
 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;
     }
 }
 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);
     }
 }
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');
}
 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 {
     }
 }
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);
    }
}
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);
}
Exemple #9
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>');
}
 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);
     }
 }
 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);
     }
 }
 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);
     }
 }
    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;
        }
    }
Exemple #14
0
 function addmessage()
 {
     $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';
     require_once _lms_ . '/lib/lib.course.php';
     $lang =& DoceboLanguage::createInstance('message', 'lms');
     $out = $GLOBALS['page'];
     $out->setWorkingZone('content');
     $from = importVar('out');
     $um =& UrlManager::getInstance("message");
     $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->nFields = 0;
     if (isset($_POST['message']['recipients'])) {
         $recipients = unserialize(urldecode($_POST['message']['recipients']));
         $user_select->resetSelection($recipients);
     }
     $me = array(getLogUserId());
     $course_man = new Man_Course();
     $all_value = array(0 => Lang::t('_ALL_COURSES'));
     $all_courses = $course_man->getUserCourses(getLogUserId());
     $all_value = $all_value + $all_courses;
     if (count($all_value) > 0) {
         $drop = Form::getLineDropdown('form_line_right', 'label_padded', Lang::t('_FILTER_MESSAGE_FOR'), 'dropdown_nowh', 'msg_course_filter', 'msg_course_filter', $all_value, isset($_POST['msg_course_filter']) ? $_POST['msg_course_filter'] : (isset($_SESSION['idCourse']) ? $_SESSION['idCourse'] : 0), '', ' ' . Form::getButton('refresh_msg_filter', 'refresh_msg_filter', Lang::t('_REFRESH'), 'button_nowh'), '');
         $drop .= "\r\n\t\t\t\t<script type=\"text/javascript\"><!--\r\n\t\t\t\t\tvar hide_refresh = document.getElementById('refresh_msg_filter');\r\n\t\t\t\t\thide_refresh.style.display = 'none';\r\n\t\t\t\t\tvar option_elem = document.getElementById('msg_course_filter');\r\n\t\t\t\t\toption_elem.onchange = function() {\r\n\t\t\t\t\t\tvar hide_refresh = document.getElementById('refresh_msg_filter');\r\n\t\t\t\t\t\thide_refresh.click();\r\n\t\t\t\t\t}\r\n\t\t\t\t--></script>";
         $user_select->addFormInfo($drop);
     } else {
         $user_select->addFormInfo(Form::getHidden("msg_course_filter", "msg_course_filter", 0));
     }
     $user_select->setUserFilter('exclude', $me);
     if (isset($_POST['msg_course_filter'])) {
         $filter = $_POST['msg_course_filter'];
     } elseif (isset($_GET['set_course_filter'])) {
         $filter = $_GET['set_course_filter'];
     } else {
         $filter = 0;
     }
     $_SESSION['message_filter'] = $filter;
     $user_select->learning_filter = 'message';
     //$user_select->requested_tab = PEOPLEVIEW_TAB;
     $id_forward = importVar('id_forward', true, 0);
     $title_url = $this->mvc_urls ? "index.php?r=message/show" . ($from == 'out' ? '&active_tab=outbox' : '') : $um->getUrl($from == 'out' ? '&active_tab=outbox' : '');
     $user_select->setPageTitle($this->messageGetTitleArea(array($title_url => Lang::t('_MESSAGES'), Lang::t('_SEND')), 'forum'));
     $load_url = $this->mvc_urls ? 'index.php?r=message/add&id_forward=' . $id_forward . '' . ($from == 'out' ? '&from=out' : '') : $um->getUrl('op=addmessage&id_forward=' . $id_forward . '' . ($from == 'out' ? '&from=out' : ''));
     $user_select->loadSelector($load_url, false, Lang::t('_RECIPIENTS'), true);
 }