function bebop_manage_provider() { global $bp; if (bp_is_current_component('bebop') && bp_is_current_action('bebop-accounts')) { $query_string = bp_action_variables(); if (!empty($query_string)) { $provider = $query_string[0]; } if (!empty($provider)) { global $bp; $extension = bebop_extensions::bebop_get_extension_config_by_name(strtolower($provider)); if (isset($_POST['submit'])) { check_admin_referer('bebop_' . $extension['name'] . '_user_settings'); if (isset($_POST['bebop_' . $extension['name'] . '_active_for_user'])) { bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_active_for_user', $_POST['bebop_' . $extension['name'] . '_active_for_user']); bp_core_add_message(sprintf(__('Settings for %1$s have been saved.', 'bebop'), $extension['display_name'])); } if (!empty($_POST['bebop_' . $extension['name'] . '_username'])) { $new_name = stripslashes($_POST['bebop_' . $extension['name'] . '_username']); if (bebop_tables::add_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_username', $new_name, $check_meta_value = true)) { bebop_tables::add_to_first_importers_list($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_' . $new_name . '_do_initial_import', $new_name); bp_core_add_message(sprintf(__('%1$s has been added to the %2$s feed.', 'bebop'), $new_name, $extension['display_name'])); } else { bp_core_add_message(sprintf(__('%1$s already exists in the %2$s feed; you cannot add it again.', 'bebop'), $new_name, $extension['display_name']), __('error', 'bebop')); } } //Try and add a new RSS feed. if (!empty($_POST['bebop_' . $extension['name'] . '_newfeedname']) && !empty($_POST['bebop_' . $extension['name'] . '_newfeedurl'])) { if (filter_var($_POST['bebop_' . $extension['name'] . '_newfeedurl'], FILTER_VALIDATE_URL)) { $insert_url = $_POST['bebop_' . $extension['name'] . '_newfeedurl']; $new_name = str_replace(' ', '_', stripslashes(strip_tags($_POST['bebop_' . $extension['name'] . '_newfeedname']))); if (bebop_tables::add_user_meta($bp->loggedin_user->id, $extension['name'] . '_' . $new_name, $new_name, strip_tags($insert_url))) { bebop_tables::add_to_first_importers_list($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_' . $new_name . '_do_initial_import', $new_name); bp_core_add_message(__('Feed successfully added.', 'bebop')); } else { bp_core_add_message(__('This feed already exists, you cannot add it again.', 'bebop'), __('error', 'bebop')); } } else { bp_core_add_message(__('That feed cannot be added as it is not a valid URL.', 'bebop'), __('error', 'bebop')); } } // //Extension authors: use this hook to add your own data saves. do_action('bebop_user_settings_pre_edit_save', $extension); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); } //End if ( isset( $_POST['submit'] ) ) { //Twitter Oauth stuff if (isset($_GET['oauth_token'])) { //Handle the oAuth requests $OAuth = new bebop_oauth(); $OAuth->set_request_token_url($extension['request_token_url']); $OAuth->set_access_token_url($extension['access_token_url']); $OAuth->set_authorize_url($extension['authorize_url']); $OAuth->set_parameters(array('oauth_verifier' => $_GET['oauth_verifier'])); $OAuth->set_callback_url($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action() . '/' . $extension['name']); $OAuth->set_consumer_key(bebop_tables::get_option_value('bebop_' . $extension['name'] . '_consumer_key')); $OAuth->set_consumer_secret(bebop_tables::get_option_value('bebop_' . $extension['name'] . '_consumer_secret')); $OAuth->set_request_token(bebop_tables::get_user_meta_value($bp->loggedin_user->id, 'bebop_' . $extension['name'] . '_oauth_token_temp')); $OAuth->set_request_token_secret(bebop_tables::get_user_meta_value($bp->loggedin_user->id, 'bebop_' . $extension['name'] . '_oauth_token_secret_temp')); $accessToken = $OAuth->access_token(); bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_oauth_token', $accessToken['oauth_token']); bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_oauth_token_secret', $accessToken['oauth_token_secret']); bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_active_for_user', 1); bebop_tables::add_to_first_importers_list($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_do_initial_import', 1); bp_core_add_message(sprintf(__('You have successfully authenticated your %1$s account.', 'bebop'), $extension['display_name'])); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); } //Facebook oAuth stuff. if (isset($_REQUEST['code'])) { $app_id = bebop_tables::get_option_value('bebop_' . $extension['name'] . '_consumer_key'); $app_secret = bebop_tables::get_option_value('bebop_' . $extension['name'] . '_consumer_secret'); $my_url = urlencode($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action() . '/' . $extension['name'] . '?scope=read_stream'); if ($_SESSION['facebook_state'] == $_GET['state']) { $code = $_GET['code']; $accessTokenUrl = str_replace('APP_ID', $app_id, $extension['access_token_url']); $accessTokenUrl = str_replace('REDIRECT_URI', $my_url, $accessTokenUrl); $accessTokenUrl = str_replace('APP_SECRET', $app_secret, $accessTokenUrl); $accessTokenUrl = str_replace('CODE', $code, $accessTokenUrl); $response = file_get_contents($accessTokenUrl); parse_str($response, $params); //extend access token $extendedAccessTokenUrl = str_replace('APP_ID', $app_id, $extension['extend_access_token_url']); $extendedAccessTokenUrl = str_replace('APP_SECRET', $app_secret, $extendedAccessTokenUrl); $extendedAccessTokenUrl = str_replace('SHORT_TOKEN', $params['access_token'], $extendedAccessTokenUrl); $response2 = file_get_contents($extendedAccessTokenUrl); parse_str($response2, $params2); //save the extended access token if (isset($params['access_token'])) { bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_oauth_token', $params2['access_token']); bebop_tables::update_user_meta($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_active_for_user', 1); bebop_tables::add_to_first_importers_list($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_do_initial_import', 1); bp_core_add_message(sprintf(__('You have successfully authenticated your %1$s account.', 'bebop'), $extension['display_name'])); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); unset($_SESSION['facebook_state']); } } } //delete a user's feed if (isset($_GET['delete_feed'])) { $feed_name = str_replace(' ', '_', stripslashes(urldecode($_GET['delete_feed']))); $check_feed = bebop_tables::get_user_meta_value($bp->loggedin_user->id, $feed_name); if (!empty($check_feed)) { if (filter_var($check_feed, FILTER_VALIDATE_URL)) { if (bebop_tables::remove_user_meta($bp->loggedin_user->id, $feed_name)) { bebop_tables::delete_from_first_importers($bp->loggedin_user->id, $extension['name'], 'bebop_' . $extension['name'] . '_' . $feed_name . '_do_initial_import'); bp_core_add_message(__('Feed successfully deleted.', 'bebop')); //bp_core_redirect( $bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action() ); } else { bp_core_add_message(__('We could not delete that feed.', 'bebop'), __('error', 'bebop')); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); } } } } //resets the user's data - twitter if (isset($_GET['reset'])) { bebop_tables::remove_user_meta($bp->loggedin_user->id, 'bebop_' . $extension['name'] . '_username'); } //resets the user's data - other if (isset($_GET['remove_username'])) { $username = stripslashes($_GET['remove_username']); if (bebop_tables::remove_user_meta_value($bp->loggedin_user->id, $username)) { bp_core_add_message(sprintf(__('%1$s has been removed from your %2$s feed.', 'bebop'), $username, $extension['display_name'])); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); } else { bp_core_add_message(__('We could not delete that feed.', 'bebop'), __('error', 'bebop')); bp_core_redirect($bp->loggedin_user->domain . bp_current_component() . '/' . bp_current_action()); } } //Extension authors: use this hook to add your own removal functionality. do_action('bebop_admin_settings_pre_remove', $extension); } //End if ( !empty( $provider ) ) { } //End if ( bp_is_current_component( 'bebop' ) && bp_is_current_action('bebop-accounts' ) ) { }