Validator.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Gedmo\Uploadable\Mapping;
  3. use Doctrine\ORM\Mapping\ClassMetadataInfo;
  4. use Gedmo\Exception\InvalidMappingException;
  5. /**
  6. * This class is used to validate mapping information
  7. *
  8. * @author Gustavo Falco <comfortablynumb84@gmail.com>
  9. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  10. * @package Gedmo.Uploadable.Mapping
  11. * @subpackage Validator
  12. * @link http://www.gediminasm.org
  13. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  14. */
  15. class Validator
  16. {
  17. const UPLOADABLE_FILE_MIME_TYPE = 'UploadableFileMimeType';
  18. const UPLOADABLE_FILE_PATH = 'UploadableFilePath';
  19. const UPLOADABLE_FILE_SIZE = 'UploadableFileSize';
  20. /**
  21. * List of types which are valid for UploadableFileMimeType field
  22. *
  23. * @var array
  24. */
  25. public static $validFileMimeTypeTypes = array(
  26. 'string'
  27. );
  28. /**
  29. * List of types which are valid for UploadableFilePath field
  30. *
  31. * @var array
  32. */
  33. public static $validFilePathTypes = array(
  34. 'string'
  35. );
  36. /**
  37. * List of types which are valid for UploadableFileSize field
  38. *
  39. * @var array
  40. */
  41. public static $validFileSizeTypes = array(
  42. 'decimal'
  43. );
  44. public static function validateFileMimeTypeField(ClassMetadataInfo $meta, $field)
  45. {
  46. self::validateField($meta, $field, self::UPLOADABLE_FILE_MIME_TYPE, self::$validFileMimeTypeTypes);
  47. }
  48. public static function validateFilePathField(ClassMetadataInfo $meta, $field)
  49. {
  50. self::validateField($meta, $field, self::UPLOADABLE_FILE_PATH, self::$validFilePathTypes);
  51. }
  52. public static function validateFileSizeField(ClassMetadataInfo $meta, $field)
  53. {
  54. self::validateField($meta, $field, self::UPLOADABLE_FILE_SIZE, self::$validFileSizeTypes);
  55. }
  56. public static function validateField($meta, $field, $uploadableField, $validFieldTypes)
  57. {
  58. $fieldMapping = $meta->getFieldMapping($field);
  59. if (!in_array($fieldMapping['type'], $validFieldTypes)) {
  60. $msg = 'Field "%s" to work as an "%s" field must be of one of the following types: "%s".';
  61. throw new InvalidMappingException(sprintf($msg,
  62. $field,
  63. $uploadableField,
  64. explode(', ', $validFieldTypes)
  65. ));
  66. }
  67. }
  68. }