<?php

require_once '../../csrest_lists.php';
$auth = array('access_token' => 'your access token', 'refresh_token' => 'your refresh token');
$wrap = new CS_REST_Lists('List ID', $auth);
$result = $wrap->delete_webhook('Webhook ID');
echo "Result of DELETE /api/v3.1/lists/{ID}/webhooks/{WHID}\n<br />";
if ($result->was_successful()) {
    echo "Deleted with code\n<br />" . $result->http_status_code;
} else {
    echo 'Failed with code ' . $result->http_status_code . "\n<br /><pre>";
    var_dump($result->response);
    echo '</pre>';
}
function cmdr_plugin_menu()
{
    if (basename($_SERVER['SCRIPT_FILENAME']) == 'plugins.php' && isset($_GET['page']) && $_GET['page'] == 'cm-dual-registration') {
        // Check permissions
        if (!current_user_can('manage_options')) {
            wp_die(__('You do not have sufficient permissions to access this page.', 'cm-dual-registration'));
        }
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            if (isset($_POST['cmdr_user_fields'])) {
                update_option('cmdr_user_fields', base64_encode(serialize((array) $_POST['cmdr_user_fields'])));
            } else {
                update_option('cmdr_user_fields', base64_encode(serialize(array())));
            }
            update_option('cmdr_api_key', $_POST['cmdr_api_key']);
            update_option('cmdr_list_id', $_POST['cmdr_list_id']);
            if (!class_exists('CS_REST_Lists')) {
                require_once CMDR_PLUGIN_PATH . 'campaignmonitor-createsend-php/csrest_lists.php';
            }
            $auth = array('api_key' => get_option('cmdr_api_key'));
            $wrap_l = new CS_REST_Lists(get_option('cmdr_list_id'), $auth);
            if ($_POST['cmdr_cm_sync']) {
                update_option('cmdr_cm_sync', 1);
                // Create the webhook if needed
                $c = true;
                $result = $wrap_l->get_webhooks();
                if (!$result->was_successful()) {
                    wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&error=' . urlencode($result->response->Message)));
                    die;
                }
                foreach ($result->response as $hook) {
                    if ($hook->Url == admin_url('admin-ajax.php?action=cmdr-cm-sync')) {
                        $c = false;
                        break;
                    }
                }
                if ($c) {
                    $result = $wrap_l->create_webhook(array('Events' => array(CS_REST_LIST_WEBHOOK_SUBSCRIBE, CS_REST_LIST_WEBHOOK_UPDATE), 'Url' => admin_url('admin-ajax.php?action=cmdr-cm-sync'), 'PayloadFormat' => CS_REST_WEBHOOK_FORMAT_JSON));
                    if (!$result->was_successful()) {
                        wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&error=' . urlencode($result->response->Message)));
                        die;
                    }
                }
            } else {
                delete_option('cmdr_cm_sync');
                // Remove the webhook if needed
                $c = false;
                $result = $wrap_l->get_webhooks();
                if (!$result->was_successful()) {
                    wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&error=' . urlencode($result->response->Message)));
                    die;
                }
                foreach ($result->response as $hook) {
                    if ($hook->Url == admin_url('admin-ajax.php?action=cmdr-cm-sync')) {
                        $c = $hook->WebhookID;
                        break;
                    }
                }
                if ($c) {
                    $result = $wrap_l->delete_webhook($c);
                    if (!$result->was_successful()) {
                        wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&error=' . urlencode($result->response->Message)));
                        die;
                    }
                }
            }
            // Make forced sync
            $result = CMDR_Dual_Synchronizer::cmdr_mass_update();
            if ($result) {
                wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&saved=true'));
            } else {
                wp_redirect(home_url('/wp-admin/plugins.php?page=cm-dual-registration&error=' . urlencode(CMDR_Dual_Synchronizer::$error->Message . (!empty(CMDR_Dual_Synchronizer::$error->ResultData) ? '<br />Error details: ' . json_encode(CMDR_Dual_Synchronizer::$error->ResultData) : ''))));
            }
        }
    }
    add_plugins_page('Campaign Monitor Dual Registration Options', 'CM Dual Registration', 'manage_options', 'cm-dual-registration', 'cmdr_plugin_page');
}