public function testFilePermissionsCoverage() { $permissions = ContributionType::getPossibleFilePermissions(); $this->assertAndRemoveArrayKey(ContributionType::FILE_PERMISSION_ALLOWED, $permissions); $this->assertAndRemoveArrayKey(ContributionType::FILE_PERMISSION_REQUIRED, $permissions); $this->assertAndRemoveArrayKey(ContributionType::FILE_PERMISSION_DISALLOWED, $permissions); $this->assertEquals(0, count($permissions), 'Not all file permission levels are covered by testing.'); }
/** * 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(); } }
/** * Deals with files specified on the contribution form. * * @param ContributionType $contributionType Type of contribution. * @return array File upload array. */ protected function _processFileUpload($contributionType) { if ($contributionType->isFileAllowed()) { $options = array(); if ($contributionType->isFileRequired()) { $options['ignoreNoFile'] = false; } else { $options['ignoreNoFile'] = true; } $fileMetadata = array('file_transfer_type' => 'Upload', 'files' => 'contributed_file', 'file_ingest_options' => $options); // Add the whitelists for uploaded files $fileValidation = new ContributionFileValidation(); $fileValidation->enableFilter(); return $fileMetadata; } return array(); }
<div class="field"> <div class="two columns alpha"> <label><?php echo __("Allow File Upload Via Form"); ?> </label> </div> <div class="inputs five columns omega"> <p class="explanation"><?php echo __("Enable or disable file uploads through the public contribution form. If set to “Required,“ users must add a file to their contribution when selecting this item type."); ?> </p> <div class="input-block"> <?php echo $this->formSelect('file_permissions', __('%s', $contribution_type->file_permissions), array(), ContributionType::getPossibleFilePermissions()); ?> </div> </div> </div> <div id="element-list" class="seven columns alpha"> <ul id="contribution-type-elements" class="sortable"> <?php foreach ($contributionTypeElements as $contributionElement) { if ($contributionElement) { ?> <li class="element">