function rt_vt_resize($attach_id = null, $img_url = null, $width, $height, $crop = false, $v_crop = false) { $file_path = ""; $image_src = array(); // fix demo image urls $upload_dir = wp_upload_dir(); $img_url = str_replace(RT_DEMOUPLOADSDIR, $upload_dir['url'], $img_url); //clean if thumbnail used instead of full image if ($img_url) { $img_url = rt_clean_thumbnail_ext($img_url); } // this is an attachment, so we have the ID if ($attach_id) { $image_src = wp_get_attachment_image_src($attach_id, 'full'); $file_path = get_attached_file($attach_id); // this is not an attachment, let's use the image url } else { if ($img_url) { //parse $file_path = parse_url($img_url); $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path']; /* alternative find paths $file_path = parse_url( $img_url ); $uploads = wp_upload_dir(); $file_path = $uploads['basedir'] . str_replace("/wp-content/uploads","", $file_path['path']); */ $orig_size = file_exists($file_path) ? getimagesize($file_path) : false; $image_src[0] = $img_url; $image_src[1] = $orig_size[0]; $image_src[2] = $orig_size[1]; //let WP find image urls if (!$orig_size) { $get_image_id_from_url = rt_get_attachment_id_from_src($img_url); if ($get_image_id_from_url) { $image_src = wp_get_attachment_image_src($get_image_id_from_url, 'full'); $file_path = get_attached_file($get_image_id_from_url); } } } } $file_info = pathinfo($file_path); $extension = isset($file_info['extension']) ? '.' . $file_info['extension'] : ""; // the image path without the extension $no_ext_path = isset($file_info['dirname']) && isset($file_info['filename']) ? $file_info['dirname'] . '/' . $file_info['filename'] : ""; if (isset($image_src[2]) && $height <= $image_src[2] && $v_crop != false && $crop == false) { $cropped_img_path = $no_ext_path . '-vc-' . $width . 'x' . $height . $extension; //cropped vertically } else { $cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension; //cropped normal } // checking if the file size is larger than the target size // if it is smaller or the same size, stop right here and return if (isset($image_src[1]) && $image_src[1] > $width || isset($image_src[2]) && $image_src[2] > $height) { // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match) if (file_exists($cropped_img_path) && $crop != false) { $cropped_img_url = str_replace(basename($image_src[0]), basename($cropped_img_path), $image_src[0]); $vt_image = array('url' => $cropped_img_url, 'width' => $width, 'height' => $height); return $vt_image; } // $crop = false if ($crop == false && $v_crop == false) { // calculate the size proportionaly $proportional_size = wp_constrain_dimensions($image_src[1], $image_src[2], $width, $height); $resized_img_path = $no_ext_path . '-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension; // checking if the file already exists if (file_exists($resized_img_path)) { $resized_img_url = str_replace(basename($image_src[0]), basename($resized_img_path), $image_src[0]); $vt_image = array('url' => $resized_img_url, 'width' => $proportional_size[0], 'height' => $proportional_size[1]); return $vt_image; } } // $v_crop = true if ($height <= $image_src[2] && $v_crop != false && $crop == false) { // calculate the size proportionaly if ($width > $image_src[1]) { $proportional_size = array($image_src[1], $height); } else { $proportional_size = array($width, $height); } $resized_img_path = $no_ext_path . '-vc-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension; // checking if the file already exists if (file_exists($resized_img_path)) { $resized_img_url = str_replace(basename($image_src[0]), basename($resized_img_path), $image_src[0]); $vt_image = array('url' => $resized_img_url, 'width' => $proportional_size[0], 'height' => $proportional_size[1]); return $vt_image; } } // no cache files - let's finally resize it $new_img_path = wp_get_image_editor($file_path); if (!is_wp_error($new_img_path)) { /* * resize & crop */ //crop images with the height value, and take x and y = 0 if ($height <= $image_src[2] && $v_crop != false && $crop == false) { if ($width > $image_src[1]) { $resized = $new_img_path->crop(0, 0, $image_src[1], $height); $v_crop_sfx = "vc-" . $image_src[1] . "x" . $height; } else { $resized = $new_img_path->crop(0, 0, $width, $height); $v_crop_sfx = "vc-" . $width . "x" . $height; } } if ($v_crop == false) { $resized = $new_img_path->resize($width, $height, $crop); // regular resize } //if no wp error save the new file if (!is_wp_error($resized)) { if ($height <= $image_src[2] && $v_crop != false && $crop == false) { $dest_file = $new_img_path->generate_filename($v_crop_sfx); //v_crop } else { $dest_file = $new_img_path->generate_filename(); } $saved = $new_img_path->save($dest_file); if (!is_wp_error($saved)) { $new_img_path = $saved["path"]; } else { $new_img_path = $file_path; } } else { $new_img_path = $file_path; } } else { $new_img_path = $file_path; } $new_img_size = getimagesize($new_img_path); $new_img = str_replace(basename($image_src[0]), basename($new_img_path), $image_src[0]); // resized output $vt_image = array('url' => $new_img, 'width' => $new_img_size[0], 'height' => $new_img_size[1]); return $vt_image; } // default output - without resizing $vt_image = array('url' => isset($image_src[0]) ? $image_src[0] : "", 'width' => isset($image_src[0]) ? $image_src[1] : "", 'height' => isset($image_src[0]) ? $image_src[2] : ""); return $vt_image; }
/** * Display the new Custom Fields meta box */ function displayCustomFields() { global $post; ?> <div class="box right-col metaboxes side"> <?php wp_nonce_field($this->settings['slug'], $this->settings['slug'] . '_wpnonce', false, true); // Check capability if (!current_user_can($this->settings['capability'], $post->ID)) { $output = false; } else { $output = true; } // Output if allowed if ($output) { ?> <?php //get stored values $rt_gallery_images = get_post_meta($post->ID, $this->prefix . "rt_gallery_images", true); //to compatible with earlier rt-framework implode the images into an array first if (is_array($rt_gallery_images) && !empty($rt_gallery_images)) { $rt_gallery_images = implode(",", $rt_gallery_images); } ?> <ul class="rt-gallery-uploaded-photos"> <?php if (!empty($rt_gallery_images)) { //make an array from the image list $rt_gallery_images_array = explode(",", $rt_gallery_images); for ($i = 0; $i < count($rt_gallery_images_array); $i++) { //the image url $image_url = rt_find_image_org_path(trim($rt_gallery_images_array[$i])); //find the id of image $image_id = rt_get_attachment_id_from_src(rt_clean_thumbnail_ext($image_url)); //the thumbmail url $thumbnail = wp_get_attachment_image_src($image_id, "thumbnail", true, ""); if (strpos($thumbnail[0], "default.png")) { $thumbnail[0] = $image_url; } echo ' <li><img src="' . $thumbnail[0] . '" data-rel="' . $image_url . '"></li> '; } } ?> </ul> <input type="hidden" name="<?php echo $this->prefix; ?> rt_gallery_images" value="<?php echo $rt_gallery_images; ?> " id="rt-gallery-images" class="upload_field"> <div class="rt-gallery-new-photos-holder"> <div class="rt-gallery-new-photos"></div> </div> <?php } ?> <div class="rt_gallery_add_button icon-plus-squared-1 button"><?php echo __("Add New Images", "rt_theme_admin"); ?> </div> </div> <?php }
function rt_find_image_org_path($image) { if (is_multisite()) { global $blog_id; if (isset($blog_id) && $blog_id > 0) { if (strpos($image, get_bloginfo('wpurl')) !== false) { //image is local if (empty(get_current_site(1)->path)) { $the_image_path = get_current_site(1)->path . str_replace(get_blog_option($blog_id, 'fileupload_url'), get_blog_option($blog_id, 'upload_path'), $image); } else { $the_image_path = $image; } } else { $the_image_path = $image; } } else { $the_image_path = $image; } } else { $the_image_path = $image; } return rt_clean_thumbnail_ext($the_image_path); }