Example #1
0
 static function create($namespace, $userinfo, $network_info)
 {
     Logger::log("ShadowUser::create " . serialize($userinfo), LOGGER_ACTION);
     // setup the needed info
     if (empty($userinfo['login_name'])) {
         $userinfo['display_login_name'] = $userinfo['first_name'] . '.' . $userinfo['last_name'];
     } else {
         $userinfo['display_login_name'] = $userinfo['login_name'];
     }
     // this is the real internal PA login_name
     // which should NOT be displayed
     // instead use the display_login_name
     $userinfo['login_name'] = $namespace . "." . $userinfo['user_id'];
     $userinfo['confirm_password'] = $userinfo['password'] = substr(md5($userinfo['email'] . rand()), 0, 12);
     // Test to see if the email was used before
     $res = Dal::query("SELECT user_id FROM users WHERE email=?", array($userinfo['email']));
     if ($res->numrows() > 0) {
         // oops email has been used
         // use the prefix.email@address,tld format
         // to ensure we have an unique string for email
         $userinfo['email'] = $userinfo['user_id'] . "+" . $userinfo['email'];
     }
     $reg_user = new User_Registration();
     if ($reg_user->register($userinfo, $network_info)) {
         // Success!
         $reg_user->newuser->set_last_login();
         // also save the external user_id
         $reg_user->newuser->set_profile_field($namespace, 'user_id', $userinfo['user_id'], 0);
         $reg_user->newuser->set_profile_field($namespace, 'display_login_name', $userinfo['display_login_name'], 0);
         $reg_user->newuser->is_active = ACTIVE;
         $reg_user->newuser->save();
         // load it as a shadow user
         Cache::reset();
         $su = new ShadowUser($namespace);
         $su->load($userinfo['user_id']);
         // and make sure all info is actually stored
         $su->sync($userinfo);
         Logger::log("ShadowUser::create done " . serialize($userinfo), LOGGER_ACTION);
         return $su;
     } else {
         throw new PAException(BAD_PARAMETER, $reg_user->msg);
         return NULL;
     }
 }