@@ -281,27 +281,29 @@ public function handleIndexFilesOverrides()
281281 {
282282 $ options = get_option ('crowdhandler_settings ' );
283283
284- if (
285- $ this ->isIndexFileWritable () &&
286- isset ($ options ['crowdhandler_settings_field_is_enabled ' ]) &&
287- $ options ['crowdhandler_settings_field_is_enabled ' ] === 'on ' &&
288- isset ($ options ['crowdhandler_settings_field_override_index ' ]) &&
289- $ options ['crowdhandler_settings_field_override_index ' ] === 'on '
290- ) {
291- $ data = var_export (
292- array (
293- 'plugin_path ' => CROWDHANDLER_PLUGIN_BASE_PATH ,
294- 'options ' => $ options ,
295- ),
296- true
297- );
298-
299- if (!file_exists (CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH )) {
300- rename (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH , CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH );
301- }
302-
303- $ fp = fopen (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH , 'w ' );
304- fwrite ($ fp , <<<PHP
284+ if ($ this ->isIndexFileWritable ()) {
285+ /** @var WP_Filesystem_Direct $wp_filesystem */
286+ global $ wp_filesystem ;
287+
288+ if (
289+ isset ($ options ['crowdhandler_settings_field_is_enabled ' ]) &&
290+ $ options ['crowdhandler_settings_field_is_enabled ' ] === 'on ' &&
291+ isset ($ options ['crowdhandler_settings_field_override_index ' ]) &&
292+ $ options ['crowdhandler_settings_field_override_index ' ] === 'on '
293+ ) {
294+ $ data = var_export (
295+ array (
296+ 'plugin_path ' => CROWDHANDLER_PLUGIN_BASE_PATH ,
297+ 'options ' => $ options ,
298+ ),
299+ true
300+ );
301+
302+ if (!$ wp_filesystem ->exists (CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH )) {
303+ $ wp_filesystem ->move (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH , CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH );
304+ }
305+
306+ $ wp_filesystem ->put_contents (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH , <<<PHP
305307<?php
306308
307309\$config = {$ data };
@@ -316,20 +318,33 @@ public function handleIndexFilesOverrides()
316318\$ch->recordPerformance(http_response_code());
317319
318320PHP
319- );
320- fclose ( $ fp );
321- } elseif ( file_exists ( CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH )) {
322- rename ( CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH , CROWDHANDLER_PLUGIN_INDEX_FILE_PATH );
321+ );
322+ } elseif ( $ wp_filesystem -> exists ( CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH )) {
323+ $ wp_filesystem -> move ( CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH , CROWDHANDLER_PLUGIN_INDEX_FILE_PATH , true );
324+ }
323325 }
324326 }
325327
326328 private function isIndexFileWritable ()
327329 {
328- if (!is_writable (ABSPATH )) {
330+ if (get_filesystem_method () !== 'direct ' ) {
331+ return false ;
332+ }
333+
334+ $ creds = request_filesystem_credentials (site_url () . '/wp-admin/ ' , '' , false , false , array ());
335+
336+ if (!WP_Filesystem ($ creds )) {
337+ return false ;
338+ }
339+
340+ /** @var WP_Filesystem_Direct $wp_filesystem */
341+ global $ wp_filesystem ;
342+
343+ if (!$ wp_filesystem ->is_writable (ABSPATH )) {
329344 return false ;
330345 }
331346
332- if (!is_writable (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH )) {
347+ if (!$ wp_filesystem -> is_writable (CROWDHANDLER_PLUGIN_INDEX_FILE_PATH )) {
333348 return false ;
334349 }
335350
0 commit comments