Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class FE_Register extends Action {
- const EXISTING_EVE_USER = 'EXISTING_EVE_USER';
- const ERROR_CODE = 'ERROR_CODE';
- const ERROR_TEXT = 'ERROR_TEXT';
- function defaultAction() {
- if ( ! $this->isRegistrationAllowed() ) {
- return;
- }
- $this->context->getView()->display('register-main.tpl');
- }
- function form() {
- $server = $this->context->getServer();
- $request = $this->context->getRequest();
- $view = $this->context->getView();
- $mappers = $server->getVar('RUMA_mappers');
- $eveapi = $server->getVar('RUMA_eveapi');
- if ( ! $this->isRegistrationAllowed() ) {
- return;
- }
- $charId = $server->getVar('HTTP_EVE_CHARID');
- $users = $mappers->get('EveUserMapper');
- $user = $users->findByUserId($request->getInt('UserId'));
- if ( ! is_null($user) ) {
- $view->setVar(self::EXISTING_EVE_USER, true);
- if ( $user->getStatus() == EveUser::STATUS_BANNED ) {
- $view->display('register-user-banned.tpl');
- return;
- }
- } else {
- $view->setVar(self::EXISTING_EVE_USER, false);
- $user = $users->createInstance();
- $user->setStatus(EveUser::STATUS_ACTIVE);
- }
- if ( $this->createTranslator($user)
- ->toModel('UserId', $request->getStr('UserId'))
- ->toModel('ApiKey', $request->getStr('ApiKey'))
- ->toModel('Email', $request->getStr('Email'))
- ->hasErrors() )
- {
- $view->display('register-main.tpl');
- return;
- }
- // получить список персонажей
- $charlist = $eveapi->getAccountAccessor($user->getUserId(),
- $user->getApiKey())->characters();
- if ( $charlist->isError() ) {
- $error = $charlist->getResult()->getNodeByTag('error');
- $view->setVar(self::ERROR_CODE, $error->getAttribute('code'));
- $view->setVar(self::ERROR_TEXT, $error->getValue());
- $view->display('register-main.tpl');
- return;
- }
- // данные персонажа
- $charNode = null;
- foreach ( $charlist->getResult()->getNodeByTag('result')
- ->getNodeByTagAndAttribute('rowset', 'name', 'characters')
- ->getNodesByTag('row') as $node )
- {
- if ( $node->getAttribute('characterID') == $charId ) {
- $charNode = $node;
- }
- }
- if ( is_null($charNode) ) {
- $view->display('register-account-has-no-char.tpl');
- return;
- }
- // определить тип ключа
- $user->setKeyType($eveapi->getCharacterAccessor($user->getUserId(),
- $user->getApiKey(), $charId)->accountBalance()->isError() ?
- EveUser::KEY_LIMITED : EveUser::KEY_FULL);
- // найти или создать корпорацию
- $corps = $mappers->get('EveCorporationMapper');
- $corp = $corps
- ->findByCorporationId($charNode->getAttribute('corporationID'));
- if ( is_null($corp) ) {
- $corp = $corps->createInstance();
- if ( $this->createTranslator($corp)->toModel('CorporationId',
- $charNode->getAttribute('corporationID'))
- ->toModel('Name', $charNode->getAttribute('corporationName'))
- ->hasErrors() )
- {
- $view->display('register-error.tpl');
- return;
- }
- } else if ( $corp->getStatus() == EveCorporation::STATUS_BANNED ) {
- $view->display('register-corp-banned.tpl');
- return;
- }
- // сохранить персонажа
- $chars = $mappers->get('EveCharacterMapper');
- $char = $chars->createInstance();
- if ( $this->createTranslator($char)->toModel('User', $user)
- ->toModel('Corporation', $corp)->toModel('CharacterId', $charId)
- ->toModel('Name', $charNode->getAttribute('name'))->hasErrors() )
- {
- $view->display('register-error.tpl');
- return;
- }
- if ( $user->getStatus() == EveUser::STATUS_ACTIVE
- && $corp->getStatus() == EveCorporation::STATUS_ALLOWED )
- {
- $char->setStatus(EveCharacter::STATUS_ACTIVE);
- }
- $user->save();
- $corp->save();
- $char->save();
- $view->setVar('user', $user);
- $view->setVar('corporation', $corp);
- $view->setVar('character', $char);
- if ( $char->getStatus() == EveCharacter::STATUS_ACTIVE ) {
- $view->display('register-success.tpl');
- } else if ( $user->getStatus() == EveUser::STATUS_PENDING ) {
- $view->display('register-user-pending.tpl');
- } else {
- $view->display('register-corp-pending.tpl');
- }
- }
- private function createTranslator($object) {
- return new Ruma_ModelEvent2ViewTranslator($this->context, $object);
- }
- private function isRegistrationAllowed() {
- $view = $this->context->getView();
- $server = $this->context->getServer();
- if ( $server->getStr('HTTP_EVE_TRUSTED', 'No') != 'Yes' ) {
- $view->display('register-not-trusted.tpl');
- return false;
- }
- $characters = $server->getVar('RUMA_mappers')
- ->get('EveCharacterMapper');
- if ($characters->findByCharacterId($server->getInt('HTTP_EVE_CHARID'))){
- $view->display('register-char-registered.tpl');
- return false;
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment