public function toArray() { $user_dataAr = parent::toArray(); $user_dataAr['tariffa'] = $this->tariffa; $user_dataAr['profilo'] = $this->profilo; return $user_dataAr; }
/** * Updates an existing user * * @param ADAGenericUser $userObj * @param $testers array * @return boolean */ public static function setUser(ADALoggableUser $userObj, $new_testers = array(), $update_user_data = FALSE, $extraTableName = false) { $user_id = $userObj->getId(); $testers = $userObj->getTesters(); $testers_to_add = array(); if (!is_array($testers)) { $testers = array(); } if ($user_id == 0) { return FALSE; } $common_dh = AMA_Common_DataHandler::instance(); $user_dataAr = $userObj->toArray(); if ($update_user_data) { $result = $common_dh->set_user($user_id, $user_dataAr); if (AMA_Common_DataHandler::isError($result)) { //return ADA_SET_USER_ERROR; } } if ($update_user_data) { $idFromPublicTester = 0; foreach ($testers as $tester) { $tester_dh = AMA_DataHandler::instance(MultiPort::getDSN($tester)); // switch ($userObj->getType()) { case AMA_TYPE_STUDENT: /** * @author giorgio * if it's an extraTable I need set_student to return me the id of the inserted * record in the table on DEFAULT that will be used as an id for all other providers */ $result = $tester_dh->set_student($user_id, $user_dataAr, $extraTableName, $userObj, $idFromPublicTester); break; case AMA_TYPE_AUTHOR: $result = $tester_dh->set_author($user_id, $user_dataAr); break; case AMA_TYPE_SUPERTUTOR: case AMA_TYPE_TUTOR: $result = $tester_dh->set_tutor($user_id, $user_dataAr); break; case AMA_TYPE_SWITCHER: $result = $tester_dh->set_user($user_id, $user_dataAr); break; case AMA_TYPE_ADMIN: $result = $tester_dh->set_user($user_id, $user_dataAr); break; } if (AMA_DataHandler::isError($result)) { if ($result->code == AMA_ERR_NOT_FOUND) { $testers_to_add[] = $tester; } //return ADA_SET_USER_ERROR_TESTER; } } } // se sono qui, verifico se in new_testers ci sono dei tester nuovi e li associo all'utente $testers_to_add = array_merge($testers_to_add, array_diff($new_testers, $testers)); $pwd = $common_dh->_get_user_pwd($user_id); if (AMA_DataHandler::isError($pwd)) { // if there is an error, we MUST insert a fake password in provider DB $pwd = sha1($user_id); } $user_dataAr['password'] = $pwd; foreach ($testers_to_add as $tester_to_add) { // aggiungi utente nella tabella utente del tester $tester_dh = AMA_DataHandler::instance(MultiPort::getDSN($tester_to_add)); // we have to use different functions for different user types switch ($userObj->getType()) { case AMA_TYPE_STUDENT: $result = $tester_dh->add_student($user_dataAr); $result = $tester_dh->set_student($user_id, $user_dataAr, $extraTableName, $userObj); if ($userObj->hasExtra()) { if (method_exists('ADAUser', 'getExtraTableName')) { $tableName = ADAUser::getExtraTableName(); if (strlen($tableName) > 0) { $tester_dh->set_student($user_id, $user_dataAr, $tableName, $userObj); } } if (method_exists('ADAUser', 'getLinkedTables')) { $linkedTables = ADAUser::getLinkedTables(); if (is_array($linkedTables) && count($linkedTables) > 0) { foreach ($linkedTables as $tableName) { // force the record to be saved in the provider we're adding the user if (isset($user_dataAr[$tableName]) && is_array($user_dataAr[$tableName])) { foreach ($user_dataAr[$tableName] as $i => $notused) { $storedID = $user_dataAr[$tableName][$i][$tableName::getKeyProperty()]; $user_dataAr[$tableName][$i][$tableName::getKeyProperty()] = 0; $user_dataAr[$tableName][$i]['_isSaved'] = 0; $result = $tester_dh->set_student($user_id, $user_dataAr, $tableName, $userObj, $storedID); if (!AMA_DB::isError($result)) { $user_dataAr[$tableName][$i]['_isSaved'] = 1; } } //$result = $tester_dh->set_student($user_id,$user_dataAr, $tableName, $userObj, $storedID); } } } } } 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)) { //return ADA_SET_USER_ERROR_TESTER_ASSOCIATION; } } /* * If the user has subscribed to at least one tester, add the user * to the utente_tester table in common database. */ foreach ($testers_to_add as $tester_to_add) { $testerHa = $common_dh->get_tester_info_from_pointer($tester_to_add); $tester_id = $testerHa[0]; $res = $common_dh->add_user_to_tester($user_id, $tester_id); if (AMA_DataHandler::isError($res)) { if ($res->code != AMA_ERR_ADD and $res->code != AMA_ERR_UNIQUE_KEY) { //return ADA_SET_USER_ERROR_TESTER; return false; } } else { $userObj->addTester($tester_to_add); } } if (isset($result)) { return $result; } }