main_file = str_replace('-class', '', __FILE__); // Get plugin url $this->plugin_url = WP_PLUGIN_URL . '/' . basename(dirname($this->main_file)); if (strpos($this->plugin_url, 'http') === 0 && is_ssl()) $this->plugin_url = str_replace('http://', 'https://', $this->plugin_url); // Log $this->debug = get_option(c_al2fb_option_debug); // Get site & blog id if (is_multisite()) { $current_site = get_current_site(); $this->site_id = $current_site->id; global $blog_id; $this->blog_id = $blog_id; } // register activation actions register_activation_hook($this->main_file, array(&$this, 'Activate')); register_deactivation_hook($this->main_file, array(&$this, 'Deactivate')); // Register actions add_action('init', array(&$this, 'Init'), 0); if (is_admin()) { add_action('admin_menu', array(&$this, 'Admin_menu')); add_filter('plugin_action_links', array(&$this, 'Plugin_action_links'), 10, 2); add_action('admin_notices', array(&$this, 'Admin_notices')); add_action('post_submitbox_start', array(&$this, 'Post_submitbox')); add_filter('manage_posts_columns', array(&$this, 'Manage_posts_columns')); add_action('manage_posts_custom_column', array(&$this, 'Manage_posts_custom_column'), 10, 2); add_filter('manage_pages_columns', array(&$this, 'Manage_posts_columns')); add_action('manage_pages_custom_column', array(&$this, 'Manage_posts_custom_column'), 10, 2); add_action('add_meta_boxes', array(&$this, 'Add_meta_boxes')); add_action('save_post', array(&$this, 'Save_post')); } add_action('transition_post_status', array(&$this, 'Transition_post_status'), 10, 3); add_action('xmlrpc_publish_post', array(&$this, 'Remote_publish')); add_action('app_publish_post', array(&$this, 'Remote_publish')); add_action('future_to_publish', array(&$this, 'Future_to_publish')); add_action('al2fb_publish', array(&$this, 'Remote_publish')); if (get_option(c_al2fb_option_use_pp)) add_action('publish_post', array(&$this, 'Remote_publish')); // Content add_action('wp_head', array(&$this, 'WP_head')); add_filter('the_content', array(&$this, 'The_content'), 999); add_filter('comments_array', array(&$this, 'Comments_array'), 10, 2); add_filter('get_comments_number', array(&$this, 'Get_comments_number'), 10, 2); add_filter('comment_class', array(&$this, 'Comment_class')); add_filter('get_avatar', array(&$this, 'Get_avatar'), 10, 5); // Shortcodes add_shortcode('al2fb_likers', array(&$this, 'Shortcode_likers')); add_shortcode('al2fb_like_button', array(&$this, 'Shortcode_like_button')); add_filter('al2fb_excerpt', array(&$this, 'Filter_excerpt'), 10, 2); add_filter('al2fb_content', array(&$this, 'Filter_content'), 10, 2); } // Handle plugin activation function Activate() { global $wpdb; $version = get_option(c_al2fb_option_version); if ($version <= 1) { delete_option(c_al2fb_meta_client_id); delete_option(c_al2fb_meta_app_secret); delete_option(c_al2fb_meta_access_token); delete_option(c_al2fb_meta_picture_type); delete_option(c_al2fb_meta_picture); delete_option(c_al2fb_meta_page); delete_option(c_al2fb_meta_clean); delete_option(c_al2fb_meta_donated); } if ($version <= 2) { $rows = $wpdb->get_results("SELECT user_id, meta_value FROM " . $wpdb->usermeta . " WHERE meta_key='al2fb_integrate'"); foreach ($rows as $row) { update_user_meta($row->user_id, c_al2fb_meta_fb_comments, $row->meta_value); update_user_meta($row->user_id, c_al2fb_meta_fb_likes, $row->meta_value); delete_user_meta($row->user_id, 'al2fb_integrate'); } } if ($version <= 3) { global $wpdb; $rows = $wpdb->get_results("SELECT ID FROM " . $wpdb->users); foreach ($rows as $row) update_user_meta($row->ID, c_al2fb_meta_like_faces, true); } if ($version <= 4) { $rows = $wpdb->get_results("SELECT user_id, meta_value FROM " . $wpdb->usermeta . " WHERE meta_key='" . c_al2fb_meta_trailer . "'"); foreach ($rows as $row) { $value = get_user_meta($row->user_id, c_al2fb_meta_trailer, true); update_user_meta($row->user_id, c_al2fb_meta_trailer, ' ' . $value); } } update_option(c_al2fb_option_version, 5); } // Handle plugin deactivation function Deactivate() { global $user_ID; get_currentuserinfo(); // Cleanup if requested if (get_user_meta($user_ID, c_al2fb_meta_clean, true)) { delete_user_meta($user_ID, c_al2fb_meta_shared); delete_user_meta($user_ID, c_al2fb_meta_client_id); delete_user_meta($user_ID, c_al2fb_meta_app_secret); delete_user_meta($user_ID, c_al2fb_meta_access_token); delete_user_meta($user_ID, c_al2fb_meta_picture_type); delete_user_meta($user_ID, c_al2fb_meta_picture); delete_user_meta($user_ID, c_al2fb_meta_picture_default); delete_user_meta($user_ID, c_al2fb_meta_page); delete_user_meta($user_ID, c_al2fb_meta_page_owner); delete_user_meta($user_ID, c_al2fb_meta_use_groups); delete_user_meta($user_ID, c_al2fb_meta_group); delete_user_meta($user_ID, c_al2fb_meta_caption); delete_user_meta($user_ID, c_al2fb_meta_msg); delete_user_meta($user_ID, c_al2fb_meta_shortlink); delete_user_meta($user_ID, c_al2fb_meta_add_new_page); delete_user_meta($user_ID, c_al2fb_meta_trailer); delete_user_meta($user_ID, c_al2fb_meta_hyperlink); delete_user_meta($user_ID, c_al2fb_meta_share_link); delete_user_meta($user_ID, c_al2fb_meta_fb_comments); delete_user_meta($user_ID, c_al2fb_meta_fb_likes); delete_user_meta($user_ID, c_al2fb_meta_post_likers); delete_user_meta($user_ID, c_al2fb_meta_post_like_button); delete_user_meta($user_ID, c_al2fb_meta_like_nohome); delete_user_meta($user_ID, c_al2fb_meta_like_noposts); delete_user_meta($user_ID, c_al2fb_meta_like_nopages); delete_user_meta($user_ID, c_al2fb_meta_like_noarchives); delete_user_meta($user_ID, c_al2fb_meta_like_nocategories); delete_user_meta($user_ID, c_al2fb_meta_like_layout); delete_user_meta($user_ID, c_al2fb_meta_like_faces); delete_user_meta($user_ID, c_al2fb_meta_like_width); delete_user_meta($user_ID, c_al2fb_meta_like_action); delete_user_meta($user_ID, c_al2fb_meta_like_font); delete_user_meta($user_ID, c_al2fb_meta_like_colorscheme); delete_user_meta($user_ID, c_al2fb_meta_like_link); delete_user_meta($user_ID, c_al2fb_meta_like_top); delete_user_meta($user_ID, c_al2fb_meta_like_iframe); delete_user_meta($user_ID, c_al2fb_meta_open_graph); delete_user_meta($user_ID, c_al2fb_meta_open_graph_type); delete_user_meta($user_ID, c_al2fb_meta_exclude_default); delete_user_meta($user_ID, c_al2fb_meta_not_post_list); delete_user_meta($user_ID, c_al2fb_meta_fb_encoding); delete_user_meta($user_ID, c_al2fb_meta_clean); delete_user_meta($user_ID, c_al2fb_meta_donated); delete_user_meta($user_ID, c_al2fb_meta_rated); //delete_option(c_al2fb_option_version); //delete_option(c_al2fb_option_timeout); //delete_option(c_al2fb_option_nonotice); //delete_option(c_al2fb_option_min_cap); //delete_option(c_al2fb_option_msg_refresh); //delete_option(c_al2fb_option_max_descr); //delete_option(c_al2fb_option_exclude_type); //delete_option(c_al2fb_option_exclude_cat); //delete_option(c_al2fb_option_noverifypeer); //delete_option(c_al2fb_option_siteurl); //delete_option(c_al2fb_option_nocurl); //delete_option(c_al2fb_option_use_pp); //delete_option(c_al2fb_option_debug); } } // Initialization function Init() { // Secret request if (isset($_REQUEST['al2fb_check'])) { if ($_REQUEST['al2fb_check'] == self::Authorize_secret()) echo 'OK'; exit(); } // Image request if (isset($_GET['al2fb_image'])) { $img = dirname(__FILE__) . '/wp-blue-s.png'; header('Content-type: image/png'); readfile($img); exit(); } // Set default capability if (!get_option(c_al2fb_option_min_cap)) update_option(c_al2fb_option_min_cap, 'edit_posts'); // I18n load_plugin_textdomain(c_al2fb_text_domain, false, dirname(plugin_basename(__FILE__)) . '/language/'); // Enqueue style sheet $css_name = $this->Change_extension(basename($this->main_file), '.css'); if (file_exists(WP_CONTENT_DIR . '/uploads/' . $css_name)) $css_url = WP_CONTENT_URL . '/uploads/' . $css_name; else if (file_exists(TEMPLATEPATH . '/' . $css_name)) $css_url = get_bloginfo('template_directory') . '/' . $css_name; else $css_url = $this->plugin_url . '/' . $css_name; wp_register_style('al2fb_style', $css_url); wp_enqueue_style('al2fb_style'); // Check user capability if (current_user_can(get_option(c_al2fb_option_min_cap))) { if (is_admin()) { // Enqueue script wp_enqueue_script('jquery'); // 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(); // Redirect $auth_url = self::Authorize_url($user_ID); try { // Check if (ini_get('safe_mode') || ini_get('open_basedir')) update_option(c_al2fb_log_redir_check, 'No'); else { $response = self::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 $error_url = admin_url('tools.php?page=' . plugin_basename($this->main_file)); $error_url .= '&al2fb_action=error'; $error_url .= '&error=' . urlencode($e->getMessage()); wp_redirect($error_url); exit(); } } } // Handle Facebook authorization self::Authorize(); } } // Display admin messages function Admin_notices() { // Check user capability if (current_user_can(get_option(c_al2fb_option_min_cap))) { // Get current user global $user_ID; get_currentuserinfo(); // Disable shared application if (!self::Client_side_flow_available() && get_user_meta($user_ID, c_al2fb_meta_shared, true)) { update_user_meta($user_ID, c_al2fb_meta_shared, false); delete_user_meta($user_ID, c_al2fb_meta_access_token); } // Check actions if (isset($_REQUEST['al2fb_action'])) { // Configuration if ($_REQUEST['al2fb_action'] == 'config') self::Action_config(); // Authorization else if ($_REQUEST['al2fb_action'] == 'authorize') self::Action_authorize(); // Mail debug info else if ($_REQUEST['al2fb_action'] == 'mail') self::Action_mail(); } self::Check_config(); } } // Save settings function Action_config() { // Security check check_admin_referer(c_al2fb_nonce_form); // Get current user global $user_ID; get_currentuserinfo(); // Default values if (empty($_POST[c_al2fb_meta_shared])) $_POST[c_al2fb_meta_shared] = null; if (empty($_POST[c_al2fb_meta_picture_type])) $_POST[c_al2fb_meta_picture_type] = 'wordpress'; if (empty($_POST[c_al2fb_meta_page])) $_POST[c_al2fb_meta_page] = null; if (empty($_POST[c_al2fb_meta_page_owner])) $_POST[c_al2fb_meta_page_owner] = null; if (empty($_POST[c_al2fb_meta_use_groups])) $_POST[c_al2fb_meta_use_groups] = null; if (empty($_POST[c_al2fb_meta_group])) $_POST[c_al2fb_meta_group] = null; if (empty($_POST[c_al2fb_meta_caption])) $_POST[c_al2fb_meta_caption] = null; if (empty($_POST[c_al2fb_meta_msg])) $_POST[c_al2fb_meta_msg] = null; if (empty($_POST[c_al2fb_meta_shortlink])) $_POST[c_al2fb_meta_shortlink] = null; if (empty($_POST[c_al2fb_meta_add_new_page])) $_POST[c_al2fb_meta_add_new_page] = null; if (empty($_POST[c_al2fb_meta_trailer])) $_POST[c_al2fb_meta_trailer] = null; if (empty($_POST[c_al2fb_meta_hyperlink])) $_POST[c_al2fb_meta_hyperlink] = null; if (empty($_POST[c_al2fb_meta_share_link])) $_POST[c_al2fb_meta_share_link] = null; if (empty($_POST[c_al2fb_meta_fb_comments])) $_POST[c_al2fb_meta_fb_comments] = null; if (empty($_POST[c_al2fb_meta_fb_likes])) $_POST[c_al2fb_meta_fb_likes] = null; if (empty($_POST[c_al2fb_meta_post_likers])) $_POST[c_al2fb_meta_post_likers] = null; if (empty($_POST[c_al2fb_meta_post_like_button])) $_POST[c_al2fb_meta_post_like_button] = null; if (empty($_POST[c_al2fb_meta_like_nohome])) $_POST[c_al2fb_meta_like_nohome] = null; if (empty($_POST[c_al2fb_meta_like_noposts])) $_POST[c_al2fb_meta_like_noposts] = null; if (empty($_POST[c_al2fb_meta_like_nopages])) $_POST[c_al2fb_meta_like_nopages] = null; if (empty($_POST[c_al2fb_meta_like_noarchives])) $_POST[c_al2fb_meta_like_noarchives] = null; if (empty($_POST[c_al2fb_meta_like_nocategories])) $_POST[c_al2fb_meta_like_nocategories] = null; if (empty($_POST[c_al2fb_meta_like_layout])) $_POST[c_al2fb_meta_like_layout] = null; if (empty($_POST[c_al2fb_meta_like_faces])) $_POST[c_al2fb_meta_like_faces] = null; if (empty($_POST[c_al2fb_meta_like_action])) $_POST[c_al2fb_meta_like_action] = null; if (empty($_POST[c_al2fb_meta_like_font])) $_POST[c_al2fb_meta_like_font] = null; if (empty($_POST[c_al2fb_meta_like_colorscheme])) $_POST[c_al2fb_meta_like_colorscheme] = null; if (empty($_POST[c_al2fb_meta_like_top])) $_POST[c_al2fb_meta_like_top] = null; if (empty($_POST[c_al2fb_meta_like_iframe])) $_POST[c_al2fb_meta_like_iframe] = null; if (empty($_POST[c_al2fb_meta_open_graph])) $_POST[c_al2fb_meta_open_graph] = null; if (empty($_POST[c_al2fb_meta_exclude_default])) $_POST[c_al2fb_meta_exclude_default] = null; if (empty($_POST[c_al2fb_meta_not_post_list])) $_POST[c_al2fb_meta_not_post_list] = null; if (empty($_POST[c_al2fb_meta_clean])) $_POST[c_al2fb_meta_clean] = null; if (empty($_POST[c_al2fb_meta_donated])) $_POST[c_al2fb_meta_donated] = null; if (empty($_POST[c_al2fb_meta_rated])) $_POST[c_al2fb_meta_rated] = null; $_POST[c_al2fb_meta_client_id] = trim($_POST[c_al2fb_meta_client_id]); $_POST[c_al2fb_meta_app_secret] = trim($_POST[c_al2fb_meta_app_secret]); $_POST[c_al2fb_meta_picture] = trim(stripslashes($_POST[c_al2fb_meta_picture])); $_POST[c_al2fb_meta_picture_default] = trim(stripslashes($_POST[c_al2fb_meta_picture_default])); $_POST[c_al2fb_meta_trailer] = rtrim($_POST[c_al2fb_meta_trailer]); $_POST[c_al2fb_meta_like_width] = trim($_POST[c_al2fb_meta_like_width]); $_POST[c_al2fb_meta_like_link] = trim($_POST[c_al2fb_meta_like_link]); $_POST[c_al2fb_meta_open_graph_type] = trim($_POST[c_al2fb_meta_open_graph_type]); $_POST[c_al2fb_meta_fb_encoding] = trim($_POST[c_al2fb_meta_fb_encoding]); // Prevent losing selected page if (!self::Is_authorized($user_ID) || (get_user_meta($user_ID, c_al2fb_meta_use_groups, true) && get_user_meta($user_ID, c_al2fb_meta_group, true))) $_POST[c_al2fb_meta_page] = get_user_meta($user_ID, c_al2fb_meta_page, true); // Prevent losing selected group if (!self::Is_authorized($user_ID) || !get_user_meta($user_ID, c_al2fb_meta_use_groups, true)) $_POST[c_al2fb_meta_group] = get_user_meta($user_ID, c_al2fb_meta_group, true); // Shared changed if ($_POST[c_al2fb_meta_shared] != get_user_meta($user_ID, c_al2fb_meta_shared, true)) delete_user_meta($user_ID, c_al2fb_meta_access_token); // App ID or secret changed if (!$_POST[c_al2fb_meta_shared]) if (get_user_meta($user_ID, c_al2fb_meta_client_id, true) != $_POST[c_al2fb_meta_client_id] || get_user_meta($user_ID, c_al2fb_meta_app_secret, true) != $_POST[c_al2fb_meta_app_secret]) delete_user_meta($user_ID, c_al2fb_meta_access_token); // Page owner changed if ($_POST[c_al2fb_meta_page_owner] && !get_user_meta($user_ID, c_al2fb_meta_page_owner, true)) delete_user_meta($user_ID, c_al2fb_meta_access_token); // Use groups changed if ($_POST[c_al2fb_meta_use_groups] && !get_user_meta($user_ID, c_al2fb_meta_use_groups, true)) if (!get_user_meta($user_ID, c_al2fb_meta_group, true)) delete_user_meta($user_ID, c_al2fb_meta_access_token); // Update user options update_user_meta($user_ID, c_al2fb_meta_shared, $_POST[c_al2fb_meta_shared]); update_user_meta($user_ID, c_al2fb_meta_client_id, $_POST[c_al2fb_meta_client_id]); update_user_meta($user_ID, c_al2fb_meta_app_secret, $_POST[c_al2fb_meta_app_secret]); update_user_meta($user_ID, c_al2fb_meta_picture_type, $_POST[c_al2fb_meta_picture_type]); update_user_meta($user_ID, c_al2fb_meta_picture, $_POST[c_al2fb_meta_picture]); update_user_meta($user_ID, c_al2fb_meta_picture_default, $_POST[c_al2fb_meta_picture_default]); update_user_meta($user_ID, c_al2fb_meta_page, $_POST[c_al2fb_meta_page]); update_user_meta($user_ID, c_al2fb_meta_page_owner, $_POST[c_al2fb_meta_page_owner]); update_user_meta($user_ID, c_al2fb_meta_use_groups, $_POST[c_al2fb_meta_use_groups]); update_user_meta($user_ID, c_al2fb_meta_group, $_POST[c_al2fb_meta_group]); update_user_meta($user_ID, c_al2fb_meta_caption, $_POST[c_al2fb_meta_caption]); update_user_meta($user_ID, c_al2fb_meta_msg, $_POST[c_al2fb_meta_msg]); update_user_meta($user_ID, c_al2fb_meta_shortlink, $_POST[c_al2fb_meta_shortlink]); update_user_meta($user_ID, c_al2fb_meta_add_new_page, $_POST[c_al2fb_meta_add_new_page]); update_user_meta($user_ID, c_al2fb_meta_trailer, $_POST[c_al2fb_meta_trailer]); update_user_meta($user_ID, c_al2fb_meta_hyperlink, $_POST[c_al2fb_meta_hyperlink]); update_user_meta($user_ID, c_al2fb_meta_share_link, $_POST[c_al2fb_meta_share_link]); update_user_meta($user_ID, c_al2fb_meta_fb_comments, $_POST[c_al2fb_meta_fb_comments]); update_user_meta($user_ID, c_al2fb_meta_fb_likes, $_POST[c_al2fb_meta_fb_likes]); update_user_meta($user_ID, c_al2fb_meta_post_likers, $_POST[c_al2fb_meta_post_likers]); update_user_meta($user_ID, c_al2fb_meta_post_like_button, $_POST[c_al2fb_meta_post_like_button]); update_user_meta($user_ID, c_al2fb_meta_like_nohome, $_POST[c_al2fb_meta_like_nohome]); update_user_meta($user_ID, c_al2fb_meta_like_noposts, $_POST[c_al2fb_meta_like_noposts]); update_user_meta($user_ID, c_al2fb_meta_like_nopages, $_POST[c_al2fb_meta_like_nopages]); update_user_meta($user_ID, c_al2fb_meta_like_noarchives, $_POST[c_al2fb_meta_like_noarchives]); update_user_meta($user_ID, c_al2fb_meta_like_nocategories, $_POST[c_al2fb_meta_like_nocategories]); update_user_meta($user_ID, c_al2fb_meta_like_layout, $_POST[c_al2fb_meta_like_layout]); update_user_meta($user_ID, c_al2fb_meta_like_faces, $_POST[c_al2fb_meta_like_faces]); update_user_meta($user_ID, c_al2fb_meta_like_width, $_POST[c_al2fb_meta_like_width]); update_user_meta($user_ID, c_al2fb_meta_like_action, $_POST[c_al2fb_meta_like_action]); update_user_meta($user_ID, c_al2fb_meta_like_font, $_POST[c_al2fb_meta_like_font]); update_user_meta($user_ID, c_al2fb_meta_like_colorscheme, $_POST[c_al2fb_meta_like_colorscheme]); update_user_meta($user_ID, c_al2fb_meta_like_link, $_POST[c_al2fb_meta_like_link]); update_user_meta($user_ID, c_al2fb_meta_like_top, $_POST[c_al2fb_meta_like_top]); update_user_meta($user_ID, c_al2fb_meta_like_iframe, $_POST[c_al2fb_meta_like_iframe]); update_user_meta($user_ID, c_al2fb_meta_open_graph, $_POST[c_al2fb_meta_open_graph]); update_user_meta($user_ID, c_al2fb_meta_open_graph_type, $_POST[c_al2fb_meta_open_graph_type]); update_user_meta($user_ID, c_al2fb_meta_exclude_default, $_POST[c_al2fb_meta_exclude_default]); update_user_meta($user_ID, c_al2fb_meta_not_post_list, $_POST[c_al2fb_meta_not_post_list]); update_user_meta($user_ID, c_al2fb_meta_fb_encoding, $_POST[c_al2fb_meta_fb_encoding]); update_user_meta($user_ID, c_al2fb_meta_clean, $_POST[c_al2fb_meta_clean]); update_user_meta($user_ID, c_al2fb_meta_donated, $_POST[c_al2fb_meta_donated]); update_user_meta($user_ID, c_al2fb_meta_rated, $_POST[c_al2fb_meta_rated]); if (isset($_REQUEST['debug'])) { if (empty($_POST[c_al2fb_meta_access_token])) $_POST[c_al2fb_meta_access_token] = null; $_POST[c_al2fb_meta_access_token] = trim($_POST[c_al2fb_meta_access_token]); update_user_meta($user_ID, c_al2fb_meta_access_token, $_POST[c_al2fb_meta_access_token]); } // Update admin options if (current_user_can('manage_options')) { if (empty($_POST[c_al2fb_option_app_share])) $_POST[c_al2fb_option_app_share] = null; else $_POST[c_al2fb_option_app_share] = $user_ID; if (is_multisite()) update_site_option(c_al2fb_option_app_share, $_POST[c_al2fb_option_app_share]); else update_option(c_al2fb_option_app_share, $_POST[c_al2fb_option_app_share]); if (empty($_POST[c_al2fb_option_nonotice])) $_POST[c_al2fb_option_nonotice] = null; if (empty($_POST[c_al2fb_option_min_cap])) $_POST[c_al2fb_option_min_cap] = null; if (empty($_POST[c_al2fb_option_noverifypeer])) $_POST[c_al2fb_option_noverifypeer] = null; $_POST[c_al2fb_option_msg_refresh] = trim($_POST[c_al2fb_option_msg_refresh]); $_POST[c_al2fb_option_max_descr] = trim($_POST[c_al2fb_option_max_descr]); $_POST[c_al2fb_option_exclude_type] = trim($_POST[c_al2fb_option_exclude_type]); $_POST[c_al2fb_option_exclude_cat] = trim($_POST[c_al2fb_option_exclude_cat]); update_option(c_al2fb_option_nonotice, $_POST[c_al2fb_option_nonotice]); update_option(c_al2fb_option_min_cap, $_POST[c_al2fb_option_min_cap]); update_option(c_al2fb_option_msg_refresh, $_POST[c_al2fb_option_msg_refresh]); update_option(c_al2fb_option_max_descr, $_POST[c_al2fb_option_max_descr]); update_option(c_al2fb_option_exclude_type, $_POST[c_al2fb_option_exclude_type]); update_option(c_al2fb_option_exclude_cat, $_POST[c_al2fb_option_exclude_cat]); update_option(c_al2fb_option_noverifypeer, $_POST[c_al2fb_option_noverifypeer]); if (isset($_REQUEST['debug'])) { if (empty($_POST[c_al2fb_option_siteurl])) $_POST[c_al2fb_option_siteurl] = null; if (empty($_POST[c_al2fb_option_nocurl])) $_POST[c_al2fb_option_nocurl] = null; if (empty($_POST[c_al2fb_option_use_pp])) $_POST[c_al2fb_option_use_pp] = null; if (empty($_POST[c_al2fb_option_debug])) $_POST[c_al2fb_option_debug] = null; update_option(c_al2fb_option_siteurl, $_POST[c_al2fb_option_siteurl]); update_option(c_al2fb_option_nocurl, $_POST[c_al2fb_option_nocurl]); update_option(c_al2fb_option_use_pp, $_POST[c_al2fb_option_use_pp]); update_option(c_al2fb_option_debug, $_POST[c_al2fb_option_debug]); } } // Show result echo '
' . __('Settings updated', c_al2fb_text_domain) . '
' . __('Authorized, go posting!', c_al2fb_text_domain) . '
' . __('Authorized, go posting!', c_al2fb_text_domain) . '
' . htmlspecialchars($e->getMessage(), ENT_QUOTES, get_bloginfo('charset')) . '
' . htmlspecialchars($msg, ENT_QUOTES, get_bloginfo('charset')) . '
' . nl2br(htmlspecialchars(stripslashes($_POST[c_al2fb_mail_msg]), ENT_QUOTES, get_bloginfo('charset'))) . '
'; $message .= '' . __('Debug information sent', c_al2fb_text_domain) . '
' . __('Sending debug information failed', c_al2fb_text_domain) . '
'; _e('Add Link to Facebook', c_al2fb_text_domain); echo ' ' . $notice . '
' . $msg . '
'; echo __('Add Link to Facebook', c_al2fb_text_domain) . ' - '; edit_post_link($posts->post->post_title, null, null, $posts->post->ID); echo ': ' . htmlspecialchars($error, ENT_QUOTES, get_bloginfo('charset')) . '
';
$msg = __('If you like the Add Link to Facebook plugin, please rate it on wordpress.org.
If the average rating is low, it makes no sense to support this plugin any longer.
You can disable this notice by checking the option "I have rated this plugin" on the settings page.', c_al2fb_text_domain);
$msg = str_replace('[wordpress]', 'http://wordpress.org/extend/plugins/add-link-to-facebook/', $msg);
$msg = str_replace('[settings]', $url, $msg);
echo $msg . '
' . __('Your server may not allow external connections', c_al2fb_text_domain) . '
|
/>
"" | |
| /> | |
|
| |
|
/>
| |
| /> Experimental! | |
|
/>
| |
| /> |
| /> | |
| /> | |
| /> |
|
/>
| |
| /> | |
| /> | |
| /> | |
| /> | |
| /> | |
|
> > > | |
| /> | |
|
> > | |
|
> > | |
|
| |
| /> | |
| /> | |
|
/>
| |
|
|
| /> | |
| /> | |
|
| |
|
/>
| |
| /> | |
| /> |
|
/>
| |
|
| |
|
| |
|
| |
|
| |
|
/>
|
| /> | |
| /> | |
| /> | |
| /> |
]*class="wp-caption-text"[^>]*>[^<]*<\/p>/i', '', $text); // Get plain texts $text = preg_replace('/<[^>]*>/', '', $text); return $text; } // Convert charset function Convert_encoding($user_ID, $text) { $blog_encoding = get_option('blog_charset'); $fb_encoding = get_user_meta($user_ID, c_al2fb_meta_fb_encoding, true); if (empty($fb_encoding)) $fb_encoding = 'UTF-8'; if ($blog_encoding != $fb_encoding && function_exists('mb_convert_encoding')) return mb_convert_encoding($text, $fb_encoding, $blog_encoding); else return $text; } // Add Link to Facebook function Add_link($post) { // Get url $user_ID = self::Get_user_ID($post); if (get_user_meta($user_ID, c_al2fb_meta_shortlink, true)) $link = wp_get_shortlink($post->ID); if (empty($link)) $link = get_permalink($post->ID); // Get processed texts $texts = self::Get_texts($post); $excerpt = $texts['excerpt']; $content = $texts['content']; $description = $texts['description']; // Get name $name = self::Convert_encoding($user_ID, $post->post_title); // Get caption $caption = ''; if (get_user_meta($user_ID, c_al2fb_meta_caption, true)) { $caption = html_entity_decode(get_bloginfo('title'), ENT_QUOTES, get_bloginfo('charset')); $caption = self::Convert_encoding($user_ID, $caption); } // Log if ($this->debug) { $picture_type = get_user_meta($user_ID, c_al2fb_meta_picture_type, true); $log = 'Picture type: ' . $picture_type . PHP_EOL; $image_id = get_post_meta($post->ID, c_al2fb_meta_image_id, true); $log .= '- meta: ' . $image_id . PHP_EOL; $images = array_values(get_children('post_type=attachment&post_mime_type=image&order=ASC&post_parent=' . $post->ID)); $log .= '- attached: ' . print_r($images, true); $picture_id = get_post_thumbnail_id($post->ID); $log .= '- featured: ' . $picture_id . PHP_EOL; if (preg_match('/< *img[^>]*src *= *["\']([^"\']*)["\']/i', do_shortcode($post->post_content), $matches)) $log .= '- post: ' . $matches[1] . PHP_EOL; else $log .= '- post: none' . PHP_EOL; $custom = get_user_meta($user_ID, c_al2fb_meta_picture, true); $log .= '- custom: ' . $custom . PHP_EOL; add_post_meta($post->ID, c_al2fb_meta_log, $log); } // Get link picture $picture_info = self::Get_link_picture($post, $user_ID); $picture = $picture_info['picture']; $picture_type = $picture_info['picture_type']; // Get user note $message = ''; if (get_user_meta($user_ID, c_al2fb_meta_msg, true)) $message = $excerpt; // Do not disturb WordPress try { // Build request if (get_user_meta($user_ID, c_al2fb_meta_use_groups, true)) $page_id = get_user_meta($user_ID, c_al2fb_meta_group, true); if (empty($page_id)) $page_id = get_user_meta($user_ID, c_al2fb_meta_page, true); if (empty($page_id)) $page_id = 'me'; $url = 'https://graph.facebook.com/' . $page_id . '/feed'; $query_array = array( 'access_token' => self::Get_access_token_by_post($post), 'link' => $link, 'name' => $name, 'caption' => $caption, 'description' => $description, 'picture' => $picture, 'message' => $message ); // Add share link if (get_user_meta($user_ID, c_al2fb_meta_share_link, true)) { // http://forum.developers.facebook.net/viewtopic.php?id=50049 // http://bugs.developers.facebook.net/show_bug.cgi?id=9075 $actions = array( 'name' => __('Share', c_al2fb_text_domain), 'link' => 'http://www.facebook.com/share.php?u=' . urlencode($link) . '&t=' . urlencode($post->post_title) ); $query_array['actions'] = json_encode($actions); } // http://developers.facebook.com/docs/reference/api/link/ $query = http_build_query($query_array, '', '&'); if ($this->debug) { add_post_meta($post->ID, c_al2fb_meta_log, print_r($query_array, true)); add_post_meta($post->ID, c_al2fb_meta_log, $query); } // Execute request $response = self::Request($url, $query, 'POST'); if ($this->debug) add_post_meta($post->ID, c_al2fb_meta_log, print_r($response, true)); $fb_link = json_decode($response); // Register link/date add_post_meta($post->ID, c_al2fb_meta_link_id, $fb_link->id); update_post_meta($post->ID, c_al2fb_meta_link_time, date('c')); update_post_meta($post->ID, c_al2fb_meta_link_picture, $picture_type . '=' . $picture); delete_post_meta($post->ID, c_al2fb_meta_error); } catch (Exception $e) { add_post_meta($post->ID, c_al2fb_meta_error, $e->getMessage()); update_post_meta($post->ID, c_al2fb_meta_link_time, date('c')); update_post_meta($post->ID, c_al2fb_meta_link_picture, $picture_type . '=' . $picture); } } // Add Link to Facebook function Delete_link($post) { // Do not disturb WordPress try { // Build request // http://developers.facebook.com/docs/reference/api/link/ $link_id = get_post_meta($post->ID, c_al2fb_meta_link_id, true); $url = 'https://graph.facebook.com/' . $link_id; $query = http_build_query(array( 'access_token' => self::Get_access_token_by_post($post), 'method' => 'delete' ), '', '&'); if ($this->debug) add_post_meta($post->ID, c_al2fb_meta_log, $query); // Execute request $response = self::Request($url, $query, 'POST'); if ($this->debug) add_post_meta($post->ID, c_al2fb_meta_log, print_r($response, true)); // Delete meta data delete_post_meta($post->ID, c_al2fb_meta_link_id); delete_post_meta($post->ID, c_al2fb_meta_link_time); delete_post_meta($post->ID, c_al2fb_meta_link_picture); delete_post_meta($post->ID, c_al2fb_meta_error); } catch (Exception $e) { add_post_meta($post->ID, c_al2fb_meta_error, $e->getMessage()); update_post_meta($post->ID, c_al2fb_meta_link_time, date('c')); } } function Is_authorized($user_ID) { return get_user_meta($user_ID, c_al2fb_meta_access_token, true); } // Get correct access for post function Get_access_token_by_post($post) { $user_ID = self::Get_user_ID($post); $page_id = get_user_meta($user_ID, c_al2fb_meta_page, true); return self::Get_access_token_by_page($user_ID, $page_id); } // Get access token for page function Get_access_token_by_page($user_ID, $page_id) { $access_token = get_user_meta($user_ID, c_al2fb_meta_access_token, true); if ($page_id && $page_id != 'me' && get_user_meta($user_ID, c_al2fb_meta_page_owner, true)) { $found = false; $pages = self::Get_pages($user_ID); foreach ($pages->data as $page) if ($page->id == $page_id) { $found = true; $access_token = $page->access_token; } } return $access_token; } // HTML header function WP_head() { if (is_single() || is_page()) { global $post; $user_ID = self::Get_user_ID($post); if (get_user_meta($user_ID, c_al2fb_meta_open_graph, true)) { $charset = get_bloginfo('charset'); $title = html_entity_decode(get_bloginfo('title'), ENT_QUOTES, get_bloginfo('charset')); // Get link picture $link_picture = get_post_meta($post->ID, c_al2fb_meta_link_picture, true); if (empty($link_picture)) { $picture_info = self::Get_link_picture($post, $user_ID); $picture = $picture_info['picture']; if (empty($picture)) $picture = self::Redirect_uri() . '?al2fb_image=1'; } else $picture = substr($link_picture, strpos($link_picture, '=') + 1); // Get type $ogp_type = get_user_meta($user_ID, c_al2fb_meta_open_graph_type, true); if (empty($ogp_type)) $ogp_type = 'article'; // Generate meta echo '' . PHP_EOL; echo '' . PHP_EOL; echo '' . PHP_EOL; echo '' . PHP_EOL; echo '' . PHP_EOL; if (is_single()) { $texts = self::Get_texts($post); echo '' . PHP_EOL; } $appid = get_user_meta($user_ID, c_al2fb_meta_client_id, true); if (!empty($appid)) echo '' . PHP_EOL; } } else if (is_home()) { $charset = get_bloginfo('charset'); $title = html_entity_decode(get_bloginfo('title'), ENT_QUOTES, get_bloginfo('charset')); echo '' . PHP_EOL; echo '' . PHP_EOL; echo '' . PHP_EOL; } } // Post content function The_content($content = '') { global $post; $user_ID = self::Get_user_ID($post); if (!(get_user_meta($user_ID, c_al2fb_meta_like_nohome, true) && is_home()) && !(get_user_meta($user_ID, c_al2fb_meta_like_noposts, true) && is_single()) && !(get_user_meta($user_ID, c_al2fb_meta_like_nopages, true) && is_page()) && !(get_user_meta($user_ID, c_al2fb_meta_like_noarchives, true) && is_archive()) && !(get_user_meta($user_ID, c_al2fb_meta_like_nocategories, true) && is_category())) { // Show likers if (get_user_meta($user_ID, c_al2fb_meta_post_likers, true)) { $likers = self::Get_likers($post); if (!empty($likers)) if (get_user_meta($user_ID, c_al2fb_meta_like_top, true)) $content = $likers . $content; else $content .= $likers; } // Show like button if (get_user_meta($user_ID, c_al2fb_meta_post_like_button, true) && !get_post_meta($post->ID, c_al2fb_meta_nolike, true)) { $like_button = self::Get_like_button($post); if (!empty($like_button)) if (get_user_meta($user_ID, c_al2fb_meta_like_top, true)) $content = $like_button . $content; else $content .= $like_button; } } return $content; } // Shortcode likers names function Shortcode_likers($atts) { extract(shortcode_atts(array('post_id' => null), $atts)); if (empty($post_id)) global $post; else $post = get_post($post_id); if (isset($post)) return self::Get_likers($post); } // Shortcode like button function Shortcode_like_button($atts) { extract(shortcode_atts(array('post_id' => null), $atts)); if (empty($post_id)) global $post; else $post = get_post($post_id); if (isset($post)) return self::Get_like_button($post); } // Get HTML for likers function Get_likers($post) { $likers = ''; $charset = get_bloginfo('charset'); $fb_likes = self::Get_fb_comments($post, true); if ($fb_likes) foreach ($fb_likes->data as $fb_like) { if (!empty($likers)) $likers .= ', '; $link = 'http://www.facebook.com/profile.php?id=' . $fb_like->id; $likers .= '' . htmlspecialchars($fb_like->name, ENT_QUOTES, $charset) . ''; } if (!empty($likers)) { $likers .= ' ' . _n('liked this post', 'liked this post', count($fb_likes->data), c_al2fb_text_domain) . ''; $likers = '