message("update_account_user_info(" . $username . ", " . $domain . " : " . $firstname . ", " . $lastname . ", " . $gender . ", " . $subscribe . ")"); $database = new Database(); $db = $database->getConnection(); $account = new Account($db); $account->username = $username; $account->domain = $domain; if (!$account->getOne()) { return ACCOUNT_NOT_FOUND; } Logger::getInstance()->debug("userInfo : Account after get one " . $account); $password = new Password($db); $password->account_id = $account->id; $password->algorithm = $algo; if (!$password->getOne()) { return PASSWORD_NOT_FOUND; } if (!password_match($ha1, $password->password)) { return PASSWORD_DOESNT_MATCH; } $user_info = new UserInfo($db); $user_info->account_id = $account->id; if (ENABLE_NEW_ACCOUNTS_GEOLOC) { Logger::getInstance()->debug("userInfo : Account ip after enable geoloc if " . $account->ip_address); $country_infos = Geoloc::getGeolocInfosFromIp($account->ip_address); if ($country_infos) { $user_info->country_code = $country_infos->country_code; $user_info->country_name = $country_infos->country_name; } //error message is displayed from geoloc method. else { return GEOLOC_FAILED; } Logger::getInstance()->debug("Getting geoloc infos : country_code=". $country_infos->country_code . ' country_name=' . $country_infos->country_name); } $update = $user_info->getOne(); $user_info->firstname = $firstname; $user_info->lastname = $lastname; $user_info->gender = $gender; $user_info->subscribe = $subscribe; if ($update) { $user_info->update(); } else { $user_info->create(); } return OK; }