@@ -206,7 +206,7 @@ public function getIptcData($file)
206206 {
207207 $ size = getimagesize ($ file , $ info );
208208 $ arrData = array ();
209- if (isset ($ info ['APP13 ' ])) {
209+ if (isset ($ info ['APP13 ' ])) {
210210 $ iptc = iptcparse ($ info ['APP13 ' ]);
211211
212212 foreach ($ this ->iptcMapping as $ name => $ field ) {
@@ -251,28 +251,78 @@ public function mapData(array $source)
251251 $ vertResolution = (int )reset ($ resolutionParts );
252252 }
253253
254- return array (
255- Exif::APERTURE => (!isset ($ source [self ::SECTION_COMPUTED ]['ApertureFNumber ' ])) ? false : $ source [self ::SECTION_COMPUTED ]['ApertureFNumber ' ],
256- Exif::AUTHOR => (!isset ($ source ['Artist ' ])) ? false : $ source ['Artist ' ],
257- Exif::CAMERA => (!isset ($ source ['Model ' ])) ? false : $ source ['Model ' ],
258- Exif::CAPTION => (!isset ($ source [self ::SECTION_IPTC ]['caption ' ])) ? false : $ source [self ::SECTION_IPTC ]['caption ' ],
259- Exif::COPYRIGHT => (!isset ($ source [self ::SECTION_IPTC ]['copyright ' ])) ? false : $ source [self ::SECTION_IPTC ]['copyright ' ],
260- Exif::CREATION_DATE => (!isset ($ source ['DateTimeOriginal ' ])) ? false : DateTime::createFromFormat ('Y:m:d H:i:s ' , $ source ['DateTimeOriginal ' ]),
261- Exif::CREDIT => (!isset ($ source [self ::SECTION_IPTC ]['credit ' ])) ? false : $ source [self ::SECTION_IPTC ]['credit ' ],
262- Exif::EXPOSURE => (!isset ($ source ['ExposureTime ' ])) ? false : $ source ['ExposureTime ' ],
254+ $ creationDate = false ;
255+ if (isset ($ source ['DateTimeOriginal ' ])) {
256+ $ creationDate = DateTime::createFromFormat (
257+ 'Y:m:d H:i:s ' ,
258+ $ source ['DateTimeOriginal ' ]
259+ );
260+ }
261+
262+ $ mappedData = array (
263+ Exif::APERTURE => false ,
264+ Exif::AUTHOR => false ,
265+ Exif::CAMERA => false ,
266+ Exif::CAPTION => false ,
267+ Exif::COPYRIGHT => false ,
268+ Exif::CREATION_DATE => $ creationDate ,
269+ Exif::CREDIT => false ,
270+ Exif::EXPOSURE => false ,
263271 Exif::FOCAL_LENGTH => $ focalLength ,
264- Exif::FOCAL_DISTANCE => (! isset ( $ source [ self :: SECTION_COMPUTED ][ ' FocusDistance ' ])) ? false : $ source [ self :: SECTION_COMPUTED ][ ' FocusDistance ' ] ,
265- Exif::HEADLINE => (! isset ( $ source [ self :: SECTION_IPTC ][ ' headline ' ])) ? false : $ source [ self :: SECTION_IPTC ][ ' headline ' ] ,
266- Exif::HEIGHT => (! isset ( $ source [ self :: SECTION_COMPUTED ][ ' Height ' ])) ? false : $ source [ self :: SECTION_COMPUTED ][ ' Height ' ] ,
272+ Exif::FOCAL_DISTANCE => false ,
273+ Exif::HEADLINE => false ,
274+ Exif::HEIGHT => false ,
267275 Exif::HORIZONTAL_RESOLUTION => $ horResolution ,
268- Exif::ISO => (! isset ( $ source [ ' ISOSpeedRatings ' ])) ? false : $ source [ ' ISOSpeedRatings ' ] ,
269- Exif::JOB_TITLE => (! isset ( $ source [ self :: SECTION_IPTC ][ ' jobtitle ' ])) ? false : $ source [ self :: SECTION_IPTC ][ ' jobtitle ' ] ,
270- Exif::KEYWORDS => (! isset ( $ source [ self :: SECTION_IPTC ][ ' keywords ' ])) ? false : $ source [ self :: SECTION_IPTC ][ ' keywords ' ] ,
271- Exif::SOFTWARE => (! isset ( $ source [ ' Software ' ])) ? false : $ source [ ' Software ' ] ,
272- Exif::SOURCE => (! isset ( $ source [ self :: SECTION_IPTC ][ ' source ' ])) ? false : $ source [ self :: SECTION_IPTC ][ ' source ' ] ,
273- Exif::TITLE => (! isset ( $ source [ self :: SECTION_IPTC ][ ' title ' ])) ? false : $ source [ self :: SECTION_IPTC ][ ' title ' ] ,
276+ Exif::ISO => false ,
277+ Exif::JOB_TITLE => false ,
278+ Exif::KEYWORDS => false ,
279+ Exif::SOFTWARE => false ,
280+ Exif::SOURCE => false ,
281+ Exif::TITLE => false ,
274282 Exif::VERTICAL_RESOLUTION => $ vertResolution ,
275- Exif::WIDTH => (! isset ( $ source [ self :: SECTION_COMPUTED ][ ' Width ' ])) ? false : $ source [ self :: SECTION_COMPUTED ][ ' Width ' ] ,
283+ Exif::WIDTH => false ,
276284 );
285+
286+ $ arrMapping = array (
287+ array (
288+ Exif::AUTHOR => 'Artist ' ,
289+ Exif::CAMERA => 'Model ' ,
290+ Exif::EXPOSURE => 'ExposureTime ' ,
291+ Exif::ISO => 'ISOSpeedRatings ' ,
292+ Exif::SOFTWARE => 'Software ' ,
293+ ),
294+ self ::SECTION_COMPUTED => array (
295+ Exif::APERTURE => 'ApertureFNumber ' ,
296+ Exif::FOCAL_DISTANCE => 'FocusDistance ' ,
297+ Exif::HEIGHT => 'Height ' ,
298+ Exif::WIDTH => 'Width ' ,
299+ ),
300+ self ::SECTION_IPTC => array (
301+ Exif::CAPTION => 'caption ' ,
302+ Exif::COPYRIGHT => 'copyright ' ,
303+ Exif::CREDIT => 'credit ' ,
304+ Exif::HEADLINE => 'headline ' ,
305+ Exif::JOB_TITLE => 'jobtitle ' ,
306+ Exif::KEYWORDS => 'keywords ' ,
307+ Exif::SOURCE => 'source ' ,
308+ Exif::TITLE => 'title ' ,
309+ ),
310+ );
311+
312+ foreach ($ arrMapping as $ key => $ arrFields ) {
313+ if (array_key_exists ($ key , $ source )) {
314+ $ arrSource = $ source [$ key ];
315+ } else {
316+ $ arrSource = $ source ;
317+ }
318+
319+ foreach ($ arrFields as $ mappedField => $ field ) {
320+ if (isset ($ arrSource [$ field ])) {
321+ $ mappedData [$ mappedField ] = $ arrSource [$ field ];
322+ }
323+ }
324+ }
325+
326+ return $ mappedData ;
277327 }
278328}
0 commit comments