- fixed multi character support location tracking, closed #314

This commit is contained in:
Exodus4D
2016-09-16 21:57:04 +02:00
parent 74faec37c9
commit 23eb032759
6 changed files with 121 additions and 85 deletions

View File

@@ -43,29 +43,6 @@ class User extends Controller\Controller{
*/
private static $captchaReason = [self::SESSION_CAPTCHA_ACCOUNT_UPDATE, self::SESSION_CAPTCHA_ACCOUNT_DELETE];
/**
* merges two multidimensional characterSession arrays by checking characterID
* @param array $characterDataBase
* @param array $characterData
* @return array
*/
private function mergeSessionCharacterData($characterDataBase = [], $characterData = []){
$addData = [];
foreach($characterDataBase as $i => $baseData){
foreach($characterData as $data){
if((int)$baseData['ID'] === (int)$data['ID']){
// overwrite changes
$characterDataBase[$i]['NAME'] = $data['NAME'];
$characterDataBase[$i]['TIME'] = $data['TIME'];
}else{
$addData[] = $data;
}
}
}
return array_merge($characterDataBase, $addData);
}
/**
* login a valid character
* @param Model\CharacterModel $characterModel
@@ -99,10 +76,7 @@ class User extends Controller\Controller{
]);
}else{
// user has NOT changed -----------------------------------------------------------
// -> get current session characters
$currentSessionCharacters = (array)$this->f3->get(self::SESSION_KEY_CHARACTERS);
$sessionCharacters = $this->mergeSessionCharacterData($sessionCharacters, $currentSessionCharacters);
$sessionCharacters = $characterModel::mergeSessionCharacterData($sessionCharacters);
}
$this->f3->set(self::SESSION_KEY_CHARACTERS, $sessionCharacters);