/** * Create reasonable default entries for contribution types. */ private function _createDefaultContributionTypes() { $elementTable = $this->_db->getTable('Element'); $itemTypeTable = $this->_db->getTable('ItemType'); $textItemType = $itemTypeTable->findByName('Text'); if ($textItemType) { $storyType = new ContributionType(); $storyType->item_type_id = $textItemType->id; $storyType->display_name = 'Story'; $storyType->file_permissions = 'Allowed'; $storyType->save(); $textElement = new ContributionTypeElement(); $textElement->type_id = $storyType->id; $dcTitleElement = $elementTable->findByElementSetNameAndElementName('Dublin Core', 'Title'); $textElement->element_id = $dcTitleElement->id; $textElement->prompt = 'Title'; $textElement->order = 1; $textElement->long_text = false; $textElement->save(); $textElement = new ContributionTypeElement(); $textElement->type_id = $storyType->id; $itemTypeMetadataTextElement = $elementTable->findByElementSetNameAndElementName('Item Type Metadata', 'Text'); $textElement->element_id = $itemTypeMetadataTextElement->id; $textElement->prompt = 'Story Text'; $textElement->order = 2; $textElement->long_text = true; $textElement->save(); } $imageItemType = $itemTypeTable->findByName('Still Image'); if ($imageItemType) { $imageType = new ContributionType(); $imageType->item_type_id = 6; $imageType->display_name = 'Image'; $imageType->file_permissions = 'Required'; $imageType->save(); $descriptionElement = new ContributionTypeElement(); $descriptionElement->type_id = $imageType->id; $dcDescriptionElement = $elementTable->findByElementSetNameAndElementName('Dublin Core', 'Description'); $descriptionElement->element_id = $dcDescriptionElement->id; $descriptionElement->prompt = 'Image Description'; $descriptionElement->order = 1; $descriptionElement->long_text = true; $descriptionElement->save(); } }
private function _processForm($record) { $elementTable = $this->_helper->db->getTable('Element'); $contributionElTable = $this->_helper->db->getTable('ContributionTypeElement'); if ($this->getRequest()->isPost()) { try { $record->setPostData($_POST); if ($record->save()) { if (isset($_POST['elements-to-add'])) { foreach ($_POST['elements-to-add'] as $tempId => $elementInfo) { if (empty($elementInfo['id'])) { continue; } if (empty($elementInfo['prompt'])) { $elementInfo['prompt'] = $elementTable->find($elementInfo['id'])->name; } $contributionEl = new ContributionTypeElement(); $contributionEl->element_id = $elementInfo['id']; $contributionEl->prompt = $elementInfo['prompt']; $contributionEl->order = $elementInfo['order']; $contributionEl->long_text = $elementInfo['long_text']; $contributionEl->type_id = $record->id; $contributionEl->save(); } } $toRemove = isset($_POST['elements_to_remove']) ? explode(',', $_POST['elements_to_remove']) : array(); foreach ($_POST['elements'] as $id => $elementInfo) { if (!in_array($id, $toRemove)) { $contributionEl = $contributionElTable->find($id); if (empty($elementInfo['prompt'])) { $elementInfo['prompt'] = $elementTable->find($contributionEl->element_id)->name; } $contributionEl->prompt = $elementInfo['prompt']; $contributionEl->order = $elementInfo['order']; $contributionEl->long_text = $elementInfo['long_text']; $contributionEl->save(); } } foreach ($toRemove as $contribElId) { $contribEl = $contributionElTable->find($contribElId); if ($contribEl) { $contribEl->delete(); } } $this->_helper->redirector('browse'); return; } // Catch validation errors. } catch (Omeka_Validate_Exception $e) { $this->_helper->flashMessenger($e); } } }