PluginProbe
Redirection / 4.3.1
Redirection v4.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 / api / api-redirect.php

api-redirect.php in Redirection 4.3.1, at api/api-redirect.php

110 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * @api {get} /redirection/v1/redirect Get list of redirects
5 * @apiDescription Get list of redirects
6 * @apiGroup Redirect
7 *
8 * @apiParam {string} orderby
9 * @apiParam {string} direction
10 * @apiParam {string} filter
11 * @apiParam {string} per_page
12 * @apiParam {string} page
13 *
14 * @apiSuccess {Array} ip Array of redirects
15 * @apiSuccess {Integer} total Number of items
16 *
17 * @apiUse 400Error
18 */
19
20 class Redirection_Api_Redirect extends Redirection_Api_Filter_Route {
21 public function __construct( $namespace ) {
22 $filters = array( 'url', 'group' );
23 $orders = array( 'url', 'last_count', 'last_access', 'position', 'id' );
24
25 register_rest_route( $namespace, '/redirect', array(
26 'args' => $this->get_filter_args( $filters, $orders ),
27 $this->get_route( WP_REST_Server::READABLE, 'route_list' ),
28 $this->get_route( WP_REST_Server::EDITABLE, 'route_create' ),
29 ) );
30
31 register_rest_route( $namespace, '/redirect/(?P<id>[\d]+)', array(
32 $this->get_route( WP_REST_Server::EDITABLE, 'route_update' ),
33 ) );
34
35 $this->register_bulk( $namespace, '/bulk/redirect/(?P<bulk>delete|enable|disable|reset)', $filters, $orders, 'route_bulk' );
36 }
37
38 public function route_list( WP_REST_Request $request ) {
39 return Red_Item::get_filtered( $request->get_params() );
40 }
41
42 public function route_create( WP_REST_Request $request ) {
43 $params = $request->get_params();
44 $urls = array();
45
46 if ( isset( $params['url'] ) ) {
47 $urls = array( $params['url'] );
48
49 if ( is_array( $params['url'] ) ) {
50 $urls = $params['url'];
51 }
52
53 foreach ( $urls as $url ) {
54 $params['url'] = $url;
55 $redirect = Red_Item::create( $params );
56
57 if ( is_wp_error( $redirect ) ) {
58 return $this->add_error_details( $redirect, __LINE__ );
59 }
60 }
61 }
62
63 return $this->route_list( $request );
64 }
65
66 public function route_update( WP_REST_Request $request ) {
67 $params = $request->get_params();
68 $redirect = Red_Item::get_by_id( intval( $params['id'], 10 ) );
69
70 if ( $redirect ) {
71 $result = $redirect->update( $params );
72
73 if ( is_wp_error( $result ) ) {
74 return $this->add_error_details( $result, __LINE__ );
75 }
76
77 return array( 'item' => $redirect->to_json() );
78 }
79
80 return $this->add_error_details( new WP_Error( 'redirect', 'Invalid redirect details' ), __LINE__ );
81 }
82
83 public function route_bulk( WP_REST_Request $request ) {
84 $action = $request['bulk'];
85 $items = explode( ',', $request['items'] );
86
87 if ( is_array( $items ) ) {
88 foreach ( $items as $item ) {
89 $redirect = Red_Item::get_by_id( intval( $item, 10 ) );
90
91 if ( $redirect ) {
92 if ( $action === 'delete' ) {
93 $redirect->delete();
94 } elseif ( $action === 'disable' ) {
95 $redirect->disable();
96 } elseif ( $action === 'enable' ) {
97 $redirect->enable();
98 } elseif ( $action === 'reset' ) {
99 $redirect->reset();
100 }
101 }
102 }
103
104 return $this->route_list( $request );
105 }
106
107 return $this->add_error_details( new WP_Error( 'redirect', 'Invalid array of items' ), __LINE__ );
108 }
109 }
110