HEX
Server: LiteSpeed
System: Linux premium212.web-hosting.com 4.18.0-553.124.4.lve.el8.x86_64 #1 SMP Fri May 15 13:02:13 UTC 2026 x86_64
User: vitanhod (1367)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: /home/vitanhod/www/wp-content/plugins/system-control/api/endpoints/class-sc-pages-endpoint.php
<?php
class SC_Pages_Endpoint {
    public function register() {
        register_rest_route(SC_REST_NAMESPACE, '/pages', [
            [
                'methods'             => 'GET',
                'callback'            => [$this, 'list_pages'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
            [
                'methods'             => 'POST',
                'callback'            => [$this, 'create_page'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
        ]);
        register_rest_route(SC_REST_NAMESPACE, '/pages/(?P<id>\d+)', [
            [
                'methods'             => 'PUT',
                'callback'            => [$this, 'update_page'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
            [
                'methods'             => 'DELETE',
                'callback'            => [$this, 'delete_page'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
        ]);
    }

    public function list_pages($request) {
        $per_page = (int)($request->get_param('per_page') ?: 20);
        $page = (int)($request->get_param('page') ?: 1);

        $query = new WP_Query([
            'post_type'      => 'page',
            'post_status'    => 'any',
            'posts_per_page' => $per_page,
            'paged'          => $page,
            'orderby'        => 'date',
            'order'          => 'DESC',
        ]);

        $pages = [];
        foreach ($query->posts as $p) {
            $pages[] = [
                'id'      => $p->ID,
                'title'   => $p->post_title,
                'slug'    => $p->post_name,
                'status'  => $p->post_status,
                'date'    => $p->post_date,
                'content' => $p->post_content,
            ];
        }

        return rest_ensure_response([
            'pages' => $pages,
            'total' => $query->found_posts,
            'pages_count' => $query->max_num_pages,
        ]);
    }

    public function create_page($request) {
        $params = $request->get_json_params();
        $id = wp_insert_post([
            'post_title'   => sanitize_text_field($params['title'] ?? ''),
            'post_content' => $params['content'] ?? '',
            'post_status'  => sanitize_text_field($params['status'] ?? 'draft'),
            'post_type'    => 'page',
        ], true);

        if (is_wp_error($id)) return $id;
        return rest_ensure_response(['success' => true, 'id' => $id]);
    }

    public function update_page($request) {
        $id = (int)$request['id'];
        $params = $request->get_json_params();

        $data = ['ID' => $id];
        if (isset($params['title'])) $data['post_title'] = sanitize_text_field($params['title']);
        if (isset($params['content'])) $data['post_content'] = $params['content'];
        if (isset($params['status'])) $data['post_status'] = sanitize_text_field($params['status']);

        $result = wp_update_post($data, true);
        if (is_wp_error($result)) return $result;
        return rest_ensure_response(['success' => true, 'id' => $id]);
    }

    public function delete_page($request) {
        $id = (int)$request['id'];
        $force = (bool)($request->get_param('force') ?? false);
        return rest_ensure_response(['success' => (bool)wp_delete_post($id, $force)]);
    }
}