Ejemplo n.º 1
0
 /**
  * {@inheritDoc}
  */
 public function readExtendedMetadata($meta, array &$config)
 {
     $class = $this->getMetaReflectionClass($meta);
     // class annotations
     if ($annot = $this->reader->getClassAnnotation($class, self::UPLOADABLE)) {
         $config['uploadable'] = true;
         $config['allowOverwrite'] = $annot->allowOverwrite;
         $config['appendNumber'] = $annot->appendNumber;
         $config['path'] = $annot->path;
         $config['pathMethod'] = $annot->pathMethod;
         $config['fileMimeTypeField'] = false;
         $config['filePathField'] = false;
         $config['fileSizeField'] = false;
         $config['callback'] = $annot->callback;
         $config['filenameGenerator'] = $annot->filenameGenerator;
         $config['maxSize'] = (double) $annot->maxSize;
         $config['allowedTypes'] = $annot->allowedTypes;
         $config['disallowedTypes'] = $annot->disallowedTypes;
         foreach ($class->getProperties() as $prop) {
             if ($this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_MIME_TYPE)) {
                 $config['fileMimeTypeField'] = $prop->getName();
             }
             if ($this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_PATH)) {
                 $config['filePathField'] = $prop->getName();
             }
             if ($this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_SIZE)) {
                 $config['fileSizeField'] = $prop->getName();
             }
         }
         Validator::validateConfiguration($meta, $config);
     }
     /*
             // Code in case we need to identify entities which are not Uploadables, but have associations
             // with other Uploadable entities
     
             } else {
                 // We need to check if this class has a relation with Uploadable entities
                 $associations = $meta->getAssociationMappings();
     
                 foreach ($associations as $field => $association) {
                     $refl = new \ReflectionClass($association['targetEntity']);
     
                     if ($annot = $this->reader->getClassAnnotation($refl, self::UPLOADABLE)) {
                         $config['hasUploadables'] = true;
     
                         if (!isset($config['uploadables'])) {
                             $config['uploadables'] = array();
                         }
     
                         $config['uploadables'][] = array(
                             'class'         => $association['targetEntity'],
                             'property'      => $association['fieldName']
                         );
                     }
                 }
             }*/
     $this->validateFullMetadata($meta, $config);
 }
