PressBooks\Modules\Export\Odt\Odt::fetchAndSaveUniqueImage PHP Метод

fetchAndSaveUniqueImage() защищенный Метод

Will return an empty string if something went wrong.
protected fetchAndSaveUniqueImage ( $url, $fullpath ) : string
$url string
$fullpath string
Результат string filename
    protected function fetchAndSaveUniqueImage($url, $fullpath)
    {
        // Cheap cache
        static $already_done = array();
        if (isset($already_done[$url])) {
            return $already_done[$url];
        }
        $response = wp_remote_get($url, array('timeout' => $this->timeout));
        // WordPress error?
        if (is_wp_error($response)) {
            // TODO: handle $response->get_error_message();
            $already_done[$url] = '';
            return '';
        }
        // Basename without query string
        $filename = explode('?', basename($url));
        // isolate latex image service from WP, add file extension
        if ('s.wordpress.com' == parse_url($url, PHP_URL_HOST) && 'latex.php' == $filename[0]) {
            $filename = md5(array_pop($filename));
            // content-type = 'image/png'
            $type = explode('/', $response['headers']['content-type']);
            $type = array_pop($type);
            $filename = $filename . '.' . $type;
        } else {
            $filename = array_shift($filename);
            $filename = sanitize_file_name(urldecode($filename));
            $filename = \Pressbooks\Sanitize\force_ascii($filename);
        }
        $tmp_file = \Pressbooks\Utility\create_tmp_file();
        file_put_contents($tmp_file, wp_remote_retrieve_body($response));
        if (!\Pressbooks\Image\is_valid_image($tmp_file, $filename)) {
            $already_done[$url] = '';
            return '';
            // Not an image
        }
        if ($this->compressImages) {
            $format = explode('.', $filename);
            $format = strtolower(end($format));
            // Extension
            \Pressbooks\Image\resize_down($format, $tmp_file);
        }
        // Check for duplicates, save accordingly
        if (!file_exists("{$fullpath}/{$filename}")) {
            copy($tmp_file, "{$fullpath}/{$filename}");
        } elseif (md5(file_get_contents($tmp_file)) != md5(file_get_contents("{$fullpath}/{$filename}"))) {
            $filename = wp_unique_filename($fullpath, $filename);
            copy($tmp_file, "{$fullpath}/{$filename}");
        }
        $already_done[$url] = $filename;
        return $filename;
    }