public function save($data, $overwrite = false)
 {
     if (isset($data['group_provider_id']) && isset($data['precondition_id']) && $data['precondition_id'] == $data['org_precondition_id'] && !$overwrite) {
         $group_provider_id = htmlentities($data['group_provider_id']);
         $precondition_id = htmlentities($data['precondition_id']);
         $preconditionService = new EngineBlock_Service_GroupProviderPrecondition();
         $precondition = $preconditionService->fetchById($group_provider_id, $precondition_id);
     } else {
         $precondition = new EngineBlock_Model_GroupProviderPrecondition();
     }
     $precondition->populate($data);
     $form = new EngineBlock_Form_GroupProviderPrecondition();
     if (!$form->isValid($precondition->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;
             }
         }
         $precondition->errors = $modelErrors;
     } else {
         $mapper = new EngineBlock_Model_Mapper_GroupProviderPrecondition(new EngineBlock_Model_DbTable_GroupProviderPrecondition());
         $isNewRecord = isset($data['org_precondition_id']) && $precondition->precondition_id != $data['org_precondition_id'];
         $mapper->save($precondition, $isNewRecord);
     }
     return $precondition;
 }
コード例 #2
0
 public function preconditionaddAction()
 {
     $this->view->group_provider_id = htmlentities($this->_getParam('group_provider_id'));
     if (strlen($this->view->group_provider_id) > 0) {
         $groupProviderPrecondition = new EngineBlock_Model_GroupProviderPrecondition();
         $groupProviderPrecondition->populate(array('group_provider_id' => $this->view->group_provider_id));
         $this->view->groupProviderPrecondition = $groupProviderPrecondition;
         $this->view->saveUrl = $this->view->url(array('action' => 'preconditionsave'));
         $this->view->listUrl = $this->view->url(array('action' => 'edit'));
         $this->view->mode = 'add';
         $this->render('preconditionedit');
     } else {
         $this->_forward('edit');
     }
 }