PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.6
JetFormBuilder — Dynamic Blocks Form Builder v3.6.6
3.6.6.1 3.6.6 3.6.5.4 3.6.5.3 3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 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 All 134 releases
jetformbuilder / modules / actions-v2 / insert-term / properties / insert-action.php

insert-action.php in JetFormBuilder — Dynamic Blocks Form Builder 3.6.6, at modules/actions-v2/insert-term/properties/insert-action.php

86 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace JFB_Modules\Actions_V2\Insert_Term\Properties;
4
5 use Jet_Form_Builder\Actions\Methods\Abstract_Modifier;
6 use Jet_Form_Builder\Exceptions\Action_Exception;
7
8 // If this file is called directly, abort.
9 if ( ! defined( 'WPINC' ) ) {
10 die;
11 }
12
13 class Insert_Action extends Base_Term_Action {
14
15 public function get_id(): string {
16 return 'insert';
17 }
18
19 public static function is_supported( Abstract_Modifier $modifier ): bool {
20 return true;
21 }
22
23 /**
24 * @throws Action_Exception
25 */
26 public function do_action() {
27 if ( ! $this->pre_check() ) {
28 return;
29 }
30
31 $taxonomy = sanitize_text_field( $this->modifier->source_arr['taxonomy'] ?? '' );
32
33 if ( ! $this->user_can_manage_taxonomy_terms( $taxonomy ) ) {
34 throw new Action_Exception(
35 'failed',
36 esc_html( 'You are not allowed to manage this taxonomy' )
37 );
38 }
39
40 $parent_id = absint( $this->modifier->source_arr['parent'] ?? 0 );
41 $name = sanitize_text_field( $this->modifier->source_arr['name'] ?? '' );
42 $slug = sanitize_title( $this->modifier->source_arr['slug'] ?? '' );
43 $args = array();
44
45 if ( empty( $name ) ) {
46 throw new Action_Exception(
47 esc_html( 'Term name is required' )
48 );
49 }
50
51 if ( '' === $taxonomy ) {
52 throw new Action_Exception(
53 esc_html( 'Taxonomy are required' )
54 );
55 }
56
57 $args = array(
58 'name' => $name,
59 'slug' => $slug,
60 );
61
62 if ( is_taxonomy_hierarchical( $taxonomy ) && ! empty( $parent_id ) && 0 !== (int) $parent_id ) {
63 $parent_term = get_term( $parent_id, $taxonomy );
64
65 if ( $parent_term && ! is_wp_error( $parent_term ) ) {
66 $args['parent'] = $parent_id;
67 } else {
68 throw new Action_Exception(
69 esc_html( 'Invalid term parent ID ' . $parent_id )
70 );
71 }
72 }
73
74 $result = wp_insert_term( $name, $taxonomy, $args );
75
76 if ( is_wp_error( $result ) ) {
77 throw new Action_Exception(
78 'failed',
79 esc_html( $result->get_error_message() )
80 );
81 }
82
83 $this->inserted_id = $result['term_id'];
84 }
85 }
86