<?php
/**
 * @package MegaMain
 * @subpackage MegaMain
 * @since mm 1.0
 */
	if ( !class_exists( 'mm_image_pro' ) ) {
		class mm_image_pro {

			public static function post_thumbnail_id ( $post_id = false ) {
				if ( $post_id != false && is_numeric( $post_id ) ) {
					$post_id = $post_id;
				} else {
					global $post;
					$post_id = ( get_the_ID() ) ? get_the_ID() : $post->ID;
				}
				return get_post_thumbnail_id( $post_id );
			}

			public static function post_image_src ( $post_id = false ) {
				if ( $post_id != false && is_numeric( $post_id ) ) {
					$attachment_id = self::post_thumbnail_id( $post_id );
				} else {
					$attachment_id = self::post_thumbnail_id();
				}
				if ( wp_get_attachment_image_src( $attachment_id, 'full' ) ) {
					$image_src = wp_get_attachment_image_src( $attachment_id, 'full' );
					$image_src = $image_src[0];
		/* for better times
					if ( mmpm_url_exist( $image_src ) == false ) {
						$image_src = MMPM_IMAGE_NOT_FOUND; 
					}
		*/
				} else {
					$image_src = false;
				};
				return $image_src;
			}

			public static function resized_image_src ( $original_image_url = false, $width = false, $height = false, $crop = true ) {
				$wp_upload_dir = wp_upload_dir();
		/*
				if ( empty( $original_image_url ) ){
					$original_image_url = MMPM_NO_IMAGE_AVAILABLE; 
				}
		*/
				$original_image_path = str_replace( $wp_upload_dir['baseurl'], $wp_upload_dir['basedir'], $original_image_url );
		/* for better times
				if ( mmpm_url_exist( $original_image_url ) == false ) {
					$original_image_url = MMPM_IMAGE_NOT_FOUND; 
				}
		*/
				$file_extension = strrchr( $original_image_url, '.' );
				$file_name = strrchr( $original_image_url, '/' );
				if ( is_numeric( $width ) || is_numeric( $height ) ) {
					$croped_file_name = str_replace( $file_extension, '', $file_name ) . '-' . $width . 'x' . $height . ( $crop == true ? '-croped' : '-uncroped' ) . $file_extension;
				} else {
					$croped_file_name = $file_name;
				}
				if ( substr_count( $original_image_url, $wp_upload_dir['baseurl'] ) ) {
					$subdir = str_replace( array( $wp_upload_dir['baseurl'], $file_name ), '', $original_image_url );
				} elseif ( substr_count( $original_image_url, home_url() ) ) {
					$subdir = '/undated_files';
				} else {
					$subdir = '/external_files';
				}
				$croped_img_path = $wp_upload_dir['basedir'] . $subdir . $croped_file_name;
				$croped_img_url = $wp_upload_dir['baseurl'] . $subdir . $croped_file_name;
				if ( !file_exists( $croped_img_path ) ) {
					$img = wp_get_image_editor( $original_image_path );
					if ( ! is_wp_error( $img ) ) {
						$img->resize( $width, $height, $crop );
						$img->save( $croped_img_path );
					}
				}
				return $croped_img_url;
			}

			public static function processed_image ( $args = array() ) {
				global $post;
				$defaults = array(
					'post_id' => false,
					'width' => false,
					'height' => false,
					'crop' => true,
					'class' => false,
					'echo' => false,
					'src' => true,
					'permalink' => true,
					'cover' => array('title','link'), // Available types: title, link, zoom, icon
					'custom_color_1' => false,
					'custom_color_2' => false,
					'title' => true,
					'icon' => true,
					'container' => true,
					'stack_id' => false,
				);
				$args = wp_parse_args( $args, $defaults );
				extract( $args );
				// check and set variablesz
				$out = '';
				$post_id = ( ( $post_id !== false ) 
					? $post_id
					: (
						( get_the_ID() != false ) 
							? get_the_ID()
							: $post->ID
					)
				);
				$src = ( ( is_string( $src ) && mm_common::is_url( $src ) ) 
					? esc_url( $src )
					: self::post_image_src( $post_id )
				);
				$icon = ( ( is_string( $icon ) && !empty( $icon ) )
					? $icon 
					: ( get_post_meta( $post_id, 'mm_post_icon', true ) 
						? get_post_meta( $post_id, 'mm_post_icon', true ) 
						: 'im-icon-plus-circle' 
					) 
				);
				$title = ( is_string( $title ) 
					? $title 
					: ( get_the_title( $post_id ) 
						? get_the_title( $post_id ) 
						: false ) //__( 'More', 'image_cover_textdomain' ) ) 
				);
				$permalink = ( is_string( $permalink ) 
					? esc_url( $permalink )
					: ( ( $permalink != false && get_permalink( $post_id ) ) 
						? get_permalink( $post_id ) 
						: '' 
					) 
				);
				$attachment_object = get_post_thumbnail_id( $post_id ) 
					? (object) get_post( get_post_thumbnail_id( $post_id ) ) 
					: (object) 'image';
				$alt_attr = ( is_object( $attachment_object ) && isset( $attachment_object->ID ) && get_post_meta( $attachment_object->ID, '_wp_attachment_image_alt', true ) != '' ) 
					? get_post_meta( $attachment_object->ID, '_wp_attachment_image_alt', true ) 
					: $title ;
				$post_excerpt = ( isset( $attachment_object->post_excerpt ) && $attachment_object->post_excerpt != '' ) 
					? $attachment_object->post_excerpt
					: $title;
				// build image tag
				if ( $src !== false ) {
					$img = '<img src="' . self::resized_image_src( $src, $width, $height, $crop ) . '" alt="' . $alt_attr . '" title="' . $post_excerpt . '" />';
					// build additional containers
					if ( $container == true ) {
						$out .= mm_common::ntab(1) . '<' . ( is_string( $container ) ? $container : 'div' ) . ' class="processed_image' . ( is_string( $class ) ? ' ' . esc_attr( $class ) : '' ) . '">'; //  style="max-width:' . $width . 'px; max-height:' . $height . 'px;"
						$out .= mm_common::ntab(2) . $img;
						if ( $cover == true ) {
							$out .= mm_common::ntab(2) . '<div class="cover' . ( is_string( $cover ) ? ' ' . $cover : ( is_array( $cover ) ? ' ' . implode( ' ', $cover ) : '') ) . '"' . ( ( $custom_color_1 != false ) ? ' style="background: ' . $custom_color_1 . ';"' : '' ) . '>';
							if ( 
								$icon == true && 
								( 
									$cover == 'icon' 
									|| ( 
										is_array( $cover ) 
										&& ( 
											in_array( 'icon', $cover ) 
											|| ( !in_array( 'zoom', $cover ) && !in_array( 'link', $cover ) ) 
										) 
									)
								) 
							) {
/*
								$link_href_atr = ( 
									( $permalink != '' && ( !is_array( $cover ) || ( is_array( $cover ) && !in_array( 'link', $cover ) ) ) ) 
									? 'href="' . $permalink . '"' 
									: '' 
								);
								$out .= mm_common::ntab(3) . '<a ' . $link_href_atr . ' class="icon">'; //' . ( is_array( $cover ) && ( in_array( 'zoom', $cover ) || in_array( 'link', $cover ) ) ? '' : ' without_controls' ) . '
								$out .= mm_common::ntab(4) . '<i class="' .$icon . '"></i>';					
								$out .= mm_common::ntab(3) . '</a>';
*/
								$out .= mm_common::ntab(3) . ( ( $permalink != '' && ( ( is_array( $cover ) && !in_array( 'link', $cover ) ) || $cover != 'link' ) ) 
									? '<a href="' . $permalink . '"' . ' class="icon"' . ( ( $custom_color_2 != false ) ? ' style="border-color: ' . $custom_color_2 . ';"' : '' ) . '><i class="' .$icon . '"' . ( ( $custom_color_1 != false ) ? ' style="color: ' . $custom_color_1 . ';"' : '' ) . '></i></a>'
									: '<span class="icon"' . ( ( $custom_color_2 != false ) ? ' style="background: ' . $custom_color_2 . ';"' : '' ) . '><i class="' .$icon . '"' . ( ( $custom_color_1 != false ) ? ' style="color: ' . $custom_color_1 . ';"' : '' ) . '></i></span>'
								);
							}
							if ( $title == true && ( $cover == 'title' || ( is_array( $cover ) && in_array( 'title', $cover ) ) ) ) {
/*
								$link_href_atr = ( ( $permalink != '' && ( is_array( $cover ) && !in_array( 'link', $cover ) ) ) 
									? 'href="' . $permalink . '"' 
									: '' 
								);
								$out .= mm_common::ntab(3) . '<a ' . $link_href_atr . ' class="title' . ( $permalink == '' ? ' single' : '' ) . '" title="' . $title . '">';
								$out .= mm_common::ntab(4) . $title;					
								$out .= mm_common::ntab(3) . '</a>';
*/
								$out .= mm_common::ntab(3) . ( ( $permalink != '' && ( is_array( $cover ) && !in_array( 'link', $cover ) ) ) 
									? '<a href="' . $permalink . '"' . ' class="title' . ( $permalink == '' ? ' single' : '' ) . '" title="' . $title . '"' . ( ( $custom_color_2 != false ) ? ' style="background: ' . $custom_color_2 . ';"' : '' ) . '>'. $title . '</a>'
									: '<span class="title' . ( $permalink == '' ? ' single' : '' ) . '"' . ( ( $custom_color_2 != false ) ? ' style="color: ' . $custom_color_2 . ';"' : '' ) . '>'. $title . '</span>'
								);
							}
							if ( $cover == 'zoom' || ( is_array( $cover ) && in_array( 'zoom', $cover ) ) ) {
								$out .= mm_common::ntab(3) . '<a href="' . $src . '" title="' . $title . '" data-rel="prettyPhoto' . ( ( $stack_id !== false ) ? '[pp_' . $stack_id . ']' : '' ) . '" class="controls full_image' . ( ( $permalink != '' && in_array( 'link', $cover ) ) ? '' : ' single' ) . '">';
								$out .= mm_common::ntab(4) . '<i class="im-icon-zoom-in"' . ( ( $custom_color_2 != false ) ? ' style="color: ' . $custom_color_2 . '; border-color: ' . $custom_color_2 . ';"' : '' ) . '></i>';
								$out .= mm_common::ntab(3) . '</a>';
							}
							if ( $cover == 'link' || ( is_array( $cover ) && in_array( 'link', $cover ) ) ) {
								if ( $permalink != '' ) {
									$out .= mm_common::ntab(3) . '<a href="' . $permalink . '" class="controls permalink' . ( ( in_array( 'zoom', $cover ) ) ? '' : ' single' ) . '">';
									$out .= mm_common::ntab(4) . '<i class="im-icon-link"' . ( ( $custom_color_2 != false ) ? ' style="color: ' . $custom_color_2 . '; border-color: ' . $custom_color_2 . ';"' : '' ) . '></i>';
									$out .= mm_common::ntab(3) . '</a>';
								}
							}
							$out .= mm_common::ntab(2) . '</div><!-- class="cover' . ( is_string( $cover ) ? ' ' . $cover : ( is_array( $cover ) ? ' ' . implode( ' ', $cover ) : '') ) . '" -->';
						}
						$out .= mm_common::ntab(1) . '</' . ( is_string( $container ) ? $container : 'div' ) . '><!-- class="processed_image' . ( is_string( $class ) ? ' ' . $class : '' ) . '" -->';
					} else {
						$out .= mm_common::ntab(1) . $img;
					}
				}

				// return echo or output
				if ( $echo != false ) {
					echo $out;
				} else {
					return $out;
				}
			}
		}
	}
