/** * Requests filesystem credentials if necessary. * * The key files and certificates need to be stored on disk. * If the directories aren't writeable by WordPress, the user needs to manually enter * access keys (FTP, SSH, ...). * * @since 1.0.0 * @access protected * * @param bool $network_wide Whether filesystem access is needed for a network-wide request. * @return bool Whether the filesystem was successfully set up. */ protected function maybe_request_filesystem_credentials($network_wide = false) { if (defined('DOING_AJAX') && DOING_AJAX) { $credentials = array(); $fields = array('hostname', 'port', 'username', 'password', 'public_key', 'private_key', 'connection_type'); foreach ($fields as $field) { if (isset($_REQUEST[$field])) { $credentials[$field] = $_REQUEST[$field]; } } if (CoreUtil::needs_filesystem_credentials($credentials)) { return false; } return true; } $url = App::get_admin_action_url($network_wide ? 'network' : 'site'); $extra_fields = array('action', '_wpnonce'); return CoreUtil::setup_filesystem($url, $extra_fields); }