PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 3.06.06
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v3.06.06
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/FrmCreateFile.php +25 -112 6.263.06.06 View file →
@@ -1,5 +1,6 @@
1 1 <?php
2 +
2 3 if ( ! defined( 'ABSPATH' ) ) {
3 4 die( 'You are not allowed to call this page directly.' );
4 5 }
5 6
@@ -4,58 +5,24 @@
4 5 }
5 6
6 7 class FrmCreateFile {
7 8
8 - /**
9 - * @var string
10 - */
11 9 public $folder_name;
12 -
13 - /**
14 - * @var string
15 - */
16 10 public $file_name;
17 -
18 - /**
19 - * @var string
20 - */
21 11 public $error_message;
22 -
23 - /**
24 - * @var array
25 - */
26 12 public $uploads;
27 -
28 - /**
29 - * @var string
30 - */
31 13 private $new_file_path;
32 -
33 - /**
34 - * @var int
35 - */
36 - public $chmod_dir = 0755;
37 -
38 - /**
39 - * @var int
40 - */
41 - public $chmod_file = 0644;
42 -
43 - /**
44 - * @var bool
45 - */
14 + public $chmod_dir = 0755;
15 + public $chmod_file = 0644;
46 16 private $has_permission = false;
47 17
48 - /**
49 - * @param array $atts
50 - */
51 18 public function __construct( $atts ) {
52 - $this->folder_name = $atts['folder_name'] ?? '';
53 - $this->file_name = $atts['file_name'];
54 - $this->error_message = $atts['error_message'] ?? '';
55 - $this->uploads = wp_upload_dir();
19 + $this->folder_name = isset( $atts['folder_name'] ) ? $atts['folder_name'] : '';
20 + $this->file_name = $atts['file_name'];
21 + $this->error_message = isset( $atts['error_message'] ) ? $atts['error_message'] : '';
22 + $this->uploads = wp_upload_dir();
56 23 $this->set_new_file_path( $atts );
57 - $this->chmod_dir = defined( 'FS_CHMOD_DIR' ) ? FS_CHMOD_DIR : ( fileperms( ABSPATH ) & 0777 | 0755 );
24 + $this->chmod_dir = defined( 'FS_CHMOD_DIR' ) ? FS_CHMOD_DIR : ( fileperms( ABSPATH ) & 0777 | 0755 );
58 25 $this->chmod_file = defined( 'FS_CHMOD_FILE' ) ? FS_CHMOD_FILE : ( fileperms( ABSPATH . 'index.php' ) & 0777 | 0644 );
59 26
60 27 $this->check_permission();
61 28 }
@@ -61,12 +28,8 @@
61 28 }
62 29
63 30 /**
64 31 * @since 3.0
65 - *
66 - * @param array $atts Attributes.
67 - *
68 - * @return void
69 32 */
70 33 private function set_new_file_path( $atts ) {
71 34 if ( isset( $atts['new_file_path'] ) ) {
72 35 $this->new_file_path = $atts['new_file_path'] . '/' . $this->file_name;
@@ -74,21 +37,16 @@
74 37 $this->new_file_path = $this->uploads['basedir'] . '/' . $this->folder_name . '/' . $this->file_name;
75 38 }
76 39 }
77 40
78 - /**
79 - * @param string $file_content
80 - *
81 - * @return void
82 - */
83 41 public function create_file( $file_content ) {
84 42 if ( $this->has_permission ) {
85 43 $dirs_exist = true;
86 44
87 - // Create the directories if need be.
45 + // Create the directories if need be
88 46 $this->create_directories( $dirs_exist );
89 47
90 - // Only write the file if the folders exist.
48 + // only write the file if the folders exist
91 49 if ( $dirs_exist ) {
92 50 global $wp_filesystem;
93 51 $wp_filesystem->put_contents( $this->new_file_path, $file_content, $this->chmod_file );
94 52 }
@@ -96,12 +54,8 @@
96 54 }
97 55
98 56 /**
99 57 * @since 3.0
100 - *
101 - * @param string $file_content File content.
102 - *
103 - * @return void
104 58 */
105 59 public function append_file( $file_content ) {
106 60 if ( $this->has_permission ) {
107 61
@@ -107,9 +61,9 @@
107 61
108 62 if ( file_exists( $this->new_file_path ) ) {
109 63
110 64 $existing_content = $this->get_contents();
111 - $file_content = $existing_content . $file_content;
65 + $file_content = $existing_content . $file_content;
112 66 }
113 67
114 68 $this->create_file( $file_content );
115 69 }
@@ -119,16 +73,13 @@
119 73 * Combine an array of files into one
120 74 *
121 75 * @since 3.0
122 76 *
123 - * @param array $file_names And array of file paths.
124 - *
125 - * @return void
77 + * @param array $file_names And array of file paths
126 78 */
127 79 public function combine_files( $file_names ) {
128 80 if ( $this->has_permission ) {
129 81 $content = '';
130 -
131 82 foreach ( $file_names as $file_name ) {
132 83 $content .= $this->get_contents( $file_name ) . "\n";
133 84 }
134 85 $this->create_file( $content );
@@ -136,10 +87,8 @@
136 87 }
137 88
138 89 /**
139 90 * @since 3.0
140 - *
141 - * @return string
142 91 */
143 92 public function get_file_contents() {
144 93 $content = '';
145 94
@@ -151,33 +100,24 @@
151 100 }
152 101
153 102 /**
154 103 * @since 3.0
155 - *
156 - * @param string $file File.
157 - *
158 - * @return string
159 104 */
160 105 private function get_contents( $file = '' ) {
161 106 global $wp_filesystem;
162 -
163 107 if ( empty( $file ) ) {
164 108 $file = $this->new_file_path;
165 109 }
166 -
167 110 return $wp_filesystem->get_contents( $file );
168 111 }
169 112
170 113 /**
171 114 * @since 3.0
172 - *
173 - * @return void
174 115 */
175 116 private function check_permission() {
176 117 $creds = $this->get_creds();
177 118
178 119 $this->has_permission = true;
179 -
180 120 if ( empty( $creds ) || ! WP_Filesystem( $creds ) ) {
181 121 // initialize the API - any problems and we exit
182 122 $this->show_error_message();
183 123 $this->has_permission = false;
@@ -183,18 +123,12 @@
183 123 $this->has_permission = false;
184 124 }
185 125 }
186 126
187 - /**
188 - * @param true $dirs_exist
189 - *
190 - * @return void
191 - */
192 127 private function create_directories( &$dirs_exist ) {
193 128 global $wp_filesystem;
194 129
195 130 $needed_dirs = $this->get_needed_dirs();
196 -
197 131 foreach ( $needed_dirs as $_dir ) {
198 132 // Only check to see if the Dir exists upon creation failure. Less I/O this way.
199 133 if ( $wp_filesystem->mkdir( $_dir, $this->chmod_dir ) ) {
200 134 $index_path = $_dir . '/index.php';
@@ -204,19 +138,15 @@
204 138 }
205 139 }
206 140 }
207 141
208 - /**
209 - * @return string[]
210 - */
211 142 private function get_needed_dirs() {
212 - $dir_names = explode( '/', $this->folder_name );
143 + $dir_names = explode( '/', $this->folder_name );
213 144 $needed_dirs = array();
214 145
215 146 $next_dir = '';
216 -
217 147 foreach ( $dir_names as $dir ) {
218 - $next_dir .= '/' . $dir;
148 + $next_dir .= '/' . $dir;
219 149 $needed_dirs[] = $this->uploads['basedir'] . $next_dir;
220 150 }
221 151
222 152 return $needed_dirs;
@@ -221,32 +151,22 @@
221 151
222 152 return $needed_dirs;
223 153 }
224 154
225 - /**
226 - * @return array|bool
227 - */
228 155 private function get_creds() {
229 156 if ( ! function_exists( 'get_filesystem_method' ) ) {
230 - include_once ABSPATH . 'wp-admin/includes/file.php';
157 + include_once( ABSPATH . 'wp-admin/includes/file.php' );
231 158 }
232 159
233 160 $access_type = get_filesystem_method();
234 -
235 161 if ( $access_type === 'direct' ) {
236 162 $creds = request_filesystem_credentials( site_url() . '/wp-admin/', '', false, false, array() );
237 163 } else {
238 164 $creds = $this->get_ftp_creds( $access_type );
239 165 }
240 -
241 166 return $creds;
242 167 }
243 168
244 - /**
245 - * @param string $type
246 - *
247 - * @return array|false
248 - */
249 169 private function get_ftp_creds( $type ) {
250 170 $credentials = get_option(
251 171 'ftp_credentials',
252 172 array(
@@ -258,19 +178,17 @@
258 178 $credentials['hostname'] = defined( 'FTP_HOST' ) ? FTP_HOST : $credentials['hostname'];
259 179 $credentials['username'] = defined( 'FTP_USER' ) ? FTP_USER : $credentials['username'];
260 180 $credentials['password'] = defined( 'FTP_PASS' ) ? FTP_PASS : '';
261 181
262 - // Check to see if we are setting the public/private keys for ssh.
263 - $credentials['public_key'] = defined( 'FTP_PUBKEY' ) ? FTP_PUBKEY : '';
182 + // Check to see if we are setting the public/private keys for ssh
183 + $credentials['public_key'] = defined( 'FTP_PUBKEY' ) ? FTP_PUBKEY : '';
264 184 $credentials['private_key'] = defined( 'FTP_PRIKEY' ) ? FTP_PRIKEY : '';
265 185
266 - // Sanitize the hostname, Some people might pass in odd-data.
267 - // Strip any schemes off.
268 - $credentials['hostname'] = preg_replace( '|\w+://|', '', $credentials['hostname'] );
186 + // Sanitize the hostname, Some people might pass in odd-data:
187 + $credentials['hostname'] = preg_replace( '|\w+://|', '', $credentials['hostname'] ); //Strip any schemes off
269 188
270 189 if ( strpos( $credentials['hostname'], ':' ) ) {
271 190 list( $credentials['hostname'], $credentials['port'] ) = explode( ':', $credentials['hostname'], 2 );
272 -
273 191 if ( ! is_numeric( $credentials['port'] ) ) {
274 192 unset( $credentials['port'] );
275 193 }
276 194 } else {
@@ -278,24 +196,22 @@
278 196 }
279 197
280 198 if ( ( defined( 'FTP_SSH' ) && FTP_SSH ) || ( defined( 'FS_METHOD' ) && 'ssh2' == FS_METHOD ) ) {
281 199 $credentials['connection_type'] = 'ssh';
282 - } elseif ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) {
283 - // Only the FTP Extension understands SSL.
200 + } else if ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) {
201 + //Only the FTP Extension understands SSL
284 202 $credentials['connection_type'] = 'ftps';
285 - } elseif ( ! isset( $credentials['connection_type'] ) ) {
286 - // All else fails (And it's not defaulted to something else saved), Default to FTP.
203 + } else if ( ! isset( $credentials['connection_type'] ) ) {
204 + //All else fails (And it's not defaulted to something else saved), Default to FTP
287 205 $credentials['connection_type'] = 'ftp';
288 206 }
289 207
290 208 $has_creds = ( ! empty( $credentials['password'] ) && ! empty( $credentials['username'] ) && ! empty( $credentials['hostname'] ) );
291 - $can_ssh = ( 'ssh' === $credentials['connection_type'] && ! empty( $credentials['public_key'] ) && ! empty( $credentials['private_key'] ) );
292 -
209 + $can_ssh = ( 'ssh' == $credentials['connection_type'] && ! empty( $credentials['public_key'] ) && ! empty( $credentials['private_key'] ) );
293 210 if ( $has_creds || $can_ssh ) {
294 211 $stored_credentials = $credentials;
295 -
296 212 if ( ! empty( $stored_credentials['port'] ) ) {
297 - // Save port as part of hostname to simplify above code.
213 + //save port as part of hostname to simplify above code.
298 214 $stored_credentials['hostname'] .= ':' . $stored_credentials['port'];
299 215 }
300 216
301 217 unset( $stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key'] );
@@ -305,11 +221,8 @@
305 221
306 222 return false;
307 223 }
308 224
309 - /**
310 - * @return void
311 - */
312 225 private function show_error_message() {
313 226 if ( ! empty( $this->error_message ) ) {
314 227 echo '<div class="message">' . esc_html( $this->error_message ) . '</div>';
315 228 }