PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.23.0
Independent Analytics – WordPress Analytics Plugin v1.23.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_Data_AJAX.php 3 years ago Export_Campaigns_AJAX.php 3 years ago Export_Geo_AJAX.php 3 years ago Export_Referrers_AJAX.php 3 years ago Export_Views_AJAX.php 3 years ago Filters_AJAX.php 3 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 * Classes must define an action name for the ajax request
15 *
16 * The required nonce for the ajax request will be the action name with a "_nonce" postfix
17 * Example: "iawp_delete_data" require a "iawp_delete_data_nonce" nonce field
18 *
19 * @return string
20 */
21 protected abstract function action_name() : string;
22 /**
23 * Classes must define an action callback to run when an ajax request is made
24 *
25 * @return void
26 */
27 protected abstract function action_callback() : void;
28 /**
29 * Classes can define a set of required fields for an ajax request
30 *
31 * @return array
32 */
33 protected function action_required_fields() : array
34 {
35 return [];
36 }
37 /**
38 * This is the direct handler for ajax requests.
39 * Permissions and nonce values are checked before executing the ajax action_callback function.
40 *
41 * @return void
42 */
43 public final function intercept_ajax() : void
44 {
45 // Todo - Should this be can_edit() instead?
46 $is_not_migrating = $this->allowed_during_migrations() || !Migrations\Migration::is_migrating();
47 $valid_fields = !$this->missing_fields();
48 $can_view = Capability_Manager::can_view();
49 \check_ajax_referer($this->action_name(), $this->action_name() . '_nonce');
50 if ($is_not_migrating && $valid_fields && $can_view) {
51 $this->action_callback();
52 } else {
53 \wp_send_json_error(['errorMessage' => 'Unable to process IAWP AJAX request']);
54 }
55 \wp_die();
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