public function signUp($login_name, $password, $email) { // to improve DB access it's better to pass id for object save // save user $user = new User(); $user->setCulture($this->getCulture()); $user->setName($login_name); // absolutely needed for i18n record creation here ! // Get data from YML config file. $master_user_id = sfConfig::get('app_user_creation_master_id'); $is_minor = sfConfig::get('app_user_creation_is_minor'); $comment = sfConfig::get('app_user_creation_comment'); $user->doSaveWithMetadata($master_user_id, $is_minor, $comment); // save private data $private_data = new UserPrivateData(); $private_data->setLoginName($login_name); $private_data->setUsername($login_name); // username is used as nickname in forum, need to be set $private_data->setTopoName($user->getName()); $private_data->setPassword($password); $private_data->setEmail($email); $private_data->setPreferedLanguageList($this->getCulturesForDocuments()); $private_data->setId($user->getId()); $private_data->setGroupId(4); $private_data->setRegistered(time()); $private_data->save(); // add this user to pending users and logged $user->addToGroups(array('pending', 'logged')); return true; }