Plugin Directory

Changeset 3229081


Ignore:
Timestamp:
01/27/2025 04:58:31 AM (13 months ago)
Author:
wpt00ls
Message:

security update

Location:
wptools-masonry-gallery-posts-for-divi
Files:
326 added
18 edited

Legend:

Unmodified
Added
Removed
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/assets/css/admin/common.css

    r3180624 r3229081  
    1 .fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{margin-top:10px;position:relative;text-align:center;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{background:#ececec;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);color:#ccc;cursor:pointer;display:inline-block;height:18px;padding:6px 6px 5px;position:relative;text-shadow:0 1px 1px hsla(0,0%,100%,.8)}.fs-switch span{display:inline-block;text-transform:uppercase;width:35px}.fs-switch .fs-toggle{background-color:#fff;background-image:linear-gradient(180deg,#ececec,#fff);border:1px solid rgba(0,0,0,.3);border-radius:4px;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.5);height:25px;position:absolute;top:1px;transition:.4s cubic-bezier(.54,1.6,.5,1);width:37px;z-index:999}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{border-radius:24px;padding:4px 25px;top:8px}.fs-switch.fs-round .fs-toggle{border-radius:24px;height:24px;top:0;width:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{border-radius:18px;height:18px;top:0;width:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait!important}#fs_frame{font-size:0;line-height:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{background-color:#f2fcff!important;border-color:#00a0d2!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{color:#aaa;cursor:pointer;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{display:inline-block;margin-top:7px}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);border-radius:0 0 3px 3px;bottom:auto;color:#fff;cursor:auto;font-size:12px;font-weight:700;left:10px;padding:2px 10px;position:absolute;right:auto;top:100%}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}#fs_connect .fs-error .fs-api-request-error-details,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error ol,.fs-modal .notice-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error ol,.fs-notice.error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error ol{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{box-shadow:none;color:#2271b1;text-decoration:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;max-height:150px;overflow:auto;padding:5px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{background:#ebfdeb;box-shadow:0 2px 2px rgba(6,113,6,.3);color:green;left:160px;opacity:.95;padding:10px 20px;position:fixed;right:0;top:32px;z-index:9989}.fs-secure-notice:hover{opacity:1}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:1250px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;text-align:center;top:46px}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain;border:0;display:inline-block;height:20px;margin-bottom:-2px;margin-right:5px;vertical-align:sub;width:20px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{background-color:#d54e21;border:0;color:#f9f9f9;margin-top:10px;padding:10px}
     1.fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{margin-top:10px;position:relative;text-align:center;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{background:#ececec;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);color:#ccc;cursor:pointer;display:inline-block;height:18px;padding:6px 6px 5px;position:relative;text-shadow:0 1px 1px hsla(0,0%,100%,.8)}.fs-switch span{display:inline-block;text-transform:uppercase;width:35px}.fs-switch .fs-toggle{background-color:#fff;background-image:linear-gradient(180deg,#ececec,#fff);border:1px solid rgba(0,0,0,.3);border-radius:4px;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.5);height:25px;position:absolute;top:1px;transition:.4s cubic-bezier(.54,1.6,.5,1);width:37px;z-index:999}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{border-radius:24px;padding:4px 25px;top:8px}.fs-switch.fs-round .fs-toggle{border-radius:24px;height:24px;top:0;width:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{border-radius:18px;height:18px;top:0;width:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait!important}#fs_frame{font-size:0;line-height:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{background-color:#f2fcff!important;border-color:#00a0d2!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-notice-body .fs-trial-message-container{align-items:center;display:flex;flex-wrap:wrap;gap:5px}.fs-notice .fs-close{color:#aaa;cursor:pointer;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{display:inline-block;margin-top:7px}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);border-radius:0 0 3px 3px;bottom:auto;color:#fff;cursor:auto;font-size:12px;font-weight:700;left:10px;padding:2px 10px;position:absolute;right:auto;top:100%}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}#fs_connect .fs-error .fs-api-request-error-details,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error ol,.fs-modal .notice-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error ol,.fs-notice.error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error ol{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{box-shadow:none;color:#2271b1;text-decoration:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;max-height:150px;overflow:auto;padding:5px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{background:#ebfdeb;box-shadow:0 2px 2px rgba(6,113,6,.3);color:green;left:160px;opacity:.95;padding:10px 20px;position:fixed;right:0;top:32px;z-index:9989}.fs-secure-notice:hover{opacity:1}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:1250px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;text-align:center;top:46px}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain;border:0;display:inline-block;height:20px;margin-bottom:-2px;margin-right:5px;vertical-align:sub;width:20px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{background-color:#d54e21;border:0;color:#f9f9f9;margin-top:10px;padding:10px}
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/class-freemius.php

    r3180624 r3229081  
    109109         */
    110110        private $_enable_anonymous = true;
     111
     112        /**
     113         * @since 2.9.1
     114         * @var string|null Hints the SDK whether the plugin supports parallel activation mode, preventing the auto-deactivation of the free version when the premium version is activated, and vice versa.
     115         */
     116        private $_premium_plugin_basename_from_parallel_activation;
    111117
    112118        /**
     
    16521658                }
    16531659            }
     1660
     1661            if (
     1662                $this->is_user_in_admin() &&
     1663                $this->is_parallel_activation() &&
     1664                $this->_premium_plugin_basename !== $this->_premium_plugin_basename_from_parallel_activation
     1665            ) {
     1666                $this->_premium_plugin_basename = $this->_premium_plugin_basename_from_parallel_activation;
     1667
     1668                register_activation_hook(
     1669                    dirname( $this->_plugin_dir_path ) . '/' . $this->_premium_plugin_basename,
     1670                    array( &$this, '_activate_plugin_event_hook' )
     1671                );
     1672            }
     1673        }
     1674
     1675        /**
     1676         * Determines if a plugin is running in parallel activation mode.
     1677         *
     1678         * @author Leo Fajardo (@leorw)
     1679         * @since 2.9.1
     1680         *
     1681         * @return bool
     1682         */
     1683        private function is_parallel_activation() {
     1684            return ! empty( $this->_premium_plugin_basename_from_parallel_activation );
    16541685        }
    16551686
     
    51565187                new FS_Plugin();
    51575188
     5189            $is_premium     = $this->get_bool_option( $plugin_info, 'is_premium', true );
    51585190            $premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
     5191
     5192            $module_type = $this->get_option( $plugin_info, 'type', $this->_module_type );
     5193
     5194            $parallel_activation = $this->get_option( $plugin_info, 'parallel_activation' );
     5195
     5196            if (
     5197                ! $is_premium &&
     5198                is_array( $parallel_activation ) &&
     5199                ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ) &&
     5200                $this->get_bool_option( $parallel_activation, 'enabled' )
     5201            ) {
     5202                $premium_basename = $this->get_option( $parallel_activation, 'premium_version_basename' );
     5203
     5204                if ( empty( $premium_basename ) ) {
     5205                    throw new Exception('You need to specify the premium version basename to enable parallel version activation.');
     5206                }
     5207
     5208                $this->_premium_plugin_basename_from_parallel_activation = $premium_basename;
     5209
     5210                if ( is_plugin_active( $premium_basename ) ) {
     5211                    $is_premium = true;
     5212                }
     5213            }
    51595214
    51605215            $plugin->update( array(
    51615216                'id'                   => $id,
    5162                 'type'                 => $this->get_option( $plugin_info, 'type', $this->_module_type ),
     5217                'type'                 => $module_type,
    51635218                'public_key'           => $public_key,
    51645219                'slug'                 => $this->_slug,
     
    51685223                'title'                => $this->get_plugin_name( $premium_suffix ),
    51695224                'file'                 => $this->_plugin_basename,
    5170                 'is_premium'           => $this->get_bool_option( $plugin_info, 'is_premium', true ),
     5225                'is_premium'           => $is_premium,
    51715226                'premium_suffix'       => $premium_suffix,
    51725227                'is_live'              => $this->get_bool_option( $plugin_info, 'is_live', true ),
     
    52375292            } else {
    52385293                $this->_enable_anonymous = $this->get_bool_option( $plugin_info, 'enable_anonymous', true );
    5239                 $this->_anonymous_mode   = $this->get_bool_option( $plugin_info, 'anonymous_mode', false );
     5294                $this->_anonymous_mode   = (
     5295                    $this->get_bool_option( $plugin_info, 'anonymous_mode', false ) ||
     5296                    (
     5297                        $this->apply_filters( 'playground_anonymous_mode', true ) &&
     5298                        ! empty( $_SERVER['HTTP_HOST'] ) &&
     5299                        FS_Site::is_playground_wp_environment_by_host( $_SERVER['HTTP_HOST'] )
     5300                    )
     5301                );
    52405302            }
    52415303            $this->_permissions = $this->get_option( $plugin_info, 'permissions', array() );
     
    54455507            if ( $this->is_registered() ) {
    54465508                // Schedule code type changes event.
    5447                 $this->schedule_install_sync();
     5509                $this->maybe_schedule_install_sync_cron();
    54485510            }
    54495511
     
    65096571
    65106572        /**
     6573         * Instead of running blocking install sync event, execute non blocking scheduled cron job.
     6574         *
     6575         * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding specified blog ID from being the cron job executor.
     6576         *
     6577         * @author Leo Fajardo (@leorw)
     6578         * @since  2.9.1
     6579         */
     6580        private function maybe_schedule_install_sync_cron( $except_blog_id = 0 ) {
     6581            if ( ! $this->is_user_in_admin() ) {
     6582                return;
     6583            }
     6584
     6585            if ( $this->is_clone() ) {
     6586                return;
     6587            }
     6588
     6589            if (
     6590                // The event has been properly scheduled, so no need to reschedule it.
     6591                is_numeric( $this->next_install_sync() )
     6592            ) {
     6593                return;
     6594            }
     6595
     6596            $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
     6597        }
     6598
     6599        /**
    65116600         * @author Vova Feldman (@svovaf)
    65126601         * @since  1.1.7.3
     
    66036692        private function get_install_sync_cron_blog_id() {
    66046693            return $this->get_cron_blog_id( 'install_sync' );
    6605         }
    6606 
    6607         /**
    6608          * Instead of running blocking install sync event, execute non blocking scheduled wp-cron.
    6609          *
    6610          * @author Vova Feldman (@svovaf)
    6611          * @since  1.1.7.3
    6612          *
    6613          * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding excluded specified blog ID from being the cron executor.
    6614          */
    6615         private function schedule_install_sync( $except_blog_id = 0 ) {
    6616             if ( $this->is_clone() ) {
    6617                 return;
    6618             }
    6619 
    6620             $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
    66216694        }
    66226695
     
    74127485                if (
    74137486                    is_plugin_active( $other_version_basename ) &&
    7414                     $this->apply_filters( 'deactivate_on_activation', true )
     7487                    $this->apply_filters( 'deactivate_on_activation', ! $this->is_parallel_activation() )
    74157488                ) {
    74167489                    deactivate_plugins( $other_version_basename );
     
    74267499                // Schedule re-activation event and sync.
    74277500//              $this->sync_install( array(), true );
    7428                 $this->schedule_install_sync();
     7501                $this->maybe_schedule_install_sync_cron();
    74297502
    74307503                // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
     
    86178690            }
    86188691
    8619             $this->schedule_install_sync();
     8692            $this->maybe_schedule_install_sync_cron();
    86208693//          $this->sync_install( array(), true );
    86218694        }
     
    1597516048                 $context_blog_id == $this->get_install_sync_cron_blog_id()
    1597616049            ) {
    15977                 $this->schedule_install_sync( $context_blog_id );
     16050                $this->maybe_schedule_install_sync_cron( $context_blog_id );
    1597816051            }
    1597916052        }
     
    2392824001            // Start trial button.
    2392924002            $button = ' ' . sprintf(
    23930                     '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
     24003                    '<div><a class="button button-primary" href="%s">%s &nbsp;&#10140;</a></div>',
    2393124004                    $trial_url,
    2393224005                    $this->get_text_x_inline( 'Start free trial', 'call to action', 'start-free-trial' )
    2393324006                );
    2393424007
     24008            $message_text = $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string}" );
     24009
    2393524010            $this->_admin_notices->add_sticky(
    23936                 $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string} {$button}" ),
     24011                "<div class=\"fs-trial-message-container\"><div>{$message_text}</div> {$button}</div>",
    2393724012                'trial_promotion',
    2393824013                '',
     
    2540425479
    2540525480                // Locate the main assets folder.
    25406                 if ( 1 < count( $fs_active_plugins->plugins ) ) {
     25481                if ( ! empty( $fs_active_plugins->plugins ) ) {
    2540725482                    $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
    2540825483
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/class-fs-plugin-updater.php

    r3180624 r3229081  
    543543            global $wp_current_filter;
    544544
    545             $current_plugin_version = $this->_fs->get_plugin_version();
    546 
    547             if ( ! empty( $wp_current_filter ) && 'upgrader_process_complete' === $wp_current_filter[0] ) {
    548                 if (
    549                     is_null( $this->_update_details ) ||
    550                     ( is_object( $this->_update_details ) && $this->_update_details->new_version !== $current_plugin_version )
    551                 ) {
    552                     /**
    553                      * After an update, clear the stored update details and reparse the plugin's main file in order to get
    554                      * the updated version's information and prevent the previous update information from showing up on the
    555                      * updates page.
    556                      *
    557                      * @author Leo Fajardo (@leorw)
    558                      * @since 2.3.1
    559                      */
    560                     $this->_update_details  = null;
    561                     $current_plugin_version = $this->_fs->get_plugin_version( true );
    562                 }
     545            if ( ! empty( $wp_current_filter ) && in_array( 'upgrader_process_complete', $wp_current_filter ) ) {
     546                return $transient_data;
    563547            }
    564548
     
    569553                    fs_request_get_bool( 'force-check' ),
    570554                    FS_Plugin_Updater::UPDATES_CHECK_CACHE_EXPIRATION,
    571                     $current_plugin_version
     555                    $this->_fs->get_plugin_version()
    572556                );
    573557
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/entities/class-fs-plugin-plan.php

    r3180624 r3229081  
    1414     * Class FS_Plugin_Plan
    1515     *
    16      * @property FS_Pricing[] $pricing
    1716     */
    1817    class FS_Plugin_Plan extends FS_Entity {
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/entities/class-fs-site.php

    r3180624 r3229081  
    1111    }
    1212
    13     /**
    14      * @property int $blog_id
    15      */
    16     #[AllowDynamicProperties]
    1713    class FS_Site extends FS_Scope_Entity {
    1814        /**
     
    2016         */
    2117        public $site_id;
     18        /**
     19         * @var int
     20         */
     21        public $blog_id;
    2222        /**
    2323         * @var number
     
    191191                // Kinsta
    192192                (
    193                     ( fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
     193                    ( fs_starts_with( $subdomain, 'stg-' ) ||  fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
    194194                    ( fs_ends_with( $subdomain, '.kinsta.com' ) || fs_ends_with( $subdomain, '.kinsta.cloud' ) )
    195195                ) ||
     
    209209        }
    210210
     211        /**
     212         * @author Leo Fajardo (@leorw)
     213         * @since  2.9.1
     214         *
     215         * @param string $host
     216         *
     217         * @return bool
     218         */
     219        static function is_playground_wp_environment_by_host( $host ) {
     220            // Services aimed at providing a WordPress sandbox environment.
     221            $sandbox_wp_environment_domains = array(
     222                // InstaWP
     223                'instawp.xyz',
     224
     225                // TasteWP
     226                'tastewp.com',
     227
     228                // WordPress Playground
     229                'playground.wordpress.net',
     230            );
     231
     232            foreach ( $sandbox_wp_environment_domains as $domain) {
     233                if (
     234                    ( $host === $domain ) ||
     235                    fs_ends_with( $host, '.' . $domain ) ||
     236                    fs_ends_with( $host, '-' . $domain )
     237                ) {
     238                    return true;
     239                }
     240            }
     241
     242            return false;
     243        }
     244
    211245        function is_localhost() {
    212246            return ( WP_FS__IS_LOCALHOST_FOR_SERVER || self::is_localhost_by_address( $this->url ) );
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/entities/class-fs-user.php

    r2854326 r3229081  
    4949        }
    5050
     51        /**
     52         * This method removes the deprecated 'is_beta' property from the serialized data.
     53         * Should clean up the serialized data to avoid PHP 8.2 warning on next execution.
     54         *
     55         * @return void
     56         */
     57        function __wakeup() {
     58            if ( property_exists( $this, 'is_beta' ) ) {
     59                // If we enter here, and we are running PHP 8.2, we already had the warning. But we sanitize data for next execution.
     60                unset( $this->is_beta );
     61            }
     62        }
     63
    5164        function get_name() {
    5265            return trim( ucfirst( trim( is_string( $this->first ) ? $this->first : '' ) ) . ' ' . ucfirst( trim( is_string( $this->last ) ? $this->last : '' ) ) );
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/managers/class-fs-admin-menu-manager.php

    r2567127 r3229081  
    700700            }
    701701
     702            $menu_slug   = $menu['menu'][2];
    702703            $parent_slug = isset( $menu['parent_slug'] ) ?
    703                 $menu['parent_slug'] :
    704                 'admin.php';
    705 
    706             return admin_url(
    707                 $parent_slug .
    708                 ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
    709                 'page=' .
    710                 $menu['menu'][2]
    711             );
     704                $menu['parent_slug'] :
     705                'admin.php';
     706
     707            if ( fs_apply_filter( $this->_module_unique_affix, 'enable_cpt_advanced_menu_logic', false ) ) {
     708                $parent_slug = 'admin.php';
     709
     710                /**
     711                 * This line and the `if` block below it are based on the `menu_page_url()` function of WordPress.
     712                 *
     713                 * @author Leo Fajardo (@leorw)
     714                 * @since 2.10.2
     715                 */
     716                global $_parent_pages;
     717
     718                if ( ! empty( $_parent_pages[ $menu_slug ] ) ) {
     719                    $_parent_slug = $_parent_pages[ $menu_slug ];
     720                    $parent_slug  = isset( $_parent_pages[ $_parent_slug ] ) ?
     721                        $parent_slug :
     722                        $menu['parent_slug'];
     723                }
     724            }
     725
     726            return admin_url(
     727                $parent_slug .
     728                ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
     729                'page=' .
     730                $menu_slug
     731            );
    712732        }
    713733
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/includes/managers/class-fs-admin-notice-manager.php

    r2854326 r3229081  
    195195         */
    196196        static function _add_sticky_dismiss_javascript() {
     197            $sticky_admin_notice_js_template_name = 'sticky-admin-notice-js.php';
     198
     199            if ( ! file_exists( fs_get_template_path( $sticky_admin_notice_js_template_name ) ) ) {
     200                return;
     201            }
     202
    197203            $params = array();
    198             fs_require_once_template( 'sticky-admin-notice-js.php', $params );
     204            fs_require_once_template( $sticky_admin_notice_js_template_name, $params );
    199205        }
    200206
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/start.php

    r3180624 r3229081  
    1616     * @var string
    1717     */
    18     $this_sdk_version = '2.9.0';
     18    $this_sdk_version = '2.11.0';
    1919
    2020    #region SDK Selection Logic --------------------------------------------------------------------
     
    3737    }
    3838
    39     /**
     39    /**
     40     * We updated the logic to support SDK loading from a subfolder of a theme as well as from a parent theme
     41     * If the SDK is found in the active theme, it sets the relative path accordingly.
     42     * If not, it checks the parent theme and sets the relative path if found there.
     43     * This allows the SDK to be loaded from composer dependencies or from a custom `vendor/freemius` folder.
     44     *
     45     * @author Daniele Alessandra (@DanieleAlessandra)
     46     * @since  2.9.0.5
     47     *
     48     *
    4049     * This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
    4150     * that if it's a file from an SDK running in a theme, the location of the SDK
     
    8493    $themes_directory         = get_theme_root( get_stylesheet() );
    8594    $themes_directory_name    = basename( $themes_directory );
    86     $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
    87 
    88     if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
    89     ) {
    90         $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
    91         $is_theme               = true;
    92     } else {
    93         $this_sdk_relative_path = plugin_basename( $fs_root_path );
    94         $is_theme               = false;
    95     }
     95
     96    // This change ensures that the condition works even if the SDK is located in a subdirectory (e.g., vendor)
     97    $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_stylesheet() . '/', '', $fs_root_path );
     98
     99    // Check if the current file is part of the active theme.
     100    $is_current_sdk_from_active_theme = $file_path == $themes_directory . '/' . get_stylesheet() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
     101    $is_current_sdk_from_parent_theme = false;
     102
     103    // Check if the current file is part of the parent theme.
     104    if ( ! $is_current_sdk_from_active_theme ) {
     105        $theme_candidate_sdk_basename     = str_replace( $themes_directory . '/' . get_template() . '/',
     106            '',
     107            $fs_root_path );
     108        $is_current_sdk_from_parent_theme = $file_path == $themes_directory . '/' . get_template() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
     109    }
     110
     111    $theme_name = null;
     112    if ( $is_current_sdk_from_active_theme ) {
     113        $theme_name             = get_stylesheet();
     114        $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
     115        $is_theme               = true;
     116    } else if ( $is_current_sdk_from_parent_theme ) {
     117        $theme_name             = get_template();
     118        $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
     119        $is_theme               = true;
     120    } else {
     121        $this_sdk_relative_path = plugin_basename( $fs_root_path );
     122        $is_theme               = false;
     123
     124        /**
     125         * If this file was included from another plugin with lower SDK version, and if this plugin is symlinked, then we need to get the actual plugin path,
     126         * as the value right now will be wrong, it will only remove the directory separator from the file_path.
     127         *
     128         * The check of `fs_find_direct_caller_plugin_file` determines that this file was indeed included by a different plugin than the main plugin.
     129         */
     130        if ( DIRECTORY_SEPARATOR . $this_sdk_relative_path === $fs_root_path && function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
     131            $original_plugin_dir_name = dirname( fs_find_direct_caller_plugin_file( $file_path ) );
     132
     133            // Remove everything before the original plugin directory name.
     134            $this_sdk_relative_path = substr( $this_sdk_relative_path, strpos( $this_sdk_relative_path, $original_plugin_dir_name ) );
     135
     136            unset( $original_plugin_dir_name );
     137        }
     138    }
    96139
    97140    if ( ! isset( $fs_active_plugins ) ) {
     
    177220    ) {
    178221        if ( $is_theme ) {
    179             $plugin_path = basename( dirname( $this_sdk_relative_path ) );
     222            // Saving relative path and not only directory name as it could be a subfolder
     223            $plugin_path = $theme_name;
    180224        } else {
    181225            $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
     
    226270        $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
    227271
    228         if ( ! $is_newest_sdk_type_theme ) {
    229             $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
    230         } else {
    231             $current_theme               = wp_get_theme();
    232             $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
     272        /**
     273         * @var bool $is_newest_sdk_module_active
     274         * True if the plugin with the newest SDK is active.
     275         * True if the newest SDK is part of the current theme or current theme's parent.
     276         * False otherwise.
     277         */
     278        if ( ! $is_newest_sdk_type_theme ) {
     279            $is_newest_sdk_module_active = is_plugin_active( $fs_newest_sdk->plugin_path );
     280        } else {
     281            $current_theme = wp_get_theme();
     282            // Detect if current theme is the one registered as newer SDK
     283            $is_newest_sdk_module_active = (
     284                strpos(
     285                    $fs_newest_sdk->plugin_path,
     286                    '../' . $themes_directory_name . '/' . $current_theme->get_stylesheet() . '/'
     287                ) === 0
     288            );
    233289
    234290            $current_theme_parent = $current_theme->parent();
     
    238294             * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
    239295             */
    240             if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
    241                 $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
     296            if ( ! $is_newest_sdk_module_active && $current_theme_parent instanceof WP_Theme ) {
     297                // Detect if current theme parent is the one registered as newer SDK
     298                $is_newest_sdk_module_active = (
     299                    strpos(
     300                        $fs_newest_sdk->plugin_path,
     301                        '../' . $themes_directory_name . '/' . $current_theme_parent->get_stylesheet() . '/'
     302                    ) === 0
     303                );
    242304            }
    243305        }
    244306
    245307        if ( $is_current_sdk_newest &&
    246              ! $is_newest_sdk_plugin_active &&
     308             ! $is_newest_sdk_module_active &&
    247309             ! $fs_active_plugins->newest->in_activation
    248310        ) {
     
    263325        }
    264326
    265         $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
     327        $is_newest_sdk_path_valid = ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
    266328
    267329        if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
     
    270332        }
    271333
    272         if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
     334        if ( ! ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) ||
    273335             ! $is_newest_sdk_path_valid ||
    274336             // Is newest SDK downgraded.
     
    285347            fs_fallback_to_newest_active_sdk();
    286348        } else {
    287             if ( $is_newest_sdk_plugin_active &&
     349            if ( $is_newest_sdk_module_active &&
    288350                 $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
    289351                 ( $fs_active_plugins->newest->in_activation ||
     
    314376    }
    315377
    316     if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
     378    if ( isset( $fs_active_plugins->newest ) && version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
    317379        $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
    318380
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/templates/forms/license-activation.php

    r3180624 r3229081  
    570570                    } else {
    571571                        if ( ! hasLicensesDropdown ) {
    572                             licenseID = $availableLicenseKey.data( 'id' );
     572                            licenseID = $availableLicenseKey.data( 'id' ).toString();
    573573                        } else {
    574574                            licenseID = $licensesDropdown.val();
  • wptools-masonry-gallery-posts-for-divi/trunk/freemius/templates/pricing.php

    r3180624 r3229081  
    7070    wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
    7171
     72    $pricing_css_path = $fs->apply_filters( 'pricing/css_path', null );
     73    if ( is_string( $pricing_css_path ) ) {
     74        wp_enqueue_style( 'freemius-pricing', fs_asset_url( $pricing_css_path ) );
     75    }
     76
    7277    $has_tabs = $fs->_add_tabs_before_content();
    7378
     
    96101            'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ),
    97102            'license'                => $fs->has_active_valid_license() ? $fs->_get_license() : null,
     103            'plugin_icon'            => $fs->get_local_icon_url(),
     104            'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ),
    98105        ), $query_params );
    99106
  • wptools-masonry-gallery-posts-for-divi/trunk/readme.txt

    r3180624 r3229081  
    44Tags: divi masonry, divi masonry image gallery, divi masonry blogs, masonry image gallery, masonry blogs
    55Requires at least: 4.5
    6 Tested up to: 6.6.2
    7 Stable tag: 3.7.1
     6Tested up to: 6.7.1
     7Stable tag: 3.7.2
    88Requires PHP: 7.4
    99License: GPLv2 or later
     
    8383== Changelog ==
    8484
     85= 3.7.2 =
     86* Updated: Freemius SDK
     87
    8588= 3.7.1 =
    8689* Updated: Freemius SDK
  • wptools-masonry-gallery-posts-for-divi/trunk/vendor/autoload.php

    r3180624 r3229081  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit75aedbb8c75637e5f62258dd6ae18144::getLoader();
     25return ComposerAutoloaderInitac788054656a60f6796c83a3ef8972d8::getLoader();
  • wptools-masonry-gallery-posts-for-divi/trunk/vendor/composer/LICENSE

    r3063127 r3229081  
     1
    12Copyright (c) Nils Adermann, Jordi Boggiano
    23
     
    1819OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    1920THE SOFTWARE.
     21
  • wptools-masonry-gallery-posts-for-divi/trunk/vendor/composer/autoload_real.php

    r3180624 r3229081  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit75aedbb8c75637e5f62258dd6ae18144
     5class ComposerAutoloaderInitac788054656a60f6796c83a3ef8972d8
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInit75aedbb8c75637e5f62258dd6ae18144', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInitac788054656a60f6796c83a3ef8972d8', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    27         spl_autoload_unregister(array('ComposerAutoloaderInit75aedbb8c75637e5f62258dd6ae18144', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInitac788054656a60f6796c83a3ef8972d8', 'loadClassLoader'));
    2828
    2929        require __DIR__ . '/autoload_static.php';
    30         call_user_func(\Composer\Autoload\ComposerStaticInit75aedbb8c75637e5f62258dd6ae18144::getInitializer($loader));
     30        call_user_func(\Composer\Autoload\ComposerStaticInitac788054656a60f6796c83a3ef8972d8::getInitializer($loader));
    3131
    3232        $loader->register(true);
  • wptools-masonry-gallery-posts-for-divi/trunk/vendor/composer/autoload_static.php

    r3180624 r3229081  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit75aedbb8c75637e5f62258dd6ae18144
     7class ComposerStaticInitac788054656a60f6796c83a3ef8972d8
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    4343    {
    4444        return \Closure::bind(function () use ($loader) {
    45             $loader->prefixLengthsPsr4 = ComposerStaticInit75aedbb8c75637e5f62258dd6ae18144::$prefixLengthsPsr4;
    46             $loader->prefixDirsPsr4 = ComposerStaticInit75aedbb8c75637e5f62258dd6ae18144::$prefixDirsPsr4;
    47             $loader->classMap = ComposerStaticInit75aedbb8c75637e5f62258dd6ae18144::$classMap;
     45            $loader->prefixLengthsPsr4 = ComposerStaticInitac788054656a60f6796c83a3ef8972d8::$prefixLengthsPsr4;
     46            $loader->prefixDirsPsr4 = ComposerStaticInitac788054656a60f6796c83a3ef8972d8::$prefixDirsPsr4;
     47            $loader->classMap = ComposerStaticInitac788054656a60f6796c83a3ef8972d8::$classMap;
    4848
    4949        }, null, ClassLoader::class);
  • wptools-masonry-gallery-posts-for-divi/trunk/vendor/composer/installed.php

    r3180624 r3229081  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => '2015b517b9ccfcb8b4e140f089452bb0bedfcf68',
     6        'reference' => 'f126f55b655f618f1c626e4745645295d3b5b18a',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    2525            'pretty_version' => 'dev-main',
    2626            'version' => 'dev-main',
    27             'reference' => '2015b517b9ccfcb8b4e140f089452bb0bedfcf68',
     27            'reference' => 'f126f55b655f618f1c626e4745645295d3b5b18a',
    2828            'type' => 'library',
    2929            'install_path' => __DIR__ . '/../../',
  • wptools-masonry-gallery-posts-for-divi/trunk/wptools-masonry-gallery-posts-for-divi.php

    r3180624 r3229081  
    77 * Text Domain:     masonry-gallery-and-posts-for-divi
    88 * Domain Path:     /languages
    9  * Version:         3.7.1
     9 * Version:         3.7.2
    1010 *
    1111 * @package         Masonry_Gallery_And_Posts_For_Divi
     
    1818
    1919$loader['plugin_name']    = 'WPTools Masonry Gallery & Posts For Divi';
    20 $loader['plugin_version'] = '3.7.1';
     20$loader['plugin_version'] = '3.7.2';
    2121$loader['plugin_dir']     = __DIR__;
    2222$loader['plugin_slug']    = basename( __DIR__ );
Note: See TracChangeset for help on using the changeset viewer.