コード例 #1
0
 public function editAction()
 {
     if (!$this->hasACL('edit_course')) {
         $this->doNoAccessError();
     }
     $db = Zend_Db_Table_Abstract::getDefaultAdapter();
     $request = $this->getRequest();
     $validateOnly = $request->isXmlHttpRequest();
     $status = ValidationContainer::instance();
     if ($validateOnly) {
         $this->setNoRenderer();
     }
     // populate form
     $allowIds = false;
     // todo test
     if (!$this->hasACL('training_organizer_option_all')) {
         $allowIds = array();
         $user_id = $this->isLoggedIn();
         $training_organizer_array = MultiOptionList::choicesList('user_to_organizer_access', 'user_id', $user_id, 'training_organizer_option', 'training_organizer_phrase', false, false);
         foreach ($training_organizer_array as $orgOption) {
             if ($orgOption['user_id']) {
                 $allowIds[] = $orgOption['id'];
             }
         }
     }
     $id = $this->getSanParam('id');
     if ($id && !empty($id)) {
         $sql = 'select * from organizer_partners where id = ' . $id;
         $partner_row = $db->fetchRow($sql);
         if ($partner_row !== false) {
             $this->view->assign('partner', $partner_row);
         } else {
             $this->view->assign('mode', 'add');
             $status->setStatusMessage(t('That partner could not be found.'));
         }
     } else {
         $this->view->assign('mode', 'add');
     }
     $this->view->assign('dropDownOrg', DropDown::generateHtml('training_organizer_option', 'training_organizer_phrase', isset($partner_row) ? $partner_row['organizer_id'] : '', $this->hasACL('training_organizer_option_all') ? 'training/insert-table' : false, $this->view->viewonly, $this->view->viewonly ? false : $allowIds));
     // form submit?
     if ($request->isPost()) {
         $obj = new TrainingPartner();
         if ($this->view->mode == 'add') {
             $obj_id = $this->validateAndSave($obj->createRow(), false);
         } else {
             $partnerRow = $obj->fetchRow('id = ' . $id);
             $obj_id = $this->validateAndSave($partnerRow, false);
         }
         if ($obj_id) {
             // success
             $status->setObjectId($obj_id);
             $id = $obj_id;
             $status->setStatusMessage(t('The partner was saved.'));
             if ($this->view->mode == 'add') {
                 $status->redirect = Settings::$COUNTRY_BASE_URL . '/training-partner/edit/id/' . $id;
             }
             if (!$validateOnly || $this->view->mode == 'add') {
                 // refreshing also
                 $_SESSION['status'] = t('The partner was saved.');
             }
         }
         if (!$obj_id) {
             // fail
             $status->setStatusMessage(t('ERROR: The partner could not be saved.'));
         }
         if ($validateOnly) {
             $this->sendData($status);
         } else {
             $this->view->assign('status', $status);
             $this->_redirect('training-partner/edit/id/' . $id);
         }
     }
 }