45 lines
		
	
	
		
			935 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			935 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Elementor\Modules\SiteNavigation\Rest_Fields;
 | 
						|
 | 
						|
if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
	exit; // Exit if accessed directly.
 | 
						|
}
 | 
						|
 | 
						|
class Page_User_Can {
 | 
						|
	public function register_rest_field() {
 | 
						|
		if ( ! isset( $_GET['_fields'] ) ) {
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		$fields = sanitize_text_field( wp_unslash( $_GET['_fields'] ) );
 | 
						|
		$array_fields = explode( ',', $fields );
 | 
						|
 | 
						|
		if ( ! in_array( 'user_can', $array_fields ) ) {
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		register_rest_field(
 | 
						|
			'page',
 | 
						|
			'user_can',
 | 
						|
			[
 | 
						|
				'get_callback' => [ $this, 'get_callback' ],
 | 
						|
				'schema' => [
 | 
						|
					'description' => __( 'Whether the current user can edit or delete this post', 'elementor' ),
 | 
						|
					'type' => 'array',
 | 
						|
				],
 | 
						|
			]
 | 
						|
		);
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_callback( $post ) {
 | 
						|
		$can_edit = current_user_can( 'edit_post', $post['id'] );
 | 
						|
		$can_delete = current_user_can( 'delete_post', $post['id'] );
 | 
						|
 | 
						|
		return [
 | 
						|
			'edit' => $can_edit,
 | 
						|
			'delete' => $can_delete,
 | 
						|
		];
 | 
						|
	}
 | 
						|
}
 |