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();
 }
Example #4
0
     <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 &#8220;Required,&#8220; 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">