function Init()
 {
     // I18n
     load_plugin_textdomain(c_al2fb_text_domain, false, dirname(plugin_basename(__FILE__)) . '/language/');
     // Image request
     if (isset($_GET['al2fb_image'])) {
         $img = dirname(__FILE__) . '/wp-blue-s.png';
         header('Content-type: image/png');
         readfile($img);
         exit;
     }
     // Data URI request
     if (isset($_GET['al2fb_data_uri'])) {
         $post = get_post($_GET['al2fb_data_uri']);
         $data_uri = self::Get_first_image($post);
         // data:image/png;base64,
         // data:[<MIME-type>][;charset=<encoding>][;base64],<data>
         $semi = strpos($data_uri, ';');
         $comma = strpos($data_uri, ',');
         $content_type = substr($data_uri, 5, $semi - 5);
         $data = substr($data_uri, $comma + 1);
         header('Content-type: ' . $content_type);
         echo base64_decode($data);
         exit;
     }
     // Facebook registration
     if (isset($_REQUEST['al2fb_reg'])) {
         WPAL2Int::Facebook_registration();
         exit;
     }
     // Facebook login
     if (isset($_REQUEST['al2fb_login'])) {
         WPAL2Int::Facebook_login();
         exit;
     }
     // Facebook subscription
     if (isset($_REQUEST['al2fb_subscription'])) {
         self::Handle_fb_subscription();
         exit;
     }
     // Set default capability
     if (!get_option(c_al2fb_option_min_cap)) {
         update_option(c_al2fb_option_min_cap, 'edit_posts');
     }
     // Enqueue style sheet
     if (is_admin()) {
         $css_name = $this->Change_extension(basename($this->main_file), '-admin.css');
         $css_url = plugins_url($css_name, __FILE__);
         wp_register_style('al2fb_style_admin', $css_url);
         wp_enqueue_style('al2fb_style_admin');
     } else {
         $upload_dir = wp_upload_dir();
         $css_name = $this->Change_extension(basename($this->main_file), '.css');
         if (file_exists($upload_dir['basedir'] . '/' . $css_name)) {
             $css_url = $upload_dir['baseurl'] . '/' . $css_name;
         } else {
             if (file_exists(TEMPLATEPATH . '/' . $css_name)) {
                 $css_url = get_bloginfo('template_directory') . '/' . $css_name;
             } else {
                 $css_url = plugins_url($css_name, __FILE__);
             }
         }
         wp_register_style('al2fb_style', $css_url);
         wp_enqueue_style('al2fb_style');
     }
     if (get_option(c_al2fb_option_use_ssp) || is_admin()) {
         wp_enqueue_script('jquery');
     }
     // Social share privacy
     if (get_option(c_al2fb_option_use_ssp)) {
         wp_enqueue_script('socialshareprivacy', plugins_url('/js/jquery.socialshareprivacy.js', __FILE__), array('jquery'));
     }
     // Check user capability
     if (current_user_can(get_option(c_al2fb_option_min_cap))) {
         if (is_admin()) {
             // Initiate Facebook authorization
             if (isset($_REQUEST['al2fb_action']) && $_REQUEST['al2fb_action'] == 'init') {
                 // Debug info
                 update_option(c_al2fb_log_redir_init, date('c'));
                 // Get current user
                 global $user_ID;
                 get_currentuserinfo();
                 // Clear cache
                 WPAL2Int::Clear_fb_pages_cache($user_ID);
                 WPAL2Int::Clear_fb_groups_cache($user_ID);
                 WPAL2Int::Clear_fb_friends_cache($user_ID);
                 // Redirect
                 $auth_url = WPAL2Int::Authorize_url($user_ID);
                 try {
                     // Check
                     if (ini_get('safe_mode') || ini_get('open_basedir') || $this->debug) {
                         update_option(c_al2fb_log_redir_check, 'No');
                     } else {
                         $response = WPAL2Int::Request($auth_url, '', 'GET');
                         update_option(c_al2fb_log_redir_check, date('c'));
                     }
                     // Redirect
                     wp_redirect($auth_url);
                     exit;
                 } catch (Exception $e) {
                     // Register error
                     update_option(c_al2fb_log_redir_check, $e->getMessage());
                     update_option(c_al2fb_last_error, $e->getMessage());
                     update_option(c_al2fb_last_error_time, date('c'));
                     // Redirect
                     if (is_multisite()) {
                         global $blog_id;
                         $error_url = get_admin_url($blog_id, 'admin.php?page=' . $this->main_plugin_name, 'admin');
                     } else {
                         $error_url = admin_url('admin.php?page=' . $this->main_plugin_name);
                     }
                     $error_url .= '&al2fb_action=error';
                     $error_url .= '&error=' . urlencode($e->getMessage());
                     wp_redirect($error_url);
                     exit;
                 }
             }
         }
         // Handle Facebook authorization
         WPAL2Int::Authorize();
     }
     self::Upgrade();
 }
