PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.34
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.34
5.5.84 5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 5.5.41 5.5.42 All 160 releases
wp-data-access / WPDataAccess / Utilities / WPDA_Autocomplete.php

WPDA_Autocomplete.php in WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards 5.5.34, at WPDataAccess/Utilities/WPDA_Autocomplete.php

140 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Suppress "error - 0 - No summary was found for this file" on phpdoc generation
5 *
6 * @package WPDataAccess\Utilities
7 */
8
9 namespace WPDataAccess\Utilities {
10
11 use WPDataAccess\Connection\WPDADB;
12 use WPDataAccess\Simple_Form\WPDA_Simple_Form_Item_Autocomplete;
13 use WPDataAccess\WPDA;
14
15 class WPDA_Autocomplete {
16
17 public function autocomplete() {
18 $status = 'ok';
19 $message = '';
20 $rows = array();
21
22 if (
23 ! isset(
24 $_POST['wpda_wpnonce'],
25 $_POST['wpda_source_column_value'],
26 $_POST['wpda_source_column_name'],
27 $_POST['wpda_target_schema_name'],
28 $_POST['wpda_target_table_name'],
29 $_POST['wpda_target_column_name'],
30 $_POST['wpda_lookup_label_column']
31 )
32 ) {
33 $status = 'error';
34 $message = __( 'Wrong arguments', 'wp-data-access' );
35 } else {
36 $wpda_wpnonce = sanitize_text_field( wp_unslash( $_POST['wpda_wpnonce'] ) ); // input var okay.
37 $wpda_source_column_value = sanitize_text_field( wp_unslash( $_POST['wpda_source_column_value'] ) ); // input var okay.
38 $wpda_source_column_name = sanitize_text_field( wp_unslash( $_POST['wpda_source_column_name'] ) ); // input var okay.
39 $wpda_target_schema_name = sanitize_text_field( wp_unslash( $_POST['wpda_target_schema_name'] ) ); // input var okay.
40 $wpda_target_table_name = sanitize_text_field( wp_unslash( $_POST['wpda_target_table_name'] ) ); // input var okay.
41 $wpda_target_column_name = sanitize_text_field( wp_unslash( $_POST['wpda_target_column_name'] ) ); // input var okay.
42 $wpda_lookup_label_column = sanitize_text_field( wp_unslash( $_POST['wpda_lookup_label_column'] ) ); // input var okay.
43
44 if ( ! wp_verify_nonce( $wpda_wpnonce, WPDA_Simple_Form_Item_Autocomplete::AUTOCOMPLE_NONCE_ACTION . $wpda_target_table_name ) ) {
45 $status = 'error';
46 $message = __( 'Not authorized', 'wp-data-access' );
47 } else {
48 $rows = $this->autocomplete_query(
49 $wpda_target_schema_name,
50 $wpda_target_table_name,
51 $wpda_target_column_name,
52 $wpda_lookup_label_column,
53 $wpda_source_column_value
54 );
55 }
56 }
57
58 $response = array(
59 'status' => $status,
60 'message' => $message,
61 'rows' => $rows,
62 );
63
64 WPDA::sent_header( 'application/json' );
65
66 echo json_encode( $response, JSON_NUMERIC_CHECK );
67
68 die();
69 }
70
71 public function autocomplete_query(
72 $wpda_target_schema_name,
73 $wpda_target_table_name,
74 $wpda_target_column_name,
75 $wpda_lookup_label_column,
76 $wpda_source_column_value
77 ) {
78 $wpdadb = WPDADB::get_db_connection( $wpda_target_schema_name );
79 if ( null === $wpdadb ) {
80 return array();
81 }
82
83 $query = '
84 select `' . str_replace( '`', '', (string) $wpda_lookup_label_column ) . '` as value,
85 `' . str_replace( '`', '', (string) $wpda_lookup_label_column ) . '` as label,
86 `' . str_replace( '`', '', (string) $wpda_target_column_name ) . '` as lookup
87 from `' . str_replace( '`', '', (string) $wpda_target_table_name ) . '`
88 where `' . str_replace( '`', '', (string) $wpda_lookup_label_column ) . '` like %s
89 ';
90
91 return $wpdadb->get_results(
92 $wpdadb->prepare(
93 $query,
94 "$wpda_source_column_value%"
95 ),
96 'ARRAY_A'
97 );
98 }
99
100 public function autocomplete_anonymous() {
101 $this->autocomplete();
102 }
103
104 public function autocomplete_lookup(
105 $schema_name,
106 $table_name,
107 $column_name,
108 $lookup_column_name,
109 $lookup_column_value
110 ) {
111 $wpdadb = WPDADB::get_db_connection( $schema_name );
112 if ( null === $wpdadb ) {
113 return false;
114 }
115
116 $query = '
117 select `' . str_replace( '`', '', (string) $lookup_column_name ) . '` as lookup
118 from `' . str_replace( '`', '', (string) $table_name ) . '`
119 where `' . str_replace( '`', '', (string) $column_name ) . '` = %s
120 ';
121
122 $rows = $wpdadb->get_results(
123 $wpdadb->prepare(
124 $query,
125 $lookup_column_value
126 ),
127 'ARRAY_A'
128 );
129
130 if ( 1 === $wpdadb->num_rows ) {
131 return $rows[0]['lookup'];
132 } else {
133 return false;
134 }
135 }
136
137 }
138
139 }
140