コード例 #1
0
 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;
         }
     }
 }