Server IP : 104.21.38.3 / Your IP : 104.23.175.239 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/wwwroot/coircraft.com/wp-content/plugins/caldera-forms/classes/api/ |
Upload File : |
<?php /** * Abstract class the all REST API route collections that follow CRUD pattern should extend * * @package Caldera_Forms * @author Josh Pollock <[email protected]> * @license GPL-2.0+ * @link * @copyright 2016 CalderaWP LLC */ abstract class Caldera_Forms_API_CRUD implements Caldera_Forms_API_Route { /** * Form object for this response * * @since 1.5.0 * * @var Caldera_Forms_API_Form|Caldera_Forms_API_Privacy */ protected $form; /** * Namespace for API * * @since 1.5.0 * * @var string */ protected $namespace; /** * @inheritdoc * * @since 1.4.4 */ public function add_routes($namespace) { $this->namespace = $namespace; register_rest_route($namespace, $this->non_id_endpoint_url(), array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array($this, 'get_items'), 'permission_callback' => array($this, 'get_items_permissions_check'), 'args' => $this->get_items_args(), ), array( 'methods' => \WP_REST_Server::CREATABLE, 'callback' => array($this, 'create_item'), 'permission_callback' => array($this, 'create_item_permissions_check'), 'args' => $this->request_args() ), ) ); register_rest_route($namespace, $this->id_endpoint_url(), array_values($this->id_route())); register_rest_route($namespace, '/' . $this->route_base(), array( 'methods' => 'GET', 'callback' => array($this, 'index'), 'permission_callback' => TRUE, )); } /** * Get the allow attributes for get items calls * * @return array * @since unknown * */ public function get_item_args() { return array( 'context' => array( 'default' => 'view', ), 'entry_list_only_fields' => array( 'required' => false, 'default' => false, ) ); } /** * Callback for the index of this collection * * @param WP_REST_Request $request * * @return Caldera_Forms_API_Response * @since 1.4.4 * */ public function index(WP_REST_Request $request) { /** @var WP_REST_Server $wp_rest_server */ global $wp_rest_server; $routes = $wp_rest_server->get_routes(); $endpoints = array(); foreach ($routes as $route => $route_endpoints) { if (false !== strpos($route, $this->namespace . '/' . $this->route_base())) { $endpoints[$route] = $route_endpoints; } } $data = array( 'namespace' => $this->namespace, 'routes' => $wp_rest_server->get_data_for_routes($endpoints, $request['context']), ); return new Caldera_Forms_API_Response($data, 200, array()); } /** * Define query arguments for GET requests * * @return array * @since 1.4.4 * */ public function request_args() { //must ovveride, should be abstract but PHP5.2 _doing_it_wrong(__FUNCTION__, '', '1.5.0'); } /** * Define query arguments for POST/PUT requests * * @return array * @since 1.8.0 * */ public function args_for_create() { return $this->request_args(); } /** * Check if a given request has access to get items * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|bool * @since 1.4.4 * */ public function get_items_permissions_check(WP_REST_Request $request) { //must ovveride, should be abstract but PHP5.2 _doing_it_wrong(__FUNCTION__, '', '1.5.0'); } /** * Check if a given request has access to get a specific item * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|bool * @since 1.4.4 * */ public function get_item_permissions_check(WP_REST_Request $request) { return $this->get_items_permissions_check($request); } /** * Check if a given request has access to create items * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|bool * @since 1.4.4 * */ public function create_item_permissions_check(WP_REST_Request $request) { //must ovveride, should be abstract but PHP5.2 _doing_it_wrong(__FUNCTION__, '', '1.5.0'); } /** * Check if a given request has access to update a specific item * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|bool * @since 1.4.4 * */ public function update_item_permissions_check(WP_REST_Request $request) { return $this->create_item_permissions_check($request); } /** * Check if a given request has access to delete a specific item * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|bool * @since 1.4.4 * */ public function delete_item_permissions_check(WP_REST_Request $request) { return $this->create_item_permissions_check($request); } /** * Get a collection of items * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|\WP_REST_Response * @since 1.4.4 * */ public function get_items(WP_REST_Request $request) { return $this->not_yet_response(); } /** * Get one item from the collection * * @param WP_REST_Request $request Full data about the request. * @return \WP_Error|\WP_REST_Response * @since 1.4.4 * */ public function get_item(WP_REST_Request $request) { return $this->not_yet_response(); } /** * Create one item from the collection * * @param WP_REST_Request $request Full data about the request. * @return Caldera_Forms_API_Response|Caldera_Forms_API_Error * @since 1.4.4 * */ public function create_item(WP_REST_Request $request) { return $this->not_yet_response(); } /** * Update one item from the collection * * @param WP_REST_Request $request Full data about the request. * @return Caldera_Forms_API_Response|Caldera_Forms_API_Error * @since 1.4.4 * */ public function update_item(WP_REST_Request $request) { return $this->not_yet_response(); } /** * Delete one item from the collection * * @param WP_REST_Request $request Full data about the request. * @return Caldera_Forms_API_Response|Caldera_Forms_API_Error * @since 1.4.4 * */ public function delete_item(WP_REST_Request $request) { return $this->not_yet_response(); } /** * Return a 501 error for non-existant route * * @return Caldera_Forms_API_Response * @since 1.4.4 * */ protected function not_yet_response() { $error = new Caldera_Forms_API_Error('not-implemented-yet', __('Route Not Yet Implemented :(', 'caldera-forms')); return new Caldera_Forms_API_Response($error, 501, array()); } /** * Get class shortname and use as base * * @since 1.4.4 * * MUST ovveride in subclass with a hardcoded string. */ protected function route_base() { //must ovveride, should be abstract but PHP5.2 _doing_it_wrong(__FUNCTION__, '', '1.5.0'); } /** * Form the endpoint URL that deos not include item ID * * Used by for get_items() and create_items() * * @return string * @since 1.4.4 * */ protected function non_id_endpoint_url() { return '/' . $this->route_base(); } /** * Form the endpoint URL that includes item ID * * Used by for get_item() and update_time() and delete_item() * * @return string * @since 1.4.4 * */ public function id_endpoint_url() { return '/' . $this->route_base() . '/(?P<id>[\w-]+)'; } /** * @return array */ public function get_items_args() { return array( 'page' => array( 'default' => 1, 'sanitize_callback' => 'absint', ), 'per_page' => array( 'default' => 20, 'sanitize_callback' => 'absint', ), 'limit' => array( 'default' => 10, 'sanitize_callback' => 'absint', ) ); } /** * Factory for Caldera_Forms_API_Form objects * * @param string $id Form ID * @param WP_REST_Request $request Current REST API request * @param bool $set_prop Optional. Set in $form property of object if true, the default. If false, return. * @param bool $privacy_context Optional. If false, a Caldera_Forms_API_Privacy is returned. If true, the default, a Caldera_Forms_API_Form is returned. * * @return Caldera_Forms_API_Form|Caldera_Forms_API_Privacy * @throws Exception * @since 1.5.0 * */ protected function form_object_factory($id, WP_REST_Request $request, $set_prop = true, $privacy_context = false) { $form = Caldera_Forms_Forms::get_form($id); if (empty($form) || (empty($form['ID']) && empty($form['name']))) { throw new Exception(); } if ($privacy_context) { $obj = new Caldera_Forms_API_Form($form); } else { $obj = new Caldera_Forms_API_Privacy($form); } $obj->set_request($request); if ($set_prop) { $this->form = $obj; } else { return $obj; } } /** * Get the 3rd array of arguments for register_rest_route for the route with id in it * * * @return array Indexed by HTTP method, use array_values() on result please. * @since 1.9.2 * * BTW This is work-around for the real problem $this->request_args() serves too many purposes. * It's not the best API design, I was still an egg. * This solution works, but please no one read this and think Josh thinks this is a good idea. */ protected function id_route() { return [ \WP_REST_Server::READABLE => [ 'methods' => \WP_REST_Server::READABLE, 'callback' => array($this, 'get_item'), 'permission_callback' => array($this, 'get_item_permissions_check'), 'args' => $this->get_item_args() ], \WP_REST_Server::EDITABLE => [ 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array($this, 'update_item'), 'permission_callback' => array($this, 'update_item_permissions_check'), 'args' => $this->request_args() ], \WP_REST_Server::DELETABLE => [ 'methods' => \WP_REST_Server::DELETABLE, 'callback' => array($this, 'delete_item'), 'permission_callback' => array($this, 'delete_item_permissions_check'), 'args' => array( 'force' => array( 'default' => false, 'required' => false, ), 'all' => array( 'default' => false, 'required' => false, ), 'id' => array( 'default' => 0, 'sanatization_callback' => 'absint' ) ), ] ]; } }