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