-function wp_shrink_dimensions( $width, $height, $wmax = 128, $hmax = 96 ) {
- if ( $height <= $hmax && $width <= $wmax )
- return array( $width, $height);
- elseif ( $width / $height > $wmax / $hmax )
- return array( $wmax, (int) ($height / $width * $wmax ));
- else
- return array( (int) ($width / $height * $hmax ), $hmax );
+/**
+ * Retrieve the path or url of an attachment's attached file.
+ *
+ * If the attached file is not present on the local filesystem (usually due to replication plugins),
+ * then the url of the file is returned if url fopen is supported.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Optional. Image size, defaults to 'full'.
+ * @return string|false File path or url on success, false on failure.
+ */
+function _load_image_to_edit_path( $attachment_id, $size = 'full' ) {
+ $filepath = get_attached_file( $attachment_id );
+
+ if ( $filepath && file_exists( $filepath ) ) {
+ if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) {
+ /**
+ * Filter the path to the current image.
+ *
+ * The filter is evaluated for all image sizes except 'full'.
+ *
+ * @since 3.1.0
+ *
+ * @param string $path Path to the current image.
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Size of the image.
+ */
+ $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size );
+ }
+ } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) {
+ /**
+ * Filter the image URL if not in the local filesystem.
+ *
+ * The filter is only evaluated if fopen is enabled on the server.
+ *
+ * @since 3.1.0
+ *
+ * @param string $image_url Current image URL.
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Size of the image.
+ */
+ $filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size );
+ }
+
+ /**
+ * Filter the returned path or URL of the current image.
+ *
+ * @since 2.9.0
+ *
+ * @param string|bool $filepath File path or URL to current image, or false.
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Size of the image.
+ */
+ return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size );