30
30
*/
31
31
class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
32
32
33
+ /**
34
+ * Temporary file name used when allow_url_fopen option is disabled.
35
+ *
36
+ * @since 1.4.2
37
+ *
38
+ * @access private
39
+ * @var string
40
+ */
41
+ private $ _tmpfile = false ;
42
+
33
43
/**
34
44
* Returns data parsed from source.
35
45
*
@@ -121,19 +131,29 @@ public function getSourceName() {
121
131
* @since 1.4.2
122
132
*
123
133
* @access protected
134
+ * @staticvar boolean $allow_url_fopen Determines whether or not allow_url_fopen option is enabled.
124
135
* @param string $filename Optional file name to get handle. If omitted, $_filename is used.
125
136
* @return resource File handle resource on success, otherwise FALSE.
126
137
*/
127
138
protected function _get_file_handle ( $ filename = false ) {
139
+ static $ allow_url_fopen = null ;
140
+
141
+ if ( $ this ->_tmpfile && is_readable ( $ this ->_tmpfile ) ) {
142
+ return parent ::_get_file_handle ( $ this ->_tmpfile );
143
+ }
144
+
145
+ if ( is_null ( $ allow_url_fopen ) ) {
146
+ $ allow_url_fopen = filter_var ( ini_get ( 'allow_url_fopen ' ), FILTER_VALIDATE_BOOLEAN );
147
+ }
148
+
128
149
$ scheme = parse_url ( $ this ->_filename , PHP_URL_SCHEME );
129
- $ allow_url_fopen = filter_var ( ini_get ( 'allow_url_fopen ' ), FILTER_VALIDATE_BOOLEAN );
130
150
if ( $ allow_url_fopen && in_array ( $ scheme , stream_get_wrappers () ) ) {
131
151
return parent ::_get_file_handle ( $ filename );
132
152
}
133
153
134
- $ filename = download_url ( $ this ->_filename );
154
+ $ this -> _tmpfile = download_url ( $ this ->_filename );
135
155
136
- return !is_wp_error ( $ filename ) ? parent ::_get_file_handle ( $ filename ) : false ;
156
+ return !is_wp_error ( $ this -> _tmpfile ) ? parent ::_get_file_handle ( $ this -> _tmpfile ) : false ;
137
157
}
138
158
139
159
}
0 commit comments