Files
pathfinder/app/main/controller/api/signature.php
2015-08-25 23:20:43 +02:00

180 lines
5.4 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: exodus4d
* Date: 21.03.15
* Time: 21:59
*/
namespace Controller\Api;
use Model;
class Signature extends \Controller\AccessController{
/**
* event handler
* @param $f3
*/
function beforeroute($f3) {
parent::beforeroute($f3);
// set header for all routes
header('Content-type: application/json');
}
/**
* get signature data for systems
* @param $f3
*/
public function getAll($f3){
$signatureData = [];
$systemIds = $f3->get('POST.systemIds');
$user = $this->_getUser();
$system = Model\BasicModel::getNew('SystemModel');
foreach($systemIds as $systemId){
$system->getById($systemId);
if(!$system->dry()){
// check access
if($system->hasAccess($user)){
$signatureData = $system->getSignaturesData();
}
}
}
echo json_encode($signatureData);
}
/**
* save or update a full signature data set
* or save/update just single or multiple signature data
* @param $f3
*/
public function save($f3){
$requestData = $f3->get('POST');
$signatureData = null;
$return = (object) [];
$return->error = [];
$return->signatures = [];
if( isset($requestData['signatures']) ){
// save multiple signatures
$signatureData = $requestData['signatures'];
}elseif( !empty($requestData) ){
// single signature
$signatureData = [$requestData];
}
if( !is_null($signatureData) ){
$user = $this->_getUser();
if($user){
$activeCharacter = $user->getActiveUserCharacter();
$system = Model\BasicModel::getNew('SystemModel');
// update/add all submitted signatures
foreach($signatureData as $data){
$system->getById( (int)$data['systemId']);
if(!$system->dry()){
// update/save signature
$signature = null;
if( isset($data['pk']) ){
// try to get system by "primary key"
$signature = $system->getSignatureById($user, (int)$data['pk']);
}elseif( isset($data['name']) ){
$signature = $system->getSignatureByName($user, $data['name']);
}
if( is_null($signature) ){
$signature = Model\BasicModel::getNew('SystemSignatureModel');
}
$signature->updatedCharacterId = $activeCharacter->getCharacter();
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->createdCharacterId = $activeCharacter->getCharacter();
$signature->setData($data);
}else{
// update signature
if(
isset($data['name']) &&
isset($data['value'])
){
// update single key => value pair
$newData = [
$data['name'] => $data['value']
];
}else{
// update complete signature (signature reader dialog)
// description should not be updated
unset( $data['description'] );
// wormhole typeID cant figured out/saved by the sig reader dialog
if($data['groupId'] == 5){
unset( $data['typeId'] );
}
$newData = $data;
}
$signature->setData($newData);
}
$signature->save();
// get a fresh signature object with the new data. This is a bad work around!
// but i could not figure out what the problem was when using the signature model, saved above :(
// -> some caching problems
$newSignature = Model\BasicModel::getNew('SystemSignatureModel');
$newSignature->getById( $signature->id, 0);
$return->signatures[] = $newSignature->getData();
$signature->reset();
}
$system->reset();
}
}
}
echo json_encode($return);
}
/**
* delete signatures
* @param $f3
*/
public function delete($f3){
$signatureIds = $f3->get('POST.signatureIds');
$user = $this->_getUser();
$signature = Model\BasicModel::getNew('SystemSignatureModel');
foreach($signatureIds as $signatureId){
$signature->getById($signatureId);
$signature->delete($user);
$signature->reset();
}
echo json_encode([]);
}
}