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([]); } }