HEX
Server: Apache/2
System: Linux server-80-13-140-150.da.direct 5.14.0-362.24.1.el9_3.0.1.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Apr 4 22:31:43 UTC 2024 x86_64
User: cpt (1004)
PHP: 8.1.24
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/cpt/public_html/wp-content/plugins/event-calendar-newsletter/includes/ecnsettings.class.php
<?php
if ( ! class_exists( 'ECNSettings' ) ) {
    class ECNSettings {

        public function __construct() {
            if ( is_admin() ) {
                add_action( 'admin_menu', [ &$this, 'admin_menu' ] );
            }
            add_filter( 'ecn_image_size', [ &$this, 'filter_image_size' ], 1 );
            add_filter( 'ecn_admin_capability', [ &$this, 'filter_allowed_roles' ] );
        }

        public function admin_menu() {
            add_submenu_page(
                'eventcalendarnewsletter',
                __( 'Event Calendar Newsletter Pro', 'event-calendar-newsletter' ),
                __( 'Settings', 'event-calendar-newsletter' ),
                apply_filters( 'ecn_admin_capability', 'add_users' ),
                'ecn-settings',
                [ &$this, 'settings_page' ]
            );
        }

        public function settings_page() {
            global $_wp_additional_image_sizes;

            if ( isset( $_POST['submit'] ) ) {
                $this->settings_page_save();
            }

            $data = [ 'image_size' => [] ];

            // Default image sizes for thumbnails
            foreach ( get_intermediate_image_sizes() as $_size ) {
                if ( in_array( $_size, [ 'thumbnail', 'medium', 'medium_large', 'large' ] ) ) {
                    $data['image_size'][$_size] = $_size . ' (' . get_option( "{$_size}_size_w" ) . 'x' . get_option( "{$_size}_size_h" ) . ')';
                } elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
                    $data['image_size'][$_size] = $_size . ' (' . $_wp_additional_image_sizes[ $_size ]['width'] . 'x' . $_wp_additional_image_sizes[ $_size ]['height'] . ')';
                }
            }

            $data = apply_filters( 'ecn_global_settings_data', $data );

            include __DIR__ . '/admin/settings.php';
        }

        public function settings_page_save() {
            if ( ! wp_verify_nonce( $_POST['ecn_nonce'], 'ecn_settings' ) ) {
                die( 'Invalid' );
            }

            if ( ! current_user_can( apply_filters( 'ecn_admin_capability', 'add_users' ) ) ) {
                die( 'Insufficient permissions to save' );
            }

            $this->save_image_size();
            $this->save_roles();

            do_action( 'ecn_settings_save', $_POST ); ?>
			<div id="setting-error-settings_updated" class="updated settings-error notice is-dismissible">
				<p><strong>Settings saved.</strong></p><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button>
			</div>
		<?php
        }

        public function save_image_size() {
            if ( isset( $_POST['image_size'] ) ) {
                save_ecn_option( 'image_size', $_POST['image_size'] );
            }
        }

        public function save_roles() {
            global $wp_roles;

            if ( isset( $_POST['role'] ) and is_array( $_POST['role'] ) ) {
                foreach ( get_editable_roles() as $role => $role_details ) {
                    // Always add administrator
                    if ( 'administrator' == $role ) {
                        $wp_roles->add_cap( $role, 'ecn_admin' );
                        continue;
                    }

                    if ( in_array( $role, $_POST['role'] ) ) {
                        $wp_roles->add_cap( $role, 'ecn_admin' );
                    } else {
                        $wp_roles->remove_cap( $role, 'ecn_admin' );
                    }
                }
                $wp_roles->reinit();
            }
        }

        /**
         * Filters for saved settings
         */

        /**
         * Default image size to use for output
         *
         * @return mixed
         */
        public function filter_image_size( $image_size ) {
            return get_ecn_option( 'image_size', $image_size );
        }

        /**
         * Filter using our custom ecn_admin capability, if set
         */
        public function filter_allowed_roles( $cap ) {
            if ( get_role( 'administrator' )->has_cap( 'ecn_admin' ) ) {
                // Admin has the role and we've saved the cap, so use our ecn_admin capability instead
                $cap = 'ecn_admin';
            }

            return $cap;
        }
    }

    $GLOBALS['ecn_settings'] = new ECNSettings();
}