/** * Get all users with edit_posts capabilities broken out into Facebook-permissioned users and non-Facebook permissioned users. * * @since 1.1.6 * * @see Facebook_User::get_wordpress_users_associated_with_facebook_accounts() * @return array WordPress users with and without Facebook data stored. */ public static function get_all_wordpress_facebook_users() { if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } // fb => [], wp => [] $users = Facebook_User::get_wordpress_users_associated_with_facebook_accounts(); $users_with_app_permissions = array(); if (!empty($users['fb'])) { if (!class_exists('Facebook_WP_Extend')) { require_once dirname(dirname(__FILE__)) . '/includes/facebook-php-sdk/class-facebook-wp.php'; } foreach ($users['fb'] as $user) { if (!isset($user->fb_data['fb_uid'])) { $users['wp'][] = $user; continue; } $facebook_user_permissions = Facebook_WP_Extend::get_permissions_by_facebook_user_id($user->fb_data['fb_uid']); if (!is_array($facebook_user_permissions) || !isset($facebook_user_permissions['installed'])) { $users['wp'][] = $user; continue; } $user->fb_data['permissions'] = $facebook_user_permissions; unset($facebook_user_permissions); $users_with_app_permissions[] = $user; } } $users['fb'] = $users_with_app_permissions; return $users; }
/** * Does the current WordPress user have Facebook data stored? * * Has the current viewer authorized the current application to post on his or her behalf? * * @since 1.1 * @param int $wordpress_user_id WordPress user identifier. Optional. Uses current user id if not passed * @param bool $check_publish_override test for the ability to publish to Facebook disabled by the given $wordpress_user_id * @return bool True if Facebook information present for current user and publish permissions exist */ public static function can_publish_to_facebook($wordpress_user_id = 0, $check_publish_override = true) { if (!$wordpress_user_id) { $wordpress_user_id = get_current_user_id(); } if (!$wordpress_user_id) { return false; } // get associated Facebook account $facebook_profile_id = self::get_facebook_profile_id($wordpress_user_id); if (!$facebook_profile_id) { return false; } // treat a disabled publish to Timeline preference the same as no publish_actions if ($check_publish_override && self::get_user_meta($wordpress_user_id, 'facebook_timeline_disabled', true)) { return false; } // Facebook HTTP helper functions if (!class_exists('Facebook_WP_Extend')) { require_once dirname(__FILE__) . '/includes/facebook-php-sdk/class-facebook-wp.php'; } // test for publish permissions $permissions = Facebook_WP_Extend::get_permissions_by_facebook_user_id($facebook_profile_id); if (!(is_array($permissions) && !empty($permissions) && isset($permissions['publish_actions']))) { return false; } return true; }
/** * Add a Facebook section to the WordPress user profile page. * * @since 1.5 * * @global \Facebook_Loader $facebook_loader Access Facebook application credentials. * @param WP_User $wp_user WordPress user for the current profile page. * @return void */ public static function facebook_section($wp_user) { global $facebook_loader; if (!($wp_user && isset($wp_user->ID) && method_exists($wp_user, 'exists') && $wp_user->exists() && user_can($wp_user, 'edit_posts'))) { return; } $section = '<h3>' . esc_html(__('Facebook Account', 'facebook')) . '</h3>'; if (!class_exists('Facebook_User')) { require_once dirname(dirname(__FILE__)) . '/facebook-user.php'; } $facebook_user_data = Facebook_User::get_user_meta($wp_user->ID, 'fb_data', true); $section .= '<table id="facebook-info" class="form-table"'; // test if Facebook account associated with current WordPress user context if (is_array($facebook_user_data) && isset($facebook_user_data['fb_uid'])) { $section .= ' data-fbid="' . esc_attr($facebook_user_data['fb_uid']) . '"'; if (isset($facebook_loader->credentials['app_id'])) { $section .= ' data-appid="' . esc_attr($facebook_loader->credentials['app_id']) . '">'; } $section .= '<tr><th scope="row">' . esc_html(_x('Connected Profile', 'Connected Facebook Profile', 'facebook')) . '</th>'; $section .= '<td><p><a href="' . esc_url(Facebook_User::facebook_profile_link($facebook_user_data), array('http', 'https')) . '">' . esc_html($facebook_user_data['fb_uid']) . '</a></p>'; if (isset($facebook_user_data['activation_time'])) { $section .= '<div class="description"><p>' . sprintf(esc_html(__('Associated on %s', 'facebook')), '<time datetime="' . gmstrftime('%FT%T', $facebook_user_data['activation_time']) . '+00:00">' . date_i18n(get_option('date_format'), $facebook_user_data['activation_time']) . '</time>') . '</p></div>'; } $section .= '<p class="submit"><input id="facebook-remove" name="facebook_remove" class="button button-primary" type="submit" value="' . esc_attr(_x('Remove Facebook account', 'Remove an association between a Facebook account and a WordPress user profile', 'facebook')) . '" />' . '</p>'; $section .= '</td></tr>'; if (!class_exists('Facebook_WP_Extend')) { require_once $facebook_loader->plugin_directory . 'includes/facebook-php-sdk/class-facebook-wp.php'; } $permissions = Facebook_WP_Extend::get_permissions_by_facebook_user_id($facebook_user_data['fb_uid']); if (!empty($permissions)) { $permission_labels = array(); if (isset($permissions['installed'])) { $permission_labels[] = '<a href="https://www.facebook.com/about/privacy/your-info#public-info">' . esc_html(__('Public profile information', 'facebook')) . '</a>'; } if (isset($permissions['publish_actions'])) { $permission_labels[] = esc_html(__('Publish to Timeline', 'facebook')); } if (isset($permissions['manage_pages']) && isset($permissions['publish_stream'])) { $permission_labels[] = '<a href="https://developers.facebook.com/docs/reference/login/page-permissions/">' . esc_html(__('Manage your pages on your behalf (including creating content)', 'facebook')) . '</a>'; } $section .= '<tr><th scope="row">' . esc_html(__('Permissions', 'facebook')) . '</th><td>'; if (empty($permissions)) { $section .= __('None', 'facebook'); } else { $section .= '<ul><li>' . implode('</li><li>', $permission_labels) . '</li></ul>'; } $section .= '<div id="facebook-login"></div></td></tr>'; } } else { $section .= '><tr><th scope="row">' . esc_html(_x('Get started', 'Begin the process', 'facebook')) . '</th>'; $section .= '<td id="facebook-login"></td></tr>'; } $section .= '</table>'; echo $section; }