public function copy_course() { $users = Get::req('users', DOTY_STRING, ""); $move = Get::req('move', DOTY_STRING, ""); if (!$this->permissions['subscribe_course']) { $this->render('invalid', array('message' => $this->_getErrorMessage('no permission'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } require_once _lms_ . '/lib/lib.course.php'; $course_selector = new Selector_Course(); $course_selector->parseForState($_POST); if (isset($_POST['undo'])) { Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $this->model->getIdCourse()); } if (isset($_POST['copy'])) { $course_selected = $course_selector->getSelection(); if (count($course_selected) == 0) { Util::jump_to('index.php?r=' . $this->link . '/copy_course&load=1&id_course=' . $this->model->getIdCourse() . '&err=_no_course_sel'); } require_once _lms_ . '/lib/lib.course.php'; foreach ($course_selected as $id_course) { $docebo_course = new DoceboCourse($id_course); $level_idst =& $docebo_course->getCourseLevel($id_course); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst =& $docebo_course->createCourseLevel($id_course); } $query = "SELECT idUser, MIN(level) AS level" . " FROM %lms_courseuser" . " WHERE idUser IN (" . $users . ")" . " GROUP BY idUser"; $result = sql_query($query); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $limited_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.limit_course_subscribe'); $max_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.max_course_subscribe'); $direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe'); if ($limited_subscribe == 'on') { $limited_subscribe = true; } else { $limited_subscribe = false; } if ($direct_subscribe == 'on') { $direct_subscribe = true; } else { $direct_subscribe = false; } } else { $limited_subscribe = false; $max_subscribe = 0; $direct_subscribe = true; } require_once _lms_ . '/lib/lib.course.php'; $docebo_course = new DoceboCourse($id_course); $level_idst =& $docebo_course->getCourseLevel($id_course); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst =& $docebo_course->createCourseLevel($id_course); } $waiting = 0; if (!$direct_subscribe) { $waiting = 1; } $old_id_course = $_GET['id_course']; $_GET['id_course'] = $id_course; $course = new self(); while (list($id_user, $level) = sql_fetch_row($result)) { if (!$limited_subscribe || $max_subscribe) { if ($course->model->subscribeUser($id_user, $level, $waiting)) { //$this->acl_man->addToGroup($level_idst[$level], $id_user); $course->_addToCourseGroup($level_idst[$level], $id_user); $max_subscribe--; } } } if ($move) { $db = DbConn::getInstance(); $arr_users = explode(",", $users); $re = $db->query("DELETE FROM learning_courseuser\r\n\t\t\t\t\t\tWHERE idUser IN ( " . implode(',', $arr_users) . " ) AND idCourse = '" . $old_id_course . "'"); } } Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $this->model->getIdCourse() . '&res=_copy_ok'); //////////////////////////////// } else { $id_cat = Get::req('id_cat', DOTY_INT, 0); if (isset($_GET['load']) && $_GET['load'] == 1) { $course_selector->resetSelection(array()); } if (isset($_GET['err']) && $_GET['err'] !== '') { UIFeedback::error(Lang::t(strtoupper($_GET['err']), 'subscription')); } $course_info = $this->model->getCourseInfoForSubscription(); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $this->render('copy_course', array('model' => $this->model, 'id_cat' => $id_cat, 'users' => $users, 'move' => $move, 'course_selector' => $course_selector, 'course_name' => $course_name, 'id_course' => $this->id_course, 'id_edition' => $this->id_edition, 'id_date' => $this->id_date)); } }