PluginProbe
Redirection / 3.1
Redirection v3.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 3.1, at api/api-redirect.php

76 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Redirection_Api_Redirect extends Redirection_Api_Filter_Route {
4 public function __construct( $namespace ) {
5 $filters = array( 'url', 'group' );
6 $orders = array( 'url', 'last_count', 'last_access', 'position', 'id' );
7
8 register_rest_route( $namespace, '/redirect', array(
9 'args' => $this->get_filter_args( $filters, $orders ),
10 $this->get_route( WP_REST_Server::READABLE, 'route_list' ),
11 $this->get_route( WP_REST_Server::EDITABLE, 'route_create' ),
12 ) );
13
14 register_rest_route( $namespace, '/redirect/(?P<id>[\d]+)', array(
15 $this->get_route( WP_REST_Server::EDITABLE, 'route_update' ),
16 ) );
17
18 $this->register_bulk( $namespace, '/bulk/redirect/(?P<action>delete|enable|disable|reset)', $filters, $orders, 'route_bulk' );
19 }
20
21 public function route_list( WP_REST_Request $request ) {
22 return Red_Item::get_filtered( $request->get_params() );
23 }
24
25 public function route_create( WP_REST_Request $request ) {
26 $redirect = Red_Item::create( $request->get_params() );
27
28 if ( is_wp_error( $redirect ) ) {
29 return $this->add_error_details( $redirect, __LINE__ );
30 }
31
32 return $this->route_list( $request );;
33 }
34
35 public function route_update( WP_REST_Request $request ) {
36 $params = $request->get_params();
37 $redirect = Red_Item::get_by_id( intval( $params['id'], 10 ) );
38
39 if ( $redirect ) {
40 $result = $redirect->update( $params );
41
42 if ( is_wp_error( $result ) ) {
43 return $this->add_error_details( $result, __LINE );
44 }
45
46 return array( 'item' => $redirect->to_json() );
47 }
48
49 return $this->add_error_details( new WP_Error( 'redirect', 'Invalid redirect details' ), __LINE__ );
50 }
51
52 public function route_bulk( WP_REST_Request $request ) {
53 $action = $request['action'];
54
55 if ( is_array( $request['items'] ) ) {
56 foreach ( $request['items'] as $item ) {
57 $redirect = Red_Item::get_by_id( intval( $item, 10 ) );
58
59 if ( $redirect ) {
60 if ( $action === 'delete' ) {
61 $redirect->delete();
62 } else if ( $action === 'disable' ) {
63 $redirect->disable();
64 } else if ( $action === 'enable' ) {
65 $redirect->enable();
66 } else if ( $action === 'reset' ) {
67 $redirect->reset();
68 }
69 }
70 }
71 }
72
73 return $this->route_list( $request );
74 }
75 }
76