PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / addons / wpml-dependencies / lib / classes / class-wpml-file.php
woocommerce-multilingual / addons / wpml-dependencies / lib / classes Last commit date
action-filter-loader 3 weeks ago block-editor 3 weeks ago container 3 weeks ago cookie 3 weeks ago languages 4 years ago notices 3 weeks ago privacy 3 weeks ago templates 3 weeks ago templating 3 weeks ago twig-extensions 3 weeks ago utilities 3 weeks ago wpml-wp 3 weeks ago ISitePress.php 4 years ago class-wpml-file.php 3 weeks ago
class-wpml-file.php
73 lines
1 <?php
2
3 class WPML_File {
4 private $wp_api;
5
6 private $filesystem;
7
8 public function __construct( ?WPML_WP_API $wp_api = null, ?WP_Filesystem_Direct $filesystem = null ) {
9 if ( ! $wp_api ) {
10 $wp_api = new WPML_WP_API();
11 }
12
13 $this->wp_api = $wp_api;
14
15 if ( ! $filesystem ) {
16 $filesystem = new WP_Filesystem_Direct( null );
17 }
18
19 $this->filesystem = $filesystem;
20 }
21
22 public function fix_dir_separator( $path ) {
23 $directory_separator = $this->wp_api->constant( 'DIRECTORY_SEPARATOR' );
24
25 return ( '\\' === $directory_separator ) ? str_replace( '/', '\\', $path ) : str_replace( '\\', '/', $path );
26 }
27
28 public function get_uri_from_path( $path ) {
29 $base = null;
30
31 if ( $this->wp_api->defined( 'WP_CONTENT_DIR' ) && $this->wp_api->defined( 'WP_CONTENT_URL' ) ) {
32 $base_path = $this->fix_dir_separator( $this->wp_api->constant( 'WP_CONTENT_DIR' ) );
33
34 if ( 0 === strpos( $path, $base_path ) ) {
35 $base = array(
36 'path' => $base_path,
37 'uri' => $this->wp_api->constant( 'WP_CONTENT_URL' ),
38 );
39 }
40 }
41
42 if ( ! $base ) {
43 $base = array(
44 'path' => $this->wp_api->constant( 'ABSPATH' ),
45 'uri' => site_url(),
46 );
47 }
48
49 $base['uri'] = preg_replace( '/(^https?:)/', '', $base['uri'] );
50 $relative_path = substr( $path, strlen( $base['path'] ) );
51 $relative_path = str_replace( array( '/', '\\' ), '/', $relative_path );
52 $relative_path = ltrim( $relative_path, '/' );
53
54 return trailingslashit( $base['uri'] ) . $relative_path;
55 }
56
57 public function get_relative_path( $path ) {
58 return str_replace( $this->fix_dir_separator( ABSPATH ), '', $this->fix_dir_separator( $path ) );
59 }
60
61 public function get_full_path( $path ) {
62 return ABSPATH . $this->get_relative_path( $path );
63 }
64
65 public function file_exists( $path ) {
66 return $this->filesystem->is_readable( $this->get_full_path( $path ) );
67 }
68
69 public function get_file_modified_timestamp( $path ) {
70 return $this->filesystem->mtime( $this->get_full_path( $path ) );
71 }
72 }
73