userData implementation

This commit is contained in:
exodus4d
2015-04-11 18:46:54 +02:00
parent 3b27517daa
commit 1be444cc32
54 changed files with 2628 additions and 1025 deletions

View File

@@ -41,7 +41,7 @@ class Map extends \Controller\AccessController {
$initData = [];
// get all available map types -------------------------------------
// get all available map types ----------------------------------------
$mapType = Model\BasicModel::getNew('MapTypeModel');
$rows = $mapType->find('active = 1', null, $expireTimeSQL);
@@ -58,7 +58,7 @@ class Map extends \Controller\AccessController {
}
$initData['mapTypes'] = $mapTypeData;
// get all available map scopes ------------------------------------
// get all available map scopes ---------------------------------------
$mapScope = Model\BasicModel::getNew('MapScopeModel');
$rows = $mapScope->find('active = 1', null, $expireTimeSQL);
$mapScopeData = [];
@@ -98,7 +98,7 @@ class Map extends \Controller\AccessController {
}
$initData['systemType'] = $systemTypeData;
// get available connection scopes ---------------------------------
// get available connection scopes ------------------------------------
$connectionScope = Model\BasicModel::getNew('ConnectionScopeModel');
$rows = $connectionScope->find('active = 1', null, $expireTimeSQL);
$connectionScopeData = [];
@@ -111,6 +111,20 @@ class Map extends \Controller\AccessController {
}
$initData['connectionScopes'] = $connectionScopeData;
// get available character status -------------------------------------
$characterStatus = Model\BasicModel::getNew('CharacterStatusModel');
$rows = $characterStatus->find('active = 1', null, $expireTimeSQL);
$characterStatusData = [];
foreach((array)$rows as $rowData){
$data = [
'id' => $rowData->id,
'name' => $rowData->name,
'class' => $rowData->class
];
$characterStatusData[$rowData->name] = $data;
}
$initData['characterStatus'] = $characterStatusData;
echo json_encode($initData);
}
@@ -287,10 +301,11 @@ class Map extends \Controller\AccessController {
if($f3->exists($cacheKey) === false){
$userData = (object) [];
$userData->currentUserData = $user->getData();
$userData->userData = $user->getData();
// get user Data for each map ========================================
$activeMaps = $user->getMaps();
foreach($activeMaps as $mapModel){
$userData->mapUserData[] = $mapModel->getUserData();
}

View File

@@ -63,38 +63,43 @@ class Signature extends \Controller\AccessController{
$signatureData = $f3->get('POST');
$user = $this->_getUser();
$system = Model\BasicModel::getNew('SystemModel');
$system->getById($signatureData['systemId']);
$newSignatureData = false;
if(!$system->dry()){
// update/save signature
$signature = $system->getSignatureById($user, $signatureData['pk']);
if($user){
$system = Model\BasicModel::getNew('SystemModel');
$system->getById($signatureData['systemId']);
if($signature){
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->createdUserId = $user;
$signature->setData($signatureData);
}else{
// update signature (single data)
$newData = [
$signatureData['name'] => $signatureData['value']
];
$signature->setData($newData);
$activeCharacter = $user->getActiveCharacter();
if(!$system->dry()){
// update/save signature
$signature = $system->getSignatureById($user, $signatureData['pk']);
if($signature){
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->createdCharacterId = $activeCharacter->characterId;
$signature->setData($signatureData);
}else{
// update signature (single data)
$newData = [
$signatureData['name'] => $signatureData['value']
];
$signature->setData($newData);
}
$signature->updatedCharacterId = $activeCharacter->characterId;
$signature->save();
$newSignatureData = $signature->getData();
}
}
$signature->updatedUserId = $user;
$signature->save();
$newSignatureData = $signature->getData();
if(!$newSignatureData){
$this->f3->error(401, 'Signature could not be saved.');
}
}
if(!$newSignatureData){
$this->f3->error(401, 'Signature could not be saved.');
}
echo json_encode($newSignatureData);
}

View File

@@ -7,22 +7,143 @@
*/
namespace Controller\Api;
use Model;
class User extends \Controller\AccessController{
public function saveConfig($f3){
$data = $f3->get('POST');
if($data['configData']){
$configData = $data['configData'];
$return = new \stdClass();
if($data['settingsData']){
$settingsData = $data['settingsData'];
$user = $this->_getUser();
if($user){
$user->setMainCharacterId((int)$configData['mainCharacterId']);
// change/set email
if(
array_key_exists('email', $settingsData) &&
array_key_exists('email_confirm', $settingsData) &&
!empty($settingsData['email']) &&
!empty($settingsData['email_confirm']) &&
$settingsData['email'] == $settingsData['email_confirm']
){
$user->email = $settingsData['email'];
}
// change/set password
if(
array_key_exists('password', $settingsData) &&
array_key_exists('password_confirm', $settingsData) &&
!empty($settingsData['password']) &&
!empty($settingsData['password_confirm']) &&
$settingsData['password'] == $settingsData['password_confirm']
){
$user->password = $settingsData['password'];
}
// save API data
if(
array_key_exists('keyId', $settingsData) &&
array_key_exists('vCode', $settingsData) &&
is_array($settingsData['keyId']) &&
is_array($settingsData['vCode'])
){
// get all existing API models for this user
$apiModels = $user->getAPIs();
foreach($settingsData['keyId'] as $i => $keyId){
$api = null;
$userCharacters = [];
// search for existing API model
foreach($apiModels as $key => $apiModel){
if($apiModel->keyId == $keyId){
$api = $apiModel;
// get existing characters in case api model already exists
$userCharacters = $api->getUserCharacters();
unset($apiModels[$key]);
break;
}
}
if(is_null($api)){
// new API Key
$api = Model\BasicModel::getNew('UserApiModel');
}
$api->userId = $user;
$api->keyId = $keyId;
$api->vCode = $settingsData['vCode'][$i];
// check each API Model if valid
$newUserCharacters = $api->requestCharacters();
if(empty($newUserCharacters)){
// no characters found
$return->error = [];
$characterError = new \stdClass();
$characterError->type = 'api';
$characterError->keyId = $api->keyId;
$characterError->vCode = $api->vCode;
$characterError->message = 'No characters found';
$return->error[] = $characterError;
}else{
$api->save();
// find existing character
foreach($newUserCharacters as $newUserCharacter){
$matchedUserCharacter = $newUserCharacter;
foreach($userCharacters as $key => $userCharacter){
if($userCharacter->characterId == $newUserCharacter->characterId){
$matchedUserCharacter = $userCharacter;
unset($userCharacters[$key]);
break;
}
}
$matchedUserCharacter->apiId = $api;
$matchedUserCharacter->userId = $user;
$matchedUserCharacter->save();
}
}
// delete characters that are no longer in this API
foreach($userCharacters as $userCharacter){
print_r('delete Character: ' . $userCharacter->id);
}
}
// delete API models that no longer exists
foreach($apiModels as $apiModel){
$apiModel->delete();
}
}
// set main character
if(
array_key_exists('mainCharacterId', $settingsData)
){
$user->setMainCharacterId((int)$settingsData['mainCharacterId']);
}
// save user model
$user->save();
// return new/updated user data
$return->userData = $user->getData();
}
}
echo json_encode([]);
echo json_encode($return);
}
}