File manager - Edit - /home/premiey/www/wp-includes/images/media/site-navigation.tar
Back
module.php 0000666 00000001555 15166412310 0006553 0 ustar 00 <?php namespace Elementor\Modules\SiteNavigation; use Elementor\Core\Base\Module as Module_Base; use Elementor\Modules\SiteNavigation\Data\Controller; use Elementor\Plugin; use Elementor\Utils; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Module extends Module_Base { /** * Initialize the Container-Converter module. * * @return void */ public function __construct() { Plugin::$instance->data_manager_v2->register_controller( new Controller() ); } /** * Retrieve the module name. * * @return string */ public function get_name() { return 'site-navigation'; } /** * Determine whether the module is active. * * @return bool */ public static function is_active() { if ( Utils::is_elementor_tests() ) { return true; } return Plugin::$instance->experiments->is_feature_active( 'editor_v2' ); } } data/controller.php 0000666 00000002223 15166412310 0010353 0 ustar 00 <?php namespace Elementor\Modules\SiteNavigation\Data; use Elementor\Data\V2\Base\Controller as Base_Controller; use Elementor\Modules\SiteNavigation\Data\Endpoints\Add_New_Post; use Elementor\Modules\SiteNavigation\Data\Endpoints\Recent_Posts; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Controller extends Base_Controller { public function get_name() { return 'site-navigation'; } public function get_items_permissions_check( $request ) { return current_user_can( 'edit_posts' ); } public function create_items_permissions_check( $request ): bool { // Permissions check is located in the endpoint return true; } public function get_item_permissions_check( $request ) { return $this->get_items_permissions_check( $request ); } public function create_item_permissions_check( $request ): bool { return $this->create_items_permissions_check( $request ); } public function register_endpoints() { $this->register_endpoint( new Recent_Posts( $this ) ); $this->register_endpoint( new Add_New_Post( $this ) ); } protected function register_index_endpoint() { // Bypass, currently does not required. } } data/endpoints/add-new-post.php 0000666 00000004174 15166412310 0012504 0 ustar 00 <?php namespace Elementor\Modules\SiteNavigation\Data\Endpoints; use Elementor\Data\V2\Base\Endpoint; use Elementor\Plugin; use Elementor\User; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Add_New_Post extends Endpoint { protected function register() { $args = [ 'post_type' => [ 'description' => 'Post type to create', 'type' => 'string', 'required' => false, 'default' => 'post', 'sanitize_callback' => function ( $value ) { return sanitize_text_field( $value ); }, 'validate_callback' => 'rest_validate_request_arg', ], ]; $this->register_items_route( \WP_REST_Server::CREATABLE, $args ); } public function get_name() { return 'add-new-post'; } public function get_format() { return 'site-navigation/add-new-post'; } public function create_items( $request ) { $post_type = $request->get_param( 'post_type' ); if ( ! $this->validate_post_type( $post_type ) ) { return new \WP_Error( 400, sprintf( 'Post type %s does not exist.', $post_type ), [ 'status' => 400 ] ); } if ( ! User::is_current_user_can_edit_post_type( $post_type ) ) { return new \WP_Error( 401, sprintf( 'User dont have capability to create page of type - %s.', $post_type ), [ 'status' => 401 ] ); } // Temporary solution for the fact that documents creation not using the actual registered post types. $post_type = $this->map_post_type( $post_type ); $document = Plugin::$instance->documents->create( $post_type ); if ( is_wp_error( $document ) ) { return new \WP_Error( 500, sprintf( 'Error while creating %s.', $post_type ) ); } return [ 'id' => $document->get_main_id(), 'edit_url' => $document->get_edit_url(), ]; } private function validate_post_type( $post_type ): bool { $post_types = get_post_types(); return in_array( $post_type, $post_types ); } /** * Map post type to Elementor document type. * * @param $post_type * * @return string */ private function map_post_type( $post_type ): string { $post_type_map = [ 'page' => 'wp-page', 'post' => 'wp-post', ]; return $post_type_map[ $post_type ] ?? $post_type; } } data/endpoints/recent-posts.php 0000666 00000004642 15166412310 0012630 0 ustar 00 <?php namespace Elementor\Modules\SiteNavigation\Data\Endpoints; use Elementor\Core\Base\Document; use Elementor\Core\Kits\Documents\Kit; use Elementor\Data\V2\Base\Endpoint; use Elementor\Plugin; use Elementor\TemplateLibrary\Source_Local; use Elementor\Utils; use WP_REST_Server; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Recent_Posts extends Endpoint { public function register_items_route( $methods = WP_REST_Server::READABLE, $args = [] ) { $args = [ 'posts_per_page' => [ 'description' => 'Number of posts to return', 'type' => 'integer', 'required' => true, 'sanitize_callback' => 'absint', 'validate_callback' => 'rest_validate_request_arg', ], 'post_type' => [ 'description' => 'Post types to retrieve', 'type' => 'array', 'required' => false, 'default' => [ 'page', 'post', Source_Local::CPT ], 'sanitize_callback' => 'rest_sanitize_array', 'validate_callback' => 'rest_validate_request_arg', ], 'post__not_in' => [ 'description' => 'Post id`s to exclude', 'type' => 'array', 'required' => [], 'sanitize_callback' => 'wp_parse_id_list', 'validate_callback' => 'rest_validate_request_arg', ], ]; parent::register_items_route( $methods, $args ); } public function get_name() { return 'recent-posts'; } public function get_format() { return 'site-navigation/recent-posts'; } public function get_items( $request ) { $args = [ 'posts_per_page' => $request->get_param( 'posts_per_page' ), 'post_type' => $request->get_param( 'post_type' ), 'fields' => 'ids', 'meta_query' => [ [ 'key' => Document::TYPE_META_KEY, 'value' => Kit::get_type(), // Exclude kits. 'compare' => '!=', ], ], ]; $exclude = $request->get_param( 'post__not_in' ); if ( ! empty( $exclude ) ) { $args['post__not_in'] = $exclude; } $recently_edited_query = Utils::get_recently_edited_posts_query( $args ); $recent = []; foreach ( $recently_edited_query->posts as $id ) { $document = Plugin::$instance->documents->get( $id ); $recent[] = [ 'id' => $id, 'title' => get_the_title( $id ), 'edit_url' => $document->get_edit_url(), 'date_modified' => get_post_timestamp( $id, 'modified' ), 'type' => [ 'post_type' => get_post_type( $id ), 'doc_type' => $document->get_name(), 'label' => $document->get_title(), ], ]; } return $recent; } }
| ver. 1.4 |
Github
|
.
| PHP 5.4.45 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings