function confirmRegister($platform, $options) { $lang =& DoceboLanguage::createInstance('register', $platform); $acl_man =& Docebo::user()->getAclManager(); $acl =& Docebo::user()->getAcl(); if (!isset($_GET['random_code'])) { } $random_code = $_GET['random_code']; if (strpos($random_code, '?') !== false) { $random_code = substr($random_code, 0, strpos($random_code, '?')); } $request = $acl_man->getTempUserInfo(false, $random_code); if (time() > fromDatetimeToTimestamp($request['request_on']) + 3600 * (int) $options['hour_request_limit']) { $out = '<div class="reg_err_data">' . $lang->def('_REG_ELAPSEDREQUEST', 'register') . '</div>'; $time_limit = time() - 3600 * (int) $options['hour_request_limit']; if (Get::sett('registration_code_type', '0') == 'code_module') { // free the code from the old association require_once _adm_ . '/lib/lib.code.php'; $code_manager = new CodeManager(); $code_manager->resetUserAssociation($code, $request['idst']); } $acl_man->deleteTempUser(false, false, $time_limit, true); return $out; } if ($options['register_type'] == 'self' || $options['register_type'] == 'self_optin') { if ($acl_man->registerUser(addslashes($request['userid']), addslashes($request['firstname']), addslashes($request['lastname']), $request['pass'], addslashes($request['email']), '', '', true, $request['idst'], '', '', $request['facebook_id'], $request['twitter_id'], $request['linkedin_id'], $request['google_id'])) { // $google_id // remove temporary enter $acl_man->deleteTempUser($request['idst'], false, false, false); $acl_man->updateUser($request['idst'], FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, date("Y-m-d H:i:s")); // subscribe to base group $idst_usergroup = $acl_man->getGroup(false, ADMIN_GROUP_USER); $idst_usergroup = $idst_usergroup[ACL_INFO_IDST]; $idst_oc = $acl_man->getGroup(false, '/oc_0'); $idst_oc = $idst_oc[ACL_INFO_IDST]; $idst_ocd = $acl_man->getGroup(false, '/ocd_0'); $idst_ocd = $idst_ocd[ACL_INFO_IDST]; $acl_man->addToGroup($idst_usergroup, $request['idst']); $acl_man->addToGroup($idst_oc, $request['idst']); $acl_man->addToGroup($idst_ocd, $request['idst']); // aggiunta notifica UserNewWaiting require_once _base_ . "/lib/lib.eventmanager.php"; // set as recipients all who can approve a waiting user $msg_c_new = new EventMessageComposer(); $msg_c_new->setSubjectLangText('email', '_TO_NEW_USER_SBJ', false); $msg_c_new->setBodyLangText('email', '_TO_NEW_USER_TEXT', array('[url]' => Get::sett('url'))); $msg_c_new->setBodyLangText('sms', '_TO_NEW_USER_TEXT_SMS', array('[url]' => Get::sett('url'))); $idst_approve = $acl->getRoleST('/framework/admin/directory/approve_waiting_user'); $recipients = $acl_man->getAllRoleMembers($idst_approve); if (!empty($recipients)) { createNewAlert('UserNewWaiting', 'directory', 'edit', '1', 'User waiting for approvation', $recipients, $msg_c_new); } // end $out = '<div class="reg_success">' . $lang->def('_REG_YOUR_ABI_TO_ACCESS', 'register') . '</div>'; return $out; } else { $out = '<div class="reg_err_data">' . $lang->def('_REG_CONFIRM_FAILED', 'register') . '</div>'; return $out; } } elseif ($options['register_type'] == 'moderate') { if ($acl_man->confirmTempUser($request['idst'])) { if (Get::sett('use_code_module') == 'on') { require_once $GLOBALS['where_framework'] . '/lib/lib.code.php'; $code_manager = new CodeManager(); $code = $code_manager->getCodeAssociate($request['idst']); if ($code !== false) { $array_course = $code_manager->getCourseAssociateWithCode($code); $array_folder = $code_manager->getOrgAssociateWithCode($code); if (count($array_course)) { foreach ($array_course as $id_course) { require_once $GLOBALS['where_lms'] . '/lib/lib.subscribe.php'; $subscribe = new CourseSubscribe_Management(); $subscribe->subscribeUser($request['idst'], $id_course, '3'); } } if (count($array_folder)) { foreach ($array_folder as $id_folder) { $group = $acl_man->getGroup($id_folder, false); $group_d = $acl_man->getGroup(false, '/ocd_' . str_replace('/oc_', '', $group[ACL_INFO_GROUPID])); if ($group) { $acl_man->addToGroup($group[ACL_INFO_IDST], $request['idst']); } if ($group_d) { $acl_man->addToGroup($group_d[ACL_INFO_IDST], $request['idst']); } } } } } $out = '<div class="reg_success">' . Lang::t('_REG_WAIT_FOR_ADMIN_OK', 'register') . '</div>'; // send alert to admin that can approve require_once _base_ . "/lib/lib.eventmanager.php"; // set as recipients all who can approve a waiting user $msg_c_approve = new EventMessageComposer(); $msg_c_approve->setSubjectLangText('email', '_TO_APPROVE_USER_SBJ', false); $msg_c_approve->setBodyLangText('email', '_TO_APPROVE_USER_TEXT', array('[url]' => Get::sett('url'))); $msg_c_approve->setBodyLangText('sms', '_TO_APPROVE_USER_TEXT_SMS', array('[url]' => Get::sett('url'))); $idst_approve = $acl->getRoleST('/framework/admin/directory/approve_waiting_user'); $recipients = $acl_man->getAllRoleMembers($idst_approve); if (!empty($recipients)) { createNewAlert('UserNewModerated', 'directory', 'edit', '1', 'User waiting for approvation', $recipients, $msg_c_approve); } return $out; } else { $out = '<div class="reg_err_data">' . $lang->def('_REG_CONFIRM_FAILED', 'register') . '</div>'; return $out; } } }
function subscribeUserWithCode($code, $id_user, $level = 3) { require_once $GLOBALS['where_lms'] . '/lib/lib.subscribe.php'; $subscriber = new CourseSubscribe_Management(); $acl_man =& Docebo::user()->getAclManager(); $query_course = "SELECT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_course" . " WHERE autoregistration_code = '" . $code . "'" . " AND autoregistration_code <> ''"; $result_course = sql_query($query_course); $query_course_active = "SELECT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_course" . " WHERE autoregistration_code = '" . $code . "'" . " AND autoregistration_code <> ''" . " AND ( \r\n (can_subscribe=2 AND (sub_end_date = '0000-00-00' OR sub_end_date >= '" . date('Y-m-d') . "') AND (sub_start_date = '0000-00-00' OR '" . date('Y-m-d') . "' >= sub_start_date)) OR\r\n (can_subscribe=1)\r\n ) "; $result_course_active = sql_query($query_course_active); $counter = 0; $subs = $this->getUserSubscriptionsInfo($id_user); if (!mysql_num_rows($result_course)) { return 0; } // return -2 if course subscription is not allowed if (!mysql_num_rows($result_course_active)) { return -2; } while (list($id_course) = sql_fetch_row($result_course)) { if (!isset($subs[$id_course])) { $result = $subscriber->subscribeUser($id_user, $id_course, $level); if ($result) { $counter++; } } } if (mysql_num_rows($result_course) != 0 && $counter == 0) { return -1; } return $counter; }
function subscribe() { checkPerm('view'); require_once _base_ . '/lib/lib.form.php'; $form = new Form(); if (isset($_POST['course_autoregistration_code'])) { require_once _lms_ . '/lib/lib.course.php'; $out =& $GLOBALS['page']; $out->setWorkingZone('content'); $code = $_POST['course_autoregistration_code']; $code = strtoupper($code); $code = str_replace('-', '', $code); $registration_code_type = Get::sett('registration_code_type', '0'); if ($registration_code_type == 'tree_course') { $code = substr($code, 10, 10); } $course_registration_result = false; $man_course_user = new Man_CourseUser(); $course_registration_result = $man_course_user->subscribeUserWithCode($code, getLogUserId()); $out->add(getTitleArea(Lang::t('_AUTOREGISTRATION', 'course_autoregistration')) . '<div class="std_block">'); if ($course_registration_result > 0) { $out->add(str_replace('[course_added]', $course_registration_result, Lang::t('_OPERATION_SUCCESSFUL', 'course_autoregistration'))); $out->add('<br/><a href="index.php?r=' . _after_login_ . '">' . Lang::t('_BACK_TO_COURSE', 'course_autoregistration') . '</a>'); } else { if ($course_registration_result == -1) { $out->add(getErrorUi(Lang::t('_CODE_ALREDY_USED', 'course_autoregistration'))); $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace()); } else { if ($course_registration_result == -2) { $out->add(getErrorUi(Lang::t('_SUBSCRIPTION_NOT_ALLOWED_YET', 'course_autoregistration'))); $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace()); } else { require_once _adm_ . '/lib/lib.code.php'; $code = $_POST['course_autoregistration_code']; $code_manager = new CodeManager(); $valid_code = $code_manager->controlCodeValidity($code); if ($valid_code == 1) { $array_course = $code_manager->getAvailableCourseAssociateWithCode($code); require_once _lms_ . '/lib/lib.course.php'; $man_course = new Man_Course(); $array_course_name = array(); $counter = 0; require_once _lms_ . '/lib/lib.subscribe.php'; $subscribe = new CourseSubscribe_Management(); foreach ($array_course as $id_course) { $query_control = "SELECT COUNT(*)" . " FROM %lms_courseuser" . " WHERE idCourse = " . $id_course . " AND idUser = "******"index.php?r=' . _after_login_ . '">' . Lang::t('_BACK_TO_COURSE', 'course_autoregistration') . '</a>'); } else { if (sizeof($array_course) == 0) { $out->add(getErrorUi(Lang::t('_SUBSCRIPTION_NOT_ALLOWED_YET', 'course_autoregistration'))); } else { $out->add(getErrorUi(Lang::t('_ALREADY_SUBSCRIBED', 'course_autoregistration'))); } $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace()); } } else { if ($valid_code == 0) { $out->add(getErrorUi(Lang::t('_CODE_ALREDY_USED', 'course_autoregistration'))); } else { $out->add(getErrorUi(Lang::t('_CODE_NOT_VALID', 'course_autoregistration'))); } $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace()); } } } } $out->add('</div>'); } }