PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.12.2
Independent Analytics – WordPress Analytics Plugin v2.12.2
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 / Edit_Link.php
independent-analytics / IAWP / AJAX Last commit date
AJAX.php 1 year ago AJAX_Manager.php 1 year ago Archive_Link.php 1 year ago Click_Tracking_Cache_Cleared.php 1 year ago Configure_Pruner.php 1 year ago Copy_Report.php 1 year ago Create_Campaign.php 2 years ago Create_Report.php 1 year ago Delete_Campaign.php 2 years ago Delete_Data.php 1 year ago Delete_Link.php 1 year ago Delete_Module.php 1 year ago Delete_Report.php 1 year ago Dismiss_Notice.php 1 year ago Edit_Link.php 1 year ago Edit_Module.php 1 year ago Export_Report_Statistics.php 11 months ago Export_Report_Table.php 11 months ago Export_Reports.php 10 months ago Filter.php 11 months ago Get_Markup_For_Module.php 1 year ago Get_Markup_For_Modules.php 1 year ago Import_Reports.php 1 year ago Migration_Status.php 1 year ago Preview_Email.php 2 years ago Real_Time_Data.php 2 years ago Refresh_Modules.php 1 year ago Rename_Report.php 1 year ago Reorder_Modules.php 1 year ago Reset_Analytics.php 2 years ago Reset_Overview.php 1 year ago Save_Module.php 1 year ago Save_Report.php 1 year ago Set_Favorite_Report.php 1 year ago Set_WooCommerce_Statuses_To_Track.php 1 year ago Sort_Links.php 1 year ago Sort_Reports.php 1 year ago Test_Email.php 2 years ago Update_Capabilities.php 1 year ago Update_User_Settings.php 2 years ago
Edit_Link.php
68 lines
1 <?php
2
3 namespace IAWP\AJAX;
4
5 use IAWP\Capability_Manager;
6 use IAWP\Click_Tracking;
7 use IAWP\Illuminate_Builder;
8 use IAWP\Tables;
9 use IAWP\Utils\Link_Validator;
10 /** @internal */
11 class Edit_Link extends \IAWP\AJAX\AJAX
12 {
13 protected function action_name() : string
14 {
15 return 'iawp_edit_link';
16 }
17 protected function requires_pro() : bool
18 {
19 return \true;
20 }
21 protected function action_callback() : void
22 {
23 if (!Capability_Manager::can_edit()) {
24 return;
25 }
26 $link_id = $this->get_int_field('id');
27 $link_properties = ['name' => $this->get_field('name'), 'type' => $this->get_field('type'), 'value' => $this->get_field('value')];
28 // Validate
29 foreach ($link_properties as $key => $value) {
30 $error = Link_Validator::validate($key, $value, $link_properties['type']);
31 if ($error) {
32 \wp_send_json_error(['error' => $error, 'property' => $key]);
33 }
34 }
35 // Sanitize
36 $link_properties['name'] = \sanitize_text_field($link_properties['name']);
37 $link_properties['type'] = \sanitize_text_field($link_properties['type']);
38 if ($link_properties['type'] == 'domain') {
39 $link_properties['value'] = Link_Validator::sanitize_domain($link_properties['value']);
40 } elseif ($link_properties['type'] == 'subdirectory') {
41 $link_properties['value'] = Link_Validator::sanitize_subdirectory($link_properties['value']);
42 } elseif ($link_properties['type'] == 'external') {
43 // There's no value for external
44 $link_properties['value'] = '';
45 } else {
46 $link_properties['value'] = \sanitize_text_field($link_properties['value']);
47 }
48 $link_rule = null;
49 if (\is_int($link_id)) {
50 $link_rule = Click_Tracking\Link_Rule::find($link_id);
51 if ($link_rule->type() !== $link_properties['type'] || $link_rule->value() !== $link_properties['value']) {
52 Click_Tracking\Link_Rule_Finder::require_cleared_cache();
53 }
54 } else {
55 Click_Tracking\Link_Rule_Finder::require_cleared_cache();
56 }
57 if ($link_rule) {
58 Illuminate_Builder::new()->from(Tables::link_rules())->where('link_rule_id', '=', $link_id)->update($link_properties);
59 } else {
60 $link_properties['created_at'] = (new \DateTime())->format('Y-m-d H:i:s');
61 $link_id = Illuminate_Builder::new()->from(Tables::link_rules())->insertGetId($link_properties);
62 }
63 // Fetch a fresh copy
64 $link_rule = Click_Tracking\Link_Rule::find($link_id);
65 \wp_send_json_success(['shouldShowCacheMessage' => \get_option('iawp_click_tracking_cache_cleared') === \false, 'html' => \IAWPSCOPED\iawp_blade()->run('click-tracking.link', ['link' => $link_rule->to_array(), 'types' => Click_Tracking::types(), 'extensions' => Click_Tracking::extensions(), 'protocols' => Click_Tracking::protocols()])]);
66 }
67 }
68