diff --git a/app/main/controller/api/map.php b/app/main/controller/api/map.php index 37003668..c015a6a2 100644 --- a/app/main/controller/api/map.php +++ b/app/main/controller/api/map.php @@ -790,14 +790,14 @@ class Map extends Controller\AccessController { // -> NO target system available if($sourceSystemId === $targetSystemId){ // check if previous (solo) system is already on the map - $sourceSystem = $map->getSystemByCCPId($sourceSystemId); + $sourceSystem = $map->getSystemByCCPId($sourceSystemId, ['active' => 1]); $sameSystem = true; }else{ // check if previous (source) system is already on the map - $sourceSystem = $map->getSystemByCCPId($sourceSystemId); + $sourceSystem = $map->getSystemByCCPId($sourceSystemId, ['active' => 1]); // -> check if system is already on this map - $targetSystem = $map->getSystemByCCPId( $targetSystemId ); + $targetSystem = $map->getSystemByCCPId( $targetSystemId, ['active' => 1]); } // if systems don“t already exists on map -> get "blank" systems @@ -819,7 +819,7 @@ class Map extends Controller\AccessController { !$targetSystem ){ $targetExists = false; - $targetSystem = $map->getNewSystem( $targetSystemId ); + $targetSystem = $map->getNewSystem($targetSystemId); } $addSourceSystem = false; diff --git a/app/main/model/mapmodel.php b/app/main/model/mapmodel.php index 51649aa4..3de0458d 100644 --- a/app/main/model/mapmodel.php +++ b/app/main/model/mapmodel.php @@ -202,14 +202,22 @@ class MapModel extends BasicModel { /** * get blank system model pre-filled with default SDE data + * -> check for "inactive" systems on this map first! * @param int $systemId * @return SystemModel */ public function getNewSystem($systemId){ - $systemController = new System(); - $systems = $systemController->getSystemModelByIds([$systemId]); - $system = reset($systems); - $system->mapId = $this->_id; + // check for "inactive" system + $system = $this->getSystemByCCPId($systemId); + if( is_null($system) ){ + // get blank system + $systemController = new System(); + $systems = $systemController->getSystemModelByIds([$systemId]); + $system = reset($systems); + $system->mapId = $this->_id; + } + $system->setActive(true); + return $system; } @@ -253,18 +261,28 @@ class MapModel extends BasicModel { * -> "active" column is NOT checked * -> removed systems become "active" = 0 * @param int $systemId + * @param array $filter * @return null|SystemModel */ - public function getSystemByCCPId($systemId){ + public function getSystemByCCPId($systemId, $filter = []){ /** * @var $system SystemModel */ $system = $this->rel('systems'); - $result = $system->findone([ + + $query = [ 'mapId = :mapId AND systemId = :systemId', ':mapId' => $this->id, ':systemId' => $systemId - ]); + ]; + + // add optional filter -> e.g. search for "active = 1" system + foreach($filter as $column => $value){ + $query[0] .= ' AND' . $this->db->quotekey($column) . ' = :' . $column; + $query[':' . $column] = $value; + } + + $result = $system->findone($query); return is_object($result) ? $result : null; } @@ -655,6 +673,7 @@ class MapModel extends BasicModel { * @return mixed */ public function saveSystem( SystemModel $system, $posX = 10, $posY = 0, $character = null){ + $system->setActive(true); $system->mapId = $this->id; $system->posX = $posX; $system->posY = $posY;