PluginProbe
Image Optimization – Compress Images and Convert to WebP or AVIF / 1.6.8
Image Optimization – Compress Images and Convert to WebP or AVIF v1.6.8
1.7.6 1.7.5 1.7.4 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 All 32 releases
image-optimization / classes / file-utils.php

file-utils.php in Image Optimization – Compress Images and Convert to WebP or AVIF 1.6.8, at classes/file-utils.php

106 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ImageOptimization\Classes;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 class File_Utils {
10 public static function get_extension( string $path ): string {
11 $locale = new Locale();
12 $locale->set_utf_locale();
13
14 $extension = pathinfo( $path, PATHINFO_EXTENSION );
15
16 $locale->reset_to_original();
17
18 return $extension;
19 }
20
21 public static function get_basename( string $path ): string {
22 $locale = new Locale();
23 $locale->set_utf_locale();
24
25 $basename = pathinfo( $path, PATHINFO_BASENAME );
26
27 $locale->reset_to_original();
28
29 return $basename;
30 }
31
32 public static function replace_extension( string $path, string $new_extension, bool $unique_filename = false ): string {
33 $locale = new Locale();
34 $locale->set_utf_locale();
35
36 $path = pathinfo( $path );
37 $basename = sprintf( '%s.%s', $path['filename'], $new_extension );
38
39 if ( $unique_filename ) {
40 $basename = wp_unique_filename( $path['dirname'], $basename );
41 }
42
43 $locale->reset_to_original();
44
45 return sprintf( '%s/%s', $path['dirname'], $basename );
46 }
47
48 public static function get_unique_path( string $path ): string {
49 $locale = new Locale();
50 $locale->set_utf_locale();
51
52 $path = pathinfo( $path );
53 $basename = sprintf( '%s.%s', $path['filename'], $path['extension'] );
54
55 $locale->reset_to_original();
56
57 return sprintf( '%s/%s', $path['dirname'], wp_unique_filename( $path['dirname'], $basename ) );
58 }
59
60 public static function get_relative_upload_path( string $path ): string {
61 $locale = new Locale();
62 $locale->set_utf_locale();
63
64 $path = _wp_relative_upload_path( $path );
65
66 $locale->reset_to_original();
67
68 return $path;
69 }
70
71 public static function get_url_from_path( string $full_path ): string {
72 $locale = new Locale();
73 $locale->set_utf_locale();
74
75 $upload_info = wp_upload_dir();
76 $url_base = $upload_info['baseurl'];
77
78 $parts = preg_split(
79 '/\/wp-content\/uploads/',
80 $full_path
81 );
82
83 $locale->reset_to_original();
84
85 return $url_base . $parts[1];
86 }
87
88 public static function format_file_size( int $file_size_in_bytes, $decimals = 2 ): string {
89 $sizes = [
90 __( '%s Bytes', 'image-optimization' ),
91 __( '%s Kb', 'image-optimization' ),
92 __( '%s Mb', 'image-optimization' ),
93 __( '%s Gb', 'image-optimization' ),
94 ];
95
96 if ( ! $file_size_in_bytes ) {
97 return sprintf( $sizes[0], 0 );
98 }
99
100 $current_scale = floor( log( $file_size_in_bytes ) / log( 1024 ) );
101 $formatted_value = number_format( $file_size_in_bytes / pow( 1024, $current_scale ), $decimals );
102
103 return sprintf( $sizes[ $current_scale ], $formatted_value );
104 }
105 }
106