3030 */
3131class PHPWord_Shared_File
3232{
33+ const IMAGETYPE_JPEG = 'jpg ' ;
34+ const IMAGETYPE_GIF = 'gif ' ;
35+ const IMAGETYPE_PNG = 'png ' ;
36+ const IMAGETYPE_BMP = 'bmp ' ;
37+ const IMAGETYPE_TIFF = 'tif ' ;
38+
3339 /**
3440 * Verify if a file exists
3541 *
@@ -74,10 +80,20 @@ public static function realpath($pFilename)
7480 * @param string $filename
7581 * @return int|bool
7682 */
77- public static function PHPWord_imagetype ($ filename )
83+ private static function fallbackImagetype ($ filename )
7884 {
7985 if ((list ($ width , $ height , $ type , $ attr ) = getimagesize ($ filename )) !== false ) {
80- return $ type ;
86+ if ($ type === 2 ) {
87+ return self ::IMAGETYPE_JPEG ;
88+ } elseif ($ type === 1 ) {
89+ return self ::IMAGETYPE_GIF ;
90+ } elseif ($ type === 3 ) {
91+ return self ::IMAGETYPE_PNG ;
92+ } elseif ($ type === 6 ) {
93+ return self ::IMAGETYPE_BMP ;
94+ } elseif ($ type === 7 || $ type === 8 ) {
95+ return self ::IMAGETYPE_TIFF ;
96+ }
8197 }
8298 return false ;
8399 }
@@ -86,14 +102,26 @@ public static function PHPWord_imagetype($filename)
86102 * Return the Image Type from a file
87103 *
88104 * @param string $filename
105+ * @param bool $userFallbackFunction
89106 * @return int|bool
90107 */
91- public static function imagetype ($ filename )
108+ public static function imagetype ($ filename, $ userFallbackFunction = false )
92109 {
93- if (function_exists ('exif_imagetype ' )) {
94- return exif_imagetype ($ filename );
95- } else {
96- return self ::PHPWord_imagetype ($ filename );
110+ if ($ userFallbackFunction || !function_exists ('exif_imagetype ' )) {
111+ return self ::fallbackImagetype ($ filename );
112+ }
113+
114+ $ imagetype = exif_imagetype ($ filename );
115+ if ($ imagetype === IMAGETYPE_JPEG ) {
116+ return self ::IMAGETYPE_JPEG ;
117+ } elseif ($ imagetype === IMAGETYPE_GIF ) {
118+ return self ::IMAGETYPE_GIF ;
119+ } elseif ($ imagetype === IMAGETYPE_PNG ) {
120+ return self ::IMAGETYPE_PNG ;
121+ } elseif ($ imagetype === IMAGETYPE_BMP ) {
122+ return self ::IMAGETYPE_BMP ;
123+ } elseif ($ imagetype === IMAGETYPE_TIFF_II || $ imagetype === IMAGETYPE_TIFF_MM ) {
124+ return self ::IMAGETYPE_TIFF ;
97125 }
98126 return false ;
99127 }
0 commit comments