Newer
Older
<?php
/**
* Soap controller class.
*
* Soap endpoint, replacement for CiviCRM's 'extern/soap.php'.
*
* @since 0.1
*/
namespace CiviCRM_WP_REST\Controller;
class Soap extends Base {
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/**
* @var string
* The base route.
* @since 0.1
*/
protected $rest_base = 'soap';
/**
* Registers routes.
*
* @since 0.1
*/
public function register_routes() {
register_rest_route($this->get_namespace(), $this->get_rest_base(), [
[
'methods' => \WP_REST_Server::ALLMETHODS,
'permission_callback' => '__return_true',
'callback' => [$this, 'get_item'],
],
]);
}
/**
* Get items.
*
* @since 0.1
* @param WP_REST_Request $request
*/
public function get_item($request) {
/**
* Filter request params.
*
* @since 0.1
* @param array $params
* @param WP_REST_Request $request
*/
$params = apply_filters('civi_wp_rest/controller/soap/params', $request->get_params(), $request);
// init soap server
$soap_server = new \SoapServer(
NULL,
[
'uri' => 'urn:civicrm',
'soap_version' => SOAP_1_2,
]
);
$crm_soap_server = new \CRM_Utils_SoapServer();
$soap_server->setClass('CRM_Utils_SoapServer', \CRM_Core_Config::singleton()->userFrameworkClass);
$soap_server->setPersistence(SOAP_PERSISTENCE_SESSION);
/**
* Bypass WP and send request from Soap server.
*/
add_filter('rest_pre_serve_request', function($served, $response, $request, $server) use ($soap_server) {
$soap_server->handle();
return TRUE;
}, 10, 4);
}
/**
* Item schema.
*
* @since 0.1
* @return array $schema
*/
public function get_item_schema() {}
/**
* Item arguments.
*
* @since 0.1
* @return array $arguments
*/
public function get_item_args() {}