PluginProbe
Redirection / 3.3.1
Redirection v3.3.1
5.10.0 5.9.0 5.8.1 5.8.0 3.7.2 3.7.3 4.0 4.0.1 4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.5 4.5.1 4.6.2 4.7.1 All 130 releases
redirection / redirection-api.php

redirection-api.php in Redirection 3.3.1, at redirection-api.php

126 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 include_once dirname( __FILE__ ) . '/api/api-group.php';
4 include_once dirname( __FILE__ ) . '/api/api-redirect.php';
5 include_once dirname( __FILE__ ) . '/api/api-log.php';
6 include_once dirname( __FILE__ ) . '/api/api-404.php';
7 include_once dirname( __FILE__ ) . '/api/api-settings.php';
8 include_once dirname( __FILE__ ) . '/api/api-plugin.php';
9 include_once dirname( __FILE__ ) . '/api/api-import.php';
10 include_once dirname( __FILE__ ) . '/api/api-export.php';
11
12 define( 'REDIRECTION_API_NAMESPACE', 'redirection/v1' );
13
14 class Redirection_Api_Route {
15 protected function add_error_details( WP_Error $error, $line, $code = 400 ) {
16 global $wpdb;
17
18 $data = array(
19 'status' => $code,
20 'error_code' => $line,
21 );
22
23 if ( isset( $wpdb->last_error ) && $wpdb->last_error ) {
24 $data['wpdb'] = $wpdb->last_error;
25 }
26
27 $error->add_data( $data );
28 return $error;
29 }
30
31 public function permission_callback( WP_REST_Request $request ) {
32 return current_user_can( apply_filters( 'redirection_role', 'manage_options' ) );
33 }
34
35 public function get_route( $method, $callback ) {
36 return array(
37 'methods' => $method,
38 'callback' => array( $this, $callback ),
39 'permission_callback' => array( $this, 'permission_callback' ),
40 );
41 }
42 }
43
44 class Redirection_Api_Filter_Route extends Redirection_Api_Route {
45 protected function get_filter_args( $filter_fields, $order_fields ) {
46 return array(
47 'filterBy' => array(
48 'description' => 'Field to filter by',
49 'type' => 'enum',
50 'enum' => $filter_fields,
51 ),
52 'filter' => array(
53 'description' => 'Value to filter by',
54 'type' => 'string',
55 ),
56 'orderby' => array(
57 'description' => 'Field to order results by',
58 'type' => 'enum',
59 'enum' => $order_fields,
60 ),
61 'direction' => array(
62 'description' => 'Direction of ordered results',
63 'type' => 'enum',
64 'default' => 'desc',
65 'enum' => array( 'asc', 'desc' ),
66 ),
67 'per_page' => array(
68 'description' => 'Number of results per page',
69 'type' => 'integer',
70 'default' => 25,
71 'minimum' => 5,
72 'maximum' => RED_MAX_PER_PAGE,
73 ),
74 'page' => array(
75 'description' => 'Page offset',
76 'type' => 'integer',
77 'minimum' => 0,
78 'default' => 0,
79 ),
80 );
81 }
82
83 public function register_bulk( $namespace, $route, $filters, $orders, $callback ) {
84 register_rest_route( $namespace, $route, array(
85 $this->get_route( WP_REST_Server::EDITABLE, $callback ),
86 'args' => array_merge( $this->get_filter_args( $filters, $orders ), array(
87 'items' => array(
88 'description' => 'Comma separated list of item IDs to perform action on',
89 'type' => 'string|integer',
90 'required' => true,
91 ),
92 ) ),
93 ) );
94 }
95 }
96
97 class Redirection_Api {
98 private static $instance = null;
99 private $routes = array();
100
101 static function init() {
102 if ( is_null( self::$instance ) ) {
103 self::$instance = new Redirection_Api();
104
105 load_plugin_textdomain( 'redirection', false, dirname( plugin_basename( REDIRECTION_FILE ) ) . '/locale/' );
106 }
107
108 return self::$instance;
109 }
110
111 public function __construct() {
112 global $wpdb;
113
114 $wpdb->hide_errors();
115
116 $this->routes[] = new Redirection_Api_Redirect( REDIRECTION_API_NAMESPACE );
117 $this->routes[] = new Redirection_Api_Group( REDIRECTION_API_NAMESPACE );
118 $this->routes[] = new Redirection_Api_Log( REDIRECTION_API_NAMESPACE );
119 $this->routes[] = new Redirection_Api_404( REDIRECTION_API_NAMESPACE );
120 $this->routes[] = new Redirection_Api_Settings( REDIRECTION_API_NAMESPACE );
121 $this->routes[] = new Redirection_Api_Plugin( REDIRECTION_API_NAMESPACE );
122 $this->routes[] = new Redirection_Api_Import( REDIRECTION_API_NAMESPACE );
123 $this->routes[] = new Redirection_Api_Export( REDIRECTION_API_NAMESPACE );
124 }
125 }
126