PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 1 month ago block-editor 1 month ago container 1 month ago cookie 1 month ago languages 4 years ago notices 1 month ago privacy 1 month ago templates 1 month ago templating 1 month ago twig-extensions 1 month ago utilities 1 month ago wpml-wp 1 month ago ISitePress.php 4 years ago class-wpml-file.php 1 month 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