Skip to content

Commit e752190

Browse files
committed
Use WP Filysystem to write contents to index.php
1 parent e314e54 commit e752190

2 files changed

Lines changed: 54 additions & 29 deletions

File tree

admin/class-crowdhandler-admin.php

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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
318320
PHP
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

uninstall.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,18 @@
3535

3636
require_once 'consts.php';
3737

38-
if (file_exists(CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH)) {
39-
rename(CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH, CROWDHANDLER_PLUGIN_INDEX_FILE_PATH);
38+
if (get_filesystem_method() === 'direct') {
39+
$creds = request_filesystem_credentials(site_url() . '/wp-admin/', '', false, false, array());
40+
if (!WP_Filesystem($creds)) {
41+
return false;
42+
}
43+
44+
/** @var WP_Filesystem_Direct $wp_filesystem */
45+
global $wp_filesystem;
46+
47+
if ($wp_filesystem->exists(CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH)) {
48+
$wp_filesystem->move(CROWDHANDLER_PLUGIN_INDEX_COPY_FILE_PATH, CROWDHANDLER_PLUGIN_INDEX_FILE_PATH, true);
49+
}
4050
}
4151

4252
delete_option('crowdhandler_settings');

0 commit comments

Comments
 (0)