/** * Save custom user information. * * @since 1.2 * * @uses current_user_can() current user must be able to edit the passed WordPress user ID * @param int $wordpress_user_id WordPress user identifier * @return void */ public static function save_data($wordpress_user_id) { if (!($wordpress_user_id && current_user_can('edit_user', $wordpress_user_id))) { return; } // allow decoupling of a WordPress account and a Facebook account if (isset($_POST['facebook_remove'])) { // WordPress Facebook User helper functions if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } $facebook_user_id = Facebook_User::get_facebook_profile_id($wordpress_user_id); if ($facebook_user_id) { // delete mapped FBID and other data Facebook_User::delete_user_meta($wordpress_user_id, 'fb_data'); // delete post to Timeline opt-in if stored Facebook_User::delete_user_meta($wordpress_user_id, 'facebook_timeline_disabled'); // Load WP HTTP helpers if (!class_exists('Facebook_WP_Extend')) { require_once dirname(dirname(__FILE__)) . '/includes/facebook-php-sdk/class-facebook-wp.php'; } // Revoke connection to app and all permissions Facebook_WP_Extend::graph_api_with_app_access_token($facebook_user_id . '/permissions', 'DELETE'); } unset($facebook_user_id); // no need to store any other Facebook data return; } if (isset($_POST['facebook_fbid']) && ctype_digit($_POST['facebook_fbid'])) { // WordPress Facebook User helper functions if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } try { $facebook_user = Facebook_User::get_facebook_user($_POST['facebook_fbid'], array('fields' => array('id', 'username', 'link', 'third_party_id'))); if (isset($facebook_user['id'])) { $facebook_user_data = array('fb_uid' => $facebook_user['id'], 'activation_time' => time()); if (!empty($facebook_user['username'])) { $facebook_user_data['username'] = $facebook_user['username']; } if (!empty($facebook_user['link'])) { $facebook_user_data['link'] = $facebook_user['link']; } if (!empty($facebook_user['third_party_id'])) { $facebook_user_data['third_party_id'] = $facebook_user['third_party_id']; } Facebook_User::update_user_meta($wordpress_user_id, 'fb_data', $facebook_user_data); unset($facebook_user_data); } unset($facebook_user); } catch (Exception $e) { } } if (isset($_POST['facebook_timeline']) && $_POST['facebook_timeline'] == '1') { // WordPress Facebook User helper functions if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } Facebook_User::delete_user_meta($wordpress_user_id, 'facebook_timeline_disabled'); // delete if stored } else { // WordPress Facebook User helper functions if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } Facebook_User::update_user_meta($wordpress_user_id, 'facebook_timeline_disabled', '1'); } }