Plugin Directory

Changeset 3147978


Ignore:
Timestamp:
09/07/2024 12:03:10 PM (19 months ago)
Author:
grandplugins
Message:

[New] Image Optimizers
[Update] Tested with latest WP version

Location:
image-type-converter/trunk
Files:
79 added
26 edited

Legend:

Unmodified
Added
Removed
  • image-type-converter/trunk/assets/dist/js/admin/img-converter-metabox.min.js

    r2923240 r3147978  
    1 (()=>{"use strict";function n(){var e=["2284288AIPUPQ","2131155cjldoq","bg-primary","32cVLJNL","bg-danger",".loader","-toast","26764atMgoE",".btn-close","startsWith","addClass","18AMVPSe","1056070wegQyH","append","bg-warning","453185untByQ","show","bg-","removeClass","gpls-general","remove","click","137473QyHKBe","bg-info","html","89972kjzsqw","-notice","39WwSLjj","none","hide","length","block",".toast-msg","find","collapse"];return(n=function(){return e})()}var e=a;function t(n,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1e3,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e(241),s=e,c=jQuery.parseHTML(n);t instanceof jQuery==0&&(t=jQuery(t)),r?t[s(235)](c):t.prepend(c),a&&setTimeout((function(){var n=s;t[n(220)]("."+o+n(213)).remove()}),i);var u=jQuery(c)[s(220)](s(230));u[s(217)]&&u.on("click",(function(){var n=s;t[n(220)]("."+o+n(213))[n(242)]()}))}function r(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e(224),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3e3,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e(241),i=e,o={success:"bg-primary",error:i(226),warning:i(236),info:i(210)},s=jQuery("."+a+i(228)),c=s[i(220)](i(230));t=t[i(231)](i(239))?t:t in o?o[t]:t,s[i(240)]("bg-primary bg-danger")[i(232)](t),s[i(220)](i(219))[i(211)](n),s[i(221)](i(238)),r&&setTimeout((function(){var n=i;s[n(221)](n(216))}),r),c.on(i(243),(function(){s.collapse("hide")}))}function a(e,t){var r=n();return(a=function(n,e){return r[n-=210]})(e,t)}function i(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e(238),t=e;n===t(238)?jQuery(t(227)).css("display",t(218)):jQuery(".loader").css("display",t(215))}function o(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function s(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}!function(n,e){for(var t=a,r=n();;)try{if(239851==parseInt(t(225))/1*(-parseInt(t(229))/2)+parseInt(t(214))/3*(parseInt(t(212))/4)+-parseInt(t(237))/5*(parseInt(t(233))/6)+parseInt(t(244))/7+parseInt(t(222))/8+parseInt(t(223))/9+parseInt(t(234))/10)break;r.push(r.shift())}catch(n){r.push(r.shift())}}(n);var c=h;!function(n,e){for(var t=h,r=n();;)try{if(207711==parseInt(t(505))/1*(-parseInt(t(500))/2)+-parseInt(t(493))/3*(-parseInt(t(494))/4)+parseInt(t(511))/5+parseInt(t(503))/6*(-parseInt(t(510))/7)+parseInt(t(496))/8+-parseInt(t(513))/9*(-parseInt(t(504))/10)+parseInt(t(499))/11*(-parseInt(t(489))/12))break;r.push(r.shift())}catch(n){r.push(r.shift())}}(v),c(506);var u,l,p,f=function(n){function e(n,t,r,a,i,s){var u=!(arguments.length>6&&void 0!==arguments[6])||arguments[6];o(this,e);var l=c;this[l(498)]=n,this[l(512)]=t,this[l(486)]=r,this[l(507)]=a,this[l(508)]=i,this[l(491)]=s,this.showToast=u,this[l(502)]()}return t=e,(a=[{key:n,value:function(){var n=this,e=c;jQuery[e(501)]({method:this[e(512)],url:this[e(498)],data:this[e(486)],success:function(t){var a,i=e;n.successCallback(t),(null==t||null===(a=t[i(486)])||void 0===a?void 0:a[i(488)])&&n[i(515)]&&r(t[i(486)][i(488)],t[i(486)][i(492)],2e3)},error:function(t){var a,i,o=e;n.errorCallback(t),(null==t||null===(a=t[o(497)])||void 0===a||null===(i=a.data)||void 0===i?void 0:i[o(488)])&&n[o(515)]&&r(t.responseJSON[o(486)][o(488)],t[o(497)][o(486)][o(492)],2e3)},complete:function(){n[e(491)]()}})}}])&&s(t.prototype,a),i&&s(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e;var t,a,i}(c(502));function v(){var n=["data","params","message","24cRFXPJ","success","completeCallback","status","816465GbnnvN","4FrwXLI","POST","1201944cwfCzm","responseJSON","ajaxUrl","82379BjJzfw","10HMcHbe","ajax","fire","6wuJBYu","32150cUTayT","47157fROMme","fireAjax","successCallback","errorCallback","error","1827413FSUOSV","1357075ejHKAY","method","72QDeVnz","complete","showToast"];return(v=function(){return n})()}function h(n,e){var t=v();return(h=function(n,e){return t[n-=486]})(n,e)}function d(n,e){var t=g();return(d=function(n,e){return t[n-=456]})(n,e)}function g(){var n=["3434312BVlwrc","click","-conversion-history-new-type","text","8687529EDanKL","-convert-img-submit","labels","message","success","data","reload","convertAction","nonce","5010XxncPN","-new-img-type","11uCncjh","-attachment-id","preventDefault","-new-img-quality",".misc-pub-filetype strong","show","val","2682YZXSCy","POST","hide","20538920oDXfwp","-img-converter-container","first","3010376GenvFl","330734mwmEaO","7tcnPhc","10BttqaL","682989dsVaev"];return(g=function(){return n})()}!function(n,e){for(var t=d,r=n();;)try{if(619949==-parseInt(t(488))/1+parseInt(t(457))/2*(-parseInt(t(458))/3)+-parseInt(t(459))/4+parseInt(t(472))/5*(-parseInt(t(481))/6)+-parseInt(t(456))/7*(-parseInt(t(487))/8)+parseInt(t(463))/9+parseInt(t(484))/10*(parseInt(t(474))/11))break;r.push(r.shift())}catch(n){r.push(r.shift())}}(g),u=jQuery,l=gpls_wicor_image_converter,p="."+l.prefix,u((function(n){var e,r,a=d;u(document).on(a(460),p+a(464),(function(n){var e=a;if(n[e(476)](),confirm(l[e(465)].confirmConvert)){var r=u(p+e(475))[e(480)](),o=u(p+e(473)).val(),s=u(p+e(477)).val(),c=u(p+"-keep-img-extension").is(":checked");i(e(479)),new f(l.ajaxUrl,e(482),{action:l[e(470)],nonce:l[e(471)],attachmentID:r,imgType:o,imgQuality:s,keepExt:c},(function(n){var r,a=e;null!=n&&null!==(r=n[a(468)])&&void 0!==r&&r[a(466)]&&t(n[a(468)][a(466)],p+"-img-converter-container",!0,!0,2e3),(null==n?void 0:n[a(467)])&&n[a(467)]&&location[a(469)]()}),(function(n){var r,a=e;(null==n||null===(r=n.data)||void 0===r?void 0:r[a(466)])&&t(n[a(468)][a(466)],p+a(485),!0,!0,2e3)}),(function(){i(e(483))}),!1)}})),(r=u(p+(e=d)(461))[e(486)]()).length&&u(e(478))[e(462)](r[e(462)]())}))})();
     1(()=>{"use strict";function n(){var e=[".toast-msg","length","9092412ciXfkx","bg-primary bg-danger","show","512728IsUjWs","addClass","collapse","hide","bg-primary","36ipsCQE","none","remove",".btn-close",".loader","1350463rUJtGv","551760fZgskm","6730ZCtqmk","bg-info","8bZiHNm","bg-warning","find","13619133BOkXYA","bg-","-toast","gpls-general","block","-notice","prepend","bg-danger","4228075RBRGEV","parseHTML"];return(n=function(){return e})()}var e=i;function t(n,e){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1e3,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"gpls-general",s=i,c=jQuery[s(144)](n);e instanceof jQuery==0&&(e=jQuery(e)),t?e.append(c):e[s(141)](c),r&&setTimeout((function(){var n=s;e[n(134)]("."+o+n(140))[n(125)]()}),a);var u=jQuery(c)[s(134)](s(126));u[s(146)]&&u.on("click",(function(){var n=s;e[n(134)]("."+o+"-notice")[n(125)]()}))}function r(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e(122),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3e3,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e(138),i=e,o={success:"bg-primary",error:i(142),warning:i(133),info:i(131)},s=jQuery("."+a+i(137)),c=s[i(134)](i(126));t=t.startsWith(i(136))?t:t in o?o[t]:t,s.removeClass(i(116))[i(119)](t),s[i(134)](i(145)).html(n),s[i(120)](i(117)),r&&setTimeout((function(){var n=i;s.collapse(n(121))}),r),c.on("click",(function(){var n=i;s[n(120)](n(121))}))}function a(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e(117),t=e;n===t(117)?jQuery(t(127)).css("display",t(139)):jQuery(".loader").css("display",t(124))}function i(e,t){var r=n();return(i=function(n,e){return r[n-=115]})(e,t)}function o(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function s(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}!function(n,e){for(var t=i,r=n();;)try{if(826784==parseInt(t(128))/1+-parseInt(t(130))/2+-parseInt(t(123))/3*(-parseInt(t(118))/4)+parseInt(t(143))/5+-parseInt(t(129))/6+-parseInt(t(115))/7+-parseInt(t(132))/8*(parseInt(t(135))/9))break;r.push(r.shift())}catch(n){r.push(r.shift())}}(n);var c=u;function u(n,e){var t=l();return(u=function(n,e){return t[n-=179]})(n,e)}function l(){var n=["complete","showToast","4876832uzmOgB","2067768Hlluwk","data","status","params","fire","ajaxUrl","9jIRdHs","errorCallback","POST","12003250iqFspE","successCallback","8wrYKii","completeCallback","2364UZiQti","method","success","fireAjax","responseJSON","ajax","644576wvitxC","error","1278410RHunBS","916336JbfmxQ","1792QGuVvP","message"];return(l=function(){return n})()}!function(n,e){for(var t=u,r=n();;)try{if(434995==parseInt(t(188))/1+parseInt(t(191))/2+-parseInt(t(197))/3+-parseInt(t(180))/4*(-parseInt(t(190))/5)+parseInt(t(182))/6*(parseInt(t(192))/7)+parseInt(t(196))/8+-parseInt(t(203))/9*(parseInt(t(206))/10))break;r.push(r.shift())}catch(n){r.push(r.shift())}}(l);var p,f,v,m,h=function(n){function e(n,t,r,a,i,s){var c=!(arguments.length>6&&void 0!==arguments[6])||arguments[6];o(this,e);var l=u;this[l(202)]=n,this.method=t,this[l(198)]=r,this.successCallback=a,this[l(204)]=i,this[l(181)]=s,this[l(195)]=c,this.fire()}return t=e,(a=[{key:n,value:function(){var n=this,e=c;jQuery[e(187)]({method:this[e(183)],url:this[e(202)],data:this[e(198)],success:function(t){var a,i=e;n[i(179)](t),(null==t||null===(a=t.data)||void 0===a?void 0:a[i(193)])&&n[i(195)]&&r(t[i(198)].message,t.data.status,2e3)},error:function(t){var a,i,o=e;n[o(204)](t),(null==t||null===(a=t.responseJSON)||void 0===a||null===(i=a[o(198)])||void 0===i?void 0:i.message)&&n.showToast&&r(t[o(186)].data.message,t[o(186)][o(198)][o(199)],2e3)},complete:function(){n.completeCallback()}})}}])&&s(t.prototype,a),i&&s(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e;var t,a,i}(c(201));function g(n,e){var t=d();return(g=function(n,e){return t[n-=104]})(n,e)}function d(){var n=["labels","responseJSON","2851848iwxUIf","preventDefault","data","-conversion-history-new-type","-keep-img-extension","click","18842pCuMHY","12252oPGVga","-convert-img-submit","2541jJbQMs","1749932LKKpAt","ajaxUrl","-attachment-id","confirmOptimize","25kDYGuX","success","convertAction","10QlecZg","-img-converter-container","-img-optimizer-container","confirmConvert","text","val","optimizeAction","reload","prefix","-optimize-img-submit","show","1099323uKevls","2702585LGzLiK","8043352RAMyRB","length","nonce","message","-new-img-type","hide","POST"];return(d=function(){return n})()}!function(n,e){for(var t=g,r=n();;)try{if(754083==-parseInt(t(120))/1*(parseInt(t(112))/2)+parseInt(t(106))/3+parseInt(t(116))/4+-parseInt(t(135))/5+-parseInt(t(113))/6*(parseInt(t(115))/7)+parseInt(t(136))/8+parseInt(t(134))/9*(-parseInt(t(123))/10))break;r.push(r.shift())}catch(n){r.push(r.shift())}}(d),p=jQuery,f=g,v=gpls_wicor_image_converter,m="."+v[f(131)],p((function(n){var e,r,i=f;p(document).on(i(111),m+i(114),(function(n){var e=i;if(n[e(107)](),confirm(v[e(104)][e(126)])){var r=p(m+e(118))[e(128)](),o=p(m+e(140))[e(128)](),s=p(m+"-new-img-quality").val(),c=p(m+e(110)).is(":checked");a(e(133)),new h(v[e(117)],e(142),{action:v[e(122)],nonce:v[e(138)],attachmentID:r,imgType:o,imgQuality:s,keepExt:c},(function(n){var r,a=e;null!=n&&null!==(r=n.data)&&void 0!==r&&r.message&&t(n[a(108)][a(139)],m+"-img-converter-container",!0,!0,2e3),(null==n?void 0:n[a(121)])&&n[a(121)]&&location[a(130)]()}),(function(n){var r,a=e;(null==n||null===(r=n[a(108)])||void 0===r?void 0:r[a(139)])&&t(n.data.message,m+a(124),!0,!0,2e3)}),(function(){a(e(141))}),!1)}})),p(document).on(i(111),m+i(132),(function(n){var e=i;if(n[e(107)](),confirm(v.labels[e(119)])){var r=p(m+e(118))[e(128)](),o=p(m+"-new-img-quality")[e(128)]();a(e(133)),new h(v.ajaxUrl,e(142),{action:v[e(129)],nonce:v.nonce,attachmentID:r,imgQuality:o},(function(n){var r,a=e;null!=n&&null!==(r=n[a(108)])&&void 0!==r&&r[a(139)]&&t(n[a(108)][a(139)],m+a(125),!0,!0,2e3),(null==n?void 0:n[a(121)])&&n[a(121)]&&location[a(130)]()}),(function(n){var r=e;(null==n?void 0:n[r(105)])&&t(n[r(105)][r(108)][r(139)],m+r(125),!0,!0,2e3)}),(function(){a("hide")}),!1)}})),(r=p(m+(e=f)(109)).first())[e(137)]&&p(".misc-pub-filetype strong")[e(127)](r.text())}))})();
  • image-type-converter/trunk/assets/libs/notice.min.css

    r2923240 r3147978  
    1 .gpls-general-notice{margin-left:0;border-radius:2px;color:#fff;clear:both;border-left:.61805em solid rgba(0,0,0,0.15);padding:1em .5em 1em .6em;position:relative;list-style:none;margin-bottom:15px}.gpls-general-notice .notices-list{padding-left:0;padding-right:5px;margin-right:5px;line-height:1.2;font-family:sans-serif;margin:10px 0 20px 0}.gpls-general-notice .notices-list li{margin-bottom:0}.gpls-general-notice .notices-list a{color:#FFF;text-decoration:none;font-weight:bolder}.gpls-general-notice .errors-list a{color:#9bedff}.gpls-general-notice .warnings-list{color:#000}.gpls-general-notice .notice-buttons-wrapper{display:block}.gpls-general-notice .notice-buttons-wrapper .notice-button{position:relative;margin:0 2px 10px;background-color:rgba(0,0,0,0.25);box-shadow:0 3px black;border:0;padding:10px 15px;font-size:16px;font-family:"Source Sans Pro";color:#fff;outline:0;cursor:pointer;text-decoration:none;display:inline-block}.gpls-general-notice .notice-buttons-wrapper .notice-button:hover{background:rgba(0,0,0,0.3)}.gpls-general-notice .btn-close-wrapper{display:block;overflow:hidden}.gpls-general-notice .btn-close-wrapper .btn-close{float:right}.gpls-general-warning-notice{background-color:#e6de48}.gpls-general-error-notice{background-color:#e2401c}.gpls-general-success-notice{background-color:#52c35f}.gpls-general-info-notice{background-color:#0074d9}
     1.gpls-general-notice{margin-left:0;border-radius:2px;color:#fff;clear:both;border-left:.61805em solid rgba(0,0,0,0.15);padding:1em .5em 1em .6em;position:relative;list-style:none;margin-bottom:15px}.gpls-general-notice .notices-list{color:#FFF;padding-left:0;padding-right:5px;margin-right:5px;line-height:1.2;font-family:sans-serif;margin:10px 0 20px 0}.gpls-general-notice .notices-list li{margin-bottom:0}.gpls-general-notice .notices-list a{color:#FFF;text-decoration:none;font-weight:bolder}.gpls-general-notice .notices-list a{color:#9bedff}.gpls-general-notice .notice-buttons-wrapper{display:block}.gpls-general-notice .notice-buttons-wrapper .notice-button{position:relative;margin:0 2px 10px;background-color:rgba(0,0,0,0.25);box-shadow:0 3px black;border:0;padding:10px 15px;font-size:16px;font-family:"Source Sans Pro";color:#fff;outline:0;cursor:pointer;text-decoration:none;display:inline-block}.gpls-general-notice .notice-buttons-wrapper .notice-button:hover{background:rgba(0,0,0,0.3)}.gpls-general-notice .btn-close-wrapper{display:block;overflow:hidden}.gpls-general-notice .btn-close-wrapper .btn-close{float:right;width:30px !important;height: 30px !important;line-height: 21px !important;}.gpls-general-warning-notice{background-color:#e6de48}.gpls-general-danger-notice{background-color:#e2401c}.gpls-general-success-notice{background-color:#52c35f;}.gpls-general-info-notice{background-color:#0074d9}
  • image-type-converter/trunk/gpls-wicor-image-converter.php

    r3087171 r3147978  
    33
    44/**
    5  * Plugin Name:     Image Type Converter [[GrandPlugins]]
    6  * Description:     Convert Image Types easily in WP.
    7  * Author:          GrandPlugins
    8  * Author URI:      https://grandplugins.com
    9  * Text Domain:     image-type-converter
    10  * Std Name:        gpls-wicor-image-converter
    11  * Version:         1.0.2
     5 * Plugin Name:       Image Converter & Optimizer  [[GrandPlugins]]
     6 * Description:       Convert Image Types and optimize it easily in WP.
     7 * Author:            GrandPlugins
     8 * Author URI:        https://grandplugins.com
     9 * Text Domain:       image-type-converter
     10 * Std Name:          gpls-wicor-image-converter
     11 * Version:           1.0.3
     12 * Requires at least: 5.3.0
     13 * Requires PHP:      7.1.0
    1214 */
    1315
  • image-type-converter/trunk/includes/ImageConverter.php

    r3081496 r3147978  
    497497     * @param int    $attachemnt_id
    498498     * @param string $mime_type
    499      * @return void
     499     * @return mixed
    500500     */
    501501    private static function update_attachment_mime_type( $attachemnt_id, $mime_type ) {
  • image-type-converter/trunk/includes/MetaBoxes/ImgConverterMetaBox.php

    r3081496 r3147978  
    22namespace GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes;
    33
     4defined( 'ABSPATH' ) || exit;
     5
    46use GPLSCore\GPLS_PLUGIN_WICOR\ImageConverter;
     7use GPLSCore\GPLS_PLUGIN_WICOR\Utils\NoticeUtilsTrait;
     8use GPLSCore\GPLS_PLUGIN_WICOR\Utils\Img\ImgUtilsTrait;
    59use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\MetaBoxesBase\MetaBox;
    6 use GPLSCore\GPLS_PLUGIN_WICOR\Utils\Img\ImgUtilsTrait;
    7 use GPLSCore\GPLS_PLUGIN_WICOR\Utils\NoticeUtilsTrait;
    8 
    9 defined( 'ABSPATH' ) || exit;
    1010
    1111/**
     
    1414class ImgConverterMetaBox extends MetaBox {
    1515
    16     use NoticeUtilsTrait, ImgUtilsTrait;
     16    use NoticeUtilsTrait;
     17    use ImgUtilsTrait;
    1718
    1819    /**
     
    2930     */
    3031    protected $id;
    31 
    32     /**
    33      * Converter Libs.
    34      *
    35      * @var array
    36      */
    37     protected $convert_libs = array( 'imagick', 'gd' );
    3832
    3933    /**
     
    6963                    'name' => str_replace( '-', '_', self::$plugin_info['name'] ),
    7064                    'data' => array(
    71                         'ajaxUrl'       => admin_url( 'admin-ajax.php' ),
    72                         'prefix'        => self::$plugin_info['classes_prefix'],
    73                         'convertAction' => self::$plugin_info['name'] . '-convert-img-type',
    74                         'nonce'         => wp_create_nonce( $this->id ),
    75                         'labels'        => array(
    76                             'confirmConvert' => esc_html__( 'You are about to convert the image type, proceed?', 'image-type-converter' ),
     65                        'ajaxUrl'        => admin_url( 'admin-ajax.php' ),
     66                        'prefix'         => self::$plugin_info['classes_prefix'],
     67                        'convertAction'  => self::$plugin_info['name'] . '-convert-img-type',
     68                        'optimizeAction' => self::$plugin_info['name'] . '-optimize-img',
     69                        'nonce'          => wp_create_nonce( $this->id ),
     70                        'labels'         => array(
     71                            'confirmConvert'  => esc_html__( 'You are about to convert the image type, proceed?', 'image-type-converter' ),
     72                            'confirmOptimize' => esc_html__( 'The image will be optimized, proceed?', 'image-type-converter' ),
    7773                        ),
    7874                    ),
     
    8076            ),
    8177        );
     78    }
     79
     80    /**
     81     * Convert To Select field.
     82     *
     83     * @return void
     84     */
     85    public static function convert_to_select( $image_id, $check_for_ext = true ) {
     86        ?>
     87        <select class="my-2 <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-type' ); ?>" name="<?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-type' ); ?>">
     88            <?php
     89            $supported_types = ImageConverter::get_supported_types();
     90            if ( $check_for_ext ) {
     91                $img_details = ImageConverter::get_image_file_details( $image_id );
     92            }
     93
     94            foreach ( $supported_types as $img_type ) :
     95                if ( $check_for_ext && ( $img_details['ext'] === $img_type ) ) {
     96                    continue;
     97                }
     98                ?>
     99                <option value="<?php echo esc_attr( $img_type ); ?>"><?php echo esc_html( $img_type ); ?></option>
     100                <?php endforeach; ?>
     101        </select>
     102        <?php
    82103    }
    83104
     
    121142        }
    122143
    123         $img_type      = ! empty( $_POST['imgType'] ) ? sanitize_text_field( wp_unslash( $_POST['imgType'] ) ) : '';
    124         $attachment_id = ! empty( $_POST['attachmentID'] ) ? absint( sanitize_text_field( wp_unslash( $_POST['attachmentID'] ) ) ) : 0;
    125         $quality       = ! empty( $_POST['imgQuality'] ) ? absint( sanitize_text_field( wp_unslash( $_POST['imgQuality'] ) ) ) : 85;
     144        $img_type            = ! empty( $_POST['imgType'] ) ? sanitize_text_field( wp_unslash( $_POST['imgType'] ) ) : '';
     145        $attachment_id       = ! empty( $_POST['attachmentID'] ) ? absint( sanitize_text_field( wp_unslash( $_POST['attachmentID'] ) ) ) : 0;
     146        $keep_file_extension = ( ! empty( $_POST['keepExt'] ) && filter_var( sanitize_text_field( wp_unslash( $_POST['keepExt'] ) ), \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE ) ) ? true : false;
     147        $quality             = ! empty( $_POST['imgQuality'] ) ? absint( sanitize_text_field( wp_unslash( $_POST['imgQuality'] ) ) ) : 85;
    126148
    127149        if ( empty( $img_type ) || empty( $attachment_id ) ) {
     
    143165
    144166        $options = array(
    145             'keep_ext' => false,
    146167            'quality'  => $quality,
     168            'keep_ext' => $keep_file_extension,
    147169        );
    148170
     
    159181
    160182        self::ajax_response(
    161             'Image is converted successfully',
     183            esc_html__( 'Image type has been converted successfully', 'image-type-converter' ),
    162184            'success',
    163185            200,
     
    165187        );
    166188    }
    167 
    168     /**
    169      * Convert To Select field.
    170      *
    171      * @return void
    172      */
    173     public static function convert_to_select( $image_id, $check_for_ext = true ) {
    174         ?>
    175         <select class="my-2 <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-type' ); ?>" name="<?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-type' ); ?>">
    176             <?php
    177             $supported_types = ImageConverter::get_supported_types();
    178             if ( $check_for_ext ) {
    179                 $img_details = ImageConverter::get_image_file_details( $image_id );
    180             }
    181 
    182             foreach ( $supported_types as $img_type ) :
    183                 if ( $check_for_ext && ( $img_details['ext'] === $img_type ) ) {
    184                     continue;
    185                 }
    186                 ?>
    187                 <option value="<?php echo esc_attr( $img_type ); ?>"><?php echo esc_html( $img_type ); ?></option>
    188                 <?php endforeach; ?>
    189         </select>
    190         <?php
    191     }
    192189}
  • image-type-converter/trunk/includes/MetaBoxes/ImgSubsizesMetaBox.php

    r3081496 r3147978  
    6060     * @return void
    6161     */
    62     public function generated_subsize_html( $attachment_id, $size_name, $size_arr, $conversion_history = array() ) {
     62    public function generated_subsize_html( $attachment_id, $size_name, $size_arr, $conversion_history = array(), $optimization_history = array() ) {
    6363        $img_url    = wp_get_attachment_url( $attachment_id );
    6464        $size_url   = str_replace( wp_basename( $img_url ), $size_arr['file'], $img_url );
    6565        $size_title = $size_name;
     66        $size_path  = self::convert_url_to_path( $size_url );
    6667        $size_url   = add_query_arg(
    6768            array(
     
    7071            $size_url
    7172        );
    72         if ( ! empty( $img_sizes[ $size_name ] ) ) {
    73             $size_title = $img_sizes[ $size_name ]['title'];
     73        if ( ! file_exists( $size_path ) ) {
     74            return;
    7475        }
    7576        ?>
     
    8687                    <div class="subsize-image-details">
    8788                        <div class="d-flex justify-content-center flex-lg-row mx-auto flex-md-column flex-wrap">
    88                             <span class="badge bg-light text-dark shadow-sm p-3 fs-6 text-left"><?php esc_html_e( 'Dimensions', 'image-sizes-controller' ); ?> : <?php echo esc_html( $size_arr['width'] . 'x' . $size_arr['height'] ); ?></span>
     89                            <span class="badge bg-light text-dark shadow-sm p-3 fs-6 text-left"><?php esc_html_e( 'Dimensions', 'image-type-converter' ); ?> : <?php echo esc_html( $size_arr['width'] . 'x' . $size_arr['height'] ); ?></span>
    8990                            <span class="badge bg-light text-dark shadow-sm p-3 fs-6 text-left">
    90                                 <span><?php esc_html_e( 'Size', 'image-sizes-controller' ); ?> : <?php echo esc_html( size_format( $size_arr['filesize'], 1 ) ); ?></span>
    91                                 <?php
    92                                 if ( ! empty( $conversion_history ) ) {
    93                                     ?>
    94                                     <span style="background: #<?php echo esc_attr( $conversion_history['new_size'] > $conversion_history['old_size'] ? 'f76e6e' : '00ffb8' ); ?>;padding: 5px;border-radius: 5px;font-weight: bolder;"><?php echo esc_html( '%' . number_format( ( abs( $conversion_history['old_size'] - $conversion_history['new_size'] ) / $conversion_history['old_size'] ) * 100 ) ); ?><?php echo esc_attr( $conversion_history['new_size'] > $conversion_history['old_size'] ? '⬆' : '⬇' ); ?></span>
    95                                     <?php
    96                                 }
    97                                 ?>
     91                                <span><?php esc_html_e( 'Size', 'image-type-converter' ); ?> : <?php echo esc_html( size_format( ! empty( $size_arr['filesize'] ) ? $size_arr['filesize'] : wp_filesize( $size_path ), 1 ) ); ?></span>
    9892                            </span>
    99                             <?php
    100                             if ( ! empty( $conversion_history ) ) {
    101                                 ?>
    102                                 <span class="mt-1 badge bg-light text-dark shadow-sm p-3 fs-6 text-left w-100 flex-grow-1"><?php esc_html_e( 'Old Size', 'image-sizes-controller' ); ?> : <?php echo esc_html( size_format( $conversion_history['old_size'], 1 ) ); ?></span>
    103                                 <?php
    104                             }
     93                        </div>
     94                        <!-- Optimization history -->
     95                        <?php
     96                        if ( ! empty( $optimization_history ) ) :
    10597                            ?>
    106                         </div>
     98                            <div class="subsize-conversion-history d-flex flex-column justify-content-center align-items-center border my-4 p-3">
     99                                <h6><?php esc_html_e( 'Optimization history', 'image-type-converter' ); ?><?php self::$core->new_keyword( 'New', false ); ?></h6>
     100                                <div class="d-flex justify-content-start flex-lg-row mx-auto flex-md-column flex-wrap">
     101                                    <span class="mt-1 badge bg-light text-dark shadow-sm p-3 fs-6 text-start w-100 flex-grow-1"><?php esc_html_e( 'Old Size', 'image-type-converter' ); ?> : <?php echo esc_html( size_format( $optimization_history['old_size'], 1 ) ); ?></span>
     102                                    <span class="mt-1 badge bg-light text-dark shadow-sm p-3 fs-6 text-start w-100 flex-grow-1 d-flex justify-content-between">
     103                                        <?php esc_html_e( 'New Size', 'image-type-converter' ); ?> : <?php echo esc_html( size_format( $optimization_history['new_size'], 1 ) ); ?>
     104                                        <span style="background: #<?php echo esc_attr( $optimization_history['new_size'] > $optimization_history['old_size'] ? 'f76e6e' : '00ffb8' ); ?>;padding: 5px;border-radius: 5px;font-weight: bolder;"><?php echo esc_html( '%' . number_format( ( abs( $optimization_history['old_size'] - $optimization_history['new_size'] ) / $optimization_history['old_size'] ) * 100, 1 ) ); ?><?php echo esc_attr( $optimization_history['new_size'] > $optimization_history['old_size'] ? '⬆' : '⬇' ); ?></span>
     105                                    </span>
     106                                </div>
     107                            </div>
     108                        <?php endif; ?>
     109                         <!-- Conversion history -->
     110                        <?php
     111                        if ( ! empty( $conversion_history ) ) :
     112                            ?>
     113                            <div class="subsize-conversion-history d-flex flex-column justify-content-center align-items-center border my-4 p-3">
     114                                <h6><?php esc_html_e( 'Conversion history', 'image-type-converter' ); ?></h6>
     115                                <div class="d-flex justify-content-start flex-lg-row mx-auto flex-md-column flex-wrap">
     116                                    <span class="mt-1 badge bg-light text-dark shadow-sm p-3 fs-6 text-start w-100 flex-grow-1"><?php esc_html_e( 'Old Size', 'image-type-converter' ); ?> : <?php echo esc_html( size_format( $conversion_history['old_size'], 1 ) ); ?></span>
     117                                    <span class="mt-1 badge bg-light text-dark shadow-sm p-3 fs-6 text-start w-100 flex-grow-1 d-flex justify-content-between">
     118                                        <?php esc_html_e( 'New Size', 'image-type-converter' ); ?> : <?php echo esc_html( size_format( $conversion_history['new_size'], 1 ) ); ?>
     119                                        <span style="background: #<?php echo esc_attr( $conversion_history['new_size'] > $conversion_history['old_size'] ? 'f76e6e' : '00ffb8' ); ?>;padding: 5px;border-radius: 5px;font-weight: bolder;"><?php echo esc_html( '%' . number_format( ( abs( $conversion_history['old_size'] - $conversion_history['new_size'] ) / $conversion_history['old_size'] ) * 100, 1 ) ); ?><?php echo esc_attr( $conversion_history['new_size'] > $conversion_history['old_size'] ? '⬆' : '⬇' ); ?></span>
     120                                    </span>
     121                                </div>
     122                            </div>
     123                        <?php endif; ?>
    107124                    </div>
    108125                </div>
  • image-type-converter/trunk/includes/MetaBoxes/MetaBoxesBase/metaboxesList.php

    r2923240 r3147978  
    22namespace GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\MetaBoxesBase;
    33
     4defined( 'ABSPATH' ) || exit;
     5
     6use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImageOptimizationHistoryMetaBox;
    47use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImgConversionHistoryMetaBox;
    58use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImgConverterMetaBox;
     9use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImgOptimizerMetaBox;
    610use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImgSubsizesMetaBox;
    7 
    8 defined( 'ABSPATH' ) || exit;
    911
    1012/**
     
    1618    ImgConverterMetaBox::init();
    1719    ImgConversionHistoryMetaBox::init();
     20    ImgOptimizerMetaBox::init();
     21    ImageOptimizationHistoryMetaBox::init();
    1822    ImgSubsizesMetaBox::init();
    1923}
  • image-type-converter/trunk/includes/Pages/PagesBase/AdminPage.php

    r2923240 r3147978  
    359359            <!-- Template Title -->
    360360            <?php if ( empty( $tab['hide_title'] ) && ! empty( $tab['title'] ) ) : ?>
    361                 <h1 class="wp-heading-inline mb-4 shadow-sm p-2 bg-white"><?php echo esc_html( $tab['title'] ); ?></h1>
     361                <h1 class="wp-heading-inline mb-4 shadow-sm p-2 bg-white"><?php echo wp_kses_post( $tab['title'] ); ?></h1>
    362362            <?php endif; ?>
    363363
  • image-type-converter/trunk/includes/Pages/SettingsPage.php

    r2923240 r3147978  
    5656    protected function prepare() {
    5757        $this->page_props = array(
    58             'menu_title'  => esc_html__( 'Image Converter', 'image-type-converter' ),
     58            'menu_title'  => esc_html__( 'Image Converter & Optimizer [GrandPlugins]', 'image-type-converter' ),
    5959            'page_title'  => '',
    6060            'parent_slug' => 'upload.php',
     
    7878                'title'    => esc_html__( 'Convert images type in bulk', 'image-type-converter' ),
    7979                'template' => 'bulk-convert-template.php',
     80            ),
     81            'auto_optimize' => array(
     82                'tab_title' => esc_html__( 'Auto Optimize', 'image-type-converter' ) . self::$core->new_keyword() . self::$core->new_keyword( 'Pro' ),
     83                'title'     => esc_html__( 'Optimize images automatically on upload', 'image-type-converter' ) . self::$core->pro_btn( '', 'Pro', '', '', true ),
     84                'template'  => 'auto-optimize-template.php',
     85            ),
     86            'bulk_optimize' => array(
     87                'tab_title' => esc_html__( 'Bulk Optimize', 'image-type-converter' ) . self::$core->new_keyword() . self::$core->new_keyword( 'Pro' ),
     88                'title'     => esc_html__( 'Optimize images in bulk', 'image-type-converter' ),
     89                'template'  => 'bulk-optimize-template.php',
    8090            ),
    8191        );
  • image-type-converter/trunk/includes/Plugin.php

    r3081496 r3147978  
    66use GPLSCore\GPLS_PLUGIN_WICOR\Base;
    77use GPLSCore\GPLS_PLUGIN_WICOR\ImageConverter;
     8use GPLSCore\GPLS_PLUGIN_WICOR\ImageOptimizer;
    89use GPLSCore\GPLS_PLUGIN_WICOR\QuickImageConverter;
    910use GPLSCore\GPLS_PLUGIN_WICOR\TypesSupport;
     
    2627        setup_pages();
    2728        ImageConverter::init();
     29        ImageOptimizer::init();
    2830        TypesSupport::init();
    2931        QuickImageConverter::init();
  • image-type-converter/trunk/includes/QuickImageConverter.php

    r3087171 r3147978  
    44defined( 'ABSPATH' ) || exit;
    55
     6use GPLSCore\GPLS_PLUGIN_WICOR\Utils\NoticeUtilsTrait;
     7use GPLSCore\GPLS_PLUGIN_WICOR\Utils\Img\ImgUtilsTrait;
     8use GPLSCore\GPLS_PLUGIN_WICOR\Utils\GeneralUtilsTrait;
    69use GPLSCore\GPLS_PLUGIN_WICOR\MetaBoxes\ImgConverterMetaBox;
    7 use GPLSCore\GPLS_PLUGIN_WICOR\Utils\GeneralUtilsTrait;
    8 use GPLSCore\GPLS_PLUGIN_WICOR\Utils\NoticeUtilsTrait;
    910
    1011/**
     
    1718    use GeneralUtilsTrait;
    1819    use NoticeUtilsTrait;
     20    use ImgUtilsTrait;
    1921
    2022    /**
     
    8991                <!-- Convert to -->
    9092                <div class="convert-to-wrapper" style="border: 1px solid #EEE;width:100%;display: flex;flex-direction: row;align-items: center;justify-content: space-between;padding: 10px;margin: 5px;">
    91                     <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Convert To:', 'gpls-wicor-image-converter' ); ?></span>
     93                    <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Convert To:', 'image-type-converter' ); ?></span>
    9294                    <?php ImgConverterMetaBox::convert_to_select( 0, false ); ?>
    9395                </div>
    9496                <!-- Quality -->
    9597                <div class="quality-wrapper" style="border: 1px solid #EEE;width:100%;display: flex;flex-direction: row;align-items: center;justify-content: space-between;padding: 10px;margin: 5px;">
    96                     <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Quality:', 'gpls-wicor-image-converter' ); ?></span>
     98                    <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Quality:', 'image-type-converter' ); ?></span>
    9799                    <input type="number" min="1" max="100" value="85" class="my-2 <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-quality' ); ?>" name="<?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-new-img-quality' ); ?>">
    98100                </div>
    99101                <!-- Keep Ext -->
    100102                <div class="keep-ext-wrapper" style="border: 1px solid #EEE;width:100%;display: flex;flex-direction: row;align-items: center;justify-content: space-between;padding: 10px;margin: 5px;">
    101                     <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Keep file extension:', 'gpls-wicor-image-converter' ); ?> <?php echo wp_kses_post( self::$core->pro_btn( '', 'Pro', '', '', true ) ); ?></span>
     103                    <span class="my-2" style="width:200px;text-align:left;"><?php esc_html_e( 'Keep file extension:', 'image-type-converter' ); ?> <?php echo wp_kses_post( self::$core->pro_btn( '', 'Pro', '', '', true ) ); ?></span>
    102104                    <input disabled type="checkbox" class="my-2 <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-keep-img-extension' ); ?>" >
    103105                </div>
     
    126128
    127129        if ( ! in_array( $type, $supported_types ) ) {
    128             self::ajax_error_response( esc_html__( 'Invalid image type!', 'gpls-wicor-image-converter' ) );
     130            self::ajax_error_response( esc_html__( 'Invalid image type!', 'image-type-converter' ) );
    129131        }
    130132
     
    141143
    142144        self::ajax_response(
    143             esc_html__( 'Image type has been converted successfully', 'gpls-wicor-image-converter' ),
     145            esc_html__( 'Image type has been converted successfully', 'image-type-converter' ),
    144146            'success',
    145147            200,
     
    198200                'quickConverterAction' => self::$plugin_info['prefix'] . '-quick-converter-action',
    199201                'labels'               => array(
    200                     'convertBtn' => esc_html__( 'Convert', 'gpls-wicor-image-converter' ),
     202                    'convertBtn' => esc_html__( 'Convert', 'image-type-converter' ),
    201203                ),
    202204            )
     
    212214     */
    213215    public function filter_media_table_columns( $columns ) {
    214         $columns[ $this->converter_column_name ] = esc_html__( 'Quick Image type converter', 'gpls-wicor-image-converter' );
     216        $columns[ $this->converter_column_name ] = esc_html__( 'Quick Image type converter', 'image-type-converter' );
    215217        return $columns;
    216218    }
     
    247249                <!-- Current Type -->
    248250                <div class="current-type-wrapper" style="display:flex;flex-direction:column;align-items:center; border:1px solid #EEE; margin-right:10px;padding:9px;">
    249                     <span class="my-2" style="margin-bottom:10px;"><?php esc_html_e( 'Image type:', 'gpls-wicor-image-converter' ); ?></span>
     251                    <span class="my-2" style="margin-bottom:10px;"><?php esc_html_e( 'Image type:', 'image-type-converter' ); ?></span>
    250252                    <span><strong style="background:#000;color:#FFF;padding:6px;"><?php echo esc_html( $this->get_current_image_type( $attachment_id, true ) ); ?></strong></span>
    251253                </div>
    252                 <button data-image_id="<?php echo esc_attr( $attachment_id ); ?>" type="submit" class="button button-primary <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-quick-converter-submit' ); ?>"><?php esc_html_e( 'Convert' ); ?></button>
     254                <!-- Actions -->
     255                <div class="img-actions" style="text-align:center;display:flex;flex-direction:column;">
     256                    <?php
     257                    $img_details = self::get_image_file_details( $attachment_id );
     258                    if ( is_array( $img_details ) ) {
     259                        ?>
     260                        <button data-image_id="<?php echo esc_attr( $attachment_id ); ?>" type="submit" class="button button-primary <?php echo esc_attr( self::$plugin_info['classes_prefix'] . '-quick-converter-submit' ); ?>"><?php esc_html_e( 'Convert' ); ?></button>
     261                        <?php
     262                        ImageOptimizer::optimize_btn( $attachment_id, $img_details['ext'] );
     263                    }
     264                    ?>
     265                </div>
    253266            </div>
    254267            <div class="notices-wrapper" style="margin-top:5px;">
  • image-type-converter/trunk/includes/Settings/Fields/settings-fields.php

    r2923240 r3147978  
    33
    44use GPLSCore\GPLS_PLUGIN_WICOR\ImageConverter;
     5use GPLSCore\GPLS_PLUGIN_WICOR\ImageOptimizer;
    56
    67defined( 'ABSPATH' ) || exit;
     
    6364                        ),
    6465                    ),
    65                     'custom_upload_type'  => array(
    66                         'type'             => 'repeater',
    67                         'repeat_add_label' => esc_html__( 'Add conversion Rule', 'gpls-wwclr-woo-cart-limiter' ),
    68                         'value'            => array(),
    69                         'classes'          => 'bg-light border shadow-sm',
    70                         'wrapper_classes'  => 'bg-light shadow-sm',
    71                         'collapse'         => array(
    72                             'collapse_source' => $plugin_info['classes_prefix'] . '-general-conversion-type',
    73                             'collapse_value'  => 2,
     66                ),
     67            ),
     68        ),
     69        'auto_optimize' => array(
     70            'main_optimization_type' => array(
     71                'settings_list' => array(
     72                    'optimization_status'               => array(
     73                        'input_label'     => esc_html__( 'Enable', 'image-type-converter' ),
     74                        'value'           => 'no',
     75                        'type'            => 'checkbox',
     76                        'input_suffix'    => esc_html__( 'Enable Auto Optimization', 'image-type-converter' ),
     77                        'wrapper_classes' => 'bg-light shadow-sm',
     78                        'attrs'    => array(
     79                            'disabled' => 'disabled',
     80                        ),
     81                    ),
     82                    'optimization_type'    => array(
     83                        'input_label'     => esc_html__( 'Optimization Type', 'image-type-converter' ),
     84                        'type'            => 'radio',
     85                        'value'           => 'no',
     86                        'classes'         => $plugin_info['classes_prefix'] . '-general-optimization-type',
     87                        'wrapper_classes' => 'bg-light shadow-sm',
     88                        'options'         => array(
     89                            array(
     90                                'input_suffix' => esc_html__( 'General Optimization', 'image-type-converter' ),
     91                                'input_footer' => esc_html__( 'Optimize all images', 'image-type-converter' ),
     92                                'value'        => 1,
     93                            ),
     94                            array(
     95                                'input_suffix' => esc_html__( 'Custom Optimization', 'image-type-converter' ),
     96                                'input_footer' => esc_html__( 'Make optimization to specific image types', 'image-type-converter' ),
     97                                'value'        => 2,
     98                            ),
    7499                        ),
    75100                        'attrs'    => array(
    76101                            'disabled' => 'disabled',
    77102                        ),
    78                         'default_subitem'  => array(
    79                             'custom_source_type' => array(
    80                                 'key'             => 'custom_source_type',
    81                                 'type'            => 'select',
    82                                 'input_footer'    => esc_html__( 'Uploaded image type', 'image-type-converter' ),
    83                                 'options'         => ImageConverter::get_supported_types( true ),
    84                                 'value'           => '',
    85                                 'wrapper_classes' => 'col-md-6',
    86                             ),
    87                             'custom_target_type' => array(
    88                                 'key'             => 'custom_target_type',
    89                                 'type'            => 'select',
    90                                 'input_footer'    => esc_html__( 'Target conversion type', 'image-type-converter' ),
    91                                 'options'         => ImageConverter::get_supported_types( true ),
    92                                 'value'           => '',
    93                                 'wrapper_classes' => 'col-md-6',
    94                             ),
     103                    ),
     104                    'quality'              => array(
     105                        'key'          => 'quality',
     106                        'type'         => 'number',
     107                        'input_footer' => esc_html__( 'Quality', 'image-type-converter' ),
     108                        'value'        => 85,
     109                        'attrs'        => array(
     110                            'min' => 0,
     111                            'max' => 100,
     112                            'disabled' => 'disabled',
    95113                        ),
    96114                    ),
  • image-type-converter/trunk/includes/Templates/metaboxes/img-subsizes-list-metabox-template.php

    r2923240 r3147978  
    11<?php
    22use GPLSCore\GPLS_PLUGIN_WICOR\ImageConverter;
     3use GPLSCore\GPLS_PLUGIN_WICOR\ImageOptimizer;
    34defined( 'ABSPATH' ) || exit;
    45
     
    1415            $img_metadata = wp_get_attachment_metadata( $_post_id );
    1516            if ( ! empty( $img_metadata['sizes'] ) ) :
    16                 $sizes = $img_metadata['sizes'];
    17                 $conversions_history       = ImageConverter::get_img_conversion_history( $_post_id );
    18                 $recent_conversion_history = ! empty( $conversions_history ) ? $conversions_history[ array_key_last( $conversions_history ) ] : array();
     17                $sizes                       = $img_metadata['sizes'];
     18                $conversions_history         = ImageConverter::get_img_conversion_history( $_post_id );
     19                $optimizations_history       = ImageOptimizer::get_optimization_history( $_post_id );
     20                $recent_conversion_history   = ! empty( $conversions_history ) ? $conversions_history[ array_key_last( $conversions_history ) ] : array();
     21                $recent_optimization_history = ! empty( $optimizations_history ) ? $optimizations_history[ array_key_last( $optimizations_history ) ] : array();
    1922                foreach ( $sizes as $size_name => $size_arr ) :
    20                     $subsize_conversion_history = ( ! empty( $recent_conversion_history['sizes'] ) && ! empty( $recent_conversion_history['sizes'][ $size_name ] ) ) ? $recent_conversion_history['sizes'][ $size_name ] : array();
     23                    $subsize_conversion_history   = ( ! empty( $recent_conversion_history['sizes'] ) && ! empty( $recent_conversion_history['sizes'][ $size_name ] ) ) ? $recent_conversion_history['sizes'][ $size_name ] : array();
     24                    $subsize_optimization_history = ( ! empty( $recent_optimization_history['sizes'] ) && ! empty( $recent_optimization_history['sizes'][ $size_name ] ) ) ? $recent_optimization_history['sizes'][ $size_name ] : array();
    2125                    // Subsize Item HTML.
    22                     $metabox->generated_subsize_html( $_post_id, $size_name, $size_arr, $subsize_conversion_history );
     26                    $metabox->generated_subsize_html( $_post_id, $size_name, $size_arr, $subsize_conversion_history, $subsize_optimization_history );
    2327                endforeach;
    2428            endif;
  • image-type-converter/trunk/includes/Templates/pages/status-template.php

    r2923240 r3147978  
    11<?php
     2defined( 'ABSPATH' ) || exit;
    23
    34use GPLSCore\GPLS_PLUGIN_WICOR\ImageConverter;
    4 
    5 defined( 'ABSPATH' ) || exit;
     5use GPLSCore\GPLS_PLUGIN_WICOR\ImageOptimizer;
    66
    77$core          = $args['core'];
     
    104104            ?>
    105105            <div class="notice notice-error avif-reqs py-2 px-3">
    106                 <span><?php printf( esc_html__( 'AVIF requires %1$s compiled with AVIF support OR %2$s at least. please contact your hosting support regarding that.', 'image-type-converter' ), '<strong>GD </strong>', '<strong>ImageMagick V 7.0.25</strong>' ); ?></span>
     106
     107                <span>
     108                <?php
     109                /* translators: 1: GD Library name 2: Imagemagick Library name. */
     110                printf( esc_html__( 'AVIF requires %1$s compiled with AVIF support OR %2$s at least. please contact your hosting support regarding that.', 'image-type-converter' ), '<strong>GD </strong>', '<strong>ImageMagick V 7.0.25</strong>' );
     111                ?>
     112                </span>
    107113            </div>
    108114        <?php endif; ?>
     
    110116        <?php if ( ImageConverter::is_type_supported( 'avif' ) && ! ImageConverter::is_avif_allowed() ) : ?>
    111117        <div class="avif-allowed-notice notice notice-warning py-2 px-3">
    112             <span><?php printf( esc_html__( 'AVIF images are not allowed for upload. If you want to upload and use AVIF images, we recommend our plugin %s', 'image-type-converter' ), '<a href="https://wordpress.org/plugins/avif-support/" target="_blank" >AVIF Support</a>' ); ?></span>
     118            <span>
     119            <?php
     120            /* translators: %s: AVIF support Plugin name */
     121            printf( esc_html__( 'AVIF images are not allowed for upload. If you want to upload and use AVIF images, we recommend our plugin %s', 'image-type-converter' ), '<a href="https://wordpress.org/plugins/avif-support/" target="_blank" >AVIF Support</a>' );
     122            ?>
     123            </span>
    113124        </div>
    114125        <?php endif; ?>
     126    </div>
     127
     128    <div class="container optimizers-status-wrapper accordion my-5" id="ImgOptimizersAccordion">
     129        <h3 class="mb-2 p-3 bg-white border shadow-sm"><?php esc_html_e( 'Optimizers status', 'image-type-converter' ); ?><span><?php $core->new_keyword( 'New', false ); ?></span></h3>
     130        <?php
     131        $optimizers = ImageOptimizer::get_optimizers();
     132        if ( ! $template_page::is_proc_open_available() ) {
     133            ?>
     134            <div id="message" class="error notice inline">
     135                <p><strong><?php esc_html_e( 'proc_open() function seems not available, Optimizers rely on this function. please contact your hosting support if it can be enabled or consider upgrading to a higher hosting plan', 'image-type-converter' ); ?></strong></p>
     136            </div>
     137            <?php
     138        }
     139        ?>
     140        <ul class="list-group p-3">
     141            <?php foreach ( $optimizers as $optimizer_key => $optimizer_arr ) : ?>
     142            <li class="list-group-item accordion-item pe-4">
     143                <h4 class="accordion-header">
     144                    <div class="accordion-header-wrapper p-2 accordion-button collapsed" style="cursor:pointer;" data-bs-toggle="collapse" data-bs-target="#<?php echo esc_attr( $optimizer_key . '-optimizer' ); ?>" aria-expanded="false" aria-controls="<?php echo esc_attr( $optimizer_key . '-optimizer' ); ?>">
     145                        <div class="col-md-6 border-end">
     146                            <span class="item-key"><?php echo esc_html( $optimizer_arr['title'] ); ?></span>
     147                        </div>
     148                        <div class="col-md-6 text-end me-2">
     149                            <span class="item-value text-bold">
     150                                <?php
     151                                $is_optimizer_installed = ImageOptimizer::is_optimizer_installed( $optimizer_key, true );
     152                                if ( $is_optimizer_installed && ! is_wp_error( $is_optimizer_installed ) ) {
     153                                    $template_page::install_and_version_icon( 'green', $is_optimizer_installed );
     154
     155                                } else {
     156                                    $template_page::install_and_version_icon( 'red' );
     157                                }
     158                                ?>
     159                            </span>
     160                        </div>
     161                    </div>
     162                </h4>
     163                <div id="<?php echo esc_attr( $optimizer_key . '-optimizer' ); ?>" class="accordion-collapse collapse" data-bs-parent="#ImgOptimizersAccordion">
     164                    <ul class="list-group p-3 my-3">
     165                        <!-- Image Type Target -->
     166                        <li class="list-group-item">
     167                            <div class="row">
     168                                <div class="col-md-6 border-end">
     169                                    <span class="item-key"><?php esc_html_e( 'Image type Target', 'image-type-converter' ); ?></span>
     170                                </div>
     171                                <div class="col-md-6 text-end">
     172                                    <span class="item-value">
     173                                        <?php echo esc_html( $optimizer_arr['target'] ); ?>
     174                                    </span>
     175                                </div>
     176                            </div>
     177                        </li>
     178                        <?php
     179                        $optimizter_installed_result = ImageOptimizer::is_optimizer_installed( $optimizer_key, true );
     180                        if ( ! $optimizter_installed_result || is_wp_error( $optimizter_installed_result ) ) :
     181                        ?>
     182                        <!-- Install -->
     183                        <li class="list-group-item" style="cursor:pointer;">
     184                            <?php esc_html_e( 'Install commands', 'image-type-converter' ); ?>
     185                           
     186                            <ul class="list-group p-3">
     187                                <?php foreach ( $optimizer_arr['install'] as $os_name => $os_command ) : ?>
     188                                <li class="list-group-item">
     189                                    <div class="row">
     190                                        <div class="col-md-6 border-end">
     191                                            <span class="item-key"><?php echo esc_html( $os_name ); ?></span>
     192                                        </div>
     193                                        <div class="col-md-6 text-end">
     194                                            <span class="item-value">
     195                                                <?php echo esc_html( $os_command ); ?>
     196                                            </span>
     197                                        </div>
     198                                    </div>
     199                                </li>
     200                                <?php endforeach; ?>   
     201                            </ul>
     202                        </li>
     203
     204                        <?php endif; ?>
     205                    </ul>
     206                </div>
     207            </li>
     208            <?php endforeach; ?>
     209        </ul>
    115210    </div>
    116211    <div style="margin-top:150px;">
  • image-type-converter/trunk/includes/Utils/GeneralUtilsTrait.php

    r2923240 r3147978  
    66 */
    77trait GeneralUtilsTrait {
     8
     9    /**
     10     * Check if proc_open available.
     11     * @return bool
     12     */
     13    public static function is_proc_open_available() {
     14        return ( \function_exists( 'proc_open' ) && ! in_array( 'proc_open', explode( ',', ini_get( 'disable_functions' ) ) ) );
     15    }
    816
    917    /**
  • image-type-converter/trunk/includes/Utils/Img/ImgUtilsTrait.php

    r2923240 r3147978  
    5454     * @param string $image_path
    5555     * @return array|false
    56      */
     56     */ 
    5757    public static function get_image_specs( $image_path ) {
    5858        $img_details = self::get_imagesize( $image_path );
     
    339339        $img_size = wp_getimagesize( $img_path );
    340340
    341         if ( is_array( $img_size ) && ( 0 !== $img_size[0] ) && ( 0 !== $img_size[1] ) ) {
     341        if ( is_array( $img_size ) && ( 0 !== $img_size[0] ) && ( 0 !== $img_size[1] ) && ! empty( $img_size['mime'] ) ) {
    342342            return $img_size;
    343343        }
     344
    344345
    345346        // Failed, fallback to Imagick.
    346347        if ( self::is_imagick_enabled() ) {
    347348            try {
    348                 $imgick      = new \Imagick( $img_path );
    349                 $img_dim     = $imgick->getImageGeometry();
    350                 $img_size[0] = $img_dim['width'];
    351                 $img_size[1] = $img_dim['height'];
     349                $img_size         = array();
     350                $imgick           = new \Imagick( $img_path );
     351                $img_dim          = $imgick->getImageGeometry();
     352                $img_size[0]      = $img_dim['width'];
     353                $img_size[1]      = $img_dim['height'];
     354                $img_size['mime'] = $imgick->getImageMimeType();
    352355
    353356                $imgick->clear();
    354                 return $img_size;
    355357            } catch ( \Exception $e ) {
    356358                // Do nothing for now.
     
    368370    private static function get_mimes() {
    369371        return array(
    370             'jpg|jpeg|jpe'                 => 'image/jpeg',
    371             'gif'                          => 'image/gif',
    372             'png'                          => 'image/png',
    373             'bmp'                          => 'image/bmp',
    374             'tiff|tif'                     => 'image/tiff',
    375             'webp'                         => 'image/webp',
    376             'ico'                          => 'image/x-icon',
    377             'heic'                         => 'image/heic',
    378             'avif'                         => 'image/avif',
     372            'jpg|jpeg|jpe' => 'image/jpeg',
     373            'gif'          => 'image/gif',
     374            'png'          => 'image/png',
     375            'bmp'          => 'image/bmp',
     376            'tiff|tif'     => 'image/tiff',
     377            'webp'         => 'image/webp',
     378            'ico'          => 'image/x-icon',
     379            'heic'         => 'image/heic',
     380            'avif'         => 'image/avif',
     381            'svg'          => 'image/svg+xml',
    379382        );
    380383    }
     384
     385    /**
     386     * Get New Table Row.
     387     *
     388     * @param int $image_id
     389     * @return string
     390     */
     391    private function get_new_table_row( $image_id ) {
     392        require_once \ABSPATH . 'wp-admin/includes/class-wp-media-list-table.php';
     393       
     394        $GLOBALS['typenow'] = 'attachment'; // compatibility with https://wordpress.org/plugins/folders/ plugin media Quick Convert.
     395        $media_table        = new \WP_Media_List_Table();
     396        $post               = get_post( $image_id );
     397        $post_owner         = ( get_current_user_id() === (int) $post->post_author ) ? 'self' : 'other';
     398        setup_postdata( $post );
     399        $GLOBALS['post'] = $post;
     400        setup_postdata( $post );
     401        ob_start();
     402        ?>
     403        <tr id="post-<?php echo esc_attr( $post->ID ); ?>" class="<?php echo esc_attr( trim( ' author-' . $post_owner . ' status-' . $post->post_status ) ); ?>">
     404            <?php $media_table->single_row_columns( $post ); ?>
     405        </tr>
     406        <?php
     407        wp_reset_postdata();
     408        return ob_get_clean();
     409    }
    381410}
  • image-type-converter/trunk/languages/image-type-converter.pot

    r2923240 r3147978  
    1 # Copyright (C) 2023 GrandPlugins
    2 # This file is distributed under the same license as the Image Type Converter [[GrandPlugins]] plugin.
     1# Copyright (C) 2024 GrandPlugins
     2# This file is distributed under the same license as the Image Converter & Optimizer [[GrandPlugins]] plugin.
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Image Type Converter [[GrandPlugins]] 1.0.0\n"
     5"Project-Id-Version: Image Converter & Optimizer  [[GrandPlugins]] 1.0.3\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/gpls-wicor-image-converter\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2023-04-18T15:14:28+00:00\n"
     12"POT-Creation-Date: 2024-09-07T11:36:14+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    14 "X-Generator: WP-CLI 2.6.0\n"
     14"X-Generator: WP-CLI 2.10.0\n"
    1515"X-Domain: image-type-converter\n"
    1616
    1717#. Plugin Name of the plugin
    18 msgid "Image Type Converter [[GrandPlugins]]"
     18#: C:\laragon\www\WPImageConverter\wp-content\plugins\gpls-wicor-image-converter\gpls-wicor-image-converter.php
     19msgid "Image Converter & Optimizer  [[GrandPlugins]]"
    1920msgstr ""
    2021
    2122#. Description of the plugin
    22 msgid "Convert Image Types easily in WP."
     23#: C:\laragon\www\WPImageConverter\wp-content\plugins\gpls-wicor-image-converter\gpls-wicor-image-converter.php
     24msgid "Convert Image Types and optimize it easily in WP."
    2325msgstr ""
    2426
    2527#. Author of the plugin
     28#: C:\laragon\www\WPImageConverter\wp-content\plugins\gpls-wicor-image-converter\gpls-wicor-image-converter.php
    2629msgid "GrandPlugins"
    2730msgstr ""
    2831
    2932#. Author URI of the plugin
     33#: C:\laragon\www\WPImageConverter\wp-content\plugins\gpls-wicor-image-converter\gpls-wicor-image-converter.php
    3034msgid "https://grandplugins.com"
    3135msgstr ""
    3236
    33 #: includes/ImageConverter.php:213
     37#: includes/ImageConverter.php:239
    3438msgid "Animated images are not supported yet."
    3539msgstr ""
    3640
    37 #: includes/ImageConverter.php:227
     41#: includes/ImageConverter.php:254
     42#: includes/ImageOptimizer.php:385
    3843msgid "Image not found"
    3944msgstr ""
    4045
    41 #: includes/ImageConverter.php:264
     46#: includes/ImageConverter.php:293
    4247msgid "The image file doesn't exist!"
    4348msgstr ""
    4449
    45 #: includes/ImageConverter.php:376
    46 msgid "Image type is not supported"
     50#: includes/ImageConverter.php:397
     51msgid "Target image type is unsupported"
     52msgstr ""
     53
     54#: includes/ImageConverter.php:417
     55msgid "Image type is not supported. new extension: %s, image path: %s"
     56msgstr ""
     57
     58#: includes/ImageOptimizer.php:362
     59msgid "Optimized"
     60msgstr ""
     61
     62#: includes/ImageOptimizer.php:398
     63msgid "Optimization resulted in bigger image"
     64msgstr ""
     65
     66#: includes/ImageOptimizer.php:433
     67msgid "No optimizer for image type"
     68msgstr ""
     69
     70#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:42
     71msgid "Image Optimizations History [GrandPlugins]"
     72msgstr ""
     73
     74#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:81
     75msgid "Optimization History"
     76msgstr ""
     77
     78#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:95
     79#: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:94
     80#: includes/MetaBoxes/ImgSubsizesMetaBox.php:91
     81msgid "Size"
     82msgstr ""
     83
     84#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:109
     85#: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:126
     86msgid "Date"
     87msgstr ""
     88
     89#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:120
     90#: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:137
     91msgid "Context"
     92msgstr ""
     93
     94#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:123
     95msgid " optimize"
     96msgstr ""
     97
     98#: includes/MetaBoxes/ImageOptimizationHistoryMetaBox.php:135
     99msgid "No optimizations yet!"
    47100msgstr ""
    48101
     
    55108msgstr ""
    56109
    57 #: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:94
    58 msgid "Size"
    59 msgstr ""
    60 
    61110#: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:102
    62111msgid "Type"
     
    67116msgstr ""
    68117
    69 #: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:126
    70 msgid "Date"
    71 msgstr ""
    72 
    73 #: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:137
    74 msgid "Context"
    75 msgstr ""
    76 
    77118#: includes/MetaBoxes/ImgConversionHistoryMetaBox.php:140
    78119msgid " convert"
     
    83124msgstr ""
    84125
    85 #: includes/MetaBoxes/ImgConverterMetaBox.php:41
     126#: includes/MetaBoxes/ImgConverterMetaBox.php:42
    86127msgid "Image Type Converter [GrandPlugins]"
    87128msgstr ""
    88129
    89 #: includes/MetaBoxes/ImgConverterMetaBox.php:69
     130#: includes/MetaBoxes/ImgConverterMetaBox.php:71
    90131msgid "You are about to convert the image type, proceed?"
     132msgstr ""
     133
     134#: includes/MetaBoxes/ImgConverterMetaBox.php:72
     135msgid "The image will be optimized, proceed?"
     136msgstr ""
     137
     138#: includes/MetaBoxes/ImgConverterMetaBox.php:183
     139#: includes/QuickImageConverter.php:145
     140msgid "Image type has been converted successfully"
     141msgstr ""
     142
     143#: includes/MetaBoxes/ImgOptimizerMetaBox.php:42
     144msgid "Image Optimizer [GrandPlugins]"
     145msgstr ""
     146
     147#: includes/MetaBoxes/ImgOptimizerMetaBox.php:109
     148msgid "Failed to fetch image details"
     149msgstr ""
     150
     151#: includes/MetaBoxes/ImgOptimizerMetaBox.php:119
     152msgid "Image type optimizer is not installed"
     153msgstr ""
     154
     155#: includes/MetaBoxes/ImgOptimizerMetaBox.php:138
     156msgid "Image has been optimized successfully"
    91157msgstr ""
    92158
     
    95161msgstr ""
    96162
     163#: includes/MetaBoxes/ImgSubsizesMetaBox.php:89
     164msgid "Dimensions"
     165msgstr ""
     166
     167#: includes/MetaBoxes/ImgSubsizesMetaBox.php:99
     168msgid "Optimization history"
     169msgstr ""
     170
     171#: includes/MetaBoxes/ImgSubsizesMetaBox.php:101
     172#: includes/MetaBoxes/ImgSubsizesMetaBox.php:116
     173msgid "Old Size"
     174msgstr ""
     175
     176#: includes/MetaBoxes/ImgSubsizesMetaBox.php:103
     177#: includes/MetaBoxes/ImgSubsizesMetaBox.php:118
     178msgid "New Size"
     179msgstr ""
     180
     181#: includes/MetaBoxes/ImgSubsizesMetaBox.php:114
     182msgid "Conversion history"
     183msgstr ""
     184
    97185#: includes/Modules/SelectImages/SelectImagesModule.php:84
    98186msgid "Select images"
     
    148236
    149237#: includes/Pages/SettingsPage.php:67
     238#: includes/Templates/metaboxes/img-optimizer-metabox-template.php:29
    150239msgid "Status"
    151240msgstr ""
     
    167256msgstr ""
    168257
    169 #: includes/Settings/Fields/settings-fields.php:19
    170 msgid "Enable"
    171 msgstr ""
    172 
    173 #: includes/Settings/Fields/settings-fields.php:22
    174 msgid "Enable Auto Conversion"
    175 msgstr ""
    176 
    177 #: includes/Settings/Fields/settings-fields.php:29
    178 msgid "Conversion Type"
    179 msgstr ""
    180 
    181 #: includes/Settings/Fields/settings-fields.php:36
    182 msgid "General Conversion"
    183 msgstr ""
    184 
    185 #: includes/Settings/Fields/settings-fields.php:37
    186 msgid "Convert all images to single image type"
    187 msgstr ""
    188 
    189 #: includes/Settings/Fields/settings-fields.php:41
    190 msgid "Custom Conversion"
    191 msgstr ""
    192 
    193 #: includes/Settings/Fields/settings-fields.php:42
    194 msgid "Make custom conversions"
    195 msgstr ""
    196 
    197 #: includes/Settings/Fields/settings-fields.php:52
    198 msgid "Target Type to convert all uploaded images to"
    199 msgstr ""
    200 
    201 #: includes/Settings/Fields/settings-fields.php:82
    202 msgid "Uploaded image type"
    203 msgstr ""
    204 
    205 #: includes/Settings/Fields/settings-fields.php:90
    206 msgid "Target conversion type"
    207 msgstr ""
    208 
     258#: includes/Pages/SettingsPage.php:82
     259msgid "Auto Optimize"
     260msgstr ""
     261
     262#: includes/Pages/SettingsPage.php:83
     263msgid "Optimize images automatically on upload"
     264msgstr ""
     265
     266#: includes/Pages/SettingsPage.php:87
     267msgid "Bulk Optimize"
     268msgstr ""
     269
     270#: includes/Pages/SettingsPage.php:88
     271msgid "Optimize images in bulk"
     272msgstr ""
     273
     274#: includes/QuickImageConverter.php:93
    209275#: includes/Templates/metaboxes/img-converter-metabox-template.php:36
    210276msgid "Convert To:"
    211277msgstr ""
    212278
    213 #: includes/Templates/metaboxes/img-converter-metabox-template.php:58
     279#: includes/QuickImageConverter.php:98
     280#: includes/Templates/metaboxes/img-converter-metabox-template.php:57
     281#: includes/Templates/metaboxes/img-optimizer-metabox-template.php:46
     282msgid "Quality:"
     283msgstr ""
     284
     285#: includes/QuickImageConverter.php:103
     286msgid "Keep file extension:"
     287msgstr ""
     288
     289#: includes/QuickImageConverter.php:130
     290msgid "Invalid image type!"
     291msgstr ""
     292
     293#: includes/QuickImageConverter.php:202
     294msgid "Convert"
     295msgstr ""
     296
     297#: includes/QuickImageConverter.php:216
     298msgid "Quick Image type converter"
     299msgstr ""
     300
     301#: includes/QuickImageConverter.php:251
     302msgid "Image type:"
     303msgstr ""
     304
     305#: includes/Settings/Fields/settings-fields.php:20
     306#: includes/Settings/Fields/settings-fields.php:73
     307msgid "Enable"
     308msgstr ""
     309
     310#: includes/Settings/Fields/settings-fields.php:23
     311msgid "Enable Auto Conversion"
     312msgstr ""
     313
     314#: includes/Settings/Fields/settings-fields.php:30
     315msgid "Conversion Type"
     316msgstr ""
     317
     318#: includes/Settings/Fields/settings-fields.php:37
     319msgid "General Conversion"
     320msgstr ""
     321
     322#: includes/Settings/Fields/settings-fields.php:38
     323msgid "Convert all images to single image type"
     324msgstr ""
     325
     326#: includes/Settings/Fields/settings-fields.php:42
     327msgid "Custom Conversion"
     328msgstr ""
     329
     330#: includes/Settings/Fields/settings-fields.php:43
     331msgid "Make custom conversions"
     332msgstr ""
     333
     334#: includes/Settings/Fields/settings-fields.php:53
     335msgid "Target Type to convert all uploaded images to"
     336msgstr ""
     337
     338#: includes/Settings/Fields/settings-fields.php:76
     339msgid "Enable Auto Optimization"
     340msgstr ""
     341
     342#: includes/Settings/Fields/settings-fields.php:83
     343msgid "Optimization Type"
     344msgstr ""
     345
     346#: includes/Settings/Fields/settings-fields.php:90
     347msgid "General Optimization"
     348msgstr ""
     349
     350#: includes/Settings/Fields/settings-fields.php:91
     351msgid "Optimize all images"
     352msgstr ""
     353
     354#: includes/Settings/Fields/settings-fields.php:95
     355msgid "Custom Optimization"
     356msgstr ""
     357
     358#: includes/Settings/Fields/settings-fields.php:96
     359msgid "Make optimization to specific image types"
     360msgstr ""
     361
     362#: includes/Settings/Fields/settings-fields.php:107
     363msgid "Quality"
     364msgstr ""
     365
     366#: includes/Templates/metaboxes/img-converter-metabox-template.php:63
     367#: includes/Templates/metaboxes/img-optimizer-metabox-template.php:52
     368msgid "note: setting high quality near to 100 may result in a bigger image size."
     369msgstr ""
     370
     371#: includes/Templates/metaboxes/img-converter-metabox-template.php:72
    214372msgid "Keep file extension?"
    215373msgstr ""
    216374
    217 #: includes/Templates/metaboxes/img-converter-metabox-template.php:65
     375#: includes/Templates/metaboxes/img-converter-metabox-template.php:79
    218376msgid "This option will keep the same old image file extension after conversion. This will keep the same image URL without change."
     377msgstr ""
     378
     379#. translators: %s Status Page link
     380#: includes/Templates/metaboxes/img-optimizer-metabox-template.php:28
     381msgid "Image type optimizer is not installed, Please check %s page for more details!"
    219382msgstr ""
    220383
     
    239402msgstr ""
    240403
    241 #: includes/Templates/pages/status-template.php:106
     404#. translators: 1: GD Library name 2: Imagemagick Library name.
     405#: includes/Templates/pages/status-template.php:110
    242406msgid "AVIF requires %1$s compiled with AVIF support OR %2$s at least. please contact your hosting support regarding that."
    243407msgstr ""
    244408
    245 #: includes/Templates/pages/status-template.php:112
     409#. translators: %s: AVIF support Plugin name
     410#: includes/Templates/pages/status-template.php:121
    246411msgid "AVIF images are not allowed for upload. If you want to upload and use AVIF images, we recommend our plugin %s"
    247412msgstr ""
     413
     414#: includes/Templates/pages/status-template.php:129
     415msgid "Optimizers status"
     416msgstr ""
     417
     418#: includes/Templates/pages/status-template.php:135
     419msgid "proc_open() function seems not available, Optimizers rely on this function. please contact your hosting support if it can be enabled or consider upgrading to a higher hosting plan"
     420msgstr ""
     421
     422#: includes/Templates/pages/status-template.php:169
     423msgid "Image type Target"
     424msgstr ""
     425
     426#: includes/Templates/pages/status-template.php:184
     427msgid "Install commands"
     428msgstr ""
  • image-type-converter/trunk/readme.txt

    r3087171 r3147978  
    1 === Image Type Converter ===
    2 Tags: image converter, image type, image subsizes, png, jpg, gif, webp, avif
    3 Tested up to: 6.5
     1=== Image Converter & Optimizer ===
     2Tags: image converter, optimize image, image type, image subsizes, png, jpg, gif, webp, avif
     3Tested up to: 6.6
    44Requires at least: 5.3.0
    55Requires PHP: 7.1.0
    6 Stable Tag: 1.0.2
    7 Version: 1.0.2
     6Stable Tag: 1.0.3
     7Version: 1.0.3
    88Contributors: grandplugins
    99Author: GrandPlugins
     
    5656== Check Our other plugins ==
    5757
    58 [Woo instock Notifier](https://grandplugins.com/product/woo-instock-notifier/)
    5958
    60 [Woo Gift Cards](https://grandplugins.com/product/woo-gift-cards/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     59[Woo Order Splitter](https://grandplugins.com/product/woo-order-splitter/?utm_source=free&utm_medium=wp-image-converter)
    6160
    62 [Woo Restrict Orders](https://grandplugins.com/product/woo-restrict-orders/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     61[Woo User Orders Limit](https://grandplugins.com/product/woo-user-orders-limit/?utm_source=free&utm_medium=wp-image-converter)
    6362
    64 [Woo Bulk Price & Stock Manager](https://grandplugins.com/product/woo-bulk-price-change/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     63[Woo Conditional Gateway](https://grandplugins.com/product/woo-conditional-gateways/?utm_source=free&utm_medium=wp-image-converter)
    6564
    66 [Woo Variation Sold individually](https://grandplugins.com/product/woo-variation-sold-individually/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     65[WP DB Controller](https://grandplugins.com/product/wp-db-controller/?utm_source=free&utm_medium=wp-image-converter)
    6766
    68 [Woo Paddle Checkout](https://grandplugins.com/product/woo-paddle-checkout/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     67[Woo Lemonsqueezy Gateway](https://grandplugins.com/product/woo-lemonsqueezy-gateway/?utm_source=free&utm_medium=wp-image-converter)
    6968
    70 [Woo Sales notifications](https://grandplugins.com/product/woo-sales-notification/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     69[Woo instock Notifier](https://grandplugins.com/product/woo-instock-notifier/?utm_source=free&utm_medium=wp-image-converter)
    7170
    72 [Woo Real time Cart Tracker](https://grandplugins.com/product/woo-cart-tracker/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     71[Woo Gift Cards](https://grandplugins.com/product/woo-gift-cards/?utm_source=free&utm_medium=wp-image-converter)
    7372
    74 [Woo Best Sellers](https://grandplugins.com/product/woo-best-seller/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     73[Woo Restrict Orders](https://grandplugins.com/product/woo-restrict-orders/?utm_source=free&utm_medium=wp-image-converter)
    7574
    76 [Advanced Captcha](https://grandplugins.com/product/woo-advanced-captcha/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     75[Woo Bulk Price & Stock Manager](https://grandplugins.com/product/woo-bulk-price-change/?utm_source=free&utm_medium=wp-image-converter)
    7776
    78 [WooCommerce Advanced Bundles](https://grandplugins.com/product/woo-advanced-add-to-cart/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     77[Woo Variation Sold individually](https://grandplugins.com/product/woo-variation-sold-individually/?utm_source=free&utm_medium=wp-image-converter)
    7978
    80 [WooCommerce Advanced Pricing - Discounts & Quantity Swatches](https://grandplugins.com/product/woo-advanced-pricing/?utm_source=free&utm_medium=gpls-avfstw-avif-support)
     79[Woo Paddle Checkout](https://grandplugins.com/product/woo-paddle-checkout/?utm_source=free&utm_medium=wp-image-converter)
    8180
    82 [Image Sizes Controller](https://wordpress.org/plugins/image-sizes-controller/)
     81[Woo Sales notifications](https://grandplugins.com/product/woo-sales-notification/?utm_source=free&utm_medium=wp-image-converter)
    8382
    84 [WooCommerce Cart Limiter](https://wordpress.org/plugins/cart-limiter/)
     83[Woo Real time Cart Tracker](https://grandplugins.com/product/woo-cart-tracker/?utm_source=free&utm_medium=wp-image-converter)
    8584
    86 [WP Watermark Images](https://wordpress.org/plugins/watermark-images-for-wp-and-woo-grandpluginswp/)
     85[Woo Best Sellers](https://grandplugins.com/product/woo-best-seller/?utm_source=free&utm_medium=wp-image-converter)
    8786
    88 [Coming Soon Products for WooCommerce](https://wordpress.org/plugins/coming-soon-products-for-woocommerce)
     87[Advanced Captcha](https://grandplugins.com/product/woo-advanced-captcha/?utm_source=free&utm_medium=wp-image-converter)
    8988
    90 [WooCommerce Cart and Order Limiter](https://wordpress.org/plugins/cart-limiter/)
     89[WooCommerce Advanced Bundles](https://grandplugins.com/product/woo-advanced-add-to-cart/?utm_source=free&utm_medium=wp-image-converter)
    9190
    92 [Watermark PDF](https://wordpress.org/plugins/watermark-pdf/)
     91[WooCommerce Advanced Pricing - Discounts & Quantity Swatches](https://grandplugins.com/product/woo-advanced-pricing/?utm_source=free&utm_medium=wp-image-converter)
    9392
    94 [Quick View and Buy Now for WooCommerce](https://wordpress.org/plugins/quick-view-and-buy-now-for-woocommerce/)
     93[Image Sizes Controller](https://wordpress.org/plugins/image-sizes-controller/?utm_source=free&utm_medium=wp-image-converter)
    9594
    96 [WooCommerce Maintenance Mode](https://wordpress.org/plugins/ultimate-maintenance-mode-for-woocommerce/)
     95[WooCommerce Cart Limiter](https://wordpress.org/plugins/cart-limiter/?utm_source=free&utm_medium=wp-image-converter)
    9796
    98 [Sidebars Gutenberg Blocks](https://wordpress.org/plugins/sidebars-blocks/)
     97[WP Watermark Images](https://wordpress.org/plugins/watermark-images-for-wp-and-woo-grandpluginswp/?utm_source=free&utm_medium=wp-image-converter)
    9998
    100 [Large Images Uploader](https://wordpress.org/plugins/large-images-uploader/)
     99[Coming Soon Products for WooCommerce](https://wordpress.org/plugins/coming-soon-products-for-woocommerce/?utm_source=free&utm_medium=wp-image-converter)
    101100
    102 [Maintenance Mode for WooCommerce](https://wordpress.org/plugins/ultimate-maintenance-mode-for-woocommerce/)
     101[WooCommerce Cart and Order Limiter](https://wordpress.org/plugins/cart-limiter/?utm_source=free&utm_medium=wp-image-converter)
    103102
    104 [Single Ajax Add to Cart For WooCommerce](https://wordpress.org/plugins/ajax-single-add-to-cart-for-woocommerce/)
     103[Watermark PDF](https://wordpress.org/plugins/watermark-pdf/?utm_source=free&utm_medium=wp-image-converter)
    105104
    106 [GIF Uploader](https://wordpress.org/plugins/gif-uploader-wp-grandplugins)
     105[Quick View and Buy Now for WooCommerce](https://wordpress.org/plugins/quick-view-and-buy-now-for-woocommerce/?utm_source=free&utm_medium=wp-image-converter)
    107106
    108 [PDF Password Protect](https://wordpress.org/plugins/pdf-password-protect/)
     107[WooCommerce Maintenance Mode](https://wordpress.org/plugins/ultimate-maintenance-mode-for-woocommerce/?utm_source=free&utm_medium=wp-image-converter)
    109108
    110 [Paypal Subscriptions](https://wordpress.org/plugins/gpls-paypal-subscriptions/)
     109[Sidebars Gutenberg Blocks](https://wordpress.org/plugins/sidebars-blocks/?utm_source=free&utm_medium=wp-image-converter)
     110
     111[Large Images Uploader](https://wordpress.org/plugins/large-images-uploader/?utm_source=free&utm_medium=wp-image-converter)
     112
     113[Maintenance Mode for WooCommerce](https://wordpress.org/plugins/ultimate-maintenance-mode-for-woocommerce/?utm_source=free&utm_medium=wp-image-converter)
     114
     115[Single Ajax Add to Cart For WooCommerce](https://wordpress.org/plugins/ajax-single-add-to-cart-for-woocommerce/?utm_source=free&utm_medium=wp-image-converter)
     116
     117[GIF Uploader](https://wordpress.org/plugins/gif-uploader-wp-grandplugins/?utm_source=free&utm_medium=wp-image-converter)
     118
     119[PDF Password Protect](https://wordpress.org/plugins/pdf-password-protect/?utm_source=free&utm_medium=wp-image-converter)
     120
     121[Paypal Subscriptions](https://wordpress.org/plugins/gpls-paypal-subscriptions/?utm_source=free&utm_medium=wp-image-converter)
    111122
    112123[WP Plugin Creator](https://wpplugincreator.com)
  • image-type-converter/trunk/vendor/autoload.php

    r2923240 r3147978  
    33// autoload.php @generated by Composer
    44
     5if (PHP_VERSION_ID < 50600) {
     6    if (!headers_sent()) {
     7        header('HTTP/1.1 500 Internal Server Error');
     8    }
     9    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
     10    if (!ini_get('display_errors')) {
     11        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
     12            fwrite(STDERR, $err);
     13        } elseif (!headers_sent()) {
     14            echo $err;
     15        }
     16    }
     17    trigger_error(
     18        $err,
     19        E_USER_ERROR
     20    );
     21}
     22
    523require_once __DIR__ . '/composer/autoload_real.php';
    624
  • image-type-converter/trunk/vendor/composer/ClassLoader.php

    r2923240 r3147978  
    4343class ClassLoader
    4444{
     45    /** @var \Closure(string):void */
     46    private static $includeFile;
     47
     48    /** @var string|null */
     49    private $vendorDir;
     50
    4551    // PSR-4
     52    /**
     53     * @var array<string, array<string, int>>
     54     */
    4655    private $prefixLengthsPsr4 = array();
     56    /**
     57     * @var array<string, list<string>>
     58     */
    4759    private $prefixDirsPsr4 = array();
     60    /**
     61     * @var list<string>
     62     */
    4863    private $fallbackDirsPsr4 = array();
    4964
    5065    // PSR-0
     66    /**
     67     * List of PSR-0 prefixes
     68     *
     69     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
     70     *
     71     * @var array<string, array<string, list<string>>>
     72     */
    5173    private $prefixesPsr0 = array();
     74    /**
     75     * @var list<string>
     76     */
    5277    private $fallbackDirsPsr0 = array();
    5378
     79    /** @var bool */
    5480    private $useIncludePath = false;
     81
     82    /**
     83     * @var array<string, string>
     84     */
    5585    private $classMap = array();
     86
     87    /** @var bool */
    5688    private $classMapAuthoritative = false;
     89
     90    /**
     91     * @var array<string, bool>
     92     */
    5793    private $missingClasses = array();
     94
     95    /** @var string|null */
    5896    private $apcuPrefix;
    5997
     98    /**
     99     * @var array<string, self>
     100     */
     101    private static $registeredLoaders = array();
     102
     103    /**
     104     * @param string|null $vendorDir
     105     */
     106    public function __construct($vendorDir = null)
     107    {
     108        $this->vendorDir = $vendorDir;
     109        self::initializeIncludeClosure();
     110    }
     111
     112    /**
     113     * @return array<string, list<string>>
     114     */
    60115    public function getPrefixes()
    61116    {
     
    67122    }
    68123
     124    /**
     125     * @return array<string, list<string>>
     126     */
    69127    public function getPrefixesPsr4()
    70128    {
     
    72130    }
    73131
     132    /**
     133     * @return list<string>
     134     */
    74135    public function getFallbackDirs()
    75136    {
     
    77138    }
    78139
     140    /**
     141     * @return list<string>
     142     */
    79143    public function getFallbackDirsPsr4()
    80144    {
     
    82146    }
    83147
     148    /**
     149     * @return array<string, string> Array of classname => path
     150     */
    84151    public function getClassMap()
    85152    {
     
    88155
    89156    /**
    90      * @param array $classMap Class to filename map
     157     * @param array<string, string> $classMap Class to filename map
     158     *
     159     * @return void
    91160     */
    92161    public function addClassMap(array $classMap)
     
    103172     * appending or prepending to the ones previously set for this prefix.
    104173     *
    105      * @param string       $prefix  The prefix
    106      * @param array|string $paths   The PSR-0 root directories
    107      * @param bool         $prepend Whether to prepend the directories
     174     * @param string              $prefix  The prefix
     175     * @param list<string>|string $paths   The PSR-0 root directories
     176     * @param bool                $prepend Whether to prepend the directories
     177     *
     178     * @return void
    108179     */
    109180    public function add($prefix, $paths, $prepend = false)
    110181    {
     182        $paths = (array) $paths;
    111183        if (!$prefix) {
    112184            if ($prepend) {
    113185                $this->fallbackDirsPsr0 = array_merge(
    114                     (array) $paths,
     186                    $paths,
    115187                    $this->fallbackDirsPsr0
    116188                );
     
    118190                $this->fallbackDirsPsr0 = array_merge(
    119191                    $this->fallbackDirsPsr0,
    120                     (array) $paths
     192                    $paths
    121193                );
    122194            }
     
    127199        $first = $prefix[0];
    128200        if (!isset($this->prefixesPsr0[$first][$prefix])) {
    129             $this->prefixesPsr0[$first][$prefix] = (array) $paths;
     201            $this->prefixesPsr0[$first][$prefix] = $paths;
    130202
    131203            return;
     
    133205        if ($prepend) {
    134206            $this->prefixesPsr0[$first][$prefix] = array_merge(
    135                 (array) $paths,
     207                $paths,
    136208                $this->prefixesPsr0[$first][$prefix]
    137209            );
     
    139211            $this->prefixesPsr0[$first][$prefix] = array_merge(
    140212                $this->prefixesPsr0[$first][$prefix],
    141                 (array) $paths
     213                $paths
    142214            );
    143215        }
     
    148220     * appending or prepending to the ones previously set for this namespace.
    149221     *
    150      * @param string       $prefix  The prefix/namespace, with trailing '\\'
    151      * @param array|string $paths   The PSR-4 base directories
    152      * @param bool         $prepend Whether to prepend the directories
     222     * @param string              $prefix  The prefix/namespace, with trailing '\\'
     223     * @param list<string>|string $paths   The PSR-4 base directories
     224     * @param bool                $prepend Whether to prepend the directories
    153225     *
    154226     * @throws \InvalidArgumentException
     227     *
     228     * @return void
    155229     */
    156230    public function addPsr4($prefix, $paths, $prepend = false)
    157231    {
     232        $paths = (array) $paths;
    158233        if (!$prefix) {
    159234            // Register directories for the root namespace.
    160235            if ($prepend) {
    161236                $this->fallbackDirsPsr4 = array_merge(
    162                     (array) $paths,
     237                    $paths,
    163238                    $this->fallbackDirsPsr4
    164239                );
     
    166241                $this->fallbackDirsPsr4 = array_merge(
    167242                    $this->fallbackDirsPsr4,
    168                     (array) $paths
     243                    $paths
    169244                );
    170245            }
     
    176251            }
    177252            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
    178             $this->prefixDirsPsr4[$prefix] = (array) $paths;
     253            $this->prefixDirsPsr4[$prefix] = $paths;
    179254        } elseif ($prepend) {
    180255            // Prepend directories for an already registered namespace.
    181256            $this->prefixDirsPsr4[$prefix] = array_merge(
    182                 (array) $paths,
     257                $paths,
    183258                $this->prefixDirsPsr4[$prefix]
    184259            );
     
    187262            $this->prefixDirsPsr4[$prefix] = array_merge(
    188263                $this->prefixDirsPsr4[$prefix],
    189                 (array) $paths
     264                $paths
    190265            );
    191266        }
     
    196271     * replacing any others previously set for this prefix.
    197272     *
    198      * @param string       $prefix The prefix
    199      * @param array|string $paths  The PSR-0 base directories
     273     * @param string              $prefix The prefix
     274     * @param list<string>|string $paths  The PSR-0 base directories
     275     *
     276     * @return void
    200277     */
    201278    public function set($prefix, $paths)
     
    212289     * replacing any others previously set for this namespace.
    213290     *
    214      * @param string       $prefix The prefix/namespace, with trailing '\\'
    215      * @param array|string $paths  The PSR-4 base directories
     291     * @param string              $prefix The prefix/namespace, with trailing '\\'
     292     * @param list<string>|string $paths  The PSR-4 base directories
    216293     *
    217294     * @throws \InvalidArgumentException
     295     *
     296     * @return void
    218297     */
    219298    public function setPsr4($prefix, $paths)
     
    235314     *
    236315     * @param bool $useIncludePath
     316     *
     317     * @return void
    237318     */
    238319    public function setUseIncludePath($useIncludePath)
     
    257338     *
    258339     * @param bool $classMapAuthoritative
     340     *
     341     * @return void
    259342     */
    260343    public function setClassMapAuthoritative($classMapAuthoritative)
     
    277360     *
    278361     * @param string|null $apcuPrefix
     362     *
     363     * @return void
    279364     */
    280365    public function setApcuPrefix($apcuPrefix)
     
    297382     *
    298383     * @param bool $prepend Whether to prepend the autoloader or not
     384     *
     385     * @return void
    299386     */
    300387    public function register($prepend = false)
    301388    {
    302389        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
     390
     391        if (null === $this->vendorDir) {
     392            return;
     393        }
     394
     395        if ($prepend) {
     396            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
     397        } else {
     398            unset(self::$registeredLoaders[$this->vendorDir]);
     399            self::$registeredLoaders[$this->vendorDir] = $this;
     400        }
    303401    }
    304402
    305403    /**
    306404     * Unregisters this instance as an autoloader.
     405     *
     406     * @return void
    307407     */
    308408    public function unregister()
    309409    {
    310410        spl_autoload_unregister(array($this, 'loadClass'));
     411
     412        if (null !== $this->vendorDir) {
     413            unset(self::$registeredLoaders[$this->vendorDir]);
     414        }
    311415    }
    312416
     
    315419     *
    316420     * @param  string    $class The name of the class
    317      * @return bool|null True if loaded, null otherwise
     421     * @return true|null True if loaded, null otherwise
    318422     */
    319423    public function loadClass($class)
    320424    {
    321425        if ($file = $this->findFile($class)) {
    322             includeFile($file);
     426            $includeFile = self::$includeFile;
     427            $includeFile($file);
    323428
    324429            return true;
    325430        }
     431
     432        return null;
    326433    }
    327434
     
    368475    }
    369476
     477    /**
     478     * Returns the currently registered loaders keyed by their corresponding vendor directories.
     479     *
     480     * @return array<string, self>
     481     */
     482    public static function getRegisteredLoaders()
     483    {
     484        return self::$registeredLoaders;
     485    }
     486
     487    /**
     488     * @param  string       $class
     489     * @param  string       $ext
     490     * @return string|false
     491     */
    370492    private function findFileWithExtension($class, $ext)
    371493    {
     
    433555        return false;
    434556    }
     557
     558    /**
     559     * @return void
     560     */
     561    private static function initializeIncludeClosure()
     562    {
     563        if (self::$includeFile !== null) {
     564            return;
     565        }
     566
     567        /**
     568         * Scope isolated include.
     569         *
     570         * Prevents access to $this/self from included files.
     571         *
     572         * @param  string $file
     573         * @return void
     574         */
     575        self::$includeFile = \Closure::bind(static function($file) {
     576            include $file;
     577        }, null, null);
     578    }
    435579}
    436 
    437 /**
    438  * Scope isolated include.
    439  *
    440  * Prevents access to $this/self from included files.
    441  */
    442 function includeFile($file)
    443 {
    444     include $file;
    445 }
  • image-type-converter/trunk/vendor/composer/autoload_classmap.php

    r2923240 r3147978  
    33// autoload_classmap.php @generated by Composer
    44
    5 $vendorDir = dirname(dirname(__FILE__));
     5$vendorDir = dirname(__DIR__);
    66$baseDir = dirname($vendorDir);
    77
     
    1111    'GPLSCore\\GPLS_PLUGIN_WICOR\\Core\\Core' => $baseDir . '/includes/Core/Core.php',
    1212    'GPLSCore\\GPLS_PLUGIN_WICOR\\ImageConverter' => $baseDir . '/includes/ImageConverter.php',
     13    'GPLSCore\\GPLS_PLUGIN_WICOR\\ImageOptimizer' => $baseDir . '/includes/ImageOptimizer.php',
    1314    'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgConversionHistoryMetaBox' => $baseDir . '/includes/MetaBoxes/ImgConversionHistoryMetaBox.php',
    1415    'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgConverterMetaBox' => $baseDir . '/includes/MetaBoxes/ImgConverterMetaBox.php',
    1516    'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgSubsizesMetaBox' => $baseDir . '/includes/MetaBoxes/ImgSubsizesMetaBox.php',
    1617    'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\MetaBoxesBase\\MetaBox' => $baseDir . '/includes/MetaBoxes/MetaBoxesBase/MetaBox.php',
    17     'GPLSCore\\GPLS_PLUGIN_WICOR\\Modules\\SelectImages\\Queries' => $baseDir . '/includes/Modules/SelectImages/Queries.php',
    1818    'GPLSCore\\GPLS_PLUGIN_WICOR\\Modules\\SelectImages\\SelectImagesModule' => $baseDir . '/includes/Modules/SelectImages/SelectImagesModule.php',
    1919    'GPLSCore\\GPLS_PLUGIN_WICOR\\Pages\\PagesBase\\AdminPage' => $baseDir . '/includes/Pages/PagesBase/AdminPage.php',
    2020    'GPLSCore\\GPLS_PLUGIN_WICOR\\Pages\\SettingsPage' => $baseDir . '/includes/Pages/SettingsPage.php',
    2121    'GPLSCore\\GPLS_PLUGIN_WICOR\\Plugin' => $baseDir . '/includes/Plugin.php',
     22    'GPLSCore\\GPLS_PLUGIN_WICOR\\QuickImageConverter' => $baseDir . '/includes/QuickImageConverter.php',
    2223    'GPLSCore\\GPLS_PLUGIN_WICOR\\Settings\\MainSettings' => $baseDir . '/includes/Settings/MainSettings.php',
    2324    'GPLSCore\\GPLS_PLUGIN_WICOR\\Settings\\SettingsBase\\Settings' => $baseDir . '/includes/Settings/SettingsBase/Settings.php',
     
    3940    'GPLSCore\\GPLS_PLUGIN_WICOR\\Utils\\Img\\ImgUtilsTrait' => $baseDir . '/includes/Utils/Img/ImgUtilsTrait.php',
    4041    'GPLSCore\\GPLS_PLUGIN_WICOR\\Utils\\NoticeUtilsTrait' => $baseDir . '/includes/Utils/NoticeUtilsTrait.php',
     42    'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php',
     43    'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php',
     44    'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php',
     45    'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php',
     46    'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php',
     47    'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php',
     48    'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php',
     49    'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php',
     50    'Spatie\\ImageOptimizer\\DummyLogger' => $vendorDir . '/spatie/image-optimizer/src/DummyLogger.php',
     51    'Spatie\\ImageOptimizer\\Image' => $vendorDir . '/spatie/image-optimizer/src/Image.php',
     52    'Spatie\\ImageOptimizer\\Optimizer' => $vendorDir . '/spatie/image-optimizer/src/Optimizer.php',
     53    'Spatie\\ImageOptimizer\\OptimizerChain' => $vendorDir . '/spatie/image-optimizer/src/OptimizerChain.php',
     54    'Spatie\\ImageOptimizer\\OptimizerChainFactory' => $vendorDir . '/spatie/image-optimizer/src/OptimizerChainFactory.php',
     55    'Spatie\\ImageOptimizer\\Optimizers\\Avifenc' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Avifenc.php',
     56    'Spatie\\ImageOptimizer\\Optimizers\\BaseOptimizer' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/BaseOptimizer.php',
     57    'Spatie\\ImageOptimizer\\Optimizers\\Cwebp' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Cwebp.php',
     58    'Spatie\\ImageOptimizer\\Optimizers\\Gifsicle' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Gifsicle.php',
     59    'Spatie\\ImageOptimizer\\Optimizers\\Jpegoptim' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Jpegoptim.php',
     60    'Spatie\\ImageOptimizer\\Optimizers\\Optipng' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Optipng.php',
     61    'Spatie\\ImageOptimizer\\Optimizers\\Pngquant' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Pngquant.php',
     62    'Spatie\\ImageOptimizer\\Optimizers\\Svgo' => $vendorDir . '/spatie/image-optimizer/src/Optimizers/Svgo.php',
     63    'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php',
     64    'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php',
     65    'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php',
     66    'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
     67    'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
     68    'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
     69    'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php',
     70    'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
     71    'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
     72    'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
     73    'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php',
     74    'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php',
     75    'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php',
     76    'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
     77    'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
     78    'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php',
     79    'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
     80    'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
     81    'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
     82    'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php',
     83    'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php',
     84    'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php',
    4185);
  • image-type-converter/trunk/vendor/composer/autoload_files.php

    r2923240 r3147978  
    33// autoload_files.php @generated by Composer
    44
    5 $vendorDir = dirname(dirname(__FILE__));
     5$vendorDir = dirname(__DIR__);
    66$baseDir = dirname($vendorDir);
    77
  • image-type-converter/trunk/vendor/composer/autoload_namespaces.php

    r2923240 r3147978  
    33// autoload_namespaces.php @generated by Composer
    44
    5 $vendorDir = dirname(dirname(__FILE__));
     5$vendorDir = dirname(__DIR__);
    66$baseDir = dirname($vendorDir);
    77
  • image-type-converter/trunk/vendor/composer/autoload_psr4.php

    r2923240 r3147978  
    33// autoload_psr4.php @generated by Composer
    44
    5 $vendorDir = dirname(dirname(__FILE__));
     5$vendorDir = dirname(__DIR__);
    66$baseDir = dirname($vendorDir);
    77
    88return array(
     9    'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
     10    'Spatie\\ImageOptimizer\\' => array($vendorDir . '/spatie/image-optimizer/src'),
     11    'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
    912    'GPLSCore\\GPLS_PLUGIN_WICOR\\' => array($baseDir . '/includes'),
    1013);
  • image-type-converter/trunk/vendor/composer/autoload_real.php

    r2923240 r3147978  
    2424
    2525        spl_autoload_register(array('ComposerAutoloaderInit1c5999bf04890dab0722c6c1d2c45267', 'loadClassLoader'), true, true);
    26         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
     26        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    2727        spl_autoload_unregister(array('ComposerAutoloaderInit1c5999bf04890dab0722c6c1d2c45267', 'loadClassLoader'));
    2828
    29         $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
    30         if ($useStaticLoader) {
    31             require __DIR__ . '/autoload_static.php';
    32 
    33             call_user_func(\Composer\Autoload\ComposerStaticInit1c5999bf04890dab0722c6c1d2c45267::getInitializer($loader));
    34         } else {
    35             $map = require __DIR__ . '/autoload_namespaces.php';
    36             foreach ($map as $namespace => $path) {
    37                 $loader->set($namespace, $path);
    38             }
    39 
    40             $map = require __DIR__ . '/autoload_psr4.php';
    41             foreach ($map as $namespace => $path) {
    42                 $loader->setPsr4($namespace, $path);
    43             }
    44 
    45             $classMap = require __DIR__ . '/autoload_classmap.php';
    46             if ($classMap) {
    47                 $loader->addClassMap($classMap);
    48             }
    49         }
     29        require __DIR__ . '/autoload_static.php';
     30        call_user_func(\Composer\Autoload\ComposerStaticInit1c5999bf04890dab0722c6c1d2c45267::getInitializer($loader));
    5031
    5132        $loader->register(true);
    5233
    53         if ($useStaticLoader) {
    54             $includeFiles = Composer\Autoload\ComposerStaticInit1c5999bf04890dab0722c6c1d2c45267::$files;
    55         } else {
    56             $includeFiles = require __DIR__ . '/autoload_files.php';
    57         }
    58         foreach ($includeFiles as $fileIdentifier => $file) {
    59             composerRequire1c5999bf04890dab0722c6c1d2c45267($fileIdentifier, $file);
     34        $filesToLoad = \Composer\Autoload\ComposerStaticInit1c5999bf04890dab0722c6c1d2c45267::$files;
     35        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
     36            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
     37                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
     38
     39                require $file;
     40            }
     41        }, null, null);
     42        foreach ($filesToLoad as $fileIdentifier => $file) {
     43            $requireFile($fileIdentifier, $file);
    6044        }
    6145
     
    6347    }
    6448}
    65 
    66 function composerRequire1c5999bf04890dab0722c6c1d2c45267($fileIdentifier, $file)
    67 {
    68     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
    69         require $file;
    70 
    71         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    72     }
    73 }
  • image-type-converter/trunk/vendor/composer/autoload_static.php

    r2923240 r3147978  
    1414
    1515    public static $prefixLengthsPsr4 = array (
     16        'S' =>
     17        array (
     18            'Symfony\\Component\\Process\\' => 26,
     19            'Spatie\\ImageOptimizer\\' => 22,
     20        ),
     21        'P' =>
     22        array (
     23            'Psr\\Log\\' => 8,
     24        ),
    1625        'G' =>
    1726        array (
     
    2130
    2231    public static $prefixDirsPsr4 = array (
     32        'Symfony\\Component\\Process\\' =>
     33        array (
     34            0 => __DIR__ . '/..' . '/symfony/process',
     35        ),
     36        'Spatie\\ImageOptimizer\\' =>
     37        array (
     38            0 => __DIR__ . '/..' . '/spatie/image-optimizer/src',
     39        ),
     40        'Psr\\Log\\' =>
     41        array (
     42            0 => __DIR__ . '/..' . '/psr/log/src',
     43        ),
    2344        'GPLSCore\\GPLS_PLUGIN_WICOR\\' =>
    2445        array (
     
    3253        'GPLSCore\\GPLS_PLUGIN_WICOR\\Core\\Core' => __DIR__ . '/../..' . '/includes/Core/Core.php',
    3354        'GPLSCore\\GPLS_PLUGIN_WICOR\\ImageConverter' => __DIR__ . '/../..' . '/includes/ImageConverter.php',
     55        'GPLSCore\\GPLS_PLUGIN_WICOR\\ImageOptimizer' => __DIR__ . '/../..' . '/includes/ImageOptimizer.php',
    3456        'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgConversionHistoryMetaBox' => __DIR__ . '/../..' . '/includes/MetaBoxes/ImgConversionHistoryMetaBox.php',
    3557        'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgConverterMetaBox' => __DIR__ . '/../..' . '/includes/MetaBoxes/ImgConverterMetaBox.php',
    3658        'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\ImgSubsizesMetaBox' => __DIR__ . '/../..' . '/includes/MetaBoxes/ImgSubsizesMetaBox.php',
    3759        'GPLSCore\\GPLS_PLUGIN_WICOR\\MetaBoxes\\MetaBoxesBase\\MetaBox' => __DIR__ . '/../..' . '/includes/MetaBoxes/MetaBoxesBase/MetaBox.php',
    38         'GPLSCore\\GPLS_PLUGIN_WICOR\\Modules\\SelectImages\\Queries' => __DIR__ . '/../..' . '/includes/Modules/SelectImages/Queries.php',
    3960        'GPLSCore\\GPLS_PLUGIN_WICOR\\Modules\\SelectImages\\SelectImagesModule' => __DIR__ . '/../..' . '/includes/Modules/SelectImages/SelectImagesModule.php',
    4061        'GPLSCore\\GPLS_PLUGIN_WICOR\\Pages\\PagesBase\\AdminPage' => __DIR__ . '/../..' . '/includes/Pages/PagesBase/AdminPage.php',
    4162        'GPLSCore\\GPLS_PLUGIN_WICOR\\Pages\\SettingsPage' => __DIR__ . '/../..' . '/includes/Pages/SettingsPage.php',
    4263        'GPLSCore\\GPLS_PLUGIN_WICOR\\Plugin' => __DIR__ . '/../..' . '/includes/Plugin.php',
     64        'GPLSCore\\GPLS_PLUGIN_WICOR\\QuickImageConverter' => __DIR__ . '/../..' . '/includes/QuickImageConverter.php',
    4365        'GPLSCore\\GPLS_PLUGIN_WICOR\\Settings\\MainSettings' => __DIR__ . '/../..' . '/includes/Settings/MainSettings.php',
    4466        'GPLSCore\\GPLS_PLUGIN_WICOR\\Settings\\SettingsBase\\Settings' => __DIR__ . '/../..' . '/includes/Settings/SettingsBase/Settings.php',
     
    6082        'GPLSCore\\GPLS_PLUGIN_WICOR\\Utils\\Img\\ImgUtilsTrait' => __DIR__ . '/../..' . '/includes/Utils/Img/ImgUtilsTrait.php',
    6183        'GPLSCore\\GPLS_PLUGIN_WICOR\\Utils\\NoticeUtilsTrait' => __DIR__ . '/../..' . '/includes/Utils/NoticeUtilsTrait.php',
     84        'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php',
     85        'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php',
     86        'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php',
     87        'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php',
     88        'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php',
     89        'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php',
     90        'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php',
     91        'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php',
     92        'Spatie\\ImageOptimizer\\DummyLogger' => __DIR__ . '/..' . '/spatie/image-optimizer/src/DummyLogger.php',
     93        'Spatie\\ImageOptimizer\\Image' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Image.php',
     94        'Spatie\\ImageOptimizer\\Optimizer' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizer.php',
     95        'Spatie\\ImageOptimizer\\OptimizerChain' => __DIR__ . '/..' . '/spatie/image-optimizer/src/OptimizerChain.php',
     96        'Spatie\\ImageOptimizer\\OptimizerChainFactory' => __DIR__ . '/..' . '/spatie/image-optimizer/src/OptimizerChainFactory.php',
     97        'Spatie\\ImageOptimizer\\Optimizers\\Avifenc' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Avifenc.php',
     98        'Spatie\\ImageOptimizer\\Optimizers\\BaseOptimizer' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/BaseOptimizer.php',
     99        'Spatie\\ImageOptimizer\\Optimizers\\Cwebp' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Cwebp.php',
     100        'Spatie\\ImageOptimizer\\Optimizers\\Gifsicle' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Gifsicle.php',
     101        'Spatie\\ImageOptimizer\\Optimizers\\Jpegoptim' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Jpegoptim.php',
     102        'Spatie\\ImageOptimizer\\Optimizers\\Optipng' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Optipng.php',
     103        'Spatie\\ImageOptimizer\\Optimizers\\Pngquant' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Pngquant.php',
     104        'Spatie\\ImageOptimizer\\Optimizers\\Svgo' => __DIR__ . '/..' . '/spatie/image-optimizer/src/Optimizers/Svgo.php',
     105        'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php',
     106        'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php',
     107        'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php',
     108        'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
     109        'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
     110        'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
     111        'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php',
     112        'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
     113        'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
     114        'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
     115        'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php',
     116        'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php',
     117        'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php',
     118        'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
     119        'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
     120        'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php',
     121        'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
     122        'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
     123        'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
     124        'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php',
     125        'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php',
     126        'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php',
    62127    );
    63128
Note: See TracChangeset for help on using the changeset viewer.