public function save($data, $overwrite = false) { if (isset($data['id']) && !$overwrite) { $id = (int) $data['id']; $model = $this->findById($id); } else { $model = new EngineBlock_Model_ServiceProviderGroupAcl(); } $model->populate($data); $form = new EngineBlock_Form_ServiceProviderGroupAcl(); if (!$form->isValid($model->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; } } $model->errors = $modelErrors; return $model; } $mapper = new EngineBlock_Model_Mapper_ServiceProviderGroupAcl(new EngineBlock_Model_DbTable_ServiceProviderGroupAcl()); $mapper->save($model); return $model; }
public function showSpByGroupproviderAction() { $service = new EngineBlock_Service_ServiceProviderGroupAcl(); $groupProviderId = (int) $this->_getParam('id'); $groupProviderAbr = $this->_getParam('abr'); $groupProviderName = $this->_getParam('name'); $spsAclFromDb = $service->findByGroupProviderId($groupProviderId); $janus = new ServiceRegistry_Service_JanusEntity(); /* * An array of arrays where we want the key 'entityid' of the value array */ $spsFromJanus = $janus->searchSps(Surfnet_Search_Parameters::create())->getResults(); $results = array(); /* * now delete those spAcl's that have no corresponding Janus SP entry */ foreach ($spsAclFromDb as $spAcl) { if (!$this->_hasExistingJanusSP($spsFromJanus, $spAcl)) { $service->delete($spAcl->id); } else { $results[] = $spAcl; } } /* * now create an Acl if there is a Janus entry but no corresponding ServiceProviderGroupAcl */ $mapper = new EngineBlock_Model_Mapper_ServiceProviderGroupAcl(new EngineBlock_Model_DbTable_ServiceProviderGroupAcl()); foreach ($spsFromJanus as $spJanus) { $spEntityId = $this->_getMissingSpAclEntityId($spsAclFromDb, $spJanus); if ($spEntityId) { $model = new EngineBlock_Model_ServiceProviderGroupAcl(); $model->allow_groups = false; $model->allow_members = false; $model->groupProviderId = $groupProviderId; $model->spentityid = $spEntityId; $model->id = $mapper->save($model); $results[] = $model; } } $this->view->serviceProviderAcls = $results; $this->view->groupProvider = array('id' => $groupProviderId, 'abr' => $groupProviderAbr, 'name' => $groupProviderName); $this->render('edit'); }