$41 GRAYBYTE WORDPRESS FILE MANAGER $38

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.15.130 | ADMIN IP 216.73.216.51
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/bravetechrwanda/itiministry.org/plugins/give/src/EventTickets/Routes/

HOME
Current File : /home/bravetechrwanda/itiministry.org/plugins/give/src/EventTickets/Routes//GetEventsListTable.php
<?php

namespace Give\EventTickets\Routes;

use Give\EventTickets\ListTable\EventTicketsListTable;
use Give\Framework\Database\DB;
use Give\Framework\Permissions\Facades\UserPermissions;
use Give\Framework\QueryBuilder\QueryBuilder;
use WP_REST_Request;
use WP_REST_Response;
use WP_REST_Server;

/**
 * @since 3.6.0
 */
class GetEventsListTable
{
    /**
     * @var string
     */
    protected $endpoint = 'events-tickets/events/list-table';

    /**
     * @var WP_REST_Request
     */
    protected $request;

    /**
     * @var EventTicketsListTable
     */
    protected $listTable;

    /**
     * @inheritDoc
     *
     * @since 4.14.0 update permission capability to use facade
     * @since 3.20.0 Set the permission callback to "read".
     * @since 3.6.0
     */
    public function registerRoute(): void
    {
        register_rest_route(
            'give-api/v2',
            $this->endpoint,
            [
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [$this, 'handleRequest'],
                    'permission_callback' => function () {
                        return UserPermissions::events()->canView();
                    },
                ],
                'args' => [
                    'page' => [
                        'type' => 'integer',
                        'default' => 1,
                        'minimum' => 1
                    ],
                    'perPage' => [
                        'type' => 'integer',
                        'default' => 30,
                        'minimum' => 1
                    ],
                    'search' => [
                        'type' => 'string',
                        'required' => false,
                        'sanitize_callback' => 'sanitize_text_field',
                    ],
                    'sortColumn' => [
                        'type' => 'string',
                        'default' => 'id',
                        'sanitize_callback' => 'sanitize_text_field',
                    ],
                    'sortDirection' => [
                        'type' => 'string',
                        'default' => 'asc',
                        'enum' => ['asc', 'desc'],
                    ],
                    'locale' => [
                        'type' => 'string',
                        'required' => false,
                        'default' => get_locale(),
                    ],
                ],
            ]
        );
    }

    /**
     * @since 3.6.0
     */
    public function handleRequest(WP_REST_Request $request): WP_REST_Response
    {
        $this->request = $request;
        $this->listTable = give(EventTicketsListTable::class);

        $events = $this->getEvents();
        $eventsCount = $this->getTotalEventsCount();
        $pageCount = (int)ceil($eventsCount / $request->get_param('perPage'));

        if ('model' === $this->request->get_param('return')) {
            $items = $events;
        } else {
            $this->listTable->items($events, $this->request->get_param('locale') ?? '');
            $items = $this->listTable->getItems();
        }

        return new WP_REST_Response(
            [
                'items' => $items,
                'totalItems' => $eventsCount,
                'totalPages' => $pageCount
            ]
        );
    }

    /**
     * @since 3.6.0
     */
    public function getEvents(): array
    {
        $page = $this->request->get_param('page');
        $perPage = $this->request->get_param('perPage');
        $sortColumns = $this->listTable->getSortColumnById($this->request->get_param('sortColumn') ?: 'id');
        $sortDirection = $this->request->get_param('sortDirection') ?: 'desc';

        $query = give()->events->prepareQuery();
        $query = $this->getWhereConditions($query);

        foreach ($sortColumns as $sortColumn) {
            $query->orderBy($sortColumn, $sortDirection);
        }

        $query->limit($perPage)
            ->offset(($page - 1) * $perPage);

        $events = $query->getAll();

        if (!$events) {
            return [];
        }

        return $events;
    }

    /**
     * @since 3.6.0
     */
    public function getTotalEventsCount(): int
    {
        $query = DB::table('give_events');
        $query = $this->getWhereConditions($query);

        return $query->count();
    }

    /**
     * @since 3.6.0
     */
    private function getWhereConditions(QueryBuilder $query): QueryBuilder
    {
        $search = $this->request->get_param('search');

        if ($search) {
            if (ctype_digit($search)) {
                $query->where('id', $search);
            } else {
                $query->whereLike('title', $search);
                $query->orWhereLike('description', $search);
            }
        }

        return $query;
    }
}

Current_dir [ WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
25 May 2026 4.20 PM
bravetechrwanda / bravetechrwanda
0755
CreateEvent.php
2.999 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
CreateEventTicketType.php
3.369 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
DeleteEventTicketType.php
2.702 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
DeleteEventsListTable.php
3.016 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEventForms.php
2.862 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEventTicketTypeTickets.php
2.725 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEventTicketTypes.php
2.613 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEventTickets.php
2.573 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEvents.php
2.095 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
GetEventsListTable.php
4.75 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
UpdateEvent.php
3.449 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644
UpdateEventTicketType.php
3.596 KB
28 Jan 2026 8.00 PM
bravetechrwanda / bravetechrwanda
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF Static GIF