/**
 * Get the URL to use for running analyses. If a WordLift key is set, then a WordLift Server URL is returned, otherwise
 * a Redlink URL.
 *
 * @since 3.0.0
 *
 * @uses wl_configuration_get_key() to get the WordLift key.
 * @uses wl_configuration_get_redlink_key() to get the application key.
 * @uses wl_configuration_get_redlink_application_name() to get the analysis name.
 *
 * @return string The analysis URL.
 */
function wl_configuration_get_analyzer_url()
{
    // If the WordLift Key is set, we use WordLift.
    $key = wl_configuration_get_key();
    if (!empty($key)) {
        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . "analyses?key={$key}";
    }
    // Otherwise use Redlink.
    $app_key = wl_configuration_get_redlink_key();
    $analysis_name = wl_configuration_get_redlink_application_name();
    $ldpath = <<<EOF
        @prefix ex: <http://example.org/>;
        @prefix cal: <http://www.w3.org/2002/12/cal#>;
        @prefix gn: <http://www.geonames.org/ontology#>;
        @prefix lode: <http://linkedevents.org/ontology/>;
        @prefix vcard: <http://www.w3.org/2006/vcard/ns#>;
        vcard:locality = lode:atPlace/gn:name :: xsd:string;
EOF;
    return wl_configuration_get_api_url() . "/analysis/{$analysis_name}/enhance?key={$app_key}" . '&enhancer.engines.dereference.ldpath=' . urlencode($ldpath);
}
 function test_wl_configuration_redlink_application_name()
 {
     $value = uniqid();
     wl_configuration_set_redlink_application_name($value);
     $this->assertEquals($value, wl_configuration_get_redlink_application_name());
 }
/**
 * Configure all the configuration parameters. The configuration parameters are grouped in two tabs:
 *  * General
 *  * Advanced (only available if the WL_ENABLE_ADVANCED_CONFIGURATION constant exists and is set to True)
 *
 * Called by the *admin_init* hook.
 *
 * @since 3.0.0
 */
function wl_configuration_settings()
{
    register_setting('wl_general_settings', 'wl_general_settings', 'wl_configuration_sanitize_settings');
    add_settings_section('wl_general_settings_section', 'General Settings', 'wl_configuration_general_settings_section_callback', 'wl_general_settings');
    add_settings_field(WL_CONFIG_WORDLIFT_KEY, __('WordLift Key', 'wordlift'), 'wl_configuration_input_box', 'wl_general_settings', 'wl_general_settings_section', array('id' => 'wl-key', 'name' => 'wl_general_settings[key]', 'value' => wl_configuration_get_key(), 'description' => __('Insert the WordLift Key', 'wordlift')));
    add_settings_field(WL_CONFIG_SITE_LANGUAGE_NAME, __('Site Language', 'wordlift'), 'wl_configuration_select', 'wl_general_settings', 'wl_general_settings_section', array('id' => 'wl-site-language', 'name' => 'wl_general_settings[site_language]', 'value' => wl_configuration_get_site_language(), 'description' => __('The site language', 'wordlift'), 'options' => wl_configuration_get_languages()));
    if (defined('WL_ENABLE_ADVANCED_CONFIGURATION') && WL_ENABLE_ADVANCED_CONFIGURATION) {
        register_setting('wl_advanced_settings', 'wl_advanced_settings', 'wl_configuration_sanitize_settings');
        add_settings_section('wl_advanced_settings_section', 'Advanced', 'wl_configuration_advanced_settings_section_callback', 'wl_advanced_settings');
        add_settings_field(WL_CONFIG_API_URL, __('API URL', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-api-url', 'name' => 'wl_advanced_settings[api_url]', 'value' => wl_configuration_get_api_url(), 'description' => __('The API URL', 'wordlift')));
        add_settings_field(WL_CONFIG_APPLICATION_KEY_NAME, __('Redlink Key', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-redlink-key', 'name' => 'wl_advanced_settings[redlink_key]', 'value' => wl_configuration_get_redlink_key(), 'description' => __('The Redlink key', 'wordlift')));
        add_settings_field(WL_CONFIG_USER_ID_NAME, __('Redlink User Id', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-redlink-user-id', 'name' => 'wl_advanced_settings[redlink_user_id]', 'value' => wl_configuration_get_redlink_user_id(), 'description' => __('The Redlink User Id', 'wordlift')));
        add_settings_field(WL_CONFIG_DATASET_NAME, __('Redlink Dataset name', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-redlink-dataset-name', 'name' => 'wl_advanced_settings[redlink_dataset_name]', 'value' => wl_configuration_get_redlink_dataset_name(), 'description' => __('The Redlink Dataset Name', 'wordlift')));
        add_settings_field(WL_CONFIG_DATASET_BASE_URI_NAME, __('Redlink Dataset URI', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-redlink-dataset-uri', 'name' => 'wl_advanced_settings[redlink_dataset_uri]', 'value' => wl_configuration_get_redlink_dataset_uri(), 'description' => __('The Redlink Dataset URI', 'wordlift')));
        add_settings_field(WL_CONFIG_ANALYSIS_NAME, __('Redlink Application Name', 'wordlift'), 'wl_configuration_input_box', 'wl_advanced_settings', 'wl_advanced_settings_section', array('id' => 'wl-redlink-application-name', 'name' => 'wl_advanced_settings[redlink_application_name]', 'value' => wl_configuration_get_redlink_application_name(), 'description' => __('The Redlink Application Name', 'wordlift')));
    }
}