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