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 ); ?>
<?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();
}