function al2fb_debug_info($al2fb)
{
    // Get current user
    global $user_ID;
    get_currentuserinfo();
    // Get users
    global $wpdb;
    $users = $wpdb->get_var('SELECT COUNT(ID) FROM ' . $wpdb->users);
    // Get versions
    global $wp_version;
    if (!function_exists('get_plugins')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugin_folder = get_plugins('/' . plugin_basename(dirname(__FILE__)));
    $plugin_version = $plugin_folder[basename($al2fb->main_file)]['Version'];
    $curl_version = 'No';
    if (function_exists('curl_init')) {
        $v = curl_version();
        $curl_version = $v['version'];
    }
    // Get charset, token
    $charset = get_bloginfo('charset');
    // Get application
    try {
        if ($al2fb->Is_authorized($user_ID)) {
            $a = WPAL2Int::Get_fb_application_cached($user_ID);
            $app = '<a href="' . $a->link . '" target="_blank">' . $a->name . '</a>';
        } else {
            $app = 'n/a';
        }
    } catch (Exception $e) {
        $app = get_user_meta($user_ID, c_al2fb_meta_client_id, true) . ': ' . $e->getMessage();
    }
    // Sharing
    if (is_multisite()) {
        $shared_user_ID = get_site_option(c_al2fb_option_app_share);
    } else {
        $shared_user_ID = get_option(c_al2fb_option_app_share);
    }
    // Get picture
    $picture = '<a href="' . get_user_meta($user_ID, c_al2fb_meta_picture, true) . '" target="_blank">' . get_user_meta($user_ID, c_al2fb_meta_picture, true) . '</a>';
    $picture_default = '<a href="' . get_user_meta($user_ID, c_al2fb_meta_picture_default, true) . '" target="_blank">' . get_user_meta($user_ID, c_al2fb_meta_picture_default, true) . '</a>';
    // Get theme data
    $theme_data = get_theme_data(STYLESHEETPATH . '/style.css');
    $info = '<div class="al2fb_debug"><table border="1">';
    $info .= '<tr><td>Time:</td><td>' . date('c') . '</td></tr>';
    $info .= '<tr><td>Server software:</td><td>' . htmlspecialchars($_SERVER['SERVER_SOFTWARE'], ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>SAPI:</td><td>' . htmlspecialchars(php_sapi_name(), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>PHP version:</td><td>' . PHP_VERSION . '</td></tr>';
    $info .= '<tr><td>spl_autoload_register:</td><td>' . (version_compare(PHP_VERSION, '5.1.2', '>=') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>safe_mode:</td><td>' . (ini_get('safe_mode') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>open_basedir:</td><td>' . ini_get('open_basedir') . '</td></tr>';
    $info .= '<tr><td>User agent:</td><td>' . htmlspecialchars($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>WordPress version:</td><td>' . $wp_version . '</td></tr>';
    $info .= '<tr><td>Theme name:</td><td>' . '<a href="' . $theme_data['URI'] . '" target="_blank">' . htmlspecialchars($theme_data['Name'], ENT_QUOTES, $charset) . '</a>' . '</td></tr>';
    $info .= '<tr><td>Theme version:</td><td>' . htmlspecialchars($theme_data['Version'], ENT_QUOTES, $charset) . '</td></tr>';
    $active = get_option('active_plugins', array());
    foreach (get_plugins() as $plugin_tag => $plugin_data) {
        if (in_array($plugin_tag, $active)) {
            $info .= '<tr><td>Active plugin:</td><td><a href="' . $plugin_data['PluginURI'] . '" target="_blank">' . htmlspecialchars($plugin_data['Name'], ENT_QUOTES, $charset) . ' ' . $plugin_data['Version'] . '</a></td></tr>';
        }
    }
    if (is_multisite()) {
        $current_site = get_current_site();
        $blog_details = get_blog_details($current_site->blog_id, true);
        $main_site_url = strtolower(trailingslashit($blog_details->siteurl));
        $blog_count = get_blog_count();
        if (!$blog_count || $al2fb->debug) {
            wp_update_network_counts();
            $blog_count = get_blog_count();
        }
    } else {
        $current_site = null;
        $blog_details = null;
        $main_site_url = null;
        $blog_count = -1;
    }
    $info .= '<tr><td>Plugin version:</td><td>' . $plugin_version . (WPAL2Int::Check_multiple() ? 'p' : '') . '</td></tr>';
    $info .= '<tr><td>Settings version:</td><td>' . get_option(c_al2fb_option_version) . '</td></tr>';
    $info .= '<tr><td>Multi site:</td><td>' . (is_multisite() ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Site id:</td><td>' . $al2fb->site_id . '</td></tr>';
    $info .= '<tr><td>Blog id:</td><td>' . $al2fb->blog_id . '</td></tr>';
    $info .= '<tr><td>Current site:</td><td><pre>' . print_r($current_site, true) . '</pre></td></tr>';
    $info .= '<tr><td>Blog details:</td><td><pre>' . print_r($blog_details, true) . '</pre></td></tr>';
    $info .= '<tr><td>Blog count:</td><td>' . $blog_count . '</td></tr>';
    $info .= '<tr><td>Number of users:</td><td>' . $users . '</td></tr>';
    $info .= '<tr><td>Blog address (home):</td><td><a href="' . get_home_url() . '" target="_blank">' . htmlspecialchars(get_home_url(), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>WordPress address (site):</td><td><a href="' . get_site_url() . '" target="_blank">' . htmlspecialchars(get_site_url(), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Redirect URI:</td><td><a href="' . WPAL2Int::Redirect_uri() . '" target="_blank">' . htmlspecialchars(WPAL2Int::Redirect_uri(), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Authorize URL:</td><td><a href="' . WPAL2Int::Authorize_url($user_ID) . '" target="_blank">' . htmlspecialchars(WPAL2Int::Authorize_url($user_ID), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Authorization init:</td><td>' . htmlspecialchars(get_option(c_al2fb_log_redir_init), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Authorization check:</td><td>' . htmlspecialchars(get_option(c_al2fb_log_redir_check), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Redirect time:</td><td>' . htmlspecialchars(get_option(c_al2fb_log_redir_time), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Redirect referer:</td><td><a href="' . get_option(c_al2fb_log_redir_ref) . '" target="_blank">' . htmlspecialchars(get_option(c_al2fb_log_redir_ref), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Redirect from:</td><td>' . htmlspecialchars(get_option(c_al2fb_log_redir_from), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Redirect to:</td><td><a href="' . get_option(c_al2fb_log_redir_to) . '" target="_blank">' . htmlspecialchars(get_option(c_al2fb_log_redir_to), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Get token:</td><td><a href="' . get_option(c_al2fb_log_get_token) . '" target="_blank">' . htmlspecialchars(get_option(c_al2fb_log_get_token), ENT_QUOTES, $charset) . '</a></td></tr>';
    $info .= '<tr><td>Authorized:</td><td>' . ($al2fb->Is_authorized($user_ID) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Authorized time:</td><td>' . get_option(c_al2fb_log_auth_time) . '</td></tr>';
    $info .= '<tr><td>Token time:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_token_time, true) . '</td></tr>';
    $info .= '<tr><td>User agent:</td><td>' . get_option(c_al2fb_log_ua) . '</td></tr>';
    $info .= '<tr><td>allow_url_fopen:</td><td>' . (ini_get('allow_url_fopen') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>cURL:</td><td>' . $curl_version . '</td></tr>';
    $info .= '<tr><td>openssl loaded:</td><td>' . (extension_loaded('openssl') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Encoding:</td><td>' . htmlspecialchars(get_option('blog_charset'), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Facebook:</td><td>' . htmlspecialchars(get_user_meta($user_ID, c_al2fb_meta_fb_encoding, true), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Locale:</td><td>' . htmlspecialchars(WPLANG, ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Facebook:</td><td>' . htmlspecialchars(WPAL2Int::Get_locale($user_ID), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>mb_convert_encoding:</td><td>' . (function_exists('mb_convert_encoding') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Application:</td><td>' . $app . '</td></tr>';
    $info .= '<tr><td>User:</td><td>' . $user_ID . '=' . get_the_author_meta('user_login', $user_ID) . '</td></tr>';
    $info .= '<tr><td>Shared user:</td><td>' . $shared_user_ID . '=' . get_the_author_meta('user_login', $shared_user_ID) . '</td></tr>';
    $info .= '<tr><td>Picture type:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_picture_type, true) . '</td></tr>';
    $info .= '<tr><td>Custom picture URL:</td><td>' . $picture . '</td></tr>';
    $info .= '<tr><td>Default picture URL:</td><td>' . $picture_default . '</td></tr>';
    $info .= '<tr><td>Picture size:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_picture_size, true) . '</td></tr>';
    try {
        $page_ids = WPAL2Int::Get_page_ids($user_ID);
        foreach ($page_ids as $page_id) {
            $pinfo = WPAL2Int::Get_fb_info_cached($user_ID, empty($page_id) ? 'me' : $page_id);
            $info .= '<tr><td>Wall:</td><td><a href="' . $pinfo->link . '">';
            $info .= htmlspecialchars($pinfo->name, ENT_QUOTES, $charset);
            if (!empty($pinfo->category)) {
                $info .= ' - ' . htmlspecialchars($pinfo->category, ENT_QUOTES, $charset);
            }
            $info .= '</a></td></tr>';
        }
    } catch (Exception $e) {
        $info .= '<tr><td>Page:</td><td>' . htmlspecialchars($e->getMessage(), ENT_QUOTES, $charset) . '</a></td></tr>';
    }
    $info .= '<tr><td>Use groups:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_use_groups, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Caption:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_caption, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Excerpt:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_msg, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Trailer:</td><td>' . htmlspecialchars(get_user_meta($user_ID, c_al2fb_meta_trailer, true), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Hyperlink:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_hyperlink, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Shortlink:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_shortlink, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Page link:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_add_new_page, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>FB comments:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_fb_comments, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>FB comments postback:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_fb_comments_postback, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>FB comments copy:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_fb_comments_copy, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>FB comments no link:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_fb_comments_nolink, true) . '</td></tr>';
    $info .= '<tr><td>FB likes:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_fb_likes, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Importing:</td><td>' . (get_option(c_al2fb_log_importing) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Post likers:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_post_likers, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Post like button:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_post_like_button, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Not home page:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_nohome, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Not posts:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_noposts, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Not pages:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_nopages, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Not archives:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_noarchives, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Not categories:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_nocategories, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Like layout:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_layout, true) . '</td></tr>';
    $info .= '<tr><td>Like faces:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_faces, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Like width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_width, true) . '</td></tr>';
    $info .= '<tr><td>Like action:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_action, true) . '</td></tr>';
    $info .= '<tr><td>Like font:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_font, true) . '</td></tr>';
    $info .= '<tr><td>Like color scheme:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_colorscheme, true) . '</td></tr>';
    $info .= '<tr><td>Like link:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_link, true) . '</td></tr>';
    $info .= '<tr><td>Like top:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_top, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Send button:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_post_send_button, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Combine buttons:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_post_combine_buttons, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Like box width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_box_width, true) . '</td></tr>';
    $info .= '<tr><td>Like box height:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_box_height, true) . '</td></tr>';
    $info .= '<tr><td>Like box border:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_like_box_border, true) . '</td></tr>';
    $info .= '<tr><td>Like box no header:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_box_noheader, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Like box no stream:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_like_box_nostream, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Comments posts:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_comments_posts, true) . '</td></tr>';
    $info .= '<tr><td>Comments width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_comments_width, true) . '</td></tr>';
    $info .= '<tr><td>Comments auto:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_comments_auto, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Facepile size:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_pile_size, true) . '</td></tr>';
    $info .= '<tr><td>Facepile width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_pile_width, true) . '</td></tr>';
    $info .= '<tr><td>Facepile rows:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_pile_rows, true) . '</td></tr>';
    $info .= '<tr><td>Registration width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_reg_width, true) . '</td></tr>';
    $info .= '<tr><td>Login width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_login_width, true) . '</td></tr>';
    $info .= '<tr><td>Registration URL:</td><td><a href="' . get_user_meta($user_ID, c_al2fb_meta_login_regurl, true) . '" target="_blank">Link</a></td></tr>';
    $info .= '<tr><td>Redir URL:</td><td><a href="' . get_user_meta($user_ID, c_al2fb_meta_login_redir, true) . '" target="_blank">Link</a></td></tr>';
    $info .= '<tr><td>Add links:</td><td>' . (get_option(c_al2fb_option_login_add_links) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Login text/HTML:</td><td><a href="' . htmlspecialchars(get_user_meta($user_ID, c_al2fb_meta_login_html, true), ENT_QUOTES, $charset) . '" target="_blank">Link</a></td></tr>';
    $info .= '<tr><td>Activity width:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_act_width, true) . '</td></tr>';
    $info .= '<tr><td>Activity height:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_act_height, true) . '</td></tr>';
    $info .= '<tr><td>Activity header:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_act_header, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Activity recommend:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_act_recommend, true) ? 'Yes' : 'No') . '</td></tr>';
    $fid = get_user_meta($user_ID, c_al2fb_meta_facebook_id, true);
    $info .= '<tr><td>Facebook ID:</td><td><a href="' . WPAL2Int::Get_fb_profilelink($fid) . '" target="_blank">' . $fid . '</a></td></tr>';
    $info .= '<tr><td>OGP:</td><td>' . (get_user_meta($user_ID, c_al2fb_meta_open_graph, true) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>OGP type:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_open_graph_type, true) . '</td></tr>';
    $info .= '<tr><td>OGP admins:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_open_graph_admins, true) . '</td></tr>';
    $info .= '<tr><td>Timeout ms:</td><td>' . get_option(c_al2fb_option_timeout) * 1000 . '</td></tr>';
    $info .= '<tr><td>No notices:</td><td>' . (get_option(c_al2fb_option_nonotice) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Min. capability:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_min_cap), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Min. capability comments:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_min_cap_comment), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Refresh comments:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_msg_refresh), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Refresh age:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_msg_maxage), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Max. length:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_max_descr), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Max. text length:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_max_text), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Exclude post types:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_exclude_type), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Exclude categories:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_exclude_cat), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Exclude tags:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_exclude_tag), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Exclude authors:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_exclude_author), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Meta box:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_metabox_type), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>No verify peer:</td><td>' . (get_option(c_al2fb_option_noverifypeer) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Shortcode/widget:</td><td>' . (get_option(c_al2fb_option_shortcode_widget) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>No shortcode:</td><td>' . (get_option(c_al2fb_option_noshortcode) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>No filter:</td><td>' . (get_option(c_al2fb_option_nofilter) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>No filter comments:</td><td>' . (get_option(c_al2fb_option_nofilter_comments) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Site URL:</td><td>' . (get_option(c_al2fb_option_siteurl) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Do not use cURL:</td><td>' . (get_option(c_al2fb_option_nocurl) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Use publish_post:</td><td>' . (get_option(c_al2fb_option_use_pp) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Debug:</td><td>' . (get_option(c_al2fb_option_debug) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>SSP:</td><td>' . (get_option(c_al2fb_option_use_ssp) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>SSP info:</td><td><a href="' . get_option(c_al2fb_option_ssp_info) . '">link</a></td></tr>';
    $info .= '<tr><td>Filter prio:</td><td>' . intval(get_option(c_al2fb_option_filter_prio)) . '</td></tr>';
    $info .= '<tr><td>No script:</td><td>' . (get_option(c_al2fb_option_noscript) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Links API:</td><td>' . (get_option(c_al2fb_option_uselinks) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>No token refresh:</td><td>' . (get_option(c_al2fb_option_notoken_refresh) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Clean:</td><td>' . (get_option(c_al2fb_option_clean) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>CSS:</td><td>' . htmlspecialchars(get_option(c_al2fb_option_css), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>wp_get_attachment_thumb_url:</td><td>' . (function_exists('wp_get_attachment_thumb_url') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>wp_get_attachment_image_src:</td><td>' . (function_exists('wp_get_attachment_image_src') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>theme - post-thumbnails:</td><td>' . (current_theme_supports('post-thumbnails') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>get_post_thumbnail_id:</td><td>' . (function_exists('get_post_thumbnail_id') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>wp_get_attachment_image_src:</td><td>' . (function_exists('wp_get_attachment_image_src') ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Max exec time:</td><td>' . ini_get('max_execution_time') . '</td></tr>';
    $info .= '<tr><td>Memory usage:</td><td>' . memory_get_usage() . '/' . ini_get('memory_limit') . '</td></tr>';
    $info .= '<tr><td>Links added:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_stat, true) . '</td></tr>';
    $info .= '<tr><td>Current week:</td><td>' . get_user_meta($user_ID, c_al2fb_meta_week, true) . '</td></tr>';
    // Last posts
    $posts = new WP_Query(array('posts_per_page' => 10));
    while ($posts->have_posts()) {
        $posts->next_post();
        $userdata = get_userdata($posts->post->post_author);
        $link_ids = get_post_meta($posts->post->ID, c_al2fb_meta_link_id, false);
        // Selected picture
        $selected_picture = null;
        $image_id = get_post_meta($posts->post->ID, c_al2fb_meta_image_id, true);
        if (!empty($image_id) && function_exists('wp_get_attachment_thumb_url')) {
            $selected_picture = wp_get_attachment_thumb_url($image_id);
        }
        // Attached picture
        $attached_picture = null;
        $images = array_values(get_children('post_type=attachment&post_mime_type=image&order=ASC&post_parent=' . $posts->post->ID));
        if (!empty($images) && function_exists('wp_get_attachment_image_src')) {
            $picture = wp_get_attachment_image_src($images[0]->ID, 'thumbnail');
            if ($picture && $picture[0]) {
                $attached_picture = $picture[0];
            }
        }
        // Feature picture
        $featured_picture = null;
        if (current_theme_supports('post-thumbnails') && function_exists('get_post_thumbnail_id') && function_exists('wp_get_attachment_image_src')) {
            $picture_id = get_post_thumbnail_id($posts->post->ID);
            if ($picture_id) {
                $picture = wp_get_attachment_image_src($picture_id, 'thumbnail');
                if ($picture && $picture[0]) {
                    $featured_picture = $picture[0];
                }
            }
        }
        // First picture in post
        $post_picture = null;
        $content = $posts->post->post_content;
        if (!get_option(c_al2fb_option_nofilter)) {
            $content = apply_filters('the_content', $content);
        }
        if (preg_match('/< *img[^>]*src *= *["\']([^"\']*)["\']/i', $content, $matches)) {
            $post_picture = $matches[1];
        }
        // Author avatar
        $avatar_picture = null;
        $avatar = get_avatar($userdata->user_email);
        if (!empty($avatar)) {
            if (preg_match('/< *img[^>]*src *= *["\']([^"\']*)["\']/i', $avatar, $matches)) {
                $avatar_picture = $matches[1];
            }
        }
        // Actual picture
        $picture = $al2fb->Get_link_picture($posts->post, $al2fb->Get_user_ID($posts->post));
        // Imported comments
        $xuser_ID = WPAL2Facebook::Get_user_ID($posts->post);
        $excluded = WPAL2Facebook::Is_excluded($posts->post);
        $post_type = $posts->post->post_type;
        $nointegrate = get_post_meta($posts->post->ID, c_al2fb_meta_nointegrate, true);
        $comment_status = $posts->post->comment_status;
        $recent = WPAL2Facebook::Is_recent($posts->post);
        $comments_enabled = get_user_meta($xuser_ID, c_al2fb_meta_fb_comments, true);
        $fbi = array();
        $comment_count = '?';
        if ($xuser_ID && !$excluded && $post_type != 'reply' && !$nointegrate && $comment_status == 'open' && $recent && $comments_enabled) {
            $fb_comments = WPAL2Int::Get_comments_or_likes($posts->post, false);
            if ($fb_comments) {
                $comment_count = 0;
                foreach ($fb_comments->data as $fb_comment) {
                    $comment_count++;
                    $fbi[] = $fb_comment->id;
                }
            }
        }
        // Exported comments
        $fbo = array();
        $total_count = '-';
        $stored_count = '-';
        $stored_comments = get_comments('post_id=' . $posts->post->ID);
        if ($stored_comments) {
            $total_count = count($stored_comments);
            $stored_count = 0;
            foreach ($stored_comments as $comment) {
                $fbid = get_comment_meta($comment->comment_ID, c_al2fb_meta_fb_comment_id, true);
            }
            if ($fbid) {
                $stored_count++;
                $fbo[] = $fbid;
            }
        }
        $info .= '<tr><td>' . $posts->post->post_type . ' #' . $posts->post->ID . ':</td>';
        $info .= '<td><a href="' . get_permalink($posts->post->ID) . '" target="_blank">' . htmlspecialchars(get_the_title($posts->post->ID), ENT_QUOTES, $charset) . '</a>';
        $info .= ' by ' . htmlspecialchars($userdata->user_login, ENT_QUOTES, $charset) . ' (' . $posts->post->post_author . ')';
        $info .= ' @ ' . $posts->post->post_date;
        $info .= ' <a href="' . $picture['picture'] . '" target="_blank">result:' . $picture['picture_type'] . '</a>';
        if (!empty($selected_picture)) {
            $info .= ' <a href="' . $selected_picture . '" target="_blank">selected</a>';
        }
        if (!empty($attached_picture)) {
            $info .= ' <a href="' . $attached_picture . '" target="_blank">attached</a>';
        }
        if (!empty($featured_picture)) {
            $info .= ' <a href="' . $featured_picture . '" target="_blank">featured</a>';
        }
        if (!empty($post_picture)) {
            $info .= ' <a href="' . $post_picture . '" target="_blank">post</a>';
        }
        if (!empty($avatar_picture)) {
            $info .= ' <a href="' . $avatar_picture . '" target="_blank">avatar</a>';
        }
        if (!empty($link_ids)) {
            foreach ($link_ids as $link_id) {
                $info .= ' <a href="' . WPAL2Int::Get_fb_permalink($link_id) . '" target="_blank">Facebook</a>';
            }
        }
        $info .= ' user='******' exluded=' . ($excluded ? 'Y' : 'N') . ' integrate=' . (!$nointegrate ? 'Y' : 'N');
        $info .= ' status=' . $comment_status . ' recent=' . ($recent ? 'Y' : 'N') . ' enabled=' . ($comments_enabled ? 'Y' : 'N');
        $info .= ' count=' . $comment_count;
        $info .= ' export=' . $stored_count . '/' . $total_count;
        $info .= '</td></tr>';
        $info .= '<tr><td>Comments in:</td><td>' . implode(', ', $fbi) . '</td></tr>';
        $info .= '<tr><td>Comments out:</td><td>' . implode(', ', $fbo) . '</td></tr>';
    }
    // Last link pictures
    $posts = new WP_Query(array('meta_key' => c_al2fb_meta_link_picture, 'posts_per_page' => 5));
    while ($posts->have_posts()) {
        $posts->next_post();
        $link_picture = get_post_meta($posts->post->ID, c_al2fb_meta_link_picture, true);
        if (!empty($link_picture)) {
            $info .= '<tr><td>Link picture #' . $posts->post->ID . ':</td>';
            $info .= '<td><a href="' . get_permalink($posts->post->ID) . '" target="_blank">' . htmlspecialchars(get_the_title($posts->post->ID), ENT_QUOTES, $charset) . '</a>';
            $info .= ' ' . htmlspecialchars($link_picture, ENT_QUOTES, $charset);
            $info .= ' @ ' . $posts->post->post_date . '</td></tr>';
        }
    }
    // Last logs
    $posts = new WP_Query(array('meta_key' => c_al2fb_meta_log, 'posts_per_page' => 10));
    while ($posts->have_posts()) {
        $posts->next_post();
        $info .= '<tr><td>Log post:</td>';
        $info .= '<td><a href="' . get_permalink($posts->post->ID) . '" target="_blank">' . htmlspecialchars(get_the_title($posts->post->ID), ENT_QUOTES, $charset) . '</a></td></tr>';
        $logs = get_post_meta($posts->post->ID, c_al2fb_meta_log, false);
        if (!empty($logs)) {
            foreach ($logs as $log) {
                $info .= '<tr><td>Log:</td>';
                $info .= '<td>' . htmlspecialchars($log, ENT_QUOTES, $charset) . '</td></tr>';
            }
        }
    }
    // Last errors
    $posts = new WP_Query(array('meta_key' => c_al2fb_meta_error, 'posts_per_page' => 10));
    while ($posts->have_posts()) {
        $posts->next_post();
        $error = get_post_meta($posts->post->ID, c_al2fb_meta_error, true);
        if (!empty($error)) {
            $info .= '<tr><td>Error:</td>';
            $info .= '<td>' . htmlspecialchars($error, ENT_QUOTES, $charset) . '</td></tr>';
            $info .= '<tr><td>Error time:</td>';
            $info .= '<td>' . htmlspecialchars(get_post_meta($posts->post->ID, c_al2fb_meta_error_time, true), ENT_QUOTES, $charset) . '</td></tr>';
            $info .= '<tr><td>Error post:</td>';
            $info .= '<td><a href="' . get_permalink($posts->post->ID) . '" target="_blank">' . htmlspecialchars(get_the_title($posts->post->ID), ENT_QUOTES, $charset) . '</a></td></tr>';
        }
    }
    $info .= '<tr><td>Last error:</td><td>' . htmlspecialchars(get_option(c_al2fb_last_error), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Last error time:</td><td>' . htmlspecialchars(get_option(c_al2fb_last_error_time), ENT_QUOTES, $charset) . '</td></tr>';
    $info .= '<tr><td>Last request:</td><td><pre>' . htmlspecialchars(get_option(c_al2fb_last_request), ENT_QUOTES, $charset) . '</pre></td></tr>';
    $info .= '<tr><td>Last request time:</td><td>' . get_option(c_al2fb_last_request_time) . '</td></tr>';
    $info .= '<tr><td>Last response:</td><td><pre>' . htmlspecialchars(get_option(c_al2fb_last_response), ENT_QUOTES, $charset) . '</pre></td></tr>';
    $info .= '<tr><td>Last response time:</td><td>' . get_option(c_al2fb_last_response_time) . '</td></tr>';
    $info .= '<tr><td>Last texts:</td><td><pre>' . htmlspecialchars(get_option(c_al2fb_last_texts), ENT_QUOTES, $charset) . '</pre></td></tr>';
    $info .= '<tr><td>Cron enabled:</td><td>' . (get_option(c_al2fb_option_cron_enabled) ? 'Yes' : 'No') . '</td></tr>';
    $info .= '<tr><td>Cron time:</td><td>' . get_option(c_al2fb_option_cron_time) . '</td></tr>';
    $info .= '<tr><td>Cron posts:</td><td>' . get_option(c_al2fb_option_cron_posts) . '</td></tr>';
    $info .= '<tr><td>Cron comments:</td><td>' . get_option(c_al2fb_option_cron_comments) . '</td></tr>';
    $info .= '<tr><td>Cron likes:</td><td>' . get_option(c_al2fb_option_cron_likes) . '</td></tr>';
    $info .= '</table></div>';
    $info .= '<pre>$_SERVER=' . print_r($_SERVER, true) . '</pre>';
    // Comments
    $comments = get_comments('number=20');
    foreach ($comments as $comment) {
        $fb_id = get_comment_meta($comment->comment_ID, c_al2fb_meta_fb_comment_id, true);
        $comment->fb_comment_id = $fb_id;
    }
    $info .= '<pre>comments=' . print_r($comments, true) . '</pre>';
    // Info self
    $extra = $_REQUEST['debug'] == 2;
    if ($extra) {
        try {
            $me = WPAL2Int::Get_fb_me_cached($user_ID, true);
            $info .= '<pre>me=' . print_r($me, true) . '</pre>';
        } catch (Exception $e) {
            $info .= '<pre>me=' . $e->getMessage() . '</pre>';
        }
    }
    // Info App
    try {
        $info .= '<pre>app=' . print_r(WPAL2Int::Get_fb_application_cached($user_ID), true) . '</pre>';
    } catch (Exception $e) {
        $info .= '<pre>app=' . $e->getMessage() . '</pre>';
    }
    // Info pages
    try {
        $pages = WPAL2Int::Get_fb_pages_cached($user_ID);
        if ($extra) {
            foreach ($pages->data as $page) {
                try {
                    $page->info = WPAL2Int::Get_fb_info($user_ID, $page->id);
                } catch (Exception $e) {
                    $page->info = $e->getMessage();
                }
            }
        }
        $info .= '<pre>pages=' . print_r($pages, true) . '</pre>';
        $ep = get_user_meta($user_ID, c_al2fb_meta_page_extra, true);
        $info .= '<pre>extra=' . print_r($ep, true) . '</pre>';
    } catch (Exception $e) {
        $info .= '<pre>pages=' . $e->getMessage() . '</pre>';
    }
    // Info groups
    try {
        $groups = WPAL2Int::Get_fb_groups_cached($user_ID);
        if ($extra) {
            foreach ($groups->data as $group) {
                try {
                    $group->info = WPAL2Int::Get_fb_info($user_ID, $group->id);
                } catch (Exception $e) {
                    $group->info = $e->getMessage();
                }
            }
        }
        $info .= '<pre>groups=' . print_r($groups, true) . '</pre>';
    } catch (Exception $e) {
        $info .= '<pre>groups=' . $e->getMessage() . '</pre>';
    }
    return $info;
}