/** * insert с учётом создания таблицы для хранения данных о публикации * * @param array $data * @return int */ public function insert(array $data) { $rowID = parent::insert($data); if ($rowID) { /* создаём таблицу для хранения данных */ $tableName = $data['table_name']; if (!System_Functions::tableExist($tableName)) { $_migrationManager = new Modules_Dbmigrations_Framework_Manager(); $_migrationManager->upTo('Modules_Publications_Migrations_CreatePublicationAbstractTable', $tableName, false); // Добавляем базовые поля $filedsModel = new Modules_Publications_Model_Fields(); $filedsModel->insert(array('rubric_id' => $rowID, 'name' => 'name', 'title' => 'Название', 'type' => 'text', 'validator' => '.*', 'sort' => 1)); $filedsModel->insert(array('rubric_id' => $rowID, 'name' => 'active', 'title' => 'активно', 'type' => 'checkbox', 'default' => '1', 'sort' => 2)); } } return $rowID; }
/** * Добавляем поле в тип публикации * */ public function addfieldAction() { if (!$this->_rubric) { throw new Exception('rubric_id не определён'); } $form = new Zetta_Form(Zend_Registry::get('config')->Publications->form->fields); if ($field_id = $this->getParam('field_id')) { $this->view->field_id = $field_id; $editData = $this->_modelFields->fetchRow($this->_modelFields->select()->where('field_id = ?', $field_id))->toArray(); $form->setDefaults($editData); $form->getElement('name')->setAttrib('disabled', 'disabled'); } if (!sizeof($_POST) || !$form->isValid($_POST)) { $this->view->form = $form; } else { $arrayData = array('rubric_id' => $this->_rubric->rubric_id, 'name' => $form->getValue('name'), 'title' => $form->getValue('title'), 'type' => $form->getValue('type'), 'validator' => $form->getValue('validator'), 'default' => $form->getValue('default'), 'errormsg' => $form->getValue('errormsg'), 'list_values' => $form->getValue('list_values'), 'hidden_front' => $form->getValue('hidden_front')); if ($field_id) { $this->_modelFields->update($arrayData, $this->_modelFields->getAdapter()->quoteInto('field_id = ?', $field_id)); } else { $this->_modelFields->insert($arrayData); } $this->renderScript('admin/addfieldComplete.ajax.phtml'); } }