public function save($data, $overwrite = false) { if (isset($data['vo_id']) && isset($data['idp_id']) && $data['idp_id'] == $data['org_idp_id'] && !$overwrite) { $vo_id = htmlentities($data['vo_id']); $idp_id = htmlentities($data['idp_id']); $idpService = new EngineBlock_Service_VirtualOrganisationIdp(); $idp = $idpService->fetchById($vo_id, $idp_id); } else { $idp = new EngineBlock_Model_VirtualOrganisationIdp(); } $idp->populate($data); $form = new EngineBlock_Form_VirtualOrganisationIdp(); if (!$form->isValid($idp->toArray())) { $formErrors = $form->getErrors(); $modelErrors = array(); foreach ($formErrors as $fieldName => $fieldErrors) { foreach ($fieldErrors as $fieldError) { switch ($fieldError) { case 'isEmpty': $error = 'Field is obligatory, but no input given'; break; default: $error = $fieldError; } if (!isset($modelErrors[$fieldName])) { $modelErrors[$fieldName] = array(); } $modelErrors[$fieldName][] = $error; } } $idp->errors = $modelErrors; return $idp; } $mapper = new EngineBlock_Model_Mapper_VirtualOrganisationIdp(new EngineBlock_Model_DbTable_VirtualOrganisationIdp()); $isNewRecord = isset($data['org_idp_id']) && $idp->idp_id != $data['org_idp_id']; $mapper->save($idp, $isNewRecord); // if the PK changes, it is saved as a new record, so the original record should be deleted if ($isNewRecord) { $this->delete($data['vo_id'], $data['org_idp_id']); } return $idp; }
public function save($data, $overwrite = false) { if (isset($data['vo_id']) && !$overwrite) { $id = $data['vo_id']; $voService = new EngineBlock_Service_VirtualOrganisation(); $vo = $voService->fetchById($id); } else { $vo = new EngineBlock_Model_VirtualOrganisation(); } $vo->populate($data); $form = new EngineBlock_Form_VirtualOrganisation(); if (!$form->isValid($vo->toArray())) { $formErrors = $form->getErrors(); $modelErrors = array(); foreach ($formErrors as $fieldName => $fieldErrors) { foreach ($fieldErrors as $fieldError) { switch ($fieldError) { case 'isEmpty': $error = 'Field is obligatory, but no input given'; break; default: $error = $fieldError; } if (!isset($modelErrors[$fieldName])) { $modelErrors[$fieldName] = array(); } $modelErrors[$fieldName][] = $error; } } $vo->errors = $modelErrors; return $vo; } $mapper = new EngineBlock_Model_Mapper_VirtualOrganisation(new EngineBlock_Model_DbTable_VirtualOrganisation()); $vo = $mapper->save($vo, $data['vo_id'] != $data['org_vo_id']); // if the PK changes (vo_id), it is saved as a new record, so the groups and idps must be updated and the original record should be deleted if (empty($vo->errors) && isset($data['org_vo_id']) && $vo->vo_id != $data['org_vo_id']) { // update group records $groupService = new EngineBlock_Service_VirtualOrganisationGroup(); $groupService->updateVOId($data['org_vo_id'], $data['vo_id']); // update idp records $idpService = new EngineBlock_Service_VirtualOrganisationIdp(); $idpService->updateVOId($data['org_vo_id'], $data['vo_id']); // delete old vo $this->delete($data['org_vo_id']); } return $vo; }
public function idpdeleteAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $service = new EngineBlock_Service_VirtualOrganisationIdp(); return $service->delete(htmlentities($this->_getParam('vo_id')), htmlentities($this->_getParam('idp_id'))); }