/** * Must override setUserId method to get $whatsnew whenever we set $id_user * * * @param $user_id * @author giorgio 03/mag/2013 */ public function setUserId($id_user) { parent::setUserId($id_user); $this->setwhatsnew(MultiPort::get_new_nodes($this)); }
/** * Adds a new user to the ADA main database. * Fails (returning false) if user is already in Common DB * @param ADAGenericUser $userObj * @param $testers array * @return boolean */ public static function addUser(ADALoggableUser $userObj, $testers = array()) { /** * true if must check user existance in * the common provider utente DB table */ $checkUserExistsInCommonDB = true; /** * @author giorgio 05/mag/2014 12:45:30 * * if not in a multiprovider environment, * check if the user to add exists in the selected provider * */ if (!MULTIPROVIDER && isset($GLOBALS['user_provider']) && strlen($GLOBALS['user_provider']) > 0) { $tester_dh = AMA_DataHandler::instance(self::getDSN($GLOBALS['user_provider'])); if (!is_null($tester_dh)) { /** * check if a user with the passed username * already exists in the selected provider */ $user_id = $tester_dh->find_students_list(null, 'username =\'' . $userObj->getUserName() . '\''); // var_dump($user_id); // var_dump(count($user_id)); die(); if (AMA_DB::isError($user_id)) { return ADA_ADD_USER_ERROR; } else { if (count($user_id) > 0) { return ADA_ADD_USER_ERROR_USER_EXISTS_TESTER; } else { /** * set $user_id=0 to resume normal operation */ $user_id = 0; /** * don't check if user exists in common DB */ $checkUserExistsInCommonDB = false; /** * $tester_dh is needed when actually * adding the user to tester, let's unset it */ unset($tester_dh); } // if (count($user_id)>0) } // if (AMA_DB::isError($user_id)) } else { return ADA_ADD_USER_ERROR_TESTER; } // if (!is_null($tester_dh)) } else { $user_id = $userObj->getId(); /** * set $tester_dh to null for future check */ $tester_dh = null; } // if (!MULTIPROVIDER &&.....) $common_dh = AMA_Common_DataHandler::instance(); if ($user_id == 0) { /* If the user isn't in common DB yet * add this user to ADA main database */ $user_dataAr = $userObj->toArray(); unset($user_dataAr['id_utente']); $user_id = $common_dh->add_user($user_dataAr, $checkUserExistsInCommonDB); /* * add_user restituisce o AMA_ERR_UNIQUE_KEY nel caso * sia giĆ presente un utente con lo stesso username (email) * o restituisce un errore AMA_ERR_ADD o AMA_ERR_GET */ if (AMA_DataHandler::isError($user_id)) { if ($user_id->code == AMA_ERR_UNIQUE_KEY) { /* * Esiste gia' un utente con questa mail. */ //$errorType = "a1"; return ADA_ADD_USER_ERROR_USER_EXISTS; } else { //$user_id->code == AMA_ERR_ADD //$user_id->code == AMA_ERR_GET return ADA_ADD_USER_ERROR; //$errorType = "a2"; } //return $errorType; } /* * Se siamo qui l'utente e' stato inserito correttamente * e $User_id e' l'id che gli e' stato assegnato. */ $userObj->setUserId($user_id); } /* * If the user has subscribed to at least one tester, add the user * to the utente_tester table in common database. */ foreach ($testers as $tester) { if ($tester != NULL) { ADALogger::log("MultiPort::add:user_to_tester on tester: {$tester}"); $testerHa = $common_dh->get_tester_info_from_pointer($tester); //var_dump($testerHa); $tester_id = $testerHa[0]; $res = $common_dh->add_user_to_tester($user_id, $tester_id); if (AMA_DataHandler::isError($res)) { /* * add_user_to_tester raises AMA_ERR_ADD */ // // gestione errore // if (($res->code != AMA_ERR_ADD) AND ($res->code!= AMA_ERR_UNIQUE_KEY)) { // // ?? the user can be already there because of another service. // // return false; $errorType = "b1"; // } // else { // $errorType = "b2"; // } // return $errorType; // we don't want to exit here!!! // return ADA_ADD_USER_ERROR_TESTER_ASSOCIATION; } } } /* * If the user has subscribed to at least one tester, add the user * to the tester database. */ $user_dataAr = $userObj->toArray(); foreach ($testers as $tester) { if ($tester != NULL) { ADALogger::log("MultiPort::addUser on tester: {$tester}"); $tester_dsn = self::getDSN($tester); if ($tester_dsn == null) { //$errorType = "c"; //return $errorType; return ADA_ADD_USER_ERROR_TESTER; } $tester_dh = AMA_DataHandler::instance($tester_dsn); switch ($userObj->getType()) { case AMA_TYPE_STUDENT: $result = $tester_dh->add_student($user_dataAr); break; case AMA_TYPE_AUTHOR: $result = $tester_dh->add_author($user_dataAr); break; case AMA_TYPE_SUPERTUTOR: case AMA_TYPE_TUTOR: $result = $tester_dh->add_tutor($user_dataAr); break; case AMA_TYPE_SWITCHER: $result = $tester_dh->add_user($user_dataAr); break; case AMA_TYPE_ADMIN: $result = $tester_dh->add_user($user_dataAr); break; } if (AMA_DataHandler::isError($result)) { if ($result->code == AMA_ERR_UNIQUE_KEY) { /* * Esiste gia' un utente con questa mail. */ return ADA_ADD_USER_ERROR_USER_EXISTS_TESTER; } else { return ADA_ADD_USER_ERROR_TESTER; } } } /* if(AMA_DataHandler::isError($result)) { if (($result->code != AMA_ERR_ADD) AND ($result->code!= AMA_ERR_UNIQUE_KEY)) { $errorType = "d1"; return $errorType; } else { $errorType = "d2"; return $errorType; } } */ } // mod steve 5/10/09 //return true; ??????????? return $user_id; // end mod }