HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/Velosophe/dev.abloc.cc/wwwroot/app/plugins/multisite-shared-media/options.php
<?php

/**
 * Class MSMSettingsPage.
 *
 * @author  Aikadesign Oy (JG) <tuki@aikadesign.fi>
 *
 * @package \Aikadesign\MSM
 */
class MSMSettingsPage {
	/**
	 * Holds the values to be used in the fields callbacks
	 */
	private $options;

	/**
	 * Start up
	 */
	public function __construct() {
		add_action( 'network_admin_menu', array( $this, 'add_plugin_page' ) );
		add_action( 'network_admin_edit_msm_sharing_settings', array( $this, 'msm_save_network_options' ) );
	}

	/**
	 * Add options page to Wordpress Admin Menu
	 */
	public function add_plugin_page() {
		// This page will be under "Settings"
		add_submenu_page(
			'settings.php',
			__( 'Settings Admin', 'multisite-shared-media' ),
			__( 'Multisite Shared Media', 'multisite-shared-media' ),
			'manage_options',
			'msm-setting-admin',
			array( $this, 'create_admin_page' )
		);
	}

	/**
	 * Options page callback.
	 */
	public function create_admin_page() {
		// Set class property
		$this->options = get_site_option( 'msm_sharing_settings' );
		$action_url    = esc_url(
			add_query_arg(
				'action',
				'msm_sharing_settings',
				network_admin_url( 'edit.php' )
			)
		);

		?>
        <div class="wrap">
            <h1><?php _e( 'Multisite Shared Media settings', 'multisite-shared-media' ); ?></h1>
            <p><strong><?php $this->print_section_info(); ?></strong></p>
            <form method="post" action="<?php echo $action_url; ?>">
				<?php
				echo '<p>';
				$this->msm_do_share_media_callback();
				echo '</p>';
				echo '<p>';
				$this->msm_do_delete_shared_media_callback();
				echo '</p>';

				submit_button( null, 'primary', 'submit', false ); ?>
                &nbsp;&nbsp;

				<?php if ( $this->options['msm_do_share_media'] === 'yes' ): ?>
                    <button type="button" name="replicate-all-existing" id="replicate-all-existing"
                            class="button button-primary" value="yes">
						<?php echo __( 'Replicate all existing media from main site', 'multisite-shared-media' ); ?>
                    </button>
				<?php endif; ?>

                <script type="text/javascript">
                    jQuery('#msm_do_share_media').click(function (e) {

                    });
                </script>
            </form>
        </div>
		<?php

		$this->_output_js_strings();
	}

	/**
	 * Print the Section text
	 */
	public function print_section_info() {
		print __( 'Choose how the plugin is supposed to act upon media uploads and deletion', 'multisite-shared-media' );
	}

	/**
	 * Get the settings option array and print one of its values
	 */
	public function msm_do_share_media_callback() {
		$value = $this->options['msm_do_share_media'];
		printf(
			'<input type="checkbox" id="msm_do_share_media" name="msm_sharing_settings[msm_do_share_media]" value="yes" %s />',
			null !== $value && $value === 'yes' ? 'checked' : ''
		);
		echo '<label for="msm_do_share_media">' . __( 'Share media across network', 'multisite-shared-media' ) . '</label>';
	}

	/**
	 * Get the settings option array and print one of its values
	 */
	public function msm_do_delete_shared_media_callback() {
		$value = $this->options['msm_do_delete_shared_media'];
		printf(
			'<input type="checkbox" id="msm_do_delete_shared_media" name="msm_sharing_settings[msm_do_delete_shared_media]" value="yes" %s />',
			null !== $value && $value === 'yes' ? 'checked' : ''
		);
		echo '<label for="msm_do_delete_shared_media">' . __( 'Remove media from all sites upon media removal', 'multisite-shared-media' ) . '</label>';
	}

