Esempio n. 1
0
 /**
  * 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;
 }
Esempio n. 3
0
 /**
  * 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;
 }