- fixed bug for auto-added "new" systems, #184

This commit is contained in:
Exodus4D
2016-09-03 18:00:43 +02:00
parent e20df901dc
commit 2e0cdd9261
2 changed files with 30 additions and 11 deletions

View File

@@ -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;

View File

@@ -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;