示例#1
0
function top_do_tweet($post_id)
{
    $settings = top_get_settings();
    $message = top_get_message($post_id);
    // If we have a valid message, Tweet it
    // this will fail if the Tiny URL service is done
    if ($message) {
        // If we successfully posted this to Twitter, then we can remove it from the queue eventually
        if (twit_update_status($message)) {
            return true;
        }
    }
    return false;
}
function post_now_published($post_id)
{
    global $twit_plugin_prefix, $post;
    if (defined('WP_IMPORTING') && WP_IMPORTING) {
        return;
    }
    $post_update = apply_filters('wordtwit_post_update', true, $post_id);
    $max_age = get_option($twit_plugin_prefix . 'max_age', 0);
    if ($max_age > 0 && (current_time('timestamp', 1) - get_post_time('U', true, $post_id)) / 3600 > $max_age) {
        return;
    }
    if (defined('DOING_CRON') && DOING_CRON) {
        // Dear VIPs, Don't ever do this.
        $srtm = $GLOBALS['wpdb']->srtm;
        $GLOBALS['wpdb']->send_reads_to_masters();
        $nmc = isset($_GET['nomemcache']) ? $_GET['nomemcache'] : null;
        $_GET['nomemcache'] = 'all';
    }
    $has_been_twittered = get_post_meta($post_id, 'has_been_twittered', true);
    if ('yes' == $has_been_twittered) {
        return;
    }
    if (defined('DOING_CRON') && DOING_CRON) {
        $GLOBALS['wpdb']->srtm = $srtm;
        if (is_null($nmc)) {
            unset($_GET['nomemcache']);
        } else {
            $_GET['nomemcache'] = $nmc;
        }
    }
    add_post_meta($post_id, 'has_been_twittered', 'yes');
    if (true == $post_update && !($has_been_twittered == 'yes')) {
        global $post;
        $post = get_post($post_id);
        setup_postdata($post);
        $i = 'New blog entry \'' . the_title('', '', false) . '\' - ' . get_permalink();
        $user_override = get_option($twit_plugin_prefix . 'user_override');
        $user_preference = get_option($twit_plugin_prefix . 'user_preference');
        $user_options = get_option($twit_plugin_prefix . 'user_options');
        // get user settings
        if ($user_override && isset($user_options[$post->post_author])) {
            $twit_options = $user_options[$post->post_author];
            $oauth_token = $twit_options['oauth_token'];
            $oauth_token_secret = $twit_options['oauth_token_secret'];
            $message = $twit_options['twitter_message'];
            if (empty($message)) {
                $message = get_option($twit_plugin_prefix . 'message');
            }
        }
        // no user settings available or allowed then use global settings
        if ((empty($oauth_token) || empty($oauth_token_secret)) && false == $user_preference || false == $user_override) {
            $message = get_option($twit_plugin_prefix . 'message');
            $oauth_token = get_option($twit_plugin_prefix . 'oauth_token');
            $oauth_token_secret = get_option($twit_plugin_prefix . 'oauth_token_secret');
        }
        if (empty($oauth_token) || empty($oauth_token_secret)) {
            update_post_meta($post_id, 'wordtwit_fail', 'no-token');
            return;
        }
        $message = apply_filters('wordtwit_pre_proc_message', $message, $post->ID);
        $message = str_replace('[title]', $post->post_title, $message);
        $wordtwit_url_type = get_option($twit_plugin_prefix . 'wordtwit_url_type');
        if (strstr($message, "[link]")) {
            if ('tinyurl' == $wordtwit_url_type || empty($wordtwit_url_type)) {
                $message = str_replace('[link]', twit_get_tiny_url(get_permalink()), $message);
            } elseif ('bitly' == $wordtwit_url_type) {
                $message = str_replace('[link]', twit_get_bitly_url(get_permalink()), $message);
            } elseif ('wpme' == $wordtwit_url_type) {
                $message = str_replace('[link]', wp_get_shortlink($post->ID), $message);
            }
        }
        $message = apply_filters('wordtwit_post_proc_message', $message, $post->ID);
        $update_status = twit_update_status($oauth_token, $oauth_token_secret, $message);
        if (!$update_status) {
            update_post_meta($post_id, 'wordtwit_fail', 'api-fail');
        }
        wp_reset_postdata();
    }
}