%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/higroup/wp-content/plugins/devmonsta/core/helpers/backup/inc/
Upload File :
Create Path :
Current File : /var/www/html/higroup/wp-content/plugins/devmonsta/core/helpers/backup/inc/Downloader.php

<?php

class Devm_Downloader {
    /**
     * Holds full path to where the files will be saved.
     *
     * @var string
     */
    public $download_directory_path = '';

    /**
     * Constructor method.
     *
     * @param string $download_directory_path Full path to where the files will be saved.
     */
    public function __construct( $download_directory_path = '' ) {
        $this->set_download_directory_path( $download_directory_path );
    }

    /**
     * Download file from a given URL.
     *
     * @param string $url URL of file to download.
     * @param string $filename Filename of the file to save.
     * @return string|WP_Error Full path to the downloaded file or WP_Error object with error message.
     */
    public function download_file( $url, $filename ) {
        $content = $this->get_content_from_url( $url );

// Check if there was an error and break out.
        if ( is_wp_error( $content ) ) {
            return $content;
        }

        return DEVM_Helpers::write_to_file( $content, $this->download_directory_path . $filename );
    }

    public function download_xml_file( $url, $file_full_path ) {
        $content = $this->get_content_from_url( $url );

// Check if there was an error and break out.
        if ( is_wp_error( $content ) ) {
            return $content;
        }

        return DEVM_Helpers::write_to_file( $content, $file_full_path );
    }

    /**
     * Helper function: get content from an URL.
     *
     * @param string $url URL to the content file.
     * @return string|WP_Error, content from the URL or WP_Error object with error message.
     */
    private function get_content_from_url( $url ) {

// Test if the URL to the file is defined.
        if ( empty( $url ) ) {
            return new \WP_Error(
                'missing_url',
                __( 'Missing URL for downloading a file!', 'devmonsta' )
            );
        }

        // Get file content from the server.
        $response = wp_remote_get(
            $url,
            [ 'timeout' => apply_filters( 'devm/timeout_for_downloading_import_file', 60 ) ]
        );

// Test if the get request was not successful.
        if ( is_wp_error( $response ) || 200 !== $response['response']['code'] ) {
            // Collect the right format of error data (array or WP_Error).
            $response_error = $this->get_error_from_response( $response );

            return new \WP_Error(
                'download_error',
                sprintf(
                    __( 'An error occurred while fetching file from: %1$s%2$s%3$s!%4$sReason: %5$s - %6$s.', 'devmonsta' ),
                    '<strong>',
                    $url,
                    '</strong>',
                    '<br>',
                    $response_error['error_code'],
                    $response_error['error_message']
                ) . '<br>' .
                apply_filters( 'devm/message_after_file_fetching_error', '' )
            );
        }

        // Return content retrieved from the URL.
        return wp_remote_retrieve_body( $response );
    }

    /**
     * Helper function: get the right format of response errors.
     *
     * @param array|WP_Error $response Array or WP_Error or the response.
     * @return array Error code and error message.
     */
    private function get_error_from_response( $response ) {
        $response_error = [];

        if ( is_array( $response ) ) {
            $response_error['error_code']    = $response['response']['code'];
            $response_error['error_message'] = $response['response']['message'];
        } else {
            $response_error['error_code']    = $response->get_error_code();
            $response_error['error_message'] = $response->get_error_message();
        }

        return $response_error;
    }

    /**
     * Get download_directory_path attribute.
     */
    public function get_download_directory_path() {
        return $this->download_directory_path;
    }

    /**
     * Set download_directory_path attribute.
     * If no valid path is specified, the default WP upload directory will be used.
     *
     * @param string $download_directory_path Path, where the files will be saved.
     */
    public function set_download_directory_path( $download_directory_path ) {

        if ( file_exists( $download_directory_path ) ) {
            $this->download_directory_path = $download_directory_path;
        } else {
            $upload_dir                    = wp_upload_dir();
            $this->download_directory_path = apply_filters( 'devm/upload_file_path', trailingslashit( $upload_dir['path'] ) );
        }

    }

}

Zerion Mini Shell 1.0