- new "persistent system aliases" for systems, closed #496

- improved bulk delete for systems
This commit is contained in:
Exodus4D
2017-06-10 15:22:39 +02:00
parent a95f25524a
commit c1df6f8a7a
11 changed files with 144 additions and 39 deletions

View File

@@ -414,7 +414,10 @@ class System extends Controller\AccessController {
*/
public function delete(\Base $f3){
$mapId = (int)$f3->get('POST.mapId');
$systemIds = (array)$f3->get('POST.systemIds');
$systemIds = array_map('intval', (array)$f3->get('POST.systemIds'));
$return = (object) [];
$return->deletedSystemIds = [];
if($mapId){
$activeCharacter = $this->getCharacter();
@@ -429,25 +432,52 @@ class System extends Controller\AccessController {
foreach($systemIds as $systemId){
if( $system = $map->getSystemById($systemId) ){
// check whether system should be deleted OR set "inactive"
if( !empty($system->description) ){
if( $this->checkDeleteMode($map, $system) ){
$system->erase();
}else{
// keep data -> set "inactive"
$system->setActive(false);
$system->save();
}else{
$system->erase();
}
$system->reset();
$return->deletedSystemIds[] = $systemId;
}
}
// broadcast map changes
$this->broadcastMapData($map);
if(count($return->deletedSystemIds)){
$this->broadcastMapData($map);
}
}
}
echo json_encode([]);
echo json_encode($return);
}
/**
* checks whether a system should be "deleted" or set "inactive" (keep some data)
* @param Model\MapModel $map
* @param Model\SystemModel $system
* @return bool
*/
protected function checkDeleteMode(Model\MapModel $map, Model\SystemModel $system){
$delete = true;
if( !empty($system->description) ){
// never delete systems with custom description set!
$delete = false;
}elseif(
$map->persistentAliases &&
!empty($system->alias) &&
($system->alias != $system->name)
){
// map setting "persistentAliases" is active (default) AND
// alias is set and != name
$delete = false;
}
return $delete;
}
}