PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.30.0
Independent Analytics – WordPress Analytics Plugin v1.30.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / AJAX / AJAX.php
independent-analytics / IAWP / AJAX Last commit date
AJAX.php 3 years ago Cleared_Cache_AJAX.php 3 years ago Create_Campaign_AJAX.php 3 years ago Delete_Campaign_AJAX.php 3 years ago Delete_Data_AJAX.php 3 years ago Export_Campaigns_AJAX.php 3 years ago Export_Devices_AJAX.php 2 years ago Export_Geo_AJAX.php 3 years ago Export_Pages_AJAX.php 3 years ago Export_Referrers_AJAX.php 3 years ago Filters_AJAX.php 2 years ago Migration_Status_AJAX.php 3 years ago Real_Time_AJAX.php 3 years ago Test_Email_AJAX.php 3 years ago Update_Capabilities_AJAX.php 3 years ago
AJAX.php
94 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\AJAX;
4
5 use IAWP_SCOPED\IAWP\Capability_Manager;
6 use IAWP_SCOPED\IAWP\Migrations;
7 abstract class AJAX
8 {
9 public function __construct()
10 {
11 \add_action('wp_ajax_' . $this->action_name(), [$this, 'intercept_ajax']);
12 }
13 /**
14 * This is the direct handler for ajax requests.
15 * Permissions and nonce values are checked before executing the ajax action_callback function.
16 *
17 * @return void
18 */
19 public final function intercept_ajax() : void
20 {
21 // Todo - Should this be can_edit() instead?
22 $is_not_migrating = $this->allowed_during_migrations() || !Migrations\Migration::is_migrating();
23 $valid_fields = !$this->missing_fields();
24 $can_view = Capability_Manager::can_view();
25 \check_ajax_referer($this->action_name(), $this->action_name() . '_nonce');
26 if ($is_not_migrating && $valid_fields && $can_view) {
27 $this->action_callback();
28 } else {
29 \wp_send_json_error(['errorMessage' => 'Unable to process IAWP AJAX request']);
30 }
31 \wp_die();
32 }
33 /**
34 * Classes must define an action name for the ajax request
35 *
36 * The required nonce for the ajax request will be the action name with a "_nonce" postfix
37 * Example: "iawp_delete_data" require a "iawp_delete_data_nonce" nonce field
38 *
39 * @return string
40 */
41 protected abstract function action_name() : string;
42 /**
43 * Classes must define an action callback to run when an ajax request is made
44 *
45 * @return void
46 */
47 protected abstract function action_callback() : void;
48 /**
49 * Classes can define a set of required fields for an ajax request
50 *
51 * @return array
52 */
53 protected function action_required_fields() : array
54 {
55 return [];
56 }
57 /**
58 * Override method to allow the AJAX request to run during migrations
59 *
60 * @return bool false by default
61 */
62 protected function allowed_during_migrations() : bool
63 {
64 return \false;
65 }
66 /**
67 * Get a field value. This method supports text and arrays. Returns array if no field found.
68 *
69 * @param $field_name
70 * @return array|string|null
71 */
72 protected final function get_field($field_name)
73 {
74 if (!\array_key_exists($field_name, $_POST)) {
75 return null;
76 }
77 $type = \gettype($_POST[$field_name]);
78 if ($type == 'array') {
79 return \rest_sanitize_array($_POST[$field_name]);
80 } else {
81 return \sanitize_text_field($_POST[$field_name]);
82 }
83 }
84 private function missing_fields() : bool
85 {
86 foreach ($this->action_required_fields() as $required_field) {
87 if (!\array_key_exists($required_field, $_POST)) {
88 return \true;
89 }
90 }
91 return \false;
92 }
93 }
94