Example #1
0
/**
* Generate wsl admin pages 
*
* wp-admin/options-general.php?page=wordpress-social-login&.. 
*/
function wsl_admin_init()
{
    // HOOKABLE:
    do_action("wsl_admin_init_start");
    if (!wsl_check_requirements()) {
        wsl_admin_ui_fail();
        exit;
    }
    global $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS;
    global $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
    global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
    global $WORDPRESS_SOCIAL_LOGIN_VERSION;
    global $wpdb;
    if (isset($_REQUEST["enable"]) && isset($WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$_REQUEST["enable"]])) {
        $component = $_REQUEST["enable"];
        $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$component]["enabled"] = true;
        update_option("wsl_components_" . $component . "_enabled", 1);
        wsl_register_components();
    }
    if (isset($_REQUEST["disable"]) && isset($WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$_REQUEST["disable"]])) {
        $component = $_REQUEST["disable"];
        $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$component]["enabled"] = false;
        update_option("wsl_components_" . $component . "_enabled", 2);
        wsl_register_components();
    }
    $wslp = "networks";
    $wsldwp = 0;
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
    if (isset($_REQUEST["wslp"])) {
        $wslp = trim(strtolower(strip_tags($_REQUEST["wslp"])));
    }
    if (isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]) && $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["enabled"]) {
        if (isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["header_action"]) && $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["header_action"]) {
            do_action($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["header_action"]);
        }
        wsl_admin_ui_header($wslp);
        if (isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["body_action"]) && $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["body_action"]) {
            do_action($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["body_action"]);
        } elseif (!(isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["admin-url"]) && !$WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["admin-url"])) {
            include "components/{$wslp}/index.php";
            wsl_admin_ui_footer();
        }
    } else {
        wsl_admin_ui_header();
        wsl_admin_ui_error();
    }
    // HOOKABLE:
    do_action("wsl_admin_init_end");
}
/**
* Generate wsl admin pages
*
* wp-admin/options-general.php?page=wordpress-social-login&..
*/
function wsl_admin_main()
{
    // HOOKABLE:
    do_action("wsl_admin_main_start");
    if (!current_user_can('manage_options')) {
        wp_die('You do not have sufficient permissions to access this page.');
    }
    if (!wsl_check_requirements()) {
        wsl_admin_ui_fail();
        exit;
    }
    global $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS;
    global $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
    global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
    global $WORDPRESS_SOCIAL_LOGIN_VERSION;
    if (isset($_REQUEST["enable"]) && isset($WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$_REQUEST["enable"]])) {
        $component = $_REQUEST["enable"];
        $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$component]["enabled"] = true;
        update_option("wsl_components_" . $component . "_enabled", 1);
        wsl_register_components();
    }
    if (isset($_REQUEST["disable"]) && isset($WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$_REQUEST["disable"]])) {
        $component = $_REQUEST["disable"];
        $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[$component]["enabled"] = false;
        update_option("wsl_components_" . $component . "_enabled", 2);
        wsl_register_components();
    }
    $wslp = "networks";
    $wsldwp = 0;
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/16x16/';
    if (isset($_REQUEST["wslp"])) {
        $wslp = trim(strtolower(strip_tags($_REQUEST["wslp"])));
    }
    wsl_admin_ui_header($wslp);
    if (isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]) && $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["enabled"]) {
        if (isset($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["action"]) && $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["action"]) {
            do_action($WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[$wslp]["action"]);
        } else {
            include "components/{$wslp}/index.php";
        }
    } else {
        wsl_admin_ui_error();
    }
    wsl_admin_ui_footer();
    // HOOKABLE:
    do_action("wsl_admin_main_end");
}
/**
* Attempt to install/migrate/repair WSL upon activation
*
* Create wsl tables
* Migrate old versions
* Register default components
*/
function wsl_install()
{
    wsl_database_install();
    wsl_update_compatibilities();
    wsl_register_components();
}
/**
* Register WSL core settings ( options; components )
*/
function wsl_register_setting()
{
    global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
    global $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
    global $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS;
    // HOOKABLE:
    do_action('wsl_register_setting');
    wsl_register_components();
    // idps credentials
    foreach ($WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG as $item) {
        $provider_id = isset($item["provider_id"]) ? $item["provider_id"] : null;
        $require_client_id = isset($item["require_client_id"]) ? $item["require_client_id"] : null;
        $require_registration = isset($item["new_app_link"]) ? $item["new_app_link"] : null;
        $default_api_scope = isset($item["default_api_scope"]) ? $item["default_api_scope"] : null;
        /**
        * @fixme
        *
        * Here we should only register enabled providers settings. postponed. patches are welcome.
        ***
        	$default_network = isset( $item["default_network"] ) ? $item["default_network"] : null;
        
        	if( ! $default_network || get_option( 'wsl_settings_' . $provider_id . '_enabled' ) != 1 .. )
        	{
        		..
        	}
        */
        register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_enabled');
        // require application?
        if ($require_registration) {
            // api key or id ?
            if ($require_client_id) {
                register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_id');
            } else {
                register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_key');
            }
            // api secret
            register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_secret');
            // api scope?
            if ($default_api_scope) {
                if (!get_option('wsl_settings_' . $provider_id . '_app_scope')) {
                    update_option('wsl_settings_' . $provider_id . '_app_scope', $default_api_scope);
                }
                register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_scope');
            }
        }
    }
    register_setting('wsl-settings-group-customize', 'wsl_settings_connect_with_label');
    register_setting('wsl-settings-group-customize', 'wsl_settings_social_icon_set');
    register_setting('wsl-settings-group-customize', 'wsl_settings_users_avatars');
    register_setting('wsl-settings-group-customize', 'wsl_settings_use_popup');
    register_setting('wsl-settings-group-customize', 'wsl_settings_widget_display');
    register_setting('wsl-settings-group-customize', 'wsl_settings_redirect_url');
    register_setting('wsl-settings-group-customize', 'wsl_settings_force_redirect_url');
    register_setting('wsl-settings-group-customize', 'wsl_settings_users_notification');
    register_setting('wsl-settings-group-customize', 'wsl_settings_authentication_widget_css');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_facebook');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_google');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_twitter');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_linkedin');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_live');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_vkontakte');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_registration_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_authentication_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_accounts_linking_enabled');
    // Planned for 2.3
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_require_email');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_change_username');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_hook_extra_fields');
    // Planned for 2.3
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_moderation_level');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_membership_default_role');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_text_bounce');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce');
    register_setting('wsl-settings-group-buddypress', 'wsl_settings_buddypress_enable_mapping');
    register_setting('wsl-settings-group-buddypress', 'wsl_settings_buddypress_xprofile_map');
    register_setting('wsl-settings-group-debug', 'wsl_settings_debug_mode_enabled');
    register_setting('wsl-settings-group-development', 'wsl_settings_development_mode_enabled');
}
/**
* Register wsl core settings ( options; components )
*/
function wsl_register_setting()
{
    global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
    global $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
    global $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS;
    // HOOKABLE:
    do_action('wsl_register_setting_begin');
    wsl_register_components();
    // idps credentials
    foreach ($WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG as $item) {
        $provider_id = @$item["provider_id"];
        $require_client_id = @$item["require_client_id"];
        $require_registration = @$item["new_app_link"];
        register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_enabled');
        if ($require_registration) {
            // require application?
            if ($require_client_id) {
                // key or id ?
                register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_id');
            } else {
                register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_key');
            }
            register_setting('wsl-settings-group', 'wsl_settings_' . $provider_id . '_app_secret');
        }
    }
    register_setting('wsl-settings-group-customize', 'wsl_settings_connect_with_label');
    register_setting('wsl-settings-group-customize', 'wsl_settings_social_icon_set');
    register_setting('wsl-settings-group-customize', 'wsl_settings_users_avatars');
    register_setting('wsl-settings-group-customize', 'wsl_settings_use_popup');
    register_setting('wsl-settings-group-customize', 'wsl_settings_widget_display');
    register_setting('wsl-settings-group-customize', 'wsl_settings_redirect_url');
    register_setting('wsl-settings-group-customize', 'wsl_settings_users_notification');
    register_setting('wsl-settings-group-customize', 'wsl_settings_authentication_widget_css');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_facebook');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_google');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_twitter');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_live');
    register_setting('wsl-settings-group-contacts-import', 'wsl_settings_contacts_import_linkedin');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_registration_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_authentication_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_require_email');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_change_email');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_change_username');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_notice');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_submit_button');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_connected_with');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_email');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_username');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_email_invalid');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_username_invalid');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_email_exists');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_profile_completion_text_username_exists');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_moderation_level');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_membership_default_role');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_email_text_bounce');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_enabled');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_list');
    register_setting('wsl-settings-group-bouncer', 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce');
    register_setting('wsl-settings-group-advanced-settings', 'wsl_settings_base_url');
    register_setting('wsl-settings-group-development', 'wsl_settings_development_mode_enabled');
    add_option('wsl_settings_welcome_panel_enabled');
    // update old/all default wsl-settings
    wsl_check_compatibilities();
    // HOOKABLE:
    do_action('wsl_register_setting_end');
}