File: /var/www/vfconf/wp-content/plugins/gutentor/includes/metabox/meta-box.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Gutentor Custom Meta Boxes
*
* @package Gutentor
*/
if ( ! class_exists( 'Gutentor_Custom_Meta_Box' ) ) :
class Gutentor_Custom_Meta_Box {
/**
* Main Instance
*
* Insures that only one instance of Gutentor_Custom_Meta_Box exists in memory at any one
* time. Also prevents needing to define globals all over the place.
*
* @since 3.0.0
* @access public
*
* @return object
*/
public static function instance() {
// Store the instance locally to avoid private static replication.
static $instance = null;
// Only run these methods if they haven't been ran previously.
if ( null === $instance ) {
$instance = new Gutentor_Custom_Meta_Box();
}
// Always return the instance.
return $instance;
}
/**
* Run functionality with hooks
*
* @since 3.0.0
* @access public
*
* @return void
*/
public function run() {
if ( is_admin() ) {
add_action( 'load-post.php', array( $this, 'init_metabox' ) );
add_action( 'load-post-new.php', array( $this, 'init_metabox' ) );
}
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_meta_box_script' ) );
}
/**
* Enqueue scripts
* return void
*/
public function enqueue_meta_box_script() {
if ( gutentor_is_edit_page() && 'download' === get_post_type() ) {
wp_enqueue_style( 'gutentor-meta-box', GUTENTOR_URL . '/includes/metabox/meta-box.css', array(), '1.0.0' );
}
}
/**
* Meta box initialization.
*/
public function init_metabox() {
$options = gutentor_get_options();
$value = false;
if ( isset( $options['edd-demo-url'] ) && ! empty( $options['edd-demo-url'] ) ) {
$value = $options['edd-demo-url'];
}
if ( $value ) {
add_action( 'add_meta_boxes', array( $this, 'add_metabox' ) );
add_action( 'save_post', array( $this, 'save_metabox' ), 10, 2 );
}
}
/**
* Adds the meta box.
*/
public function add_metabox() {
add_meta_box(
'gutentor_edd_demo_url',
__( 'Gutentor', 'gutentor' ),
array( $this, 'render_metabox' ),
'download',
'side',
'low'
);
}
/**
* Renders the meta box.
*/
public function render_metabox( $post ) {
$gutentor_edd_demo_url_value = get_post_meta( $post->ID, 'gutentor_edd_demo_url', true );
// true ensures you get just one value instead of an array.
wp_nonce_field( basename( __FILE__ ), 'gutentor_meta_nonce' );
?>
<div class="gutentor-custom-meta components-base-control">
<div class="components-base-control__field">
<label class="components-base-control__label" for="gutentor_edd_demo_url"><?php echo esc_html__( 'Demo URL', 'gutentor' ); ?></label>
<input name="gutentor_edd_demo_url" value="<?php echo esc_attr( $gutentor_edd_demo_url_value ); ?>" id="gutentor_edd_demo_url" class="components-select-control__input" />
</div>
</div>
<?php
}
/**
* Handles saving the meta box.
*
* @param int $post_id Post ID.
* @param WP_Post $post Post object.
* @return null
*/
public function save_metabox( $post_id, $post ) {
/*
* A Guide to Writing Secure Themes – Part 4: Securing Post Meta
*https://make.wordpress.org/themes/2015/06/09/a-guide-to-writing-secure-themes-part-4-securing-post-meta/
* */
if (
! isset( $_POST['gutentor_meta_nonce'] ) ||
! wp_verify_nonce( $_POST['gutentor_meta_nonce'], basename( __FILE__ ) ) || /*Protecting against unwanted requests*/
( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || /*Dealing with autosaves*/
! current_user_can( 'edit_post', $post_id )/*Verifying access rights*/
) {
return;
}
if ( 'download' != $_POST['post_type'] ) {
return $post_id;
}
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return $post_id;
}
// Execute this saving function
// site layout.
if ( isset( $_POST['gutentor_edd_demo_url'] ) ) {
$old = get_post_meta( $post_id, 'gutentor_edd_demo_url', true );
$new = esc_url_raw( $_POST['gutentor_edd_demo_url'] );
if ( $new && $new != $old ) {
update_post_meta( $post_id, 'gutentor_edd_demo_url', $new );
} elseif ( '' == $new && $old ) {
delete_post_meta( $post_id, 'gutentor_edd_demo_url', $old );
}
}
}
}
endif;
/**
* Create Instance for Gutentor_Custom_Meta_Box
*
* @since 3.0.0
* @access public
*
* @param
*
* @return object
*/
if ( ! function_exists( 'gutentor_custom_meta_box' ) ) {
function gutentor_custom_meta_box() {
return Gutentor_Custom_Meta_Box::instance();
}
gutentor_custom_meta_box()->run();
}