- fixed "system not found" bug

This commit is contained in:
Mark Friedrich
2018-06-08 20:54:26 +02:00
parent d7cb64aa9c
commit f95d43a884
6 changed files with 121 additions and 109 deletions

View File

@@ -971,126 +971,133 @@ class Map extends Controller\AccessController {
$targetSystem = $map->getNewSystem($targetSystemId);
}
$addSourceSystem = false;
$addTargetSystem = false;
$addConnection = false;
// make sure we have system objects to work with
// -> in case SDE does not have system they are null -> we can´t do anything
if(
$sourceSystem &&
$targetSystem
){
$addSourceSystem = false;
$addTargetSystem = false;
$addConnection = false;
switch($mapScope->name){
case 'all':
if($sameSystem){
$addSourceSystem = true;
}else{
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}
break;
case 'k-space':
if($sameSystem){
if( !$sourceSystem->isWormhole() ){
switch($mapScope->name){
case 'all':
if($sameSystem){
$addSourceSystem = true;
}
}elseif(
!$sourceSystem->isWormhole() ||
!$targetSystem->isWormhole()
){
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}
break;
case 'wh':
default:
if($sameSystem){
if( $sourceSystem->isWormhole() ){
$addSourceSystem = true;
}
}elseif(
$sourceSystem->isWormhole() ||
$targetSystem->isWormhole()
){
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}elseif(
!$sourceSystem->isWormhole() &&
!$targetSystem->isWormhole()
){
// check distance between systems (in jumps)
// -> if > 1 it is !very likely! a wormhole
$routeController = new Route();
$route = $routeController->searchRoute($sourceSystem->systemId, $targetSystem->systemId, 1);
if( !$route['routePossible'] ){
}else{
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}
}
break;
}
break;
case 'k-space':
if($sameSystem){
if( !$sourceSystem->isWormhole() ){
$addSourceSystem = true;
}
}elseif(
!$sourceSystem->isWormhole() ||
!$targetSystem->isWormhole()
){
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}
break;
case 'wh':
default:
if($sameSystem){
if( $sourceSystem->isWormhole() ){
$addSourceSystem = true;
}
}elseif(
$sourceSystem->isWormhole() ||
$targetSystem->isWormhole()
){
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}elseif(
!$sourceSystem->isWormhole() &&
!$targetSystem->isWormhole()
){
// check distance between systems (in jumps)
// -> if > 1 it is !very likely! a wormhole
$routeController = new Route();
$route = $routeController->searchRoute($sourceSystem->systemId, $targetSystem->systemId, 1);
// save source system ---------------------------------------------------------------------------------
if(
$addSourceSystem &&
$sourceSystem &&
!$sourceExists
){
$sourceSystem = $map->saveSystem($sourceSystem, $character, $systemPosX, $systemPosY);
// get updated maps object
if($sourceSystem){
$map = $sourceSystem->mapId;
$sourceExists = true;
$mapDataChanged = true;
// increase system position (prevent overlapping)
$systemPosX = $sourceSystem->posX + $systemOffsetX;
$systemPosY = $sourceSystem->posY + $systemOffsetY;
if( !$route['routePossible'] ){
$addSourceSystem = true;
$addTargetSystem = true;
$addConnection = true;
}
}
break;
}
}
// save target system ---------------------------------------------------------------------------------
if(
$addTargetSystem &&
$targetSystem &&
!$targetExists
){
$targetSystem = $map->saveSystem($targetSystem, $character, $systemPosX, $systemPosY);
// get updated maps object
if($targetSystem){
$map = $targetSystem->mapId;
$mapDataChanged = true;
$targetExists = true;
}
}
if(
$sourceExists &&
$targetExists &&
$sourceSystem &&
$targetSystem
){
$connection = $map->searchConnection( $sourceSystem, $targetSystem);
// save connection --------------------------------------------------------------------------------
// save source system ---------------------------------------------------------------------------------
if(
$addConnection &&
!$connection
$addSourceSystem &&
$sourceSystem &&
!$sourceExists
){
$connection = $map->getNewConnection($sourceSystem, $targetSystem);
$connection = $map->saveConnection($connection, $character);
$sourceSystem = $map->saveSystem($sourceSystem, $character, $systemPosX, $systemPosY);
// get updated maps object
if($connection){
$map = $connection->mapId;
if($sourceSystem){
$map = $sourceSystem->mapId;
$sourceExists = true;
$mapDataChanged = true;
// increase system position (prevent overlapping)
$systemPosX = $sourceSystem->posX + $systemOffsetX;
$systemPosY = $sourceSystem->posY + $systemOffsetY;
}
}
// log jump mass ----------------------------------------------------------------------------------
// save target system ---------------------------------------------------------------------------------
if(
$connection &&
$connection->isWormhole()
$addTargetSystem &&
$targetSystem &&
!$targetExists
){
$connection->logMass($log);
$targetSystem = $map->saveSystem($targetSystem, $character, $systemPosX, $systemPosY);
// get updated maps object
if($targetSystem){
$map = $targetSystem->mapId;
$mapDataChanged = true;
$targetExists = true;
}
}
if(
$sourceExists &&
$targetExists &&
$sourceSystem &&
$targetSystem
){
$connection = $map->searchConnection( $sourceSystem, $targetSystem);
// save connection --------------------------------------------------------------------------------
if(
$addConnection &&
!$connection
){
$connection = $map->getNewConnection($sourceSystem, $targetSystem);
$connection = $map->saveConnection($connection, $character);
// get updated maps object
if($connection){
$map = $connection->mapId;
$mapDataChanged = true;
}
}
// log jump mass ----------------------------------------------------------------------------------
if(
$connection &&
$connection->isWormhole()
){
$connection->logMass($log);
}
}
}
}

View File

@@ -237,7 +237,9 @@ class System extends Controller\AccessController {
$defaultStatusId = $systemModel->statusId;
}
$systemModel->statusId = isset($systemData['statusId']) ? $systemData['statusId'] : $defaultStatusId;
if( !is_null($systemModel) ){
$systemModel->statusId = isset($systemData['statusId']) ? $systemData['statusId'] : $defaultStatusId;
}
// map is not changeable for a system! (security)
$systemData['mapId'] = $map;

View File

@@ -473,20 +473,22 @@ class MapModel extends AbstractMapTrackingModel {
public function getNewSystem($systemId){
// check for "inactive" system
$system = $this->getSystemByCCPId($systemId);
if( is_null($system) ){
if(is_null($system)){
// get blank system
$systemController = new System();
$systems = $systemController->getSystemModelByIds([$systemId]);
if( count($systems) ){
if(count($systems)){
$system = reset($systems);
$system->mapId = $this->_id;
}else{
// should NEVER happen -> systemId does NOT exist in New Eden!!
$this->getF3()->error(500, 'SystemId "' . $systemId . '"" does not exist in EVE!' );
}
}
$system->setActive(true);
if($system){
$system->setActive(true);
}
return $system;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -354,6 +354,7 @@ $mapWrapperMaxWidth: $mapWidth + 35px;
color: lighten($gray-light, 10%);
font-size: 10px;
line-height: 10px;
padding-right: 1px; // bring right aligned text in line with wh "effect" icon
margin-bottom: 2px;
[class^="pf-system-sec-"]{