/** * 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']; } }
/** * 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; }