/**
 * Handle the PMP notification hub sending subscription verification to the callback
 *
 * @since 0.3
 */
function pmp_subscription_verification($data)
{
    if (isset($data['pmp-notifications'])) {
        unset($data['pmp-notifications']);
    }
    $settings = get_option('pmp_settings');
    if (isset($settings['pmp_use_api_notifications']) && $settings['pmp_use_api_notifications'] == 'on') {
        $mode = 'unsubscribe';
    } else {
        $mode = 'subscribe';
    }
    $topic_urls = pmp_get_topic_urls();
    $verify_token = pmp_get_verification_token($data['hub_topic']);
    if ($data['hub_verify_token'] == $verify_token && in_array($data['hub_topic'], $topic_urls) && $data['hub_mode'] == $mode) {
        echo $data['hub_challenge'];
    }
}
Esempio n. 2
0
/**
 * Field validations
 *
 * @since 0.1
 */
function pmp_settings_validate($input)
{
    $errors = false;
    $options = get_option('pmp_settings');
    if (empty($input['pmp_client_secret']) && !empty($options['pmp_client_secret'])) {
        $input['pmp_client_secret'] = $options['pmp_client_secret'];
    }
    if (!empty($input['pmp_api_url']) && filter_var($input['pmp_api_url'], FILTER_VALIDATE_URL) == false) {
        add_settings_error('pmp_settings_fields', 'pmp_api_url_error', 'Please enter a valid PMP API URL.', 'error');
        $input['pmp_api_url'] = '';
        $errors = true;
    } else {
        add_settings_error('pmp_settings_fields', 'pmp_settings_updated', 'PMP settings successfully updated!', 'updated');
        $errors = true;
    }
    if (!empty($input['pmp_use_api_notifications']) && !isset($options['pmp_use_api_notifications'])) {
        foreach (pmp_get_topic_urls() as $topic_url) {
            $result = pmp_send_subscription_request('subscribe', $topic_url);
            if ($result !== true) {
                add_settings_error('pmp_settings_fields', 'pmp_notifications_subscribe_error', $result, 'error');
                $errors = true;
            }
        }
    } else {
        if (empty($input['pmp_use_api_notifications']) && isset($options['pmp_use_api_notifications'])) {
            foreach (pmp_get_topic_urls() as $topic_url) {
                $result = pmp_send_subscription_request('unsubscribe', $topic_url);
                if ($result !== true) {
                    add_settings_error('pmp_settings_fields', 'pmp_notifications_unsubscribe_error', $result, 'error');
                    $errors = true;
                }
            }
        }
    }
    if (empty($errors)) {
        pmp_update_my_guid_transient();
    }
    return $input;
}