]> _ Git - couzy.git/blob
2403845150d2ba9d2294086eb5d00873403a3d28
[couzy.git] /
1 <?php
2 /**
3  * @package WPSEO\admin|ajax
4  */
5
6 /**
7  * Class Yoast_Plugin_Conflict_Ajax
8  */
9 class Yoast_Plugin_Conflict_Ajax {
10
11         /**
12          * @var string
13          */
14         private $option_name = 'wpseo_dismissed_conflicts';
15
16         /**
17          * @var array
18          */
19         private $dismissed_conflicts = array();
20
21         /**
22          * Initialize the hooks for the AJAX request
23          */
24         public function __construct() {
25                 add_action( 'wp_ajax_wpseo_dismiss_plugin_conflict', array( $this, 'dismiss_notice' ) );
26         }
27
28         /**
29          * Handles the dismiss notice request
30          */
31         public function dismiss_notice() {
32                 check_ajax_referer( 'dismiss-plugin-conflict' );
33
34                 $conflict_data = filter_input( INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY );
35
36                 $this->dismissed_conflicts = $this->get_dismissed_conflicts( $conflict_data['section'] );
37
38                 $this->compare_plugins( $conflict_data['plugins'] );
39
40                 $this->save_dismissed_conflicts( $conflict_data['section'] );
41
42                 wp_die( 'true' );
43         }
44
45         /**
46          * Getting the user option from the database
47          *
48          * @return bool|array
49          */
50         private function get_dismissed_option() {
51                 return get_user_meta( get_current_user_id(), $this->option_name, true );
52         }
53
54         /**
55          * Getting the dismissed conflicts from the database
56          *
57          * @param string $plugin_section
58          *
59          * @return array
60          */
61         private function get_dismissed_conflicts( $plugin_section ) {
62                 $dismissed_conflicts = $this->get_dismissed_option();
63
64                 if ( is_array( $dismissed_conflicts ) && array_key_exists( $plugin_section, $dismissed_conflicts ) ) {
65                         return $dismissed_conflicts[ $plugin_section ];
66                 }
67
68                 return array();
69         }
70
71         /**
72          * Storing the conflicting plugins as an user option in the database
73          *
74          * @param string $plugin_section
75          */
76         private function save_dismissed_conflicts( $plugin_section ) {
77                 $dismissed_conflicts = $this->get_dismissed_option();
78
79                 $dismissed_conflicts[ $plugin_section ] = $this->dismissed_conflicts;
80
81                 update_user_meta( get_current_user_id(), $this->option_name, $dismissed_conflicts );
82         }
83
84         /**
85          * Loop through the plugins to compare them with the already stored dismissed plugin conflicts
86          *
87          * @param array $posted_plugins
88          */
89         public function compare_plugins( array $posted_plugins ) {
90                 foreach ( $posted_plugins as $posted_plugin ) {
91                         $this->compare_plugin( $posted_plugin );
92                 }
93         }
94
95         /**
96          * Check if plugin is already dismissed, if not store it in the array that will be saved later
97          *
98          * @param string $posted_plugin
99          */
100         private function compare_plugin( $posted_plugin ) {
101                 if ( ! in_array( $posted_plugin, $this->dismissed_conflicts ) ) {
102                         $this->dismissed_conflicts[] = $posted_plugin;
103                 }
104         }
105
106 }