/** * Save data and return API response as JSON. * * @since 0.3.0 * * @wp-hook wp_ajax_cre_admin_ajax_controller_interaction * @return array Return JSON `$result` with API response. */ public function admin_ajax_controller_interaction() { check_ajax_referer($this->plugin_name . '_admin_ajax_interaction_nonce', 'nonce'); if ($_POST['cr_admin_form'] && current_user_can('manage_options')) { // Requires $_POST from admin user. // Create or update database entry. update_option('cleverreach_extension', $this->sanitize($_POST['cr_admin_form'])); // Get plugin option group. $helper = new Core\Cre_Helper(); $defined_options = $helper->get_option_group(); // Prepare API with adapters. $client = new Api\Cleverreach(); $group = new Api\Cleverreach_Group_Adapter($client); $form = new Api\Cleverreach_Form_Adapter($client); // Cleanup transients. $client->delete_transients(); // Check API key. $has_api_key = $client->has_valid_api_key(); // Build array with data and status. $result = array('api' => array('status' => $has_api_key ? true : false), 'list' => array('status' => $has_api_key && $defined_options['list_id'] ? true : false, 'options' => $has_api_key ? $helper->parse_list($group->get_list(), 'list_id') : false), 'form' => array('status' => $has_api_key && $defined_options['form_id'] ? true : false, 'options' => $has_api_key ? $helper->parse_list($form->get_list($defined_options['list_id']), 'form_id', true) : false), 'source' => array('status' => $defined_options['source'] ? true : false), 'ajax' => array('status' => $defined_options['ajax'] ? true : false)); // Return result as JSON. $result = json_encode($result); echo $result; die; } }