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')));
 }