PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.0.2
JetFormBuilder — Dynamic Blocks Form Builder v3.0.2
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / admin / single-pages / base-page-updater.php
jetformbuilder / includes / admin / single-pages Last commit date
actions 3 years ago meta-boxes 3 years ago meta-containers 3 years ago base-page-updater.php 3 years ago base-single-page.php 3 years ago
base-page-updater.php
103 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Admin\Single_Pages;
5
6
7 use Jet_Form_Builder\Admin\Exceptions\Failed_Box_Update;
8 use Jet_Form_Builder\Admin\Pages\Pages_Manager;
9 use Jet_Form_Builder\Admin\Single_Pages\Meta_Boxes\Meta_Box_Update_Callback;
10 use Jet_Form_Builder\Admin\Single_Pages\Meta_Containers\Base_Meta_Container;
11 use Jet_Form_Builder\Db_Queries\Execution_Builder;
12 use Jet_Form_Builder\Exceptions\Repository_Exception;
13 use Jet_Form_Builder\Rest_Api\Rest_Api_Endpoint_Base;
14
15 abstract class Base_Page_Updater extends Rest_Api_Endpoint_Base {
16
17 abstract public static function get_page_slug(): string;
18
19 public static function get_rest_base() {
20 return static::get_page_slug() . '/(?P<id>[\d]+)';
21 }
22
23 /**
24 * @param \WP_REST_Request $request
25 *
26 * @return mixed|\WP_REST_Response
27 */
28 public function get_resource( \WP_REST_Request $request ) {
29 return false;
30 }
31
32 /**
33 * @return mixed
34 */
35 public static function get_methods() {
36 return \WP_REST_Server::EDITABLE;
37 }
38
39 public function run_callback( \WP_REST_Request $request ) {
40 $resource = $this->get_resource( $request );
41
42 if ( $resource instanceof \WP_REST_Request ) {
43 return $resource;
44 }
45
46 Execution_Builder::instance()->transaction_start();
47
48 try {
49 $this->update_boxes( $request, $resource );
50 } catch ( Failed_Box_Update $exception ) {
51 Execution_Builder::instance()->transaction_rollback();
52
53 return new \WP_REST_Response(
54 array(
55 'message' => $exception->getMessage(),
56 'data' => $exception->get_additional(),
57 ),
58 503
59 );
60 }
61 Execution_Builder::instance()->transaction_commit();
62
63 return new \WP_REST_Response(
64 array(
65 'message' => __( 'Successfully updated!', 'jet-form-builder' ),
66 )
67 );
68 }
69
70 /**
71 * @param \WP_REST_Request $request
72 * @param $resource
73 *
74 * @throws Failed_Box_Update
75 */
76 protected function update_boxes( \WP_REST_Request $request, $resource ) {
77 /** @var Base_Meta_Container[] $containers */
78 $containers = $this->get_page()->get_prepared_containers();
79 $body = $request->get_json_params();
80 $boxes = $body['boxes'] ?? array();
81
82 foreach ( $containers as $container ) {
83 foreach ( $boxes as $scope => $state ) {
84 try {
85 $box = $container->get_box_by_scope( $scope );
86 } catch ( Repository_Exception $exception ) {
87 continue;
88 }
89 if ( ! ( $box instanceof Meta_Box_Update_Callback ) ) {
90 continue;
91 }
92 $box->on_update( $state, $request, $resource );
93 }
94 }
95 }
96
97 /**
98 * @return Base_Single_Page
99 */
100 public function get_page(): Base_Single_Page {
101 return Pages_Manager::instance()->single()->rep_get_item_or_die( static::get_page_slug() );
102 }
103 }