[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: link-handler.php
<?php namespace Yoast\WP\Duplicate_Post\Handlers; use Yoast\WP\Duplicate_Post\Permissions_Helper; use Yoast\WP\Duplicate_Post\Post_Duplicator; /** * Duplicate Post handler class for duplication actions from links. * * @since 4.0 */ class Link_Handler { /** * Post_Duplicator object. * * @var Post_Duplicator */ protected $post_duplicator; /** * Holds the permissions helper. * * @var Permissions_Helper */ protected $permissions_helper; /** * Initializes the class. * * @param Post_Duplicator $post_duplicator The Post_Duplicator object. * @param Permissions_Helper $permissions_helper The Permissions Helper object. */ public function __construct( Post_Duplicator $post_duplicator, Permissions_Helper $permissions_helper ) { $this->post_duplicator = $post_duplicator; $this->permissions_helper = $permissions_helper; } /** * Adds hooks to integrate with WordPress. * * @return void */ public function register_hooks() { \add_action( 'admin_action_duplicate_post_rewrite', [ $this, 'rewrite_link_action_handler' ] ); \add_action( 'admin_action_duplicate_post_clone', [ $this, 'clone_link_action_handler' ] ); \add_action( 'admin_action_duplicate_post_new_draft', [ $this, 'new_draft_link_action_handler' ] ); } /** * Handles the action for copying a post to a new draft. * * @return void */ public function new_draft_link_action_handler() { if ( ! $this->permissions_helper->is_current_user_allowed_to_copy() ) { \wp_die( \esc_html__( 'Current user is not allowed to copy posts.', 'duplicate-post' ) ); } if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'duplicate_post_new_draft' ) ) ) { \wp_die( \esc_html__( 'No post to duplicate has been supplied!', 'duplicate-post' ) ); } $id = ( isset( $_GET['post'] ) ? \intval( \wp_unslash( $_GET['post'] ) ) : \intval( \wp_unslash( $_POST['post'] ) ) ); \check_admin_referer( 'duplicate_post_new_draft_' . $id ); $post = \get_post( $id ); if ( ! $post ) { \wp_die( \esc_html( \__( 'Copy creation failed, could not find original:', 'duplicate-post' ) . ' ' . $id ) ); } if ( $this->permissions_helper->is_rewrite_and_republish_copy( $post ) ) { \wp_die( \esc_html__( 'You cannot create a copy of a post which is intended for Rewrite & Republish.', 'duplicate-post' ) ); } $new_id = \duplicate_post_create_duplicate( $post, 'draft' ); if ( \is_wp_error( $new_id ) ) { \wp_die( \esc_html__( 'Copy creation failed, could not create a copy.', 'duplicate-post' ) ); } \wp_safe_redirect( \add_query_arg( [ 'cloned' => 1, 'ids' => $post->ID, ], \admin_url( 'post.php?action=edit&post=' . $new_id . ( isset( $_GET['classic-editor'] ) ? '&classic-editor' : '' ) ) ) ); exit(); } /** * Handles the action for copying a post and redirecting to the post list. * * @return void */ public function clone_link_action_handler() { if ( ! $this->permissions_helper->is_current_user_allowed_to_copy() ) { \wp_die( \esc_html__( 'Current user is not allowed to copy posts.', 'duplicate-post' ) ); } if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'duplicate_post_clone' ) ) ) { \wp_die( \esc_html__( 'No post to duplicate has been supplied!', 'duplicate-post' ) ); } $id = ( isset( $_GET['post'] ) ? \intval( \wp_unslash( $_GET['post'] ) ) : \intval( \wp_unslash( $_POST['post'] ) ) ); \check_admin_referer( 'duplicate_post_clone_' . $id ); $post = \get_post( $id ); if ( ! $post ) { \wp_die( \esc_html( \__( 'Copy creation failed, could not find original:', 'duplicate-post' ) . ' ' . $id ) ); } if ( $this->permissions_helper->is_rewrite_and_republish_copy( $post ) ) { \wp_die( \esc_html__( 'You cannot create a copy of a post which is intended for Rewrite & Republish.', 'duplicate-post' ) ); } $new_id = \duplicate_post_create_duplicate( $post ); if ( \is_wp_error( $new_id ) ) { \wp_die( \esc_html__( 'Copy creation failed, could not create a copy.', 'duplicate-post' ) ); } $post_type = $post->post_type; $sendback = \wp_get_referer(); if ( ! $sendback || \strpos( $sendback, 'post.php' ) !== false || \strpos( $sendback, 'post-new.php' ) !== false ) { if ( $post_type === 'attachment' ) { $sendback = \admin_url( 'upload.php' ); } else { $sendback = \admin_url( 'edit.php' ); if ( ! empty( $post_type ) ) { $sendback = \add_query_arg( 'post_type', $post_type, $sendback ); } } } else { $sendback = \remove_query_arg( [ 'trashed', 'untrashed', 'deleted', 'cloned', 'ids' ], $sendback ); } // Redirect to the post list screen. \wp_safe_redirect( \add_query_arg( [ 'cloned' => 1, 'ids' => $post->ID, ], $sendback ) ); exit(); } /** * Handles the action for copying a post for the Rewrite & Republish feature. * * @return void */ public function rewrite_link_action_handler() { if ( ! $this->permissions_helper->is_current_user_allowed_to_copy() ) { \wp_die( \esc_html__( 'Current user is not allowed to copy posts.', 'duplicate-post' ) ); } if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'duplicate_post_rewrite' ) ) ) { \wp_die( \esc_html__( 'No post to duplicate has been supplied!', 'duplicate-post' ) ); } $id = ( isset( $_GET['post'] ) ? \intval( \wp_unslash( $_GET['post'] ) ) : \intval( \wp_unslash( $_POST['post'] ) ) ); \check_admin_referer( 'duplicate_post_rewrite_' . $id ); $post = \get_post( $id ); if ( ! $post ) { \wp_die( \esc_html( \__( 'Copy creation failed, could not find original:', 'duplicate-post' ) . ' ' . $id ) ); } if ( ! $this->permissions_helper->should_rewrite_and_republish_be_allowed( $post ) ) { \wp_die( \esc_html__( 'You cannot create a copy for Rewrite & Republish if the original is not published or if it already has a copy.', 'duplicate-post' ) ); } $new_id = $this->post_duplicator->create_duplicate_for_rewrite_and_republish( $post ); if ( \is_wp_error( $new_id ) ) { \wp_die( \esc_html__( 'Copy creation failed, could not create a copy.', 'duplicate-post' ) ); } \wp_safe_redirect( \add_query_arg( [ 'rewriting' => 1, 'ids' => $post->ID, ], \admin_url( 'post.php?action=edit&post=' . $new_id . ( isset( $_GET['classic-editor'] ) ? '&classic-editor' : '' ) ) ) ); exit(); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.68 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002