コード例 #1
0
function custom_header_footer($custom_template_header_footer, $date, $time)
{
    $author = get_the_author();
    $date = get_the_time($date);
    $time = get_the_time($time);
    $permalink = '<a href="' . get_permalink() . '">permalink</a>';
    if (get_the_tags()) {
        /* need to build our own links here and filter them */
        $i = 0;
        foreach (get_the_tags() as $tag) {
            if ($i > 0) {
                $posttags_link_data .= ', ';
            }
            $i++;
            $posttags_link_data .= '<a href="' . wpbook_always_filter_postlink(get_tag_link($tag->term_id)) . '" target="_top">' . $tag->name . '</a>';
        }
    } else {
        $posttags_link_data = "no tags";
    }
    if (get_the_category()) {
        /* need to build our own links here and filter them */
        $i = 0;
        foreach (get_the_category() as $category) {
            if ($i > 0) {
                $postcategory_link_data .= ', ';
            }
            $i++;
            $postcategory_link_data .= '<a href="' . wpbook_always_filter_postlink(get_category_link($category->cat_ID)) . '" target="_top">' . $category->cat_name . '</a>';
        }
    } else {
        $postcategory_link_data = "no categories";
    }
    $posttags = get_the_tags();
    if ($posttags) {
        $tag_count = count($posttags);
        $i = 0;
        foreach ($posttags as $tags) {
            $i++;
            $write_tags .= $tags->name;
            if ($i < $tag_count) {
                $write_tags .= ', ';
            }
        }
    } else {
        $write_tags = "no tags";
    }
    $postcategory = get_the_category();
    if ($postcategory) {
        $category_count = count($postcategory);
        $i = 0;
        foreach ($postcategory as $category) {
            $i++;
            $write_category .= $category->name;
            if ($i < $category_count) {
                $write_category .= ', ';
            }
        }
    } else {
        $write_category = "no categories";
    }
    $num_comments = get_comments_number();
    if (comments_open()) {
        if ($num_comments == 0) {
            $comments = "No Comments";
        } elseif ($num_comments > 1) {
            $comments = $num_comments . " Comments";
        } else {
            $comments = "1 Comment";
        }
        $write_comments = '<a href="' . get_comments_link() . '">' . $comments . '</a>';
    } else {
        $write_comments = 'Comments are off for this post';
    }
    $custom_template_header_footer = str_replace("%author%", "{$author}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%category%", "{$write_category}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%category_link%", "{$postcategory_link_data}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%time%", "{$time}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%date%", "{$date}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%tags%", "{$write_tags}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%tag_link%", "{$posttags_link_data}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%permalink%", "{$permalink}", "{$custom_template_header_footer}");
    $custom_template_header_footer = str_replace("%comments%", "{$write_comments}", "{$custom_template_header_footer}");
    return $custom_template_header_footer;
}
コード例 #2
0
function wpbook_safe_publish_to_facebook($post_ID)
{
    $debug_file = WP_PLUGIN_DIR . '/wpbook/wpbook_pub_debug.txt';
    if (!class_exists('Facebook')) {
        include_once WP_PLUGIN_DIR . '/wpbook/includes/client/facebook.php';
    }
    $wpbookOptions = get_option('wpbookAdminOptions');
    if (!empty($wpbookOptions)) {
        foreach ($wpbookOptions as $key => $option) {
            $wpbookAdminOptions[$key] = $option;
        }
    }
    if ($wpbookOptions['wpbook_enable_debug'] == "true") {
        define('WPBOOKDEBUG', true);
    } else {
        define('WPBOOKDEBUG', false);
    }
    $api_key = $wpbookAdminOptions['fb_api_key'];
    $secret = $wpbookAdminOptions['fb_secret'];
    $target_admin = $wpbookAdminOptions['fb_admin_target'];
    $target_page = $wpbookAdminOptions['fb_page_target'];
    $stream_publish = $wpbookAdminOptions['stream_publish'];
    $stream_publish_pages = $wpbookAdminOptions['stream_publish_pages'];
    $wpbook_show_errors = $wpbookAdminOptions['show_errors'];
    $wpbook_promote_external = $wpbookAdminOptions['promote_external'];
    $wpbook_attribution_line = $wpbookAdminOptions['attribution_line'];
    $wpbook_as_note = $wpbookAdminOptions['wpbook_as_note'];
    $wpbook_target_group = $wpbookAdminOptions['wpbook_target_group'];
    if ($wpbookOptions['wpbook_disable_sslverify'] == "true") {
        Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
        Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
    }
    $facebook = new Facebook($api_key, $secret);
    $wpbook_user_access_token = get_option('wpbook_user_access_token', '');
    $wpbook_page_access_token = get_option('wpbook_page_access_token', '');
    if ($wpbook_user_access_token == '') {
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            if ($fp && filesize($debug_file) > 500 * 1024) {
                // 500k max to file
                fclose($fp);
                $fp = @fopen($debug_file, 'w+');
                // start over with a new file
            }
            if (!$fp) {
                define('WPBOOKDEBUG', false);
            }
            // stop trying
            $debug_string = date("Y-m-d H:i:s", time()) . " : No user access token\n";
            if (is_writeable($debug_file)) {
                fwrite($fp, $debug_string);
            } else {
                fclose($fp);
                define('WPBOOKDEBUG', false);
                // if it isn't writeable don't keep trying
            }
        }
    }
    try {
        $facebook->setAccessToken($wpbook_user_access_token);
    } catch (FacebookApiException $e) {
        if (WPBOOKDEBUG) {
            $wpbook_message = 'Caught exception setting access token: ' . $e->getMessage() . 'Error code: ' . $e->getCode();
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " :" . $wpbook_message . "\n";
            fwrite($fp, $debug_string);
        }
        // end if debug
    }
    // end try-catch
    // this is just to validate the access token
    try {
        $facebook->api('/me', 'GET');
    } catch (FacebookApiException $e) {
        if (WPBOOKDEBUG) {
            $wpbook_message = 'Caught exception with access token: ' . $e->getMessage() . 'Error code: ' . $e->getCode();
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " :" . $wpbook_message . "\n";
            fwrite($fp, $debug_string);
        }
        // end if debug
        update_option('wpbook_user_access_token', 'invalid');
        die;
    }
    if (!empty($api_key) && !empty($secret) && !empty($target_admin) && ($stream_publish == "true" || $stream_publish_pages == "true")) {
        if ($wpbook_user_access_token == '' && $wpbook_page_access_token == '') {
            // if both of these are blank, no point in the rest of publish_to_facebook
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : No user access token or page access token.\n";
                fwrite($fp, $debug_string);
            }
            if ($wpbook_show_errors) {
                $wpbook_message = 'Both user access token AND page access_token are blank. You must grant permissions before publishing will work.';
                wp_die($wpbook_message, 'WPBook Error');
            }
            return;
        }
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : publish_to_facebook running, target_admin is " . $target_admin . "\n";
            fwrite($fp, $debug_string);
        }
        $my_post = get_post($post_ID);
        if (!empty($my_post->post_password)) {
            // post is password protected, don't post
            return;
        }
        if (get_post_type($my_post->ID) != 'post') {
            // only do this for posts
            return;
        }
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : Post ID is " . $my_post->ID . "\n";
            fwrite($fp, $debug_string);
        }
        $publish_meta = get_post_meta($my_post->ID, 'wpbook_fb_publish', true);
        if ($publish_meta == 'no') {
            // user chose not to post this one
            return;
        }
        $my_title = $my_post->post_title;
        $my_author = get_userdata($my_post->post_author)->display_name;
        if ($wpbook_promote_external) {
            $my_permalink = get_permalink($post_ID);
        } else {
            $my_permalink = wpbook_always_filter_postlink(get_permalink($post_ID));
        }
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : My permalink is " . $my_permalink . "\n";
            fwrite($fp, $debug_string);
        }
        $publish_meta_message = get_post_meta($my_post->ID, 'wpbook_message', true);
        if ($publish_meta_message) {
            $wpbook_description = $publish_meta_message;
        } else {
            if ($my_post->post_excerpt && $my_post->post_excerpt != '') {
                $wpbook_description = stripslashes(wp_filter_nohtml_kses(apply_filters('the_content', $my_post->post_excerpt)));
            } else {
                $wpbook_description = stripslashes(wp_filter_nohtml_kses(apply_filters('the_content', $my_post->post_content)));
            }
        }
        if (strlen($wpbook_description) >= 995) {
            $space_index = strrpos(substr($wpbook_description, 0, 995), ' ');
            $short_desc = substr($wpbook_description, 0, $space_index);
            $short_desc .= '...';
            $wpbook_description = $short_desc;
        }
        if (function_exists('get_the_post_thumbnail') && has_post_thumbnail($my_post->ID)) {
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : function exists, and this post has_post_thumbnail - post_Id is " . $my_post->ID . " \n";
                fwrite($fp, $debug_string);
            }
            $my_thumb_id = get_post_thumbnail_id($my_post->ID);
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : my_thumb_id is " . $my_thumb_id . " \n";
                fwrite($fp, $debug_string);
            }
            $my_thumb_array = wp_get_attachment_image_src($my_thumb_id);
            $my_image = $my_thumb_array[0];
            // this should be the url
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : my_image is " . $my_image . " \n";
                fwrite($fp, $debug_string);
            }
        } else {
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : Get Post Thumbnail function does not exist, or no thumb \n";
                fwrite($fp, $debug_string);
            }
            $my_image = '';
        }
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : Post thumbail is " . $my_image . "\n";
            fwrite($fp, $debug_string);
        }
        $actions = json_encode(array(array('name' => 'Read More', 'link' => $my_permalink)));
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : Post share link is " . $my_link . "\n";
            fwrite($fp, $debug_string);
        }
        /* This section handles publishing to user's wall */
        if ($stream_publish == "true") {
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing to personal wall, admin is " . $target_admin . "\n";
                fwrite($fp, $debug_string);
            }
            try {
                $facebook->setAccessToken($wpbook_user_access_token);
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $wpbook_message = 'Caught exception setting user access token: ' . $e->getMessage() . 'Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try-catch
            $fb_response = '';
            try {
                if ($wpbook_as_note == 'note' || $wpbook_as_note == 'true') {
                    /* notes on walls don't allow much */
                    $allowedtags = array('img' => array('src' => array(), 'style' => array()), 'span' => array('id' => array(), 'style' => array()), 'a' => array('href' => array()), 'p' => array(), 'b' => array(), 'i' => array(), 'u' => array(), 'big' => array(), 'small' => array(), 'ul' => array(), 'li' => array(), 'ol' => array(), 'blockquote' => array(), 'h1' => array(), 'h2' => array(), 'h3' => array());
                    if (!empty($my_image)) {
                        /* message, picture, link, name, caption, description, source */
                        $attachment = array('subject' => $my_title, 'link' => $my_permalink, 'message' => wp_kses(stripslashes(apply_filters('the_content', $my_post->post_content)), $allowedtags), 'picture' => $my_image, 'actions' => $actions);
                    } else {
                        $attachment = array('subject' => $my_title, 'link' => $my_permalink, 'message' => wp_kses(stripslashes(apply_filters('the_content', $my_post->post_content)), $allowedtags), 'actions' => $actions);
                    }
                    /* allow other plugins to impact the attachment before posting */
                    $attachment = apply_filters('wpbook_attachment', $attachment, $my_post->ID);
                    if (WPBOOKDEBUG) {
                        $fp = @fopen($debug_file, 'a');
                        $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing as note, {$my_image} is " . $my_image . " \n";
                        fwrite($fp, $debug_string);
                    }
                    $fb_response = $facebook->api('/' . $target_admin . '/notes', 'POST', $attachment);
                    if (WPBOOKDEBUG) {
                        $fp = @fopen($debug_file, 'a');
                        $debug_string = date("Y-m-d H:i:s", time()) . " : Just published to api, fb_response is " . print_r($fb_response, true) . "\n";
                        fwrite($fp, $debug_string);
                    }
                } elseif ($wpbook_as_note == 'link') {
                    // post as link
                    $attachment = array('link' => $my_permalink, 'message' => $wpbook_description);
                    $fb_response = $facebook->api('/' . $target_admin . '/links', 'POST', $attachment);
                } else {
                    // post as a post
                    if (!empty($my_image)) {
                        /* message, picture, link, name, caption, description, source */
                        $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'picture' => $my_image, 'actions' => $actions);
                    } else {
                        $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'comments_xid' => $post_ID, 'actions' => $actions);
                    }
                    /* allow other plugins to impact the attachment before posting */
                    $attachment = apply_filters('wpbook_attachment', $attachment, $my_post->ID);
                    if (WPBOOKDEBUG) {
                        $fp = @fopen($debug_file, 'a');
                        $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing as excerpt, {$my_image} is " . $my_image . " \n";
                        fwrite($fp, $debug_string);
                    }
                    $fb_response = $facebook->api('/' . $target_admin . '/feed', 'POST', $attachment);
                    if (WPBOOKDEBUG) {
                        $fp = @fopen($debug_file, 'a');
                        $debug_string = date("Y-m-d H:i:s", time()) . " : Just published to api, fb_response is " . print_r($fb_response, true) . "\n";
                        fwrite($fp, $debug_string);
                    }
                }
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $wpbook_message = 'Caught exception in stream publish for user: '******'Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try-catch
            if ($fb_response != '') {
                add_post_meta($my_post->ID, '_wpbook_user_stream_id', $fb_response[id]);
                add_post_meta($my_post->ID, '_wpbook_user_stream_time', 0);
                // no comments imported yet
            }
            // end of if $response
        }
        // end of if stream_publish
        if (WPBOOKDEBUG) {
            $fp = @fopen($debug_file, 'a');
            $debug_string = date("Y-m-d H:i:s", time()) . " : Past stream_publish, fb_response is " . print_r($fb_response, true) . "\n";
            fwrite($fp, $debug_string);
        }
        /* This section handls publishing to group wall */
        if ($stream_publish_pages == "true" && !empty($wpbook_target_group)) {
            $fb_response = '';
            /* Publishing to a group's wall requires the user access token, and 
             * is published as coming from the user, not the group - different process
             * than Pages 
             */
            try {
                $facebook->setAccessToken($wpbook_user_access_token);
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $wpbook_message = 'Caught exception setting user access token: ' . $e->getMessage() . 'Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try-catch
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : Group access token is " . $wpbook_user_access_token . "\n";
                $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing to group " . $wpbook_target_group . "\n";
                fwrite($fp, $debug_string);
            }
            try {
                // post as an excerpt
                if (!empty($my_image)) {
                    /* message, picture, link, name, caption, description, source */
                    $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'picture' => $my_image, 'actions' => $actions);
                } else {
                    $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'actions' => $actions);
                }
                /* allow other plugins to impact the attachment before posting */
                $attachment = apply_filters('wpbook_attachment', $attachment, $my_post->ID);
                if (WPBOOKDEBUG) {
                    $fp = @fopen($debug_file, 'a');
                    $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing to group, image is " . $my_image . " \n";
                    fwrite($fp, $debug_string);
                }
                if ($wpbook_as_link == 'link') {
                    $attachment = array('link' => $my_permalink, 'message' => $wpbook_description);
                    $fb_response = $facebook->api('/' . $wpbook_target_group . '/links', 'POST', $attachment);
                } else {
                    $fb_response = $facebook->api('/' . $wpbook_target_group . '/feed/', 'POST', $attachment);
                }
                if (WPBOOKDEBUG) {
                    $fp = @fopen($debug_file, 'a');
                    $debug_string = date("Y-m-d H:i:s", time()) . " : Just published to group via api, fb_response is " . print_r($fb_response, true) . "\n";
                    fwrite($fp, $debug_string);
                }
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $fp = @fopen($debug_file, 'a');
                    $wpbook_message = 'Caught exception in publish to group ' . $e->getMessage() . ' Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try/catch for publish to group
            if ($fb_response != '') {
                add_post_meta($my_post->ID, '_wpbook_group_stream_id', $fb_response[id]);
                add_post_meta($my_post->ID, '_wpbook_group_stream_time', 0);
                // no comments imported
            } else {
                $wpbook_message = 'No post id returned from Facebook, $fb_response was ' . print_r($fb_response, true) . '/n';
                $wpbook_message = $wpbook_message . ' and $fb_page_type was ' . $fb_page_type;
                $wpbook_message .= ' and $wpbook_description was ' . $wpbook_description;
                $wpbook_message .= ' and $my_title was ' . $my_title;
                wp_die($wpbook_message, 'WPBook Error publishing to group');
            }
        }
        // end of publish to group
        /* This section handles publishing to page wall */
        if ($stream_publish_pages == "true" && !empty($target_page)) {
            // publish to page with new api
            $fb_response = '';
            if ($wpbook_page_access_token == '') {
                if (WPBOOKDEBUG) {
                    $fp = @fopen($debug_file, 'a');
                    $debug_string = date("Y-m-d H:i:s", time()) . " : No Access Token for Publishing to Page\n";
                    fwrite($fp, $debug_string);
                }
                return;
                // no page access token, no point in trying to publish
            }
            if (WPBOOKDEBUG) {
                $fp = @fopen($debug_file, 'a');
                $debug_string = date("Y-m-d H:i:s", time()) . " : Page access token is " . $wpbook_page_access_token . "\n";
                $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing to page " . $target_page . "\n";
                fwrite($fp, $debug_string);
            }
            try {
                $facebook->setAccessToken($wpbook_page_access_token);
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $wpbook_message = 'Caught exception setting page access token: ' . $e->getMessage() . 'Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try-catch
            try {
                // post as an excerpt
                if (!empty($my_image)) {
                    /* message, picture, link, name, caption, description, source */
                    $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'picture' => $my_image, 'actions' => $actions);
                } else {
                    $attachment = array('name' => $my_title, 'link' => $my_permalink, 'description' => $wpbook_description, 'actions' => $actions);
                }
                /* allow other plugins to impact the attachment before posting */
                $attachment = apply_filters('wpbook_attachment', $attachment, $my_post->ID);
                if (WPBOOKDEBUG) {
                    $fp = @fopen($debug_file, 'a');
                    $debug_string = date("Y-m-d H:i:s", time()) . " : Publishing to page, image is " . $my_image . " \n";
                    fwrite($fp, $debug_string);
                }
                if ($wpbook_as_link == 'link') {
                    $attachment = array('link' => $my_permalink, 'message' => $wpbook_description);
                    $fb_response = $facebook->api('/' . $target_page . '/links/', 'POST', $attachment);
                } else {
                    $fb_response = $facebook->api('/' . $target_page . '/feed/', 'POST', $attachment);
                }
                if (WPBOOKDEBUG) {
                    $fp = @fopen($debug_file, 'a');
                    $debug_string = date("Y-m-d H:i:s", time()) . " : Just published as page to api, fb_response is " . print_r($fb_response, true) . "\n";
                    fwrite($fp, $debug_string);
                }
            } catch (FacebookApiException $e) {
                if ($wpbook_show_errors) {
                    $fp = @fopen($debug_file, 'a');
                    $wpbook_message = 'Caught exception in publish to page ' . $e->getMessage() . ' Error code: ' . $e->getCode();
                    wp_die($wpbook_message, 'WPBook Error');
                }
                // end if for show errors
            }
            // end try/catch for publish to page
            if ($fb_response != '') {
                add_post_meta($my_post->ID, '_wpbook_page_stream_id', $fb_response[id]);
                add_post_meta($my_post->ID, '_wpbook_page_stream_time', 0);
                // no comments imported
            } else {
                $wpbook_message = 'No post id returned from Facebook, $fb_response was ' . print_r($fb_response, true) . '/n';
                $wpbook_message = $wpbook_message . ' and $fb_page_type was ' . $fb_page_type;
                $wpbook_message .= ' and $wpbook_description was ' . $wpbook_description;
                $wpbook_message .= ' and $my_title was ' . $my_title;
                wp_die($wpbook_message, 'WPBook Error publishing to page');
            }
        }
        // end of if stream_publish_pages is true AND target_page non-empty
    }
    // end for if stream_publish OR stream_publish_pages is true
}