@@ -206,7 +206,7 @@ public function getIptcData($file)
206
206
{
207
207
$ size = getimagesize ($ file , $ info );
208
208
$ arrData = array ();
209
- if (isset ($ info ['APP13 ' ])) {
209
+ if (isset ($ info ['APP13 ' ])) {
210
210
$ iptc = iptcparse ($ info ['APP13 ' ]);
211
211
212
212
foreach ($ this ->iptcMapping as $ name => $ field ) {
@@ -251,28 +251,78 @@ public function mapData(array $source)
251
251
$ vertResolution = (int )reset ($ resolutionParts );
252
252
}
253
253
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 ,
263
271
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 ,
267
275
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 ,
274
282
Exif::VERTICAL_RESOLUTION => $ vertResolution ,
275
- Exif::WIDTH => (! isset ( $ source [ self :: SECTION_COMPUTED ][ ' Width ' ])) ? false : $ source [ self :: SECTION_COMPUTED ][ ' Width ' ] ,
283
+ Exif::WIDTH => false ,
276
284
);
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 ;
277
327
}
278
328
}
0 commit comments