HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //proc/self/cwd/wp-content/plugins/wp-duplicate-page/includes/Classes/EditorDuplicate.php
<?php
namespace NjtDuplicate\Classes;

defined( 'ABSPATH' ) || exit;
use NjtDuplicate\Helper\Utils;

class EditorDuplicate {
	protected static $instance = null;

	public static function getInstance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}

		return self::$instance;
	}

	private function __construct() {
		add_action( 'post_submitbox_start', array( $this, 'add_duplicate_button_in_editor_submitbox' ) );
		add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_duplicate_button_assets' ) );
	}

	public function add_duplicate_button_in_editor_submitbox( $post = null ) {
		if ( is_null( $post ) ) {
			if ( isset( $_GET['post'] ) ) {
				$id   = sanitize_text_field( wp_unslash( $_GET['post'] ) );
				$post = get_post( $id );
			}
		}

		if ( $post instanceof \WP_Post && Utils::isCurrentUserAllowedToCopy() && Utils::checkPostTypeDuplicate( $post->post_type ) ) {
			$duplicateTextLink = get_option( 'njt_duplicate_text_link' ) === false || get_option( 'njt_duplicate_text_link' ) === '' ? 'Duplicate' : get_option( 'njt_duplicate_text_link' );
			?>
			<div>
				<a class="njt-duplicate-link"
					href="<?php echo esc_url( Utils::getDuplicateLink( $post->ID, true ) ); ?>"><?php echo esc_html( $duplicateTextLink ); ?>
				</a>
			</div>
			<?php
		}
	}

	public function enqueue_duplicate_button_assets() {
		if ( ! isset( $_GET['post'] ) ) {
			return;
		}

		$post_id = absint( sanitize_text_field( wp_unslash( $_GET['post'] ) ) );
		if ( ! $post_id ) {
			return;
		}

		$post = get_post( $post_id );
		if ( ! ( $post instanceof \WP_Post ) ) {
			return;
		}

		if ( ! Utils::isCurrentUserAllowedToCopy() || ! Utils::checkPostTypeDuplicate( $post->post_type ) ) {
			return;
		}

		$duplicate_text_link = get_option( 'njt_duplicate_text_link' ) === false || get_option( 'njt_duplicate_text_link' ) === '' ? 'Duplicate' : get_option( 'njt_duplicate_text_link' );

		$handle = 'njt-duplicate-editor-sidebar';
		wp_enqueue_script(
			$handle,
			NJT_DUPLICATE_PLUGIN_URL . '/assets/js/editor-duplicate.js',
			array( 'wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins' ),
			NJT_DUPLICATE_VERSION,
			true
		);

		wp_localize_script(
			$handle,
			'njtDuplicateEditor',
			array(
				'link' => html_entity_decode( Utils::getDuplicateLink( $post->ID, true ) ),
				'text' => $duplicate_text_link,
			)
		);
	}
}