/var/www/hkosl.com/aga/wp-content/plugins/foogallery/includes/class-wpthumb-enhancements.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/**
 * WPThumb Enhancements Class
 * Date: 7 Nov 2016
 *
 * Some themes include a filter to override the ORDER of the image editors to be used,
 * so that the GD library is used as a preference over the Imagick library.
 * This is acceptable, but WPThumb requires it's own overrides of the WP_Image_Editor_GD
 * and WP_Image_Editor_Imagick classes (set in wpthumb.php 'wpthumb_add_image_editors'
 * function). An example of this filter code is:
 *
 *   add_filter( 'wp_image_editors', 'change_graphic_lib' );
 *   function change_graphic_lib($array) {
 *     return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
 *   }
 *
 * The theme's filter runs after the WPThumb filter, so the override classes needed
 * by WPThumb are ignored. This stops WPThumb from working altogether. To get around
 * this we need to override the image editors later (priority 999) and "force" the
 * usage of the WPThumb override classes, while still preserving the order set by the
 * theme author, or server administrator.
 *
 * The hosting provider's decision to use GD over Imagick is usually due to a timeout
 * that occurs when large images are uploaded to the media library. The PHP setting
 * for memory on the server could be too low, and this causes Imagick to timeout.
 * Switching to GD usually fixes the problem, without needing to change memory limits.
 *
 */
if ( ! class_exists'FooGallery_WPThumb_Enhancements' ) ) {

    class 
FooGallery_WPThumb_Enhancements {

        function 
__construct() {
            
add_filter'wp_image_editors', array( $this'override_image_editors' ), 999 );
        }

        
/**
         * Overrides the editors to make sure the WPThumb editors are included
         *
         * @param $editors
         * @return array
         */
        
function override_image_editors($editors) {

            
$wpthumb_editors = array();

            
//replace the default image editors with the WPThumb image editors.
            // also preserve the order so that certain hosts work as expected
            
foreach ($editors as $editor) {
                switch (
$editor) {
                    case 
'WP_Image_Editor_Imagick':
                        
$wpthumb_editors[] = 'WP_Thumb_Image_Editor_Imagick';
                        break;
                    case 
'WP_Image_Editor_GD':
                        
$wpthumb_editors[] = 'WP_Thumb_Image_Editor_GD';
                        break;
                    default:
                        
$wpthumb_editors[] = $editor;
                }
            }

            
//make sure we have a unique list of editors
            
return array_unique$wpthumb_editors );
        }
    }
}