| 
<?php/**
 * example.php - Image file metadata handing exampe file
 *
 * @project   Holiday\Metadata
 * @version   1.1
 * @author    Claude Diderich ([email protected])
 * @copyright (c) 2022 by Claude Diderich
 * @license   https://opensource.org/licenses/mit MIT
 */
 
 /** Set error handling */
 error_reporting(E_ALL);
 ini_set('log_errors', false);
 ini_set('display_errors', true);
 
 /**
 * Automatically load classes
 *
 * @param string $name Name of class to load
 */
 function my__autoload(string $name): void
 {
 $name = str_replace("\\", '/', str_replace("Holiday\\", '', $name));
 if(file_exists("../src/$name.php")) require_once("../src/$name.php");
 }
 spl_autoload_register('my__autoload');
 
 
 /*** EXAMPLE ***/
 $testfiles_ary = array('img.example.jpg', 'img.mlexample.jpg');
 
 /**
 * Use of class Metadata
 */
 $metadata = new \Holiday\Metadata();
 
 foreach($testfiles_ary as $filename) {
 echo "PROCESSING EXAMPLE IMAGE USING \\Holiday\\Metadata CLASS: $filename".PHP_EOL;
 echo "---".PHP_EOL;
 
 // Read metadata in a transparent way not extend tagged keywords
 $metadata->read($filename, extend: false);
 
 
 // Read some of the metadata (assuming metadata is available)
 $caption = $metadata->get(\Holiday\Metadata::CAPTION, lang: \Holiday\Metadata::LANG_DEFAULT);
 $caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, lang: \Holiday\Metadata::LANG_ALL);
 $date_created = $metadata->get(\Holiday\Metadata::CREATED_DATETIME);
 $credit = $metadata->get(\Holiday\Metadata::CREDIT);
 $city = $metadata->get(\Holiday\Metadata::CITY);
 $country = $metadata->get(\Holiday\Metadata::COUNTRY);
 $keywords = $metadata->get(\Holiday\Metadata::KEYWORDS);
 $people = $metadata->get(\Holiday\Metadata::PEOPLE);
 $event = $metadata->get(\Holiday\Metadata::EVENT);
 if(!empty($caption_ary)) {
 echo "CAPTION:".PHP_EOL;
 foreach($caption_ary as $lang => $text) {
 $lang = substr($lang.'          ', 0, 9);
 echo "   $lang: $text".PHP_EOL;
 }
 }
 if($credit !== false) echo "CREDIT      : $credit".PHP_EOL;
 if($city !== false && $country !== false) echo "PLACE       : $city, $country".PHP_EOL;
 if($date_created !== false) echo "CREATED     : ".date('d.m.Y', $date_created).PHP_EOL;
 if($event !== false) echo "EVENT       : $event".PHP_EOL;
 if($keywords !== false) echo "KEYWORDS    : ".implode(', ', $keywords).PHP_EOL;
 if($people !== false) echo "PEOPLE      : ".implode(', ', $people).PHP_EOL;
 echo PHP_EOL;
 
 // Read metadata in a transparent way and extend tagged keywords to their respective fields
 $metadata->read($filename, extend: true);
 echo "EXTENDING KEYWORD TAGS:".PHP_EOL;
 $keywords = $metadata->get(\Holiday\Metadata::KEYWORDS);
 $people = $metadata->get(\Holiday\Metadata::PEOPLE);
 if($keywords !== false) echo "KEYWORDS    : ".implode(', ', $keywords).PHP_EOL;
 if($people !== false) echo "PEOPLE      : ".implode(', ', $people).PHP_EOL;
 echo PHP_EOL;
 
 // Re-format caption and update information
 if($caption !== false && $date_created !== false && $city !== false && $country !== false && $credit !== false) {
 $caption = strtoupper($city).', '.strtoupper($country).' - '.strtoupper(date('F d', $date_created)).': '.
 $caption.' (Photo by '.$credit.')';
 $metadata->set(\Holiday\Metadata::CAPTION, $caption, lang: \Holiday\Metadata::LANG_DEFAULT);
 }
 else {
 echo "NOT ALL INFORMATION AVAILABLE TO UPDATE CAPTION".PHP_EOL;
 }
 if($event !== false) {
 $metadata->set(\Holiday\Metadata::EVENT, strtoupper($event));
 }
 else {
 $metadata->set(\Holiday\Metadata::EVENT, 'Event was empty');
 }
 
 // Write metadata back to the image file
 $metadata->write("new.$filename");
 
 // Read-back the data and display modified caption
 $metadata->read("new.$filename");
 $caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, \Holiday\Metadata::LANG_ALL);
 if(!empty($caption_ary)) {
 echo "NEW CAPTION:".PHP_EOL;
 foreach($caption_ary as $lang => $text) {
 $lang = substr($lang.'          ', 0, 9);
 echo "   $lang: $text".PHP_EOL;
 }
 }
 echo "NEW EVENT   : ".$metadata->get(\Holiday\Metadata::EVENT).PHP_EOL.PHP_EOL;
 
 // Paste original data to new file
 $metadata->read("$filename");
 $metadata->paste("new.$filename");
 
 // Read-back the data and display original caption
 $metadata->read("new.$filename");
 $caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, \Holiday\Metadata::LANG_ALL);
 if(!empty($caption_ary)) {
 echo "PASTED CAPTION:".PHP_EOL;
 foreach($caption_ary as $lang => $text) {
 $lang = substr($lang.'          ', 0, 9);
 echo "   $lang: $text".PHP_EOL;
 }
 }
 echo "PASTED EVENT: ".$metadata->get(\Holiday\Metadata::EVENT).PHP_EOL.PHP_EOL;
 }
 
 /**
 * Use of exception handling class \Holiday\Metadata\Exception
 */
 echo PHP_EOL;
 try {
 $metadata->read('invalid.file.name.jpg');
 echo "FILE WAS SUCCESSFULLY READ ALTHOUGH IT SHOULD NOT EXIST".PHP_EOL;
 }
 catch(\Holiday\Metadata\Exception $exception) {
 echo "EXCEPTION CATCHED".PHP_EOL;
 echo "---".PHP_EOL;
 echo "CODE:    ".$exception->getCode().PHP_EOL;
 echo "MESSAGE: ".$exception->getMessage().PHP_EOL;
 echo "DATA:    ".$exception->getData().PHP_EOL;
 }
 
 /***
 * Cleanup images created
 */
 foreach($testfiles_ary as $filename) {
 unlink("new.$filename");
 }
 ?>
 
 |