PluginProbe
Translation with DeepL API / 2.4.5
Translation with DeepL API v2.4.5
trunk 0.1.20180323 1.0 1.2.5.1 1.5.2.5 1.7.5 2.4.3.12 2.4.3.9 2.4.5
← All changes | client/deepl-data.class.php +214 -211 1.7.52.4.5 View file →
@@ -1,212 +1,215 @@
1 -<?php
2 -
3 -abstract class DeepLData {
4 - public $allow_cache = true;
5 -
6 - protected function isCacheValid( $cache_file, $max_age = false ) {
7 - if( !$this->allow_cache ) {
8 - $this->why_no_cache = "Cache not allowed";
9 - return false;
10 - }
11 - elseif( !file_exists( $cache_file ) ) {
12 - $this->why_no_cache = "No cache file $this->cache_file";
13 - return false;
14 - }
15 - elseif( filesize( $cache_file ) < 10 ) {
16 - $this->why_no_cache = "Cache file too small";
17 - return false;
18 - }
19 - elseif( !file_get_contents( $cache_file ) ) {
20 - $this->why_no_cache = "Cache file not readable";
21 - return false;
22 - }
23 - return true;
24 - }
25 -
26 - protected function getCacheDirectory() {
27 - return WPDEEPL_FILES;
28 - }
29 -
30 - // http://nadeausoftware.com/articles/2008/05/php_tip_how_convert_relative_url_absolute_url
31 - protected function url_to_absolute( $baseUrl, $relativeUrl ) {
32 - // If relative URL has a scheme, clean path and return.
33 - $r = $this->split_url( $relativeUrl );
34 - if ( $r === FALSE )
35 - return FALSE;
36 - if ( !empty( $r['scheme'] ) ) {
37 - if ( !empty( $r['path'] ) && $r['path'][0] == '/' )
38 - $r['path'] = $this->url_remove_dot_segments( $r['path'] );
39 - return $this->join_url( $r );
40 - }
41 -
42 - // Make sure the base URL is absolute.
43 - $b = $this->split_url( $baseUrl );
44 - if ( $b === FALSE || empty( $b['scheme'] ) || empty( $b['host'] ) )
45 - return FALSE;
46 - $r['scheme'] = $b['scheme'];
47 -
48 - // If relative URL has an authority, clean path and return.
49 - if ( isset( $r['host'] ) ) {
50 - if ( !empty( $r['path'] ) )
51 - $r['path'] = $this->url_remove_dot_segments( $r['path'] );
52 - return $this->join_url( $r );
53 - }
54 - unset( $r['port'] );
55 - unset( $r['user'] );
56 - unset( $r['pass'] );
57 -
58 - // Copy base authority.
59 - $r['host'] = $b['host'];
60 - if ( isset( $b['port'] ) ) $r['port'] = $b['port'];
61 - if ( isset( $b['user'] ) ) $r['user'] = $b['user'];
62 - if ( isset( $b['pass'] ) ) $r['pass'] = $b['pass'];
63 -
64 - // If relative URL has no path, use base path
65 - if ( empty( $r['path'] ) ) {
66 - if ( !empty( $b['path'] ) )
67 - $r['path'] = $b['path'];
68 - if ( !isset( $r['query'] ) && isset( $b['query'] ) )
69 - $r['query'] = $b['query'];
70 - return $this->join_url( $r );
71 - }
72 -
73 - // If relative URL path doesn't start with /, merge with base path
74 - if ( $r['path'][0] != '/' ) {
75 - $base = mb_strrchr( $b['path'], '/', TRUE, 'UTF-8' );
76 - if ( $base === FALSE ) $base = '';
77 - $r['path'] = $base . '/' . $r['path'];
78 - }
79 - $r['path'] = $this->url_remove_dot_segments( $r['path'] );
80 - return $this->join_url( $r );
81 - }
82 - protected function url_remove_dot_segments( $path ) {
83 - // multi-byte character explode
84 - $inSegs = preg_split( '!/!u', $path );
85 - $outSegs = array( );
86 - foreach ( $inSegs as $seg ) {
87 - if ( $seg == '' || $seg == '.' ) {
88 - continue;
89 - }
90 - if ( $seg == '..' ) {
91 - array_pop( $outSegs );
92 - }
93 - else {
94 - array_push( $outSegs, $seg );
95 - }
96 - }
97 - $outPath = implode( '/', $outSegs );
98 - if ( $path[0] == '/' ) {
99 - $outPath = '/' . $outPath;
100 - }
101 - // compare last multi-byte character against '/'
102 - if ( $outPath != '/' && ( mb_strlen( $path )-1 ) == mb_strrpos( $path, '/', 'UTF-8' ) ) {
103 - $outPath .= '/';
104 - }
105 - return $outPath;
106 - }
107 -
108 - protected function split_url( $url, $decode=TRUE ) {
109 - $xunressub = 'a-zA-Z\d\-._~\!$&\'()*+, ;=';
110 - $xpchar = $xunressub . ':@%';
111 - $xscheme = '( [a-zA-Z][a-zA-Z\d+-.]* )';
112 - $xuserinfo = '( ( [' . $xunressub . '%]* )' . '( :( [' . $xunressub . ':%]* ) )? )';
113 - $xipv4 = '( \d{1, 3}\.\d{1, 3}\.\d{1, 3}\.\d{1, 3} )';
114 - $xipv6 = '( \[( [a-fA-F\d.:]+ )\] )';
115 - $xhost_name = '( [a-zA-Z\d-.%]+ )';
116 - $xhost = '( ' . $xhost_name . '|' . $xipv4 . '|' . $xipv6 . ' )';
117 - $xport = '( \d* )';
118 - $xauthority = '( ( ' . $xuserinfo . '@ )?' . $xhost . '?( :' . $xport . ' )? )';
119 - $xslash_seg = '( /[' . $xpchar . ']* )';
120 - $xpath_authabs = '( ( //' . $xauthority . ' )( ( /[' . $xpchar . ']* )* ) )';
121 - $xpath_rel = '( [' . $xpchar . ']+' . $xslash_seg . '* )';
122 - $xpath_abs = '( /( ' . $xpath_rel . ' )? )';
123 - $xapath = '( ' . $xpath_authabs . '|' . $xpath_abs . '|' . $xpath_rel . ' )';
124 - $xqueryfrag = '( [' . $xpchar . '/?' . ']* )';
125 - $xurl = '^( ' . $xscheme . ': )?' . $xapath . '?' . '( \?' . $xqueryfrag . ' )?( #' . $xqueryfrag . ' )?$';
126 -
127 - // Split the URL into components.
128 - if ( !preg_match( '!' . $xurl . '!', $url, $m ) )
129 - return FALSE;
130 -
131 - if ( !empty( $m[2] ) ) $parts['scheme'] = strtolower( $m[2] );
132 -
133 - if ( !empty( $m[7] ) ) {
134 - if ( isset( $m[9] ) ) $parts['user'] = $m[9];
135 - else $parts['user'] = '';
136 - }
137 - if ( !empty( $m[10] ) ) $parts['pass'] = $m[11];
138 -
139 - if ( !empty( $m[13] ) ) $h=$parts['host'] = $m[13];
140 - else if ( !empty( $m[14] ) ) $parts['host'] = $m[14];
141 - else if ( !empty( $m[16] ) ) $parts['host'] = $m[16];
142 - else if ( !empty( $m[5] ) ) $parts['host'] = '';
143 - if ( !empty( $m[17] ) ) $parts['port'] = $m[18];
144 -
145 - if ( !empty( $m[19] ) ) $parts['path'] = $m[19];
146 - else if ( !empty( $m[21] ) ) $parts['path'] = $m[21];
147 - else if ( !empty( $m[25] ) ) $parts['path'] = $m[25];
148 -
149 - if ( !empty( $m[27] ) ) $parts['query'] = $m[28];
150 - if ( !empty( $m[29] ) ) $parts['fragment']= $m[30];
151 -
152 - if ( !$decode )
153 - return $parts;
154 - if ( !empty( $parts['user'] ) )
155 - $parts['user'] = rawurldecode( $parts['user'] );
156 - if ( !empty( $parts['pass'] ) )
157 - $parts['pass'] = rawurldecode( $parts['pass'] );
158 - if ( !empty( $parts['path'] ) )
159 - $parts['path'] = rawurldecode( $parts['path'] );
160 - if ( isset( $h ) )
161 - $parts['host'] = rawurldecode( $parts['host'] );
162 - if ( !empty( $parts['query'] ) )
163 - $parts['query'] = rawurldecode( $parts['query'] );
164 - if ( !empty( $parts['fragment'] ) )
165 - $parts['fragment'] = rawurldecode( $parts['fragment'] );
166 - return $parts;
167 - }
168 - protected function join_url( $parts, $encode=TRUE ) {
169 - if ( $encode ) {
170 - if ( isset( $parts['user'] ) )
171 - $parts['user'] = rawurlencode( $parts['user'] );
172 - if ( isset( $parts['pass'] ) )
173 - $parts['pass'] = rawurlencode( $parts['pass'] );
174 - if ( isset( $parts['host'] ) && !preg_match( '!^( \[[\da-f.:]+\]] )|( [\da-f.:]+ )$!ui', $parts['host'] ) )
175 - $parts['host'] = rawurlencode( $parts['host'] );
176 - if ( !empty( $parts['path'] ) )
177 - $parts['path'] = preg_replace( '!%2F!ui', '/', rawurlencode( $parts['path'] ) );
178 - if ( isset( $parts['query'] ) )
179 - $parts['query'] = rawurlencode( $parts['query'] );
180 - if ( isset( $parts['fragment'] ) )
181 - $parts['fragment'] = rawurlencode( $parts['fragment'] );
182 - }
183 -
184 - $url = '';
185 - if ( !empty( $parts['scheme'] ) )
186 - $url .= $parts['scheme'] . ':';
187 - if ( isset( $parts['host'] ) ) {
188 - $url .= '//';
189 - if ( isset( $parts['user'] ) ) {
190 - $url .= $parts['user'];
191 - if ( isset( $parts['pass'] ) )
192 - $url .= ':' . $parts['pass'];
193 - $url .= '@';
194 - }
195 - if ( preg_match( '!^[\da-f]*:[\da-f.:]+$!ui', $parts['host'] ) )
196 - $url .= '[' . $parts['host'] . ']'; // IPv6
197 - else
198 - $url .= $parts['host']; // IPv4 or name
199 - if ( isset( $parts['port'] ) )
200 - $url .= ':' . $parts['port'];
201 - if ( !empty( $parts['path'] ) && $parts['path'][0] != '/' )
202 - $url .= '/';
203 - }
204 - if ( !empty( $parts['path'] ) )
205 - $url .= $parts['path'];
206 - if ( isset( $parts['query'] ) )
207 - $url .= '?' . $parts['query'];
208 - if ( isset( $parts['fragment'] ) )
209 - $url .= '#' . $parts['fragment'];
210 - return $url;
211 - }
1 +<?php
2 +
3 +abstract class DeepLData {
4 + public $allow_cache = true;
5 +
6 + protected function isCacheValid( $cache_file, $max_age = false ) {
7 + if ( !$this->allow_cache ) {
8 + $this->why_no_cache = "Cache not allowed";
9 + return false;
10 + }
11 + elseif ( !file_exists( $cache_file ) ) {
12 + $this->why_no_cache = "No cache file $this->cache_file";
13 + return false;
14 + }
15 + elseif ( filesize( $cache_file ) < 10 ) {
16 + $this->why_no_cache = "Cache file too small";
17 + return false;
18 + }
19 + elseif ( !file_get_contents( $cache_file ) ) {
20 + $this->why_no_cache = "Cache file not readable";
21 + return false;
22 + }
23 + return true;
24 + }
25 +
26 + protected function getCacheDirectory() {
27 + return WPDEEPL_FILES;
28 + }
29 +
30 + // http://nadeausoftware.com/articles/2008/05/php_tip_how_convert_relative_url_absolute_url
31 + protected function url_to_absolute( $baseUrl, $relativeUrl ) {
32 + // If relative URL has a scheme, clean path and return.
33 + $r = $this->split_url( $relativeUrl );
34 + if ( $r === FALSE )
35 + return FALSE;
36 + if ( !empty( $r['scheme'] ) ) {
37 + if ( !empty( $r['path'] ) && $r['path'][0] == '/' )
38 + $r['path'] = $this->url_remove_dot_segments( $r['path'] );
39 + return $this->join_url( $r );
40 + }
41 +
42 + // Make sure the base URL is absolute.
43 + $b = $this->split_url( $baseUrl );
44 + if ( $b === FALSE || empty( $b['scheme'] ) || empty( $b['host'] ) )
45 + return FALSE;
46 + $r['scheme'] = $b['scheme'];
47 +
48 + // If relative URL has an authority, clean path and return.
49 + if ( isset( $r['host'] ) ) {
50 + if ( !empty( $r['path'] ) )
51 + $r['path'] = $this->url_remove_dot_segments( $r['path'] );
52 + return $this->join_url( $r );
53 + }
54 + unset( $r['port'] );
55 + unset( $r['user'] );
56 + unset( $r['pass'] );
57 +
58 + // Copy base authority.
59 + $r['host'] = $b['host'];
60 + if ( isset( $b['port'] ) ) $r['port'] = $b['port'];
61 + if ( isset( $b['user'] ) ) $r['user'] = $b['user'];
62 + if ( isset( $b['pass'] ) ) $r['pass'] = $b['pass'];
63 +
64 + // If relative URL has no path, use base path
65 + if ( empty( $r['path'] ) ) {
66 + if ( !empty( $b['path'] ) )
67 + $r['path'] = $b['path'];
68 + if ( !isset( $r['query'] ) && isset( $b['query'] ) )
69 + $r['query'] = $b['query'];
70 + return $this->join_url( $r );
71 + }
72 +
73 + // If relative URL path doesn't start with /, merge with base path
74 + if ( $r['path'][0] != '/' ) {
75 + $base = mb_strrchr( $b['path'], '/', TRUE, 'UTF-8' );
76 + if ( $base === FALSE ) $base = '';
77 + $r['path'] = $base . '/' . $r['path'];
78 + }
79 + $r['path'] = $this->url_remove_dot_segments( $r['path'] );
80 + return $this->join_url( $r );
81 + }
82 + protected function url_remove_dot_segments( $path ) {
83 + // multi-byte character explode
84 + $inSegs = preg_split( '!/!u', $path );
85 + $outSegs = array( );
86 + foreach ( $inSegs as $seg ) {
87 + if ( $seg == '' || $seg == '.' ) {
88 + continue;
89 + }
90 + if ( $seg == '..' ) {
91 + array_pop( $outSegs );
92 + }
93 + else {
94 + array_push( $outSegs, $seg );
95 + }
96 + }
97 + $outPath = implode( '/', $outSegs );
98 + if ( $path[0] == '/' ) {
99 + $outPath = '/' . $outPath;
100 + }
101 + // compare last multi-byte character against '/'
102 + if (
103 + $outPath != '/'
104 + && ( mb_strlen( $path )-1 ) == mb_strrpos( $path, '/', 0, 'UTF-8' )
105 + ) {
106 + $outPath .= '/';
107 + }
108 + return $outPath;
109 + }
110 +
111 + protected function split_url( $url, $decode=TRUE ) {
112 + $xunressub = 'a-zA-Z\d\-._~\!$&\'()*+, ;=';
113 + $xpchar = $xunressub . ':@%';
114 + $xscheme = '( [a-zA-Z][a-zA-Z\d+-.]* )';
115 + $xuserinfo = '( ( [' . $xunressub . '%]* )' . '( :( [' . $xunressub . ':%]* ) )? )';
116 + $xipv4 = '( \d{1, 3}\.\d{1, 3}\.\d{1, 3}\.\d{1, 3} )';
117 + $xipv6 = '( \[( [a-fA-F\d.:]+ )\] )';
118 + $xhost_name = '( [a-zA-Z\d-.%]+ )';
119 + $xhost = '( ' . $xhost_name . '|' . $xipv4 . '|' . $xipv6 . ' )';
120 + $xport = '( \d* )';
121 + $xauthority = '( ( ' . $xuserinfo . '@ )?' . $xhost . '?( :' . $xport . ' )? )';
122 + $xslash_seg = '( /[' . $xpchar . ']* )';
123 + $xpath_authabs = '( ( //' . $xauthority . ' )( ( /[' . $xpchar . ']* )* ) )';
124 + $xpath_rel = '( [' . $xpchar . ']+' . $xslash_seg . '* )';
125 + $xpath_abs = '( /( ' . $xpath_rel . ' )? )';
126 + $xapath = '( ' . $xpath_authabs . '|' . $xpath_abs . '|' . $xpath_rel . ' )';
127 + $xqueryfrag = '( [' . $xpchar . '/?' . ']* )';
128 + $xurl = '^( ' . $xscheme . ': )?' . $xapath . '?' . '( \?' . $xqueryfrag . ' )?( #' . $xqueryfrag . ' )?$';
129 +
130 + // Split the URL into components.
131 + if ( !preg_match( '!' . $xurl . '!', $url, $m ) )
132 + return FALSE;
133 +
134 + if ( !empty( $m[2] ) ) $parts['scheme'] = strtolower( $m[2] );
135 +
136 + if ( !empty( $m[7] ) ) {
137 + if ( isset( $m[9] ) ) $parts['user'] = $m[9];
138 + else $parts['user'] = '';
139 + }
140 + if ( !empty( $m[10] ) ) $parts['pass'] = $m[11];
141 +
142 + if ( !empty( $m[13] ) ) $h=$parts['host'] = $m[13];
143 + else if ( !empty( $m[14] ) ) $parts['host'] = $m[14];
144 + else if ( !empty( $m[16] ) ) $parts['host'] = $m[16];
145 + else if ( !empty( $m[5] ) ) $parts['host'] = '';
146 + if ( !empty( $m[17] ) ) $parts['port'] = $m[18];
147 +
148 + if ( !empty( $m[19] ) ) $parts['path'] = $m[19];
149 + else if ( !empty( $m[21] ) ) $parts['path'] = $m[21];
150 + else if ( !empty( $m[25] ) ) $parts['path'] = $m[25];
151 +
152 + if ( !empty( $m[27] ) ) $parts['query'] = $m[28];
153 + if ( !empty( $m[29] ) ) $parts['fragment']= $m[30];
154 +
155 + if ( !$decode )
156 + return $parts;
157 + if ( !empty( $parts['user'] ) )
158 + $parts['user'] = rawurldecode( $parts['user'] );
159 + if ( !empty( $parts['pass'] ) )
160 + $parts['pass'] = rawurldecode( $parts['pass'] );
161 + if ( !empty( $parts['path'] ) )
162 + $parts['path'] = rawurldecode( $parts['path'] );
163 + if ( isset( $h ) )
164 + $parts['host'] = rawurldecode( $parts['host'] );
165 + if ( !empty( $parts['query'] ) )
166 + $parts['query'] = rawurldecode( $parts['query'] );
167 + if ( !empty( $parts['fragment'] ) )
168 + $parts['fragment'] = rawurldecode( $parts['fragment'] );
169 + return $parts;
170 + }
171 + protected function join_url( $parts, $encode=TRUE ) {
172 + if ( $encode ) {
173 + if ( isset( $parts['user'] ) )
174 + $parts['user'] = rawurlencode( $parts['user'] );
175 + if ( isset( $parts['pass'] ) )
176 + $parts['pass'] = rawurlencode( $parts['pass'] );
177 + if ( isset( $parts['host'] ) && !preg_match( '!^( \[[\da-f.:]+\]] )|( [\da-f.:]+ )$!ui', $parts['host'] ) )
178 + $parts['host'] = rawurlencode( $parts['host'] );
179 + if ( !empty( $parts['path'] ) )
180 + $parts['path'] = preg_replace( '!%2F!ui', '/', rawurlencode( $parts['path'] ) );
181 + if ( isset( $parts['query'] ) )
182 + $parts['query'] = rawurlencode( $parts['query'] );
183 + if ( isset( $parts['fragment'] ) )
184 + $parts['fragment'] = rawurlencode( $parts['fragment'] );
185 + }
186 +
187 + $url = '';
188 + if ( !empty( $parts['scheme'] ) )
189 + $url .= $parts['scheme'] . ':';
190 + if ( isset( $parts['host'] ) ) {
191 + $url .= '//';
192 + if ( isset( $parts['user'] ) ) {
193 + $url .= $parts['user'];
194 + if ( isset( $parts['pass'] ) )
195 + $url .= ':' . $parts['pass'];
196 + $url .= '@';
197 + }
198 + if ( preg_match( '!^[\da-f]*:[\da-f.:]+$!ui', $parts['host'] ) )
199 + $url .= '[' . $parts['host'] . ']'; // IPv6
200 + else
201 + $url .= $parts['host']; // IPv4 or name
202 + if ( isset( $parts['port'] ) )
203 + $url .= ':' . $parts['port'];
204 + if ( !empty( $parts['path'] ) && $parts['path'][0] != '/' )
205 + $url .= '/';
206 + }
207 + if ( !empty( $parts['path'] ) )
208 + $url .= $parts['path'];
209 + if ( isset( $parts['query'] ) )
210 + $url .= '?' . $parts['query'];
211 + if ( isset( $parts['fragment'] ) )
212 + $url .= '#' . $parts['fragment'];
213 + return $url;
214 + }
212 215 }