Yaml.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace Gedmo\Uploadable\Mapping\Driver;
  3. use Gedmo\Mapping\Driver\File;
  4. use Gedmo\Mapping\Driver;
  5. use Gedmo\Uploadable\Mapping\Validator;
  6. /**
  7. * This is a yaml mapping driver for Uploadable
  8. * behavioral extension. Used for extraction of extended
  9. * metadata from yaml specifically for Uploadable
  10. * extension.
  11. *
  12. * @author Gustavo Falco <comfortablynumb84@gmail.com>
  13. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  14. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  15. */
  16. class Yaml extends File implements Driver
  17. {
  18. /**
  19. * File extension
  20. * @var string
  21. */
  22. protected $_extension = '.dcm.yml';
  23. /**
  24. * {@inheritDoc}
  25. */
  26. public function readExtendedMetadata($meta, array &$config)
  27. {
  28. $mapping = $this->_getMapping($meta->name);
  29. if (isset($mapping['gedmo'])) {
  30. $classMapping = $mapping['gedmo'];
  31. if (isset($classMapping['uploadable'])) {
  32. $uploadable = $classMapping['uploadable'];
  33. $config['uploadable'] = true;
  34. $config['allowOverwrite'] = isset($uploadable['allowOverwrite']) ?
  35. (bool) $uploadable['allowOverwrite'] : false;
  36. $config['appendNumber'] = isset($uploadable['appendNumber']) ?
  37. (bool) $uploadable['appendNumber'] : false;
  38. $config['path'] = isset($uploadable['path']) ? $uploadable['path'] : '';
  39. $config['pathMethod'] = isset($uploadable['pathMethod']) ? $uploadable['pathMethod'] : '';
  40. $config['callback'] = isset($uploadable['callback']) ? $uploadable['callback'] : '';
  41. $config['fileMimeTypeField'] = false;
  42. $config['fileNameField'] = false;
  43. $config['filePathField'] = false;
  44. $config['fileSizeField'] = false;
  45. $config['filenameGenerator'] = isset($uploadable['filenameGenerator']) ?
  46. $uploadable['filenameGenerator'] :
  47. Validator::FILENAME_GENERATOR_NONE;
  48. $config['maxSize'] = isset($uploadable['maxSize']) ?
  49. (double) $uploadable['maxSize'] :
  50. (double) 0;
  51. $config['allowedTypes'] = isset($uploadable['allowedTypes']) ?
  52. $uploadable['allowedTypes'] :
  53. '';
  54. $config['disallowedTypes'] = isset($uploadable['disallowedTypes']) ?
  55. $uploadable['disallowedTypes'] :
  56. '';
  57. if (isset($mapping['fields'])) {
  58. foreach ($mapping['fields'] as $field => $info) {
  59. if (isset($info['gedmo']) && array_key_exists(0, $info['gedmo'])) {
  60. if ($info['gedmo'][0] === 'uploadableFileMimeType') {
  61. $config['fileMimeTypeField'] = $field;
  62. } elseif ($info['gedmo'][0] === 'uploadableFileSize') {
  63. $config['fileSizeField'] = $field;
  64. } elseif ($info['gedmo'][0] === 'uploadableFileName') {
  65. $config['fileNameField'] = $field;
  66. } elseif ($info['gedmo'][0] === 'uploadableFilePath') {
  67. $config['filePathField'] = $field;
  68. }
  69. }
  70. }
  71. }
  72. Validator::validateConfiguration($meta, $config);
  73. }
  74. }
  75. }
  76. /**
  77. * {@inheritDoc}
  78. */
  79. protected function _loadMappingFile($file)
  80. {
  81. return \Symfony\Component\Yaml\Yaml::parse(file_get_contents($file));
  82. }
  83. }