array( ), "get_Makernote_Text_Value" => array( ), "Interpret_Makernote_to_HTML" => array( ) ); // Include the Main TIFF and EXIF Tags array include_once("$mosConfig_absolute_path/components/com_zoom/classes/iptc/EXIF.php"); /****************************************************************************** * * Include the Makernote Scripts * ******************************************************************************/ // Set the Makernotes Directory $dir = "$mosConfig_absolute_path/components/com_zoom/classes/iptc/makernotes/"; // Open the directory $dir_hnd = @opendir ( $dir ); // Cycle through each of the files in the Makernotes directory while ( ( $file = readdir( $dir_hnd ) ) !== false ) { // Check if the current item is a file if ( is_file ( $dir . $file ) ) { // Item is a file, break it into it's parts $path_parts = pathinfo( $dir . $file ); // Check if the extension is php if ( $path_parts["extension"] == "php" ) { // This is a php script - include it include_once ($dir . $file) ; } } } // close the directory closedir( $dir_hnd ); /****************************************************************************** * * Function: Read_Makernote_Tag * * Description: Attempts to decodes the Makernote tag supplied, returning the * new tag with the decoded information attached. * * Parameters: Makernote_Tag - the element of an EXIF array containing the * makernote, as returned from get_EXIF_JPEG * EXIF_Array - the entire EXIF array containing the * makernote, as returned from get_EXIF_JPEG, in * case more information is required for decoding * filehnd - an open file handle for the file containing the * makernote - does not have to be positioned at the * start of the makernote * * * Returns: Makernote_Tag - the Makernote_Tag from the parameters, but * modified to contain the decoded information * ******************************************************************************/ function Read_Makernote_Tag( $Makernote_Tag, $EXIF_Array, $filehnd ) { // Check if the Makernote is present but empty - this sometimes happens if ( ( strlen( $Makernote_Tag['Data'] ) === 0 ) || ( $Makernote_Tag['Data'] === str_repeat ( "\x00", strlen( $Makernote_Tag['Data'] )) ) ) { // Modify the makernote to display that it is empty $Makernote_Tag['Decoded Data'] = "Empty"; $Makernote_Tag['Makernote Type'] = "Empty"; $Makernote_Tag['Makernote Tags'] = "Empty"; $Makernote_Tag['Decoded'] = TRUE; // Return the new makernote return $Makernote_Tag; } // Check if the Make Field exists in the TIFF IFD if ( array_key_exists ( 271, $EXIF_Array[0] ) ) { // A Make tag exists in IFD0, collapse multiple strings (if any), and save result $Make_Field = implode ( "\n", $EXIF_Array[0][271]['Data']); } else { // No Make field found $Make_Field = ""; } // Cycle through each of the "Read_Makernote_Tag" functions foreach( $GLOBALS['Makernote_Function_Array']['Read_Makernote_Tag'] as $func ) { // Run the current function, and save the result $New_Makernote_Tag = $func( $Makernote_Tag, $EXIF_Array, $filehnd, $Make_Field ); // Check if a valid result was returned if ( $New_Makernote_Tag !== FALSE ) { // A valid result was returned - stop cycling break; } } // Check if a valid result was returned if ( $New_Makernote_Tag === false ) { // A valid result was NOT returned - construct a makernote tag representing this $New_Makernote_Tag = $Makernote_Tag; $New_Makernote_Tag['Decoded'] = FALSE; $New_Makernote_Tag['Makernote Type'] = "Unknown Makernote"; } // Return the new makernote tag return $New_Makernote_Tag; } /****************************************************************************** * End of Function: Read_Makernote_Tag ******************************************************************************/ /****************************************************************************** * * Function: get_Makernote_Text_Value * * Description: Attempts to provide a text value for any makernote tag marked * as type special. Returns false no handler could be found to * process the tag * * Parameters: Exif_Tag - the element of an the Makernote array containing the * tag in question, as returned from Read_Makernote_Tag * Tag_Definitions_Name - The name of the Tag Definitions group * within the global array IFD_Tag_Definitions * * * Returns: output - the text value for the tag * FALSE - If no handler could be found to process this tag, or if * an error occured in decoding * ******************************************************************************/ function get_Makernote_Text_Value( $Tag, $Tag_Definitions_Name ) { // Cycle through each of the "get_Makernote_Text_Value" functions foreach( $GLOBALS['Makernote_Function_Array']['get_Makernote_Text_Value'] as $func ) { // Run the current function, and save the result $Text_Val = $func( $Tag, $Tag_Definitions_Name ); // Check if a valid result was returned if ( $Text_Val !== FALSE ) { // valid result - return it return $Text_Val; } } // No Special tag handler found for this tag - return false return FALSE; } /****************************************************************************** * End of Function: get_Makernote_Text_Value ******************************************************************************/ /****************************************************************************** * * Function: Interpret_Makernote_to_HTML * * Description: Attempts to interpret a makernote into html. * * Parameters: Makernote_Tag - the element of an EXIF array containing the * makernote, as returned from get_EXIF_JPEG * filename - the name of the JPEG file being processed ( used * by scripts which display embedded thumbnails) * * * Returns: output - the html representing the makernote * ******************************************************************************/ function Interpret_Makernote_to_HTML( $Makernote_tag, $filename ) { // Create a string to receive the HTML $output_str = ""; // Check if the makernote tag is valid if ( $Makernote_tag === FALSE ) { // No makernote info - return return $output_str; } // Check if the makernote has been marked as unknown if ( $Makernote_tag['Makernote Type'] == "Unknown Makernote" ) { // Makernote is unknown - return message $output_str .= "
Makernote Coding: " . $Makernote_tag['Makernote Type'] . "
\n"; } // Check if this is an empty makernote if ( $Makernote_tag['Makernote Type'] == "Empty" ) { // It is empty - don't try to interpret return $output_str; } // Cycle through each of the "Interpret_Makernote_to_HTML" functions foreach( $GLOBALS['Makernote_Function_Array']['Interpret_Makernote_to_HTML'] as $func ) { // Run the current function, and save the result $html_text = $func( $Makernote_tag, $filename ); // Check if a valid result was returned if ( $html_text !== FALSE ) { // valid result - return it return $output_str . $html_text; } } // No Interpreter function handled the makernote - return a message $output_str .= "