map info module improvements, new system graph module, map info module refactoring, new CCP API Cronjob (jumps, kills,...)

This commit is contained in:
exodus4d
2015-03-15 20:55:56 +01:00
parent 417961cd1e
commit 5136038bc9
51 changed files with 3158 additions and 1031 deletions

View File

@@ -109,6 +109,45 @@ class Map extends \Controller\AccessController {
echo json_encode($initData);
}
/**
* save a new map or update an existing map
* @param $f3
*/
public function save($f3){
$mapData = (array)$f3->get('POST.mapData');
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
$map->setData($mapData);
$map->save();
if($map->isPrivate()){
$user = $this->_getUser();
$map->setAccess($user);
}
$mapData = $map->getData();
echo json_encode($mapData);
}
/**
* delete a map and all dependencies
* @param $f3
*/
public function delete($f3){
$mapData = (array)$f3->get('POST.mapData');
$user = $this->_getUser();
$map = Model\BasicModel::getNew('MapModel');
$map->getById($mapData['id']);
$map->delete($user);
echo json_encode([]);
}
/**
* update map data api
* function is called continuously
@@ -116,6 +155,10 @@ class Map extends \Controller\AccessController {
*/
public function updateData($f3){
// cache time for response should be equal or less than this function is called
// security aspect
$responseTTL = 3;
$mapData = (array)$f3->get('POST.mapData');
$user = $this->_getUser();
@@ -125,28 +168,42 @@ class Map extends \Controller\AccessController {
$connection = Model\BasicModel::getNew('ConnectionModel');
foreach($mapData as $data){
$config = $data['config'];
$systems = $data['data']['systems'];
$connections = $data['data']['connections'];
$systems = [];
$connections = [];
// check whether system data and/or connection data is send
// empty arrays are not included in ajax requests
if(array_key_exists('data', $data)){
if(array_key_exists('systems', $data['data'])){
$systems = $data['data']['systems'];
}
if(array_key_exists('connections', $data['data'])){
$connections = $data['data']['connections'];
}
}
// update map data ---------------------------------------------
$map->getById($config['id']);
// update map on change
if( (int)$config['updated'] > strtotime($map->updated)){
$map->setData($config);
$map->save();
if(!$map->dry()){
// update map on change
if( (int)$config['updated'] > strtotime($map->updated)){
$map->setData($config);
$map->save();
}
}
// get system data -----------------------------------------------
foreach($systems as $systemData){
$system->getById($systemData['id']);
if((int)$systemData['updated'] > strtotime($system->updated)){
if(
(int)$systemData['updated'] === 0 &&
!$system->dry()
){
$systemData['mapId'] = $map;
$system->setData($systemData);
$system->save();
@@ -157,15 +214,17 @@ class Map extends \Controller\AccessController {
// get connection data -------------------------------------------
foreach($connections as $connectionData){
$connection->getById($connectionData['id']);
if((int)$connectionData['updated'] > strtotime($connection->updated)){
if(
(int)$connectionData['updated'] === 0 &&
!$connection->dry()
){
$connectionData['mapId'] = $map;
$connection->setData($connectionData);
$connection->save();
$connection->save($user);
}
$connection->reset();
}
@@ -173,25 +232,41 @@ class Map extends \Controller\AccessController {
}
// get map data ======================================================
$cacheKey = 'user_map_data_' . $user->id;
$activeMaps = $user->getMaps();
if($f3->exists($cacheKey) === false){
$activeMaps = $user->getMaps();
$newData = [];
foreach($activeMaps as $activeMap){
// format map Data for return
$newData = self::getFormattedMapData($activeMaps);
$newData[] = [
'config' => $activeMap->getData(),
$f3->set($cacheKey, $newData, $responseTTL);
}else{
// TODO log -> manipulated request
}
echo json_encode( $f3->get($cacheKey) );
}
/**
* @param $mapModels
* @return Model\MapModel[]
*/
public static function getFormattedMapData($mapModels){
$mapData = [];
foreach($mapModels as $mapModel){
$mapData[] = [
'config' => $mapModel->getData(),
'data' => [
'systems' => $activeMap->getSystemData(),
'connections' => $activeMap->getConnectionData(),
'systems' => $mapModel->getSystemData(),
'connections' => $mapModel->getConnectionData(),
]
];
}
echo json_encode($newData);
return $mapData;
}
}