	private function _output_js_strings() {
		?>
        <script type="text/javascript">
            var msm_strings = {
                'progress_heading': '<?php _e( 'Replication process', 'multisite-shared-media' ); ?>',
                'progress_total': '<?php _e( 'Total media:', 'multisite-shared-media' ); ?> <?php _e( 'calculating...', 'multisite-shared-media' ); ?>',
                'progress_remaining': '<?php _e( 'Remaining:', 'multisite-shared-media' ); ?> <?php _e( 'calculating...', 'multisite-shared-media' ); ?>',
                'confirm_termination': '<?php _e( 'Did you mean to terminate the process? No worries, you can continue it later from where you left off.', 'multisite-shared-media' ); ?>',
                'resume_btn_label': '<?php _e( 'Resume process', 'multisite-shared-media' ); ?>',
                'replication_success_msg': '<?php _e( 'Great, the replication process finished. Now go and check your Shared Media Library', 'multisite-shared-media' ); ?>',
                'close_btn_label': '<?php _e( 'Close window', 'multisite-shared-media' ); ?>',
                'replication_error_msg': '<?php _e( 'Sadly, the replication process failed. You can do troubleshooting by inspecting your browsers JS error log and servers PHP error log.', 'multisite-shared-media' ); ?>',
                'replication_stagnated_err_msg': '<?php _e( 'Oops, seems like something is wrong, the process stagnated. You may find your browser JS error log or servers PHP error log useful.', 'multisite-shared-media' ); ?>',
                'replication_total_label': '<?php _e( 'Total media:', 'multisite-shared-media' ); ?>',
                'replication_files_label': '<?php _e( 'files', 'multisite-shared-media' ); ?>',
                'replication_remaining_label': '<?php _e( 'Remaining:', 'multisite-shared-media' ); ?>',
                'end_btn_label': '<?php _e( 'Terminate process', 'multisite-shared-media' ); ?>',
                'pause_btn_label': '<?php _e( 'Pause process', 'multisite-shared-media' ); ?>',
            }
        </script>
		<?php
	}

	/**
	 * Register and add settings
	 */
	public function page_init() {
		register_setting(
			'msm_option_group', // Option group
			'msm_sharing_settings', // Option name
			array( $this, 'sanitize' ) // Sanitize
		);

		add_settings_section(
			'msm_general_settings_section', // ID
			__( 'Network-wide settings', 'multisite-shared-media' ), // Title
			array( $this, 'print_section_info' ), // Callback
			'msm-setting-admin' // Page
		);

		add_settings_field(
			'msm_do_share_media', // ID
			__( 'Share media across network', 'multisite-shared-media' ), // Title
			array( $this, 'msm_do_share_media_callback' ), // Callback
			'msm-setting-admin', // Page
			'msm_general_settings_section' // Section
		);

		add_settings_field(
			'msm_do_delete_shared_media',
			__( 'Remove media from all sites upon media removal', 'multisite-shared-media' ),
			array( $this, 'msm_do_delete_shared_media_callback' ),
			'msm-setting-admin',
			'msm_general_settings_section'
		);
	}

	public function msm_save_network_options() {
		$input = array(
			'msm_do_share_media'         => isset( $_POST['msm_sharing_settings']['msm_do_share_media'] ) ? $_POST['msm_sharing_settings']['msm_do_share_media'] : false,
			'msm_do_delete_shared_media' => isset( $_POST['msm_sharing_settings']['msm_do_delete_shared_media'] ) ? $_POST['msm_sharing_settings']['msm_do_delete_shared_media'] : false,
		);

		$validated = $this->sanitize( $input );

		update_site_option( 'msm_sharing_settings', $validated );

		// redirect to settings page in network
		wp_redirect(
			add_query_arg(
				array( 'page' => 'msm-setting-admin', 'updated' => 'true' ),
				( is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' ) )
			)
		);
		exit;
	}

	/**
	 * Sanitize each setting field as needed
	 *
	 * @param array $input Contains all settings fields as array keys
	 *
	 * @return array
	 */

	public function sanitize( $input ) {
		$new_input = array();

		if ( isset( $input['msm_do_share_media'] ) && $input['msm_do_share_media'] === 'yes' ) {
			$new_input['msm_do_share_media'] = 'yes';
		} else {
			$new_input['msm_do_share_media'] = 'no';
		}

		if ( isset( $input['msm_do_delete_shared_media'] ) && $input['msm_do_delete_shared_media'] === 'yes' ) {
			$new_input['msm_do_delete_shared_media'] = 'yes';
		} else {
			$new_input['msm_do_delete_shared_media'] = 'no';
		}

		return $new_input;
	}
}

if ( is_admin() ) {
	$msm_settings_page = new MSMSettingsPage();
}