message->remove matched categories has to be set to no */ add_filter('postie_post_before', 'mws_auto_tag'); function mws_auto_tag($post) { DebugEcho('============================== mws_auto_tag ' . print_r($post, true)); // DebugEcho(' test for "common places" category'); // if (in_category( 'Common Places', $post )) { // DebugEcho(' post has "common places" category'); // } $post = evaluate_image_exif($post, $post['post_category']); $post['post_name'] = $post['post_title']; DebugEcho('========================== end mws_auto_tag'); DebugEcho("========================== post_content before massage\n" . $post['post_content']); $post['post_content'] = preg_replace('!
!','', $post['post_content']); $post['post_content'] = preg_replace('!
!','', $post['post_content']); $post['post_content'] = preg_replace('!

!','', $post['post_content']); $post['post_content'] = preg_replace('!
!','', $post['post_content']); $post['post_content'] = preg_replace('!\n!','', $post['post_content']); $post['post_content'] = preg_replace('!<!','<', $post['post_content']); $post['post_content'] = preg_replace('!>!','>', $post['post_content']); DebugEcho("========================== post_content after massage\n" . $post['post_content']); $post = make_landscape_photos_large($post); return $post; } /* extract information from the exif metadata of the first image in the post. * if applicable create the title, categories and location information from this */ function evaluate_image_exif( $post, $categories ) { DebugEcho('MWS =====> begin evaluate_image_exif'); $common_places_found = 0; DebugEcho(' test for "common places" category'); if (in_category( 'common places', $post )) { DebugEcho(' post has "common places" category'); $common_places_found = 1; } $iimgs = get_attached_media('image', $post['ID']); $upload_dir = wp_upload_dir(); foreach ( $iimgs as $iimg ) { $imagefile = $upload_dir['basedir'] . '/' . wp_get_attachment_metadata( get_post_thumbnail_id( $post['ID'] ) )['file']; break; } $meta = miech_wp_read_image_metadata( get_post_meta($post['ID']), $imagefile, $sourceImageType ); if ( ! empty( $meta['title'] ) ) $post['post_title'] = $meta['title']; DebugEcho('~~~~~~~~~~ ' . $post['post_title'] ); preg_match_all('/\[(.*?)\]/', $post['post_title'], $leftovercats); print_r($leftovercats[1]); foreach ( array_merge( array( $meta['country'], $meta['state'], $meta['city'] ), explode(',', $meta['keywords']), $leftovercats[1] ) as $k) { /* DebugEcho(' category/tag: ' . $k); */ $in_blacklist = 0; foreach ( array('wp', 'blog', 'status', 'genre', 'published', 'printed', 'lens', 'treatment' ) as $b ) { if ( strcasecmp( "$k", "$b" ) == 0 ) { $in_blacklist = 1; } } /* if ( $in_blacklist < 1 ) { */ if ( $in_blacklist < 1 and strlen($k) > 0) { DebugEcho(" Examining '$k' " ); if ( strcasecmp('common places', "$k") == 0) { DebugEcho(" '$k' GEFUNDEN!" ); $common_places_found = 1; } $cat = get_term_by('name', (string) "$k", 'category'); if ( isset($cat) ) { if ( $cat->term_id > 1 ) { DebugEcho(" Category '$k' exists with id " . $cat->term_id ); array_push( $categories, $cat->term_id ); } else { DebugEcho(" Category '$k' does not exist ==> '$k' becomes tag" ); array_push($post['tags_input'], "$k"); } } } } DebugEcho(" \$common_places_found ist $common_places_found: " . print_r($categories, true) ); if ( $common_places_found == 0 ) { array_push( $categories, get_term_by('name', (string) "Vernacular", 'category')->term_id ); } else { $c2 = \array_diff($categories, [1964]); $categories = $c2; DebugEcho(" 'vernacular' removed: " . print_r($categories, true) ); } $post['post_category'] = $categories; if ( $meta['city'] ) $post['post_content'] = mws_add_caption( $post['post_content'], $meta ); /* remove leftover category strings from title */ $post['post_title'] = preg_replace('/\[.*\]\s*/', '', $post['post_title']); DebugEcho( "MWS ===> end evaluate_image_exif " . $imagefile); return $post; } /* ------------------------------------------- exif related functions --- */ function miech_wp_read_image_metadata( $meta, $file, $sourceImageType ) { DebugEcho('MWS ===> beginning miech_wp_read_image_metadata'); $newmeta = array(); // read iptc first, since it might contain data not available in exif such // as caption, description etc getimagesize( $file, $info ); if ( ! empty( $info['APP13'] ) ) { $iptc = iptcparse( $info['APP13'] ); $newmeta['title'] = trim( $iptc['2#105'][0] ); $newmeta['country'] = trim( $iptc['2#101'][0] ); $newmeta['state'] = trim( $iptc['2#095'][0] ); $newmeta['city'] = trim( $iptc['2#090'][0] ); $newmeta['location'] = trim( $iptc['2#092'][0] ); $keywordcount = count($iptc["2#025"]); for ( $i = 0; $i < $keywordcount; $i++ ) { if ( strlen($newmeta['keywords']) > 0 ) $newmeta['keywords'] .= ',' ; $newmeta['keywords'] .= $iptc["2#025"][$i]; } } $exif = @exif_read_data( $file ); /* DebugEcho('Exif' . print_r($exif)); */ DebugEcho('GPSLatitude is ' . $exif['GPSLatitude']); if ( is_numeric($exif['GPSLatitude']) ) DebugEcho('GPSLatitude is numeric ' ); else DebugEcho('GPSLatitude is not numeric ' ); if ( ! empty($exif['GPSLatitude'])) $newmeta['latitude'] = geo_single_fracs2dec($exif['GPSLatitude'] ); if ( ! empty($exif['GPSLongitude'])) $newmeta['longitude'] = geo_single_fracs2dec($exif['GPSLongitude']) ; if ( ! empty($exif['GPSLatitudeRef'])) if ( $exif['GPSLatitudeRef'] == 'S' ) $newmeta['latitude'] = '-' . $newmeta['latitude']; if ( ! empty($exif['GPSLongitudeRef'])) if ( $exif['GPSLongitudeRef'] == 'W' ) $newmeta['longitude'] = '-' . $newmeta['longitude']; foreach ( array( 'city', 'location') as $key ) { if ( $newmeta[ $key ] && ! seems_utf8( $newmeta[ $key ] ) ) $newmeta[ $key ] = utf8_encode( $newmeta[ $key ] ); } $meta = array_merge($meta, $newmeta); DebugEcho('MWS ===> end miech_wp_read_image_metadata'); return $meta; } function geo_frac2dec($str) { @list( $n, $d ) = explode( '/', $str ); if ( !empty($d) ) return $n / $d; return $str; } function geo_single_fracs2dec($fracs) { return geo_frac2dec($fracs[0]) + geo_frac2dec($fracs[1]) / 60 + geo_frac2dec($fracs[2]) / 3600; } function mws_add_caption( $s, $meta ) { DebugEcho('MWS ===> begin mws_add_caption'); $alt = $meta['title']; $caption = "\n

"; if ( $meta['location'] ) { $caption = $caption . $meta['location'] . ', '; $alt = $alt . ', ' . $meta['location']; } $caption = $caption . $meta['city']; $alt = $alt . ', ' . $meta['city']; if ( $meta['longitude'] ) { $caption = $caption . ' (OSM)'; $alt = $alt . ', geotagged'; } $caption = $caption . "

\n"; $keywords = $meta['keywords']; DebugEcho('Keywords: ' . $keywords); $keywords = preg_replace('/(WP|Lens,|Status,|Blog,|Published,|Treatment,|)/s', '', $keywords); $keywords = preg_replace('/"/s', "'", $keywords); $keywords = preg_replace('/,/s', ', ', $keywords); $keywords = preg_replace('/, $/', '', $keywords); DebugEcho($keywords); $alt = $alt . ', ' . $keywords; DebugEcho($alt); $s = preg_replace('/
\s*<\/div>/ims', $caption, $s, 1); $s = preg_replace('/alt=""/ims', 'alt="' . $alt . '"', $s, 1); DebugEcho($s); DebugEcho('MWS ===> end mws_add_caption'); return $s; } /* add the categories of the postie post to all attached images */ add_filter('postie_post_after', 'mws_postie_add_cats_to_images'); /* MWS now */ function mws_postie_add_cats_to_images( $post ) { $cats = $post['post_category']; $imgs = get_attached_media('image', $post['ID']); $flag = 0; foreach ($cats as $c) { /* DebugEcho( $c ); */ $cat = get_category($c); /* DebugEcho( print_r($cat) ); */ if ( $cat->cat_ID > 1 ) { foreach ( $imgs as $img ) { wp_set_post_categories( $img->ID, $cat->cat_ID, true ); } } $flag = 1; } if ( $flag > 0 ) { wp_set_post_categories( $img->ID, get_cat_ID('no_user'), true ); } return $post; } function make_landscape_photos_large( $post ) { DebugEcho("make_landscape_photos_large 1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" . $post['post_content'] . "\n"); preg_match('/ postie_dunit (\d+)pxx(\d+)px /', $post['post_content'], $size); DebugEcho( print_r($size) ); if ( $size[1] > $size[2] ) { DebugEcho( "Landscape\n" ); #
Ripples.jpg
Saalachau, Bad Reichenhall
# #
$post['post_content'] = preg_replace('/{/', '{"align":"wide",', $post['post_content']); $post['post_content'] = preg_replace('/wp-block-image /','wp-block-image alignwide ', $post['post_content']); $post['post_content'] = preg_replace('/\n*/', '', $post['post_content']); DebugEcho($post['post_content']); } return $post; } /* add_filter('postie_post_after', 'mws_postie_rotate_ios_images'); function mws_postie_rotate_ios_images ( $post ) { $upload_dir = wp_upload_dir(); foreach ( $iimgs as $iimg ) { $imagefile = $upload_dir['basedir'] . '/' . wp_get_attachment_metadata( get_post_thumbnail_id( $post['ID'] ) )['file']; DebugEcho("1. Image to rotate: " .$imagefile); correctImageOrientation($imagefile); } } */ /* add_action('postie_file_added', 'mws_postie_fileadded', 10, 3); */ /* MWS now */ /* function mws_postie_fileadded($postid, $attachmentid, $file_array) { DebugEcho('MWS ========> begin mws_postie_fileadded'); $fileinfo = wp_check_filetype(get_attached_file($attachmentid)); $upload_dir = wp_upload_dir()['basedir']; $meta = wp_get_attachment_metadata( $attachmentid ); $mimetype = $fileinfo['type']; if (strpos($mimetype, 'image', 0) === 0) { //only if attachment is an image $file = $upload_dir . '/' . $meta['file']; set_title_from_exif_if_necessary($postid, $file, $meta); $subdir = dirname($meta['file']); $deg = correctImageOrientation($file); foreach ( array_keys($meta['sizes']) as $size ) { if ( $size != 'full' ) { $file = $upload_dir . '/' . $subdir . '/' . $meta['sizes'][$size]['file']; correctImageOrientation($file); } } } DebugEcho('MWS ========> end mws_postie_fileadded'); } */ ?>