Ejemplo n.º 2
0
 /**
  * {@inheritDoc}
  */
 public function readExtendedMetadata($meta, array &$config)
 {
     /**
      * @var \SimpleXmlElement $xml
      */
     $xml = $this->_getMapping($meta->name);
     $xmlDoctrine = $xml;
     $xml = $xml->children(self::GEDMO_NAMESPACE_URI);
     if ($xmlDoctrine->getName() == 'entity' || $xmlDoctrine->getName() == 'mapped-superclass') {
         if (isset($xml->uploadable)) {
             $xmlUploadable = $xml->uploadable;
             $config['uploadable'] = true;
             $config['allowOverwrite'] = $this->_isAttributeSet($xmlUploadable, 'allow-overwrite') ? (bool) $this->_getAttribute($xmlUploadable, 'allow-overwrite') : false;
             $config['appendNumber'] = $this->_isAttributeSet($xmlUploadable, 'append-number') ? (bool) $this->_getAttribute($xmlUploadable, 'append-number') : false;
             $config['path'] = $this->_isAttributeSet($xmlUploadable, 'path') ? $this->_getAttribute($xml->{'uploadable'}, 'path') : '';
             $config['pathMethod'] = $this->_isAttributeSet($xmlUploadable, 'path-method') ? $this->_getAttribute($xml->{'uploadable'}, 'path-method') : '';
             $config['callback'] = $this->_isAttributeSet($xmlUploadable, 'callback') ? $this->_getAttribute($xml->{'uploadable'}, 'callback') : '';
             $config['fileMimeTypeField'] = false;
             $config['fileNameField'] = false;
             $config['filePathField'] = false;
             $config['fileSizeField'] = false;
             $config['filenameGenerator'] = $this->_isAttributeSet($xmlUploadable, 'filename-generator') ? $this->_getAttribute($xml->{'uploadable'}, 'filename-generator') : Validator::FILENAME_GENERATOR_NONE;
             $config['maxSize'] = $this->_isAttributeSet($xmlUploadable, 'max-size') ? (double) $this->_getAttribute($xml->{'uploadable'}, 'max-size') : (double) 0;
             $config['allowedTypes'] = $this->_isAttributeSet($xmlUploadable, 'allowed-types') ? $this->_getAttribute($xml->{'uploadable'}, 'allowed-types') : '';
             $config['disallowedTypes'] = $this->_isAttributeSet($xmlUploadable, 'disallowed-types') ? $this->_getAttribute($xml->{'uploadable'}, 'disallowed-types') : '';
             if (isset($xmlDoctrine->field)) {
                 foreach ($xmlDoctrine->field as $mapping) {
                     $mappingDoctrine = $mapping;
                     $mapping = $mapping->children(self::GEDMO_NAMESPACE_URI);
                     $field = $this->_getAttribute($mappingDoctrine, 'name');
                     if (isset($mapping->{'uploadable-file-mime-type'})) {
                         $config['fileMimeTypeField'] = $field;
                     } else {
                         if (isset($mapping->{'uploadable-file-size'})) {
                             $config['fileSizeField'] = $field;
                         } else {
                             if (isset($mapping->{'uploadable-file-name'})) {
                                 $config['fileNameField'] = $field;
                             } else {
                                 if (isset($mapping->{'uploadable-file-path'})) {
                                     $config['filePathField'] = $field;
                                 }
                             }
                         }
                     }
                 }
             }
             Validator::validateConfiguration($meta, $config);
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * {@inheritDoc}
  */
 public function readExtendedMetadata($meta, array &$config)
 {
     $mapping = $this->_getMapping($meta->name);
     if (isset($mapping['gedmo'])) {
         $classMapping = $mapping['gedmo'];
         if (isset($classMapping['uploadable'])) {
             $uploadable = $classMapping['uploadable'];
             $config['uploadable'] = true;
             $config['allowOverwrite'] = isset($uploadable['allowOverwrite']) ? (bool) $uploadable['allowOverwrite'] : false;
             $config['appendNumber'] = isset($uploadable['appendNumber']) ? (bool) $uploadable['appendNumber'] : false;
             $config['path'] = isset($uploadable['path']) ? $uploadable['path'] : '';
             $config['pathMethod'] = isset($uploadable['pathMethod']) ? $uploadable['pathMethod'] : '';
             $config['callback'] = isset($uploadable['callback']) ? $uploadable['callback'] : '';
             $config['fileMimeTypeField'] = false;
             $config['fileNameField'] = false;
             $config['filePathField'] = false;
             $config['fileSizeField'] = false;
             $config['filenameGenerator'] = isset($uploadable['filenameGenerator']) ? $uploadable['filenameGenerator'] : Validator::FILENAME_GENERATOR_NONE;
             $config['maxSize'] = isset($uploadable['maxSize']) ? (double) $uploadable['maxSize'] : (double) 0;
             $config['allowedTypes'] = isset($uploadable['allowedTypes']) ? $uploadable['allowedTypes'] : '';
             $config['disallowedTypes'] = isset($uploadable['disallowedTypes']) ? $uploadable['disallowedTypes'] : '';
             if (isset($mapping['fields'])) {
                 foreach ($mapping['fields'] as $field => $info) {
                     if (isset($info['gedmo']) && array_key_exists(0, $info['gedmo'])) {
                         if ($info['gedmo'][0] === 'uploadableFileMimeType') {
                             $config['fileMimeTypeField'] = $field;
                         } else {
                             if ($info['gedmo'][0] === 'uploadableFileSize') {
                                 $config['fileSizeField'] = $field;
                             } else {
                                 if ($info['gedmo'][0] === 'uploadableFileName') {
                                     $config['fileNameField'] = $field;
                                 } else {
                                     if ($info['gedmo'][0] === 'uploadableFilePath') {
                                         $config['filePathField'] = $field;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             Validator::validateConfiguration($meta, $config);
         }
     }
 }
Ejemplo n.º 4
0
 protected function readUploadableMetadata(\ReflectionClass $class, Uploadable $annot, $meta)
 {
     $config = array();
     $config['uploadable'] = true;
     $config['allowOverwrite'] = $annot->allowOverwrite;
     $config['appendNumber'] = $annot->appendNumber;
     $config['path'] = $annot->path;
     $config['pathMethod'] = $annot->pathMethod;
     $config['fileMimeTypeField'] = false;
     $config['fileNameField'] = false;
     $config['filePathField'] = false;
     $config['fileSizeField'] = false;
     $config['callback'] = $annot->callback;
     $config['filenameGenerator'] = $annot->filenameGenerator;
     $config['maxSize'] = (double) $annot->maxSize;
     $config['allowedTypes'] = $annot->allowedTypes;
     $config['disallowedTypes'] = $annot->disallowedTypes;
     foreach ($class->getProperties() as $prop) {
         if ($propAnnot = $this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_MIME_TYPE)) {
             if ($propAnnot->identifier == $annot->identifier) {
                 $config['fileMimeTypeField'] = $prop->getName();
             }
         }
         if ($propAnnot = $this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_NAME)) {
             if ($propAnnot->identifier == $annot->identifier) {
                 $config['fileNameField'] = $prop->getName();
             }
         }
         if ($propAnnot = $this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_PATH)) {
             if ($propAnnot->identifier == $annot->identifier) {
                 $config['filePathField'] = $prop->getName();
             }
         }
         if ($propAnnot = $this->reader->getPropertyAnnotation($prop, self::UPLOADABLE_FILE_SIZE)) {
             if ($propAnnot->identifier == $annot->identifier) {
                 $config['fileSizeField'] = $prop->getName();
             }
         }
     }
     Validator::validateConfiguration($meta, $config);
     return $config;
 }
Ejemplo n.º 5
0
 /**
  * @expectedException Gedmo\Exception\InvalidMappingException
  */
 public function test_validateConfiguration_ifAllowedTypesAndDisallowedTypesAreSetThenThrowException()
 {
     $this->meta->expects($this->once())->method('getReflectionClass')->will($this->returnValue(new \ReflectionClass(new FakeEntity())));
     Validator::$enableMimeTypesConfigException = true;
     $config = array('fileMimeTypeField' => 'someField', 'filePathField' => 'someField', 'fileSizeField' => '', 'pathMethod' => '', 'callback' => '', 'maxSize' => 0, 'allowedTypes' => 'text/plain', 'disallowedTypes' => 'text/css');
     Validator::validateConfiguration($this->meta, $config);
 }