require_once 'include/Subscription.inc.php'; require_once ROOT_DIR . '/include/Forms/UserFindForm.inc.php'; /* * YOUR CODE HERE */ if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') { $canSubscribeUser = false; if ($courseInstanceObj instanceof Course_instance && $courseInstanceObj->isFull()) { $startStudentLevel = $courseInstanceObj->start_level_student; } if (isset($_POST['findByUsername'])) { $form = new UserFindForm(); $form->fillWithPostData(); if ($form->isValid()) { $courseInstanceId = $_POST['id_course_instance']; $subscriberObj = MultiPort::findUserByUsername($_POST['username']); $canSubscribeUser = false; if ($subscriberObj instanceof ADAUser) { $result = $dh->student_can_subscribe_to_course_instance($subscriberObj->getId(), $courseInstanceId); if (!AMA_DataHandler::isError($result) && $result !== false) { $canSubscribeUser = $courseInstanceObj instanceof Course_instance && $courseInstanceObj->isFull() && $courseInstanceObj->getServiceLevel() != ADA_SERVICE_TUTORCOMMUNITY; } } else { if ($subscriberObj instanceof ADAPractitioner) { /** * @author giorgio 14/apr/2015 * * If the switcher is trying to subscribe a tutor, do it only * if the course instance belongs to a service of type * ADA_SERVICE_TUTORCOMMUNITY */
if (count($errorsAr) > 0) { $tester_dataAr = $_POST; $testersAr = array(); $form = AdminModuleHtmlLib::getAddTesterForm($testersAr, $tester_dataAr, $errorsAr); } else { unset($_POST['submit']); $tester_dataAr = $_POST; $result = $common_dh->add_tester($tester_dataAr); if (AMA_Common_DataHandler::isError($result)) { $errObj = new ADA_Error($result); $form = new CText(''); } else { $adminUsersArr = $common_dh->get_users_by_type(array(AMA_TYPE_ADMIN)); if (!AMA_DB::isError($adminUsersArr) && is_array($adminUsersArr) && count($adminUsersArr) > 0) { foreach ($adminUsersArr as $adminUser) { $adminUserObj = MultiPort::findUserByUsername($adminUser['username']); $common_dh->add_user_to_tester($adminUserObj->getId(), $result); } } header('Location: ' . $userObj->getHomePage()); exit; } } } else { /* * Display the add user form */ $testersAr = array(); $form = AdminModuleHtmlLib::getAddTesterForm($testersAr); } $label = translateFN("Aggiunta tester");
/** * adds a user whose data are coming from the login provider to the proper ADA DB * * @param array $userArr array of user data to be added * @param function $successCallback callback function accepting a ADALoggableUser parameter to be called just before returning * @param function $errorCallback callback function accepting no parameters to be called just before redirecting * * @return ADALoggableUser|null (redirects if MultiPort::addUser fails) * * @access public */ public function addADAUser($userArr, $successCallback = null, $errorCallback = null) { /** * build user object */ $userObj = new ADAUser($userArr); $userObj->setLayout(''); $userObj->setType(isset($userArr['tipo']) ? $userArr['tipo'] : AMA_TYPE_STUDENT); $userObj->setStatus(ADA_STATUS_REGISTERED); $userObj->setPassword(sha1(time())); // force unguessable password /** * save the user in the appropriate provider */ if (!MULTIPROVIDER && isset($GLOBALS['user_provider'])) { $regProvider = array($GLOBALS['user_provider']); } else { $regProvider = array(ADA_PUBLIC_TESTER); } $id_user = Multiport::addUser($userObj, $regProvider); if ($id_user < 0) { if (!is_null($errorCallback)) { call_user_func($errorCallback); } $message = translateFN('Impossibile procedere. Un utente con questi dati esiste?') . ' ' . urlencode($userObj->getEmail()); header('Location:' . HTTP_ROOT_DIR . '/browsing/registration.php?message=' . $message); exit; } else { /** * reload user object just to double check */ $retObj = MultiPort::findUserByUsername($userArr['username']); if (!is_null($successCallback)) { call_user_func($successCallback, $retObj); } return $retObj; } }
$alreadySubscribed = 0; $notStudents = 0; $subscribers = count($usersToSubscribe); $admtypeAr = array(AMA_TYPE_ADMIN); $admList = $common_dh->get_users_by_type($admtypeAr); if (!AMA_DataHandler::isError($admList)) { $adm_uname = $admList[0]['username']; } else { $adm_uname = ''; // ??? FIXME: serve un superadmin nel file di config? } $courseTitle = $courseObj->getTitle(); foreach ($usersToSubscribe as $subscriber) { $canSubscribeUser = false; $userDataAr = explode(',', $subscriber); $subscriberObj = MultiPort::findUserByUsername(trim($userDataAr[2])); if ($subscriberObj == NULL) { $subscriberObj = new ADAUser(array('nome' => trim($userDataAr[0]), 'cognome' => trim($userDataAr[1]), 'email' => trim($userDataAr[2]), 'tipo' => AMA_TYPE_STUDENT, 'username' => trim($userDataAr[2]), 'stato' => ADA_STATUS_PRESUBSCRIBED, 'birthcity' => '')); $subscriberObj->setPassword(time()); /** * @author giorgio 06/mag/2014 11:25:21 * * If it's not a multiprovider environment, * user must be subscribed to switcher's own * provider only. * User must be subscribed to the ADA_PUBLIC_TESTER * only in a multiprovider environment. */ $provider_to_subscribeAr = array($sess_selected_tester); if (MULTIPROVIDER) { array_unshift($provider_to_subscribeAr, ADA_PUBLIC_TESTER);