this function is called for update * @param \Base $f3 * @throws \Exception */ public function put(\Base $f3){ $requestData = $this->getRequestData($f3); $connectionData = []; if($mapId = (int)$requestData['mapId']){ $activeCharacter = $this->getCharacter(); /** * @var Model\MapModel $map */ $map = Model\BasicModel::getNew('MapModel'); $map->getById($mapId); if($map->hasAccess($activeCharacter)){ $source = $map->getSystemById((int)$requestData['source']); $target = $map->getSystemById((int)$requestData['target']); if( !is_null($source) && !is_null($target) ){ /** * @var $connection Model\ConnectionModel */ $connection = Model\BasicModel::getNew('ConnectionModel'); $connection->getById((int)$requestData['id']); $connection->mapId = $map; $connection->source = $source; $connection->target = $target; $connection->copyfrom($connectionData, ['scope', 'type']); // change the default type for the new connection $connection->setDefaultTypeData(); if($connection->save($activeCharacter)){ $connectionData = $connection->getData(); // broadcast map changes $this->broadcastMapData($connection->mapId); } } } } $this->out($connectionData); } /** * @param \Base $f3 * @param $params * @throws \Exception */ public function delete(\Base $f3, $params){ $requestData = $this->getRequestData($f3); $connectionIds = array_map('intval', explode(',', (string)$params['id'])); $deletedConnectionIds = []; if($mapId = (int)$requestData['mapId']){ $activeCharacter = $this->getCharacter(); /** * @var Model\MapModel $map */ $map = Model\BasicModel::getNew('MapModel'); $map->getById($mapId); if($map->hasAccess($activeCharacter)){ foreach($connectionIds as $connectionId){ if($connection = $map->getConnectionById($connectionId)){ $connection->delete( $activeCharacter ); $connection->reset(); $deletedConnectionIds[] = $connectionId; } } // broadcast map changes if(count($deletedConnectionIds)){ $this->broadcastMapData($map); } } } $this->out($deletedConnectionIds); } }