WordPress.org

Plugin Directory

Changeset 769975


Ignore:
Timestamp:
09/10/13 22:37:01 (8 months ago)
Author:
joedolson
Message:

Moving to trunk/tags method; committing dev version. 2.7.4

Location:
wp-to-twitter/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • wp-to-twitter/trunk/readme.txt

    r753037 r769975  
    33Donate link: http://www.joedolson.com/donate.php 
    44Tags: twitter, microblogging, su.pr, bitly, yourls, redirect, shortener, post, links 
    5 Requires at least: 3.2.1 
     5Requires at least: 3.3.3 
    66Tested up to: 3.6 
    77License: GPLv2 or later 
    8 Stable tag: trunk 
     8Stable tag: 2.7.3 
    99 
    1010Auto-posts a Twitter update when you update your WordPress blog or blogroll, with your chosen URL shortening service. 
     
    5151 
    5252== Changelog == 
     53 
     54= 2.7.4 = 
     55 
     56* Update API endpoint for Bit.ly 
     57* Added filter to modify "Tweet this" value during editing, based on $_POST data. ('wpt_tweet_this_edit') 
     58* Altered order of limits for determining whether to Tweet. 
     59* Deprecated upgrade routine for versions below 2.2.9. (Upgrade will still work.) 
     60* Added questions to support request form. 
     61* Made Twitter Feed available via shortcode [get_tweets id='twitter_username'] 
     62* Debugging improvements. 
     63* Moved to save_post actions 
     64* Removed option to disable XMLRPC-based Tweeting. 
     65* Deprecated support for versions older than 3.3.3. 
    5366 
    5467= 2.7.3 = 
  • wp-to-twitter/trunk/wp-to-twitter-manager.php

    r742498 r769975  
    449449<div id="wpt_settings_page" class="postbox-container" style="width: 70%"> 
    450450 
    451 <?php $wp_to_twitter_directory = get_bloginfo( 'wpurl' ) . '/' . WP_PLUGIN_DIR . '/' . dirname( plugin_basename(__FILE__) ); ?> 
     451<?php  
     452    if ( isset($_GET['debug']) && $_GET['debug'] == 'true' ) { 
     453        $debug = get_option( 'wpt_debug' ); 
     454        echo "<pre>"; 
     455            print_r( $debug ); 
     456        echo "</pre>"; 
     457    } 
     458    if ( isset($_GET['debug']) && $_GET['debug'] == 'delete' ) { 
     459        delete_option( 'wpt_debug' ); 
     460    } 
     461    $wp_to_twitter_directory = get_bloginfo( 'wpurl' ) . '/' . WP_PLUGIN_DIR . '/' . dirname( plugin_basename(__FILE__) ); ?> 
    452462         
    453463<div class="metabox-holder"> 
     
    601611                <label for="jd_tweet_default"><?php _e("Do not post Tweets by default", 'wp-to-twitter'); ?></label><br /> 
    602612                <input type="checkbox" name="jd_tweet_default_edit" id="jd_tweet_default_edit" value="1" <?php echo jd_checkCheckbox('jd_tweet_default_edit')?> /> 
    603                 <label for="jd_tweet_default_edit"><?php _e("Do not post Tweets by default (editing only)", 'wp-to-twitter'); ?></label><br />               
    604             </p> 
    605             <p> 
     613                <label for="jd_tweet_default_edit"><?php _e("Do not post Tweets by default (editing only)", 'wp-to-twitter'); ?></label><br /> 
    606614                <input type="checkbox" name="wpt_inline_edits" id="wpt_inline_edits" value="1" <?php echo jd_checkCheckbox('wpt_inline_edits')?> /> 
    607615                <label for="wpt_inline_edits"><?php _e("Allow status updates from Quick Edit", 'wp-to-twitter'); ?></label><br /> 
    608  
    609             </p> 
    610             <?php if ( function_exists( 'wpt_pro_exists') && wpt_pro_exists() == true && get_option( 'wpt_delay_tweets' ) > 0 ) { 
    611                 $r_disabled = " disabled='disabled'";  
    612                 $r_message = "<em>".__('Delaying tweets with WP Tweets PRO moves Tweeting to an publishing-independent action.','wp-to-twitter' )."</em>";  
    613             } else {  
    614                 $r_disabled = '';  
    615                 $r_message = ''; 
    616             } ?> 
    617             <p> 
    618                 <input type="checkbox"<?php echo $r_disabled; ?> name="jd_twit_remote" id="jd_twit_remote" value="1" <?php echo jd_checkCheckbox('jd_twit_remote')?> /> 
    619                 <label for="jd_twit_remote"><?php _e("Send Twitter Updates on remote publication (Post by Email or XMLRPC Client)", 'wp-to-twitter'); ?></label><br /> 
    620                 <?php echo $r_message; ?> 
    621616            </p> 
    622617        </fieldset> 
  • wp-to-twitter/trunk/wp-to-twitter-shorteners.php

    r742498 r769975  
    1010    function jd_shorten_link( $url, $thisposttitle, $post_ID, $testmode=false ) { 
    1111        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    12             wp_mail( WPT_DEBUG_ADDRESS,"Initial Link Data: #$post_ID","$url, $thisposttitle, $post_ID, $testmode" ); // DEBUG 
     12            wpt_mail( "Initial Link Data: #$post_ID","$url, $thisposttitle, $post_ID, $testmode" ); // DEBUG 
    1313        } 
    1414            // filter link before sending to shortener or adding analytics 
     
    7272                    break; 
    7373                case 2: // updated to v3 3/31/2010 
    74                     $bitlyapi =  trim ( get_option( 'bitlyapi' ) ); 
    75                     $bitlylogin =  trim ( strtolower( get_option( 'bitlylogin' ) ) );                
    76                     $decoded = jd_remote_json( "http://api.bitly.com/v3/shorten?longUrl=".$encoded."&login=".$bitlylogin."&apiKey=".$bitlyapi."&format=json" ); 
     74                    $bitlyapi = trim ( get_option( 'bitlyapi' ) ); 
     75                    $bitlylogin = trim ( strtolower( get_option( 'bitlylogin' ) ) );                 
     76                    $decoded = jd_remote_json( "https://api-ssl.bitly.com/v3/shorten?longUrl=".$encoded."&login=".$bitlylogin."&apiKey=".$bitlyapi."&format=json" ); 
    7777                    $error = ''; 
    7878                    if ($decoded) { 
     
    123123                    $api_url = sprintf( get_option('yourlsurl') . '?username=%s&password=%s&url=%s&format=json&action=shorturl&keyword=%s', 
    124124                        $yourlslogin, $yourlsapi, $encoded, $keyword_format ); 
    125                     $json = jd_remote_json( $api_url, false );           
     125                    $json = jd_remote_json( $api_url, false ); 
    126126                    if ($json) { 
    127127                        $shrink = $json->shorturl; 
    128128                    } else { 
    129129                        $shrink = false; 
    130                     }    
     130                    } 
    131131                    break; 
    132132                case 7: 
  • wp-to-twitter/trunk/wp-to-twitter.php

    r753036 r769975  
    44Plugin URI: http://www.joedolson.com/articles/wp-to-twitter/ 
    55Description: Posts a Tweet when you update your WordPress blog or post to your blogroll, using your URL shortening service. Rich in features for customizing and promoting your Tweets. 
    6 Version: 2.7.3 
     6Version: 2.7.4 
    77Author: Joseph Dolson 
    88Author URI: http://www.joedolson.com/ 
     
    2626if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly 
    2727 
    28 if ('wp-to-twitter.php' == basename($_SERVER['SCRIPT_FILENAME'])) { die ('<h2>Direct File Access Prohibited</h2>');} 
    2928global $wp_version; 
    3029$wp_content_url = content_url(); 
     
    3534define( 'WPT_DEBUG',false ); 
    3635define( 'WPT_DEBUG_ADDRESS', 'debug@joedolson.com' ); 
     36define( 'WPT_FROM', "From: \"".get_option('blogname')."\" <".get_option('admin_email').">" ); 
    3737// define( 'WPT_DEBUG_ADDRESS', 'debug@joedolson.com, yourname@youraddress.com' ); // for multiple recipients. 
    3838 
     
    5454 
    5555global $wpt_version,$jd_plugin_url; 
    56 $wpt_version = "2.7.3"; 
     56$wpt_version = "2.7.4"; 
    5757$plugin_dir = basename(dirname(__FILE__)); 
    5858load_plugin_textdomain( 'wp-to-twitter', false, dirname( plugin_basename( __FILE__ ) ) . '/lang' ); 
     59 
     60function wpt_mail( $subject, $body ) { 
     61    $use_email = true; 
     62    if ( $use_email == true ) { 
     63        wp_mail( WPT_DEBUG_ADDRESS, $subject, $body, WPT_FROM ); 
     64    } else { 
     65        $debug = get_option( 'wpt_debug' ); 
     66        $debug[date( 'Y-m-d H:i:s' )] = array( $subject, $body ); 
     67        update_option( 'wpt_debug', $debug ); 
     68    } 
     69} 
    5970 
    6071function wpt_pro_compatibility() { 
     
    7182function wpt_marginal_function() { 
    7283global $wp_version; 
    73 $exit_msg=__('WP to Twitter requires WordPress 3.1.4 or a more recent version <a href="http://codex.wordpress.org/Upgrading_WordPress">Please update WordPress to continue using WP to Twitter with all features!</a>','wp-to-twitter'); 
    74     if ( version_compare( $wp_version,"3.1.4","<" ) ) { 
     84$exit_msg=__('WP to Twitter requires WordPress 3.2.1 or a more recent version <a href="http://codex.wordpress.org/Upgrading_WordPress">Please update WordPress to continue using WP to Twitter with all features!</a>','wp-to-twitter'); 
     85    if ( version_compare( $wp_version,"3.2.1","<" ) ) { 
    7586        if ( is_admin() ) { 
    7687            echo "<div class='error'><p>".($exit_msg)."</p></div>"; 
     
    110121 
    111122function wptotwitter_activate() { 
    112 global $wpt_version; 
    113 $prev_version = get_option( 'wp_to_twitter_version' ); 
    114 // this is a switch to plan for future versions 
    115 $upgrade = version_compare( $prev_version,"2.2.9","<" ); 
    116     if ($upgrade) { 
    117         delete_option( 'x-twitterlogin' ); 
    118         delete_option( 'twitterlogin' ); 
    119         delete_option( 'twitterpw' ); 
    120         delete_option( 'jd-use-link-title' ); 
    121         delete_option( 'jd-use-link-description' ); 
    122         delete_option( 'jd_use_both_services' ); 
    123         delete_option( 'jd-twitter-service-name' ); 
    124         delete_option( 'jd_api_post_status' ); 
    125         delete_option( 'jd-twitter-char-limit' ); 
    126         delete_option( 'x-twitterpw' );  
    127         delete_option( 'x_jd_api_post_status' ); 
    128         delete_option( 'cligsapi' ); 
    129         delete_option( 'cligslogin' ); 
    130         delete_option( 'wp_cligs_error' ); 
    131     } 
    132 $upgrade = version_compare( $prev_version, "2.3.1","<" ); 
     123    global $wpt_version; 
     124    $prev_version = get_option( 'wp_to_twitter_version' ); 
     125    // this is a switch to plan for future versions 
     126    $upgrade = version_compare( $prev_version, "2.3.1","<" ); 
    133127    if ($upgrade) { 
    134128        $array =  
     
    162156        delete_option( 'jd_twit_postie' ); 
    163157    } 
    164 $upgrade = version_compare( $prev_version, "2.3.3","<" ); 
     158    $upgrade = version_compare( $prev_version, "2.3.3","<" ); 
    165159    if ( $upgrade ) { 
    166160        delete_option( 'jd_twit_quickpress' ); 
    167161    } 
    168 $upgrade = version_compare( $prev_version, "2.3.4","<" ); 
     162    $upgrade = version_compare( $prev_version, "2.3.4","<" ); 
    169163    if ( $upgrade ) { 
    170164        add_option( 'wpt_inline_edits', '0' ); 
    171165    } 
    172 $upgrade = version_compare( $prev_version, "2.3.15","<" ); 
     166    $upgrade = version_compare( $prev_version, "2.3.15","<" ); 
    173167    if ( $upgrade ) { 
    174168        $use = get_option( 'use_tags_as_hashtags' ); 
     
    256250function wpt_link( $post_ID ) { 
    257251    $ex_link = false; 
    258        $wtb_extlink_custom_field = get_option('jd_twit_custom_url');  
     252       $external_link = get_option('jd_twit_custom_url');  
    259253       $permalink = get_permalink( $post_ID ); 
    260             if ( $wtb_extlink_custom_field != '' ) { 
    261                 $ex_link = get_post_meta($post_ID, $wtb_extlink_custom_field, true); 
     254            if ( $external_link != '' ) { 
     255                $ex_link = get_post_meta( $post_ID, $external_link, true ); 
    262256            } 
    263257       return ( $ex_link ) ? $ex_link : $permalink; 
     
    273267// This function performs the API post to Twitter 
    274268function jd_doTwitterAPIPost( $twit, $auth=false, $id=false, $media=false ) { 
    275     if ( !wpt_check_oauth( $auth )  ) {  
    276             wpt_saves_error( $id, $auth, $twit, __('This account is not authorized to post to Twitter.','wp-tweets-pro'), '401', time() ); 
    277             return true;  
     269    if ( !wpt_check_oauth( $auth ) ) {  
     270        wpt_saves_error( $id, $auth, $twit, __('This account is not authorized to post to Twitter.','wp-tweets-pro'), '401', time() ); 
     271        return true;  
    278272    } // exit silently if not authorized 
    279273    $check = ( !$auth )?get_option('jd_last_tweet'):get_user_meta( $auth, 'wpt_last_tweet', true ); // get user's last tweet 
     
    281275    if ( $check == $twit ) { 
    282276        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    283             wp_mail( WPT_DEBUG_ADDRESS,"Matched twit check: tweet identical: #$id","$twit, $auth, $id" ); // DEBUG 
     277            wpt_mail( "Matched: tweet identical: #$id","$twit, $auth, $id" ); // DEBUG 
    284278        } 
    285279        wpt_saves_error( $id, $auth, $twit, __('This tweet is identical to another Tweet recently sent to this account.','wp-tweets-pro'), '403', time() ); 
     
    287281    } else if ( $twit == '' || !$twit ) { 
    288282        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    289             wp_mail( WPT_DEBUG_ADDRESS,"Tweet check: empty sentence: #$id","$twit, $auth, $id" ); // DEBUG 
     283            wpt_mail( "Tweet check: empty sentence: #$id","$twit, $auth, $id"); // DEBUG 
    290284        } 
    291285        wpt_saves_error( $id, $auth, $twit, __('This tweet was blank and could not be sent to Twitter.','wp-tweets-pro'), '403', time() ); 
    292286        return true;     
    293287    } else { 
    294         $protocol = ( get_option( 'wpt_http' ) == '1' )?'http:':'https:'; 
    295         if ( $media ) { 
    296             $jdwp_api_post_status = "$protocol//api.twitter.com/1.1/statuses/update_with_media.json";        
    297         } else { 
    298             $jdwp_api_post_status = "$protocol//api.twitter.com/1.1/statuses/update.json"; 
    299         } 
     288        $api = ( get_option( 'wpt_http' ) == '1' )?'http:':'https:'; 
     289        $api .= ( $media )?"//api.twitter.com/1.1/statuses/update_with_media.json":"//api.twitter.com/1.1/statuses/update.json"; 
    300290        if ( wtt_oauth_test( $auth ) && ( $connection = wtt_oauth_connection( $auth ) ) ) { 
    301291            if ( $media ) { 
    302                 $connection->media( $jdwp_api_post_status, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true', 'id'=>$id, 'auth'=>$auth ) ); 
     292                $connection->media( $api, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true', 'id'=>$id, 'auth'=>$auth ) ); 
    303293            } else { 
    304                 $connection->post( $jdwp_api_post_status, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true' ) ); 
     294                $connection->post( $api, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true' ) ); 
    305295            } 
    306296            $http_code = ($connection)?$connection->http_code:'failed'; 
    307297        } else if ( wtt_oauth_test( false ) && ( $connection = wtt_oauth_connection( false ) ) ) { 
    308298            if ( $media ) { 
    309                 $connection->media( $jdwp_api_post_status, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true', 'id'=>$id, 'auth'=>$auth ) );                
     299                $connection->media( $api, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true', 'id'=>$id, 'auth'=>$auth ) );                 
    310300            } else { 
    311                 $connection->post( $jdwp_api_post_status, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true'   ) ); 
     301                $connection->post( $api, array( 'status' => $twit, 'source' => 'wp-to-twitter', 'include_entities' => 'true'    ) ); 
    312302            } 
    313303            $http_code = ($connection)?$connection->http_code:'failed';  
     
    334324                    break; 
    335325                case '403': 
    336                     $error = __("403 Forbidden: The request is understood, but it has been refused by Twitter. Reasons: Too many Tweets in a short time or the same Tweet was submitted twice, among others. Not an error from WP to Twitter.",'wp-to-twitter'); 
     326                    $error = __("403 Forbidden: The request is understood, but has been refused by Twitter. Possible reasons: too many Tweets, same Tweet submitted twice, Tweet longer than 140 characters. Not an error from WP to Twitter.",'wp-to-twitter'); 
    337327                    break; 
    338328                case '404': 
     
    367357            // debugging 
    368358                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    369                     wp_mail( WPT_DEBUG_ADDRESS,"Twitter Response Code: #$id","$http_code, $error" ); // DEBUG 
     359                    wpt_mail( "Twitter Response: $http_code, #$id","$http_code, $error"); // DEBUG 
    370360                }            
    371361            // end debugging 
     
    418408    $sentence = trim(custom_shortcodes( $sentence, $post_ID )); 
    419409    $post = get_post( $post_ID ); 
    420      
    421     if ( $postinfo['shortUrl'] != '' ) { 
    422         $shrink = $postinfo['shortUrl']; 
    423     } else { 
    424         $shrink = apply_filters( 'wptt_shorten_link', $postinfo['postLink'], $postinfo['postTitle'], $post_ID, false ); 
    425     } 
     410    extract( $postinfo ); 
     411    $shrink = ( $shortUrl != '' )?$shortUrl:apply_filters( 'wptt_shorten_link', $postLink, $postTitle, $post_ID, false ); 
    426412    // generate all template variable values 
    427     $auth = $postinfo['authId']; 
    428     $title = trim( apply_filters( 'wpt_status', $postinfo['postTitle'], $post_ID, 'title' ) ); 
    429     $blogname = trim($postinfo['blogTitle']); 
    430     $excerpt = trim( apply_filters( 'wpt_status', $postinfo['postExcerpt'], $post_ID, 'post' ) ); 
     413    $auth = $authId; 
     414    $title = trim( apply_filters( 'wpt_status', $postTitle, $post_ID, 'title' ) ); 
     415    $blogname = trim($blogTitle); 
     416    $excerpt = trim( apply_filters( 'wpt_status', $postExcerpt, $post_ID, 'post' ) ); 
    431417    $thisposturl = trim($shrink); 
    432     $category = trim($postinfo['category']); 
    433     $cat_desc = trim($postinfo['cat_desc']); 
     418    $category = trim($category); 
     419    $cat_desc = trim($cat_desc); 
    434420    $user_account = get_user_meta( $auth,'wtt_twitter_username', true ) ; 
    435421    $tags = wpt_generate_hash_tags( $post_ID ); 
    436422    $account = get_option('wtt_twitter_username'); 
    437     $date = trim($postinfo['postDate']); 
    438     $modified = trim($postinfo['postModified']); 
     423    $date = trim($postDate); 
     424    $modified = trim($postModified); 
    439425    if ( get_option( 'jd_individual_twitter_users' ) == 1 ) { 
    440426        if ( $user_account == '' ) { 
     
    609595    $common = @array_intersect( $array,$allowed_categories ); 
    610596        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    611             wp_mail(WPT_DEBUG_ADDRESS,'Category Limits Results: ---', print_r($common,1) ); 
     597            wpt_mail( 'Category Limits Results: ---', print_r($common,1) ); 
    612598        }    
    613599        if ( count( $common ) >= 1 ) { 
     
    642628    $values['postModified'] = mysql2date( $dateformat,$moddate ); 
    643629    // get first category 
    644         $category = $cat_desc = null; 
    645         $categories = get_the_category( $post_ID ); 
    646         if ( is_array( $categories ) ) { 
    647             if ( count($categories) > 0 ) { 
    648                 $category = $categories[0]->cat_name; 
    649                 $cat_desc = $categories[0]->description; 
    650             }  
    651             foreach ($categories AS $cat) { 
    652                 $category_ids[] = $cat->term_id; 
    653             } 
    654         } else { 
    655             $category = ''; 
    656             $cat_desc = ''; 
    657             $category_ids = array(); 
    658         } 
     630    $category = $cat_desc = null; 
     631    $categories = get_the_category( $post_ID ); 
     632    if ( is_array( $categories ) ) { 
     633        if ( count($categories) > 0 ) { 
     634            $category = $categories[0]->cat_name; 
     635            $cat_desc = $categories[0]->description; 
     636        }  
     637        foreach ($categories AS $cat) { 
     638            $category_ids[] = $cat->term_id; 
     639        } 
     640    } else { 
     641        $category = ''; 
     642        $cat_desc = ''; 
     643        $category_ids = array(); 
     644    } 
    659645    $values['categoryIds'] = $category_ids; 
    660646    $values['category'] = html_entity_decode( $category, ENT_COMPAT, $encoding ); 
     
    662648        $excerpt_length = get_option( 'jd_post_excerpt' ); 
    663649    $post_excerpt = ( trim( $post->post_excerpt ) == "" )?@mb_substr( strip_tags( strip_shortcodes( $post->post_content ) ), 0, $excerpt_length ):@mb_substr( strip_tags( strip_shortcodes( $post->post_excerpt ) ), 0, $excerpt_length ); 
    664  
    665650    $values['postExcerpt'] = html_entity_decode( $post_excerpt, ENT_COMPAT, $encoding ); 
    666651    $thisposttitle =  stripcslashes( strip_tags( $post->post_title ) ); 
    667         if ($thisposttitle == "") { 
    668             $thisposttitle = stripcslashes( strip_tags( $_POST['title'] ) ); 
    669         } 
     652    if ($thisposttitle == "") { 
     653        $thisposttitle = stripcslashes( strip_tags( $_POST['title'] ) ); 
     654    } 
    670655    $values['postTitle'] = html_entity_decode( $thisposttitle, ENT_COMPAT, $encoding ); 
    671656    $values['postLink'] = wpt_link( $post_ID ); 
     
    679664 
    680665function wpt_short_url( $post_id ) { 
    681     $jd_short = get_post_meta( $post_id, '_wp_jd_clig', true ); 
     666    $jd_short = get_post_meta( $post_id, '_wp_jd_bitly', true ); 
     667    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_goo', true );} 
    682668    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_supr', true ); } 
     669    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_wp', true );   }    
    683670    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_ind', true );  }        
    684     if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_bitly', true );} 
    685     if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_wp', true );   }    
    686671    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_yourls', true );} 
    687672    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_url', true );} 
    688     if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_goo', true );} 
    689673    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_joturl', true );}   
    690674    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_target', true );} 
     675    if ( $jd_short == "" ) {$jd_short = get_post_meta( $post_id, '_wp_jd_clig', true );}     
    691676    return $jd_short; 
    692 } 
    693  
    694 function jd_get_post_meta( $post_ID, $value, $boolean ) { 
    695     $return = get_post_meta( $post_ID, "_$value", TRUE ); 
    696     if (!$return) { 
    697         $return = get_post_meta( $post_ID, $value, TRUE ); 
    698     } 
    699     return $return; 
    700677} 
    701678 
     
    711688} 
    712689 
     690function wpt_category_limit( $post_type, $post_info, $post_ID ) { 
     691    $post_type_cats = get_object_taxonomies( $post_type ); 
     692    $continue = true;                    
     693    if ( in_array( 'category', $post_type_cats ) ) {  
     694    // 'category' is assigned to this post type, so apply filters. 
     695        if ( get_option('jd_twit_cats') == '1' ) { 
     696            $continue = ( !wpt_in_allowed_category( $post_info['categoryIds'] ) )?true:false; 
     697        } else { 
     698            $continue = ( wpt_in_allowed_category( $post_info['categoryIds'] ) )?true:false; 
     699        } 
     700    } 
     701    if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) && !$continue ) { 
     702        wpt_mail(  "3b: Category limits applied #$post_ID", print_r($post_info['categoryIds'],1)); 
     703    } 
     704    $continue = ( get_option('limit_categories') == '0' )?true:$continue; 
     705    return $continue; 
     706} 
     707 
    713708function jd_twit( $post_ID, $type='instant' ) { 
    714709    if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    715         wp_mail( WPT_DEBUG_ADDRESS, "0: jd_twit running #$post_ID","Post ID: $post_ID / $type" ); // DEBUG 
     710        wpt_mail(  "0: jd_twit running #$post_ID","Post ID: $post_ID / $type"); // DEBUG 
    716711    }    
    717712    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || wp_is_post_revision($post_ID) ) { return $post_ID; } 
     
    719714    $jd_tweet_this = get_post_meta( $post_ID, '_jd_tweet_this', true ); 
    720715    $newpost = $oldpost = $is_inline_edit = false; 
    721     $sentence = ''; 
     716    $sentence = $template = ''; 
    722717    if ( get_option('wpt_inline_edits') != 1 ) { 
    723718        if ( isset($_POST['_inline_edit']) || isset( $_REQUEST['bulk_edit'] ) ) { return; } 
     
    726721    } 
    727722    if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    728         wp_mail( WPT_DEBUG_ADDRESS, "1: JD Tweet This Value: #$post_ID","Tweet this: $jd_tweet_this /". get_option('jd_tweet_default')." / $type" ); // DEBUG 
     723        wpt_mail(  "1: JD Tweet This Value: #$post_ID","Tweet this: $jd_tweet_this /". get_option('jd_tweet_default')." / $type"); // DEBUG 
    729724    }    
    730725    if ( get_option('jd_tweet_default') == 0 ) {  
     
    743738        /* debug data */ 
    744739        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    745             wp_mail(WPT_DEBUG_ADDRESS, "2: POST Debug Data #$post_ID","Post_Info: ".print_r($post_info,1)."\n\nPOST: ".print_r($_POST, 1). " / $type" ); 
     740            wpt_mail( "2: POST Debug Data #$post_ID","Post_Info: ".print_r($post_info,1)."\n\nPOST: ".print_r($_POST, 1). " / $type" ); 
    746741        } 
    747742        if ( function_exists( 'wpt_pro_exists' ) && wpt_pro_exists() == true && function_exists('wpt_filter_post_info') ) { 
     
    749744            if ( $filter == true ) { 
    750745                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) {  
    751                     wp_mail( WPT_DEBUG_ADDRESS, "3: Post filtered: #$post_ID",print_r($post_info,1)." / $type" );  
    752                 } 
    753                 return false;  
     746                    wpt_mail(  "3a: Post filtered: #$post_ID",print_r($post_info,1)." / $type");  
     747                } 
     748                return false; 
    754749            } 
    755750        } 
    756751        $post_type = $post_info['postType']; 
    757         if ( $type == 'future' ) { 
     752        if ( $type == 'future' || get_post_meta( $post_ID, 'wpt_publishing' ) == 'future' ) {  
    758753            $new = 1; // if this is a future action, then it should be published regardless of relationship 
    759754            if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) {  
    760                 wp_mail( WPT_DEBUG_ADDRESS, "4: Future post: #$post_ID",print_r($post_info,1)." / $type" );  
    761             } 
     755                wpt_mail(  "4: Future post: #$post_ID",print_r($post_info,1)." / $type");  
     756            } 
     757            delete_post_meta( $post_ID, 'wpt_publishing' ); 
    762758        } else { 
    763759            // if the post modified date and the post date are the same, this is new. 
     
    765761            $new = wpt_date_compare( $post_info['_postModified'], $post_info['_postDate'] ); 
    766762        } 
    767         // if this post is not previously published but has been backdated:  
    768         // lit. if post date is edited, but save option is 'publish' 
     763        // post is not previously published but has been backdated:  
     764        // (post date is edited, but save option is 'publish') 
    769765        if ( $new == 0 && ( isset( $_POST['edit_date'] ) && $_POST['edit_date'] == 1 && !isset( $_POST['save'] ) ) ) { $new = 1; } 
    770766        // can't catch posts that were set to a past date as a draft, then published.  
     
    772768        $post_types = array_keys($post_type_settings);       
    773769        if ( in_array( $post_type, $post_types ) ) { 
    774             $template = ''; 
     770            // identify whether limited by category/taxonomy 
     771            $continue = wpt_category_limit( $post_type, $post_info, $post_ID ); 
     772            if ( $continue == false ) { return; } 
     773            // create Tweet and ID whether current action is edit or new 
    775774            $cT = get_post_meta( $post_ID, '_jd_twitter', true ); 
    776775            if ( isset( $_POST['_jd_twitter'] ) && $_POST['_jd_twitter'] != '' ) { $cT = $_POST['_jd_twitter']; } 
    777776            $customTweet = ( $cT != '' )?stripcslashes( trim( $cT ) ):''; 
    778                 // if ops is set and equals 'publish', this is being edited. Otherwise, it's a new post. 
    779                 if ( ( $new == 0 && $post_info['postStatus'] != 'future' ) || $is_inline_edit == true ) { 
    780                     // if this is an old post and editing updates are enabled                
    781                     if ( get_option( 'jd_tweet_default_edit' ) == 1 ) {  
    782                         if ( $jd_tweet_this != 'yes' ) return; 
    783                     }                
    784                     if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    785                         wp_mail( WPT_DEBUG_ADDRESS, "4a: Processed as an Edit #$post_ID","Tweet this post: ".$post_info['postTitle']."\n".print_r($post_info,1)." / $type" ); // DEBUG 
    786                     } 
    787                     if ( $post_type_settings[$post_type]['post-edited-update'] == '1' ) { 
    788                         $nptext = stripcslashes( $post_type_settings[$post_type]['post-edited-text'] ); 
    789                         $oldpost = true; 
    790                     } 
    791                 } else { 
    792                     if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    793                         wp_mail( WPT_DEBUG_ADDRESS, "4b: Processed as a New Post #$post_ID","Tweet this: ".$post_info['postTitle']."\n".print_r($post_info,1)." / $type" ); // DEBUG 
    794                     }                
    795                     if ( $post_type_settings[$post_type]['post-published-update'] == '1' ) { 
    796                         $nptext = stripcslashes( $post_type_settings[$post_type]['post-published-text'] );           
    797                         $newpost = true; 
    798                     } 
    799                 } 
    800 //          } 
     777            // if ops is set and equals 'publish', this is being edited. Otherwise, it's a new post. 
     778            if ( $new == 0 || $is_inline_edit == true ) { 
     779                // if this is an old post and editing updates are enabled                
     780                if ( get_option( 'jd_tweet_default_edit' ) == 1 ) { 
     781                    $jd_tweet_this = apply_filters( 'wpt_tweet_this_edit', $jd_tweet_this, $_POST ); 
     782                    if ( $jd_tweet_this != 'yes' ) { 
     783                        if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
     784                            wpt_mail(  "3c: Tweet this: not equal to yes","Exit // Post ID: $post_ID"); // DEBUG 
     785                        }                    
     786                        return; 
     787                    }  
     788                }                
     789                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
     790                    wpt_mail(  "4a: Edited post #$post_ID","Tweet this: ".print_r($post_info,1)." / $type"); // DEBUG 
     791                } 
     792                if ( $post_type_settings[$post_type]['post-edited-update'] == '1' ) { 
     793                    $nptext = stripcslashes( $post_type_settings[$post_type]['post-edited-text'] ); 
     794                    $oldpost = true; 
     795                } 
     796            } else { 
     797                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
     798                    wpt_mail(  "4b: New Post #$post_ID","Tweet this: ".print_r($post_info,1)." / $type"); // DEBUG 
     799                }                
     800                if ( $post_type_settings[$post_type]['post-published-update'] == '1' ) { 
     801                    $nptext = stripcslashes( $post_type_settings[$post_type]['post-published-text'] );           
     802                    $newpost = true; 
     803                } 
     804            } 
    801805            if ( $newpost || $oldpost ) { 
    802806                $template = ( $customTweet != "" ) ? $customTweet : $nptext; 
    803807                $sentence = jd_truncate_tweet( $template, $post_info, $post_ID ); 
    804808                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    805                     wp_mail( WPT_DEBUG_ADDRESS, "5: Tweet Truncated #$post_ID","Truncated Tweet: $sentence / $type" ); // DEBUG 
     809                    wpt_mail(  "5: Tweet Truncated #$post_ID","Truncated Tweet: $sentence / $template / $type"); // DEBUG 
    806810                } 
    807811                if ( function_exists('wpt_pro_exists') && wpt_pro_exists() == true  ) { 
     
    810814            } 
    811815            if ( $sentence != '' ) { 
    812                 $post_type_cats = get_object_taxonomies( $post_type ); 
    813                 $continue = true;                    
    814                 if ( in_array( 'category', $post_type_cats ) ) {  
    815                 // 'category' is assigned to this post type, so apply filters. 
    816                     if ( get_option('jd_twit_cats') == '1' ) { 
    817                         $continue = ( !wpt_in_allowed_category( $post_info['categoryIds'] ) )?true:false; 
     816                // WPT PRO // 
     817                if ( function_exists( 'wpt_pro_exists' ) && wpt_pro_exists() == true ) { 
     818                    $wpt_selected_users = $post_info['wpt_authorized_users']; 
     819                    /* set up basic author/main account values */ 
     820                    $auth_verified = wtt_oauth_test( $auth,'verify' );                       
     821                    if ( empty( $wpt_selected_users ) && get_option( 'jd_individual_twitter_users' ) == 1 ) {  
     822                        $wpt_selected_users = ($auth_verified)? array( $auth ) : array( false );  
     823                    } 
     824                    if ( $post_info['wpt_cotweet'] == 1 || get_option( 'jd_individual_twitter_users' ) != 1 ) {  
     825                        $wpt_selected_users[] = false;  
     826                    } 
     827                    if ( $post_info['wpt_delay_tweet'] == 0 || $post_info['wpt_delay_tweet'] == '' || $post_info['wpt_no_delay'] == 'on' ) { 
     828                        foreach ( $wpt_selected_users as $acct ) { 
     829                            if ( wtt_oauth_test( $acct, 'verify' ) ) { 
     830                                $tweet = jd_doTwitterAPIPost( $sentence2, $acct, $post_ID, $media ); 
     831                            } 
     832                        } 
    818833                    } else { 
    819                         $continue = ( wpt_in_allowed_category( $post_info['categoryIds'] ) )?true:false; 
    820                     } 
    821                 } 
    822                 if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) && !$continue ) { 
    823                     wp_mail( WPT_DEBUG_ADDRESS, "6: Category limits applied #$post_ID", print_r($post_info['categoryIds'],1)." / $type" ); 
    824                 } 
    825                 $continue = ( get_option('limit_categories') == '0' )?true:$continue; 
    826                 if ( $continue ) { 
    827                     // WPT PRO // 
    828                     if ( function_exists( 'wpt_pro_exists' ) && wpt_pro_exists() == true ) { 
    829                         $wpt_selected_users = $post_info['wpt_authorized_users']; 
    830                         /* set up basic author/main account values */ 
    831                         $auth_verified = wtt_oauth_test( $auth,'verify' );                       
    832                         if ( empty( $wpt_selected_users ) && get_option( 'jd_individual_twitter_users' ) == 1 ) {  
    833                             $wpt_selected_users = ($auth_verified)? array( $auth ) : array( false );  
    834                         } 
    835                          
    836                         if ( $post_info['wpt_cotweet'] == 1 || get_option( 'jd_individual_twitter_users' ) != 1 ) {  
    837                             $wpt_selected_users[] = false;  
    838                         } 
    839                          
    840                         if ( $post_info['wpt_delay_tweet'] == 0 || $post_info['wpt_delay_tweet'] == '' || $post_info['wpt_no_delay'] == 'on' ) { 
    841                             foreach ( $wpt_selected_users as $acct ) { 
    842                                 if ( wtt_oauth_test( $acct, 'verify' ) ) { 
    843                                     $tweet = jd_doTwitterAPIPost( $sentence2, $acct, $post_ID, $media ); 
    844                                 } 
     834                        foreach ( $wpt_selected_users as $acct ) { 
     835                            if ( $auth != $acct ) { 
     836                                $offset = rand(60,480); // offset by 1-8 minutes for additional users 
    845837                            } 
    846                         } else { 
    847                             foreach ( $wpt_selected_users as $acct ) { 
    848                                 if ( $auth != $acct ) { 
    849                                     $offset = rand(60,480); // offset by 1-8 minutes for additional users 
    850                                 } 
    851                                 if ( wtt_oauth_test( $acct,'verify' ) ) { 
    852                                     $time = apply_filters( 'wpt_schedule_delay',( (int) $post_info['wpt_delay_tweet'] )*60, $acct ); 
    853                                     wp_schedule_single_event( time()+$time+$offset, 'wpt_schedule_tweet_action', array( 'id'=>$acct, 'sentence'=>$sentence, 'rt'=>0, 'post_id'=>$post_ID ) ); 
    854                                     $tweet = true; // if scheduled, return true. 
    855                                     if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    856                                         wp_mail( WPT_DEBUG_ADDRESS, "7: JD Tweet Scheduled for Auth ID #$acct #$post_ID",print_r( array( 'id'=>$acct, 'sentence'=>$sentence, 'rt'=>0, 'post_id'=>$post_ID, 'timestamp'=>time()+$time+$offset, 'current_time'=>time(), 'timezone'=>get_option('gmt_offset') ),1)." / $type" ); // DEBUG 
    857                                     } 
     838                            if ( wtt_oauth_test( $acct,'verify' ) ) { 
     839                                $time = apply_filters( 'wpt_schedule_delay',( (int) $post_info['wpt_delay_tweet'] )*60, $acct ); 
     840                                wp_schedule_single_event( time()+$time+$offset, 'wpt_schedule_tweet_action', array( 'id'=>$acct, 'sentence'=>$sentence, 'rt'=>0, 'post_id'=>$post_ID ) ); 
     841                                $tweet = true; // if scheduled, return true. 
     842                                if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
     843                                    if ( $acct ) { $author_id = "#$acct" } else { $author_id = 'Main'; } 
     844                                    wpt_mail(  "7: Tweet Scheduled for Auth ID $author_id #$post_ID",print_r( array( 'id'=>$acct, 'sentence'=>$sentence, 'rt'=>0, 'post_id'=>$post_ID, 'timestamp'=>time()+$time+$offset, 'current_time'=>time(), 'timezone'=>get_option('gmt_offset') ),1)." / $type"); // DEBUG 
    858845                                } 
    859846                            } 
    860847                        } 
    861                         /* This cycle handles scheduling the automatic retweets */ 
    862                         if ( $post_info['wpt_retweet_after'] != 0 && $post_info['wpt_no_repost'] != 'on' ) { 
    863                             $repeat = $post_info['wpt_retweet_repeat']; 
    864                             $first = true; 
    865                             foreach ( $wpt_selected_users as $acct ) { 
    866                                 if ( wtt_oauth_test( $acct,'verify' ) ) { 
    867                                     for ( $i=1;$i<=$repeat;$i++ ) { 
    868                                         switch( $i ) { 
    869                                             case 1: 
    870                                             $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt'); 
    871                                             $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt'); 
    872                                             break; 
    873                                             case 2: 
    874                                             $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt2'); 
    875                                             $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt2'); 
    876                                             break; 
    877                                             case 3: 
    878                                             $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt3'); 
    879                                             $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt3'); 
    880                                             break; 
    881                                         } 
    882                                         $retweet = jd_truncate_tweet( trim( $prepend.$template.$append ), $post_info, $post_ID, true, $acct ); 
    883                                         // add original delay to schedule 
    884                                         $delay = ( isset($post_info['wpt_delay_tweet'] ) )?( (int) $post_info['wpt_delay_tweet'] )*60:0; 
    885                                         /* Don't delay the first Tweet of the group */ 
    886                                         $offset = ( $first == true )?0:rand(60,240); // delay each co-tweet by 1-4 minutes 
    887                                         $time = apply_filters( 'wpt_schedule_retweet',($post_info['wpt_retweet_after'])*(60*60)*$i, $acct ); 
    888                                         wp_schedule_single_event( time()+$time+$offset+$delay, 'wpt_schedule_tweet_action', array( 'id'=>$acct, 'sentence'=>$retweet, 'rt'=>$i, 'post_id'=>$post_ID ) ); 
    889                                         $tweet = true; 
    890                                         if ( $i == 4 ) { break; } 
     848                    } 
     849                    /* This cycle handles scheduling the automatic retweets */ 
     850                    if ( $post_info['wpt_retweet_after'] != 0 && $post_info['wpt_no_repost'] != 'on' ) { 
     851                        $repeat = $post_info['wpt_retweet_repeat']; 
     852                        $first = true; 
     853                        foreach ( $wpt_selected_users as $acct ) { 
     854                            if ( wtt_oauth_test( $acct,'verify' ) ) { 
     855                                for ( $i=1;$i<=$repeat;$i++ ) { 
     856                                    switch( $i ) { 
     857                                        case 1: 
     858                                        $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt'); 
     859                                        $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt'); 
     860                                        break; 
     861                                        case 2: 
     862                                        $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt2'); 
     863                                        $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt2'); 
     864                                        break; 
     865                                        case 3: 
     866                                        $prepend = ( get_option('wpt_prepend') == 1 )?'':get_option('wpt_prepend_rt3'); 
     867                                        $append = ( get_option('wpt_prepend') != 1 )?'':get_option('wpt_prepend_rt3'); 
     868                                        break; 
    891869                                    } 
     870                                    $retweet = jd_truncate_tweet( trim( $prepend.$template.$append ), $post_info, $post_ID, true, $acct ); 
     871                                    // add original delay to schedule 
     872                                    $delay = ( isset($post_info['wpt_delay_tweet'] ) )?( (int) $post_info['wpt_delay_tweet'] )*60:0; 
     873                                    /* Don't delay the first Tweet of the group */ 
     874                                    $offset = ( $first == true )?0:rand(60,240); // delay each co-tweet by 1-4 minutes 
     875                                    $time = apply_filters( 'wpt_schedule_retweet',($post_info['wpt_retweet_after'])*(60*60)*$i, $acct, $i, $post_info ); 
     876                                    wp_schedule_single_event( time()+$time+$offset+$delay, 'wpt_schedule_tweet_action', array( 'id'=>$acct, 'sentence'=>$retweet, 'rt'=>$i, 'post_id'=>$post_ID ) ); 
     877                                    $tweet = true; 
     878                                    if ( $i == 4 ) { break; } 
    892879                                } 
    893                                 $first = false; 
    894880                            } 
     881                            $first = false; 
    895882                        } 
    896                     } else { 
    897                         $tweet = jd_doTwitterAPIPost( $sentence, false, $post_ID, $media ); 
    898883                    } 
    899                     // END WPT PRO // 
    900                     if ( $tweet == false ) { 
    901                         update_option( 'wp_twitter_failure','1' ); 
    902                     } 
     884                } else { 
     885                    $tweet = jd_doTwitterAPIPost( $sentence, false, $post_ID, $media ); 
     886                } 
     887                // END WPT PRO // 
     888                if ( $tweet == false ) { 
     889                    update_option( 'wp_twitter_failure','1' ); 
    903890                } 
    904891            } 
     
    12341221// Post the Custom Tweet into the post meta table 
    12351222function post_jd_twitter( $id ) { 
    1236     if ( empty($_POST) || ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) || wp_is_post_revision($id) || isset($_POST['_inline_edit']) ) { return $id; } 
     1223    if ( empty($_POST) || ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) || wp_is_post_revision($id) || isset($_POST['_inline_edit']) || ( defined('DOING_AJAX') && DOING_AJAX ) ) { return; } 
    12371224    if ( isset( $_POST['_yourls_keyword'] ) ) { 
    12381225        $yourls = $_POST[ '_yourls_keyword' ]; 
    1239         update_post_meta( $id, '_yourls_keyword', $yourls ); 
     1226        $update = update_post_meta( $id, '_yourls_keyword', $yourls ); 
    12401227    } 
    12411228    if ( isset( $_POST[ '_jd_twitter' ] ) && $_POST['_jd_twitter'] != '' ) { 
    12421229        $jd_twitter = $_POST[ '_jd_twitter' ]; 
    1243         update_post_meta( $id, '_jd_twitter', $jd_twitter ); 
     1230        $update = update_post_meta( $id, '_jd_twitter', $jd_twitter ); 
    12441231    }  
    12451232    if ( isset( $_POST[ '_jd_wp_twitter' ] ) && $_POST['_jd_wp_twitter'] != '' ) { 
    12461233        $jd_wp_twitter = $_POST[ '_jd_wp_twitter' ]; 
    1247         update_post_meta( $id, '_jd_wp_twitter', $jd_wp_twitter ); 
     1234        $update = update_post_meta( $id, '_jd_wp_twitter', $jd_wp_twitter ); 
    12481235    } 
    12491236    if ( isset( $_POST[ '_jd_tweet_this' ] ) ) { 
    12501237        $jd_tweet_this = ( $_POST[ '_jd_tweet_this' ] == 'no')?'no':'yes'; 
    1251         update_post_meta( $id, '_jd_tweet_this', $jd_tweet_this ); 
     1238        $update = update_post_meta( $id, '_jd_tweet_this', $jd_tweet_this ); 
    12521239    } else { 
    12531240        if ( isset($_POST['_wpnonce'] ) ) { 
    12541241            $jd_tweet_default = ( get_option( 'jd_tweet_default' ) == 1 )?'no':'yes'; 
    1255             update_post_meta( $id, '_jd_tweet_this', $jd_tweet_default ); 
     1242            $update = update_post_meta( $id, '_jd_tweet_this', $jd_tweet_default ); 
    12561243        } 
    12571244    } 
    12581245    // WPT PRO // 
    1259     apply_filters( 'wpt_insert_post', $_POST, $id ); 
     1246    $update = apply_filters( 'wpt_insert_post', $_POST, $id ); 
    12601247    // WPT PRO //    
    1261  
    1262     if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) ) { 
    1263         wp_mail( WPT_DEBUG_ADDRESS,"Post Meta Inserted: #$id",print_r($_POST,1) ); // DEBUG 
     1248    // only send debug data if post meta is updated.  
     1249    if ( WPT_DEBUG && function_exists( 'wpt_pro_exists' ) && $update == true || is_int( $update ) ) { 
     1250        wpt_mail( "Post Meta Inserted: #$id",print_r($_POST,1) ); // DEBUG 
    12641251    }        
    12651252} 
     
    14361423    add_action( 'add_link', 'jd_twit_link' ); 
    14371424} 
    1438  
     1425/* 
    14391426$post_type_settings = get_option('wpt_post_types'); 
    14401427if ( is_array( $post_type_settings ) ) { 
     
    14491436    } 
    14501437} 
    1451 add_action( 'wpt_schedule_promotion_action', 'wpt_schedule_promotion' ); 
    1452 function wpt_schedule_promotion() { 
    1453     if ( !function_exists( 'wpt_pro_exists' ) && get_option( 'wpt_promotion_scheduled' ) == 1 ) { 
    1454         update_option( 'wpt_promotion_scheduled', 2 ); 
    1455     } 
    1456 } 
    1457  
    1458 function wpt_dismiss_promotion() { 
    1459     if ( isset($_GET['dismiss']) && $_GET['dismiss'] == 'promotion' ) { 
    1460         update_option( 'wpt_promotion_scheduled', 3 );  
    1461     } 
    1462 }    
    1463 wpt_dismiss_promotion();  
    1464  
    1465 add_action( 'admin_notices', 'wpt_promotion_notice' ); 
    1466 function wpt_promotion_notice() { 
    1467     if ( current_user_can( 'activate_plugins' ) && get_option( 'wpt_promotion_scheduled' ) == 2 && get_option( 'jd_donations' ) != 1 ) { 
    1468         $upgrade = "http://www.joedolson.com/articles/wp-tweets-pro/"; 
    1469         $dismiss = admin_url('options-general.php?page=wp-to-twitter/wp-to-twitter.php&dismiss=promotion'); 
    1470         echo "<div class='updated fade'><p>".sprintf( __("I hope you've enjoyed <strong>WP to Twitter</strong>! Take a look at <a href='%s'>upgrading to WP Tweets PRO</a> for advanced Tweeting with WordPress! <a href='%s'>Dismiss</a>",'wp-to-twitter'), $upgrade, $dismiss )."</p></div>"; 
    1471     } 
    1472 } 
     1438*/ 
     1439add_action( 'save_post', 'wpt_twit', 16 ); 
     1440add_action( 'save_post', 'post_jd_twitter', 10 );  
     1441 
     1442add_action( 'future_to_publish', 'wpt_future_to_publish', 16 ); 
     1443function wpt_future_to_publish( $post ) { 
     1444    $id = $post->ID; 
     1445    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || wp_is_post_revision( $id ) ) { return; } 
     1446    wpt_twit_future( $id ); 
     1447} 
     1448 
     1449function wpt_twit( $id ) { 
     1450    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || wp_is_post_revision( $id ) ) return; 
     1451    $post = get_post( $id ); 
     1452    if ( $post->post_status == 'auto-draft' ) return; 
     1453    //$post_type_settings = get_option('wpt_post_types'); 
     1454    //if ( is_array( $post_type_settings ) ) { 
     1455        //$post_types = array_keys($post_type_settings); 
     1456        //if ( in_array( $post->post_type, $post_types ) ) { 
     1457            wpt_twit_instant( $id ); 
     1458        //} 
     1459    //} 
     1460} 
     1461add_action( 'xmlrpc_publish_post', 'wpt_twit_xmlrpc' );  
     1462add_action( 'publish_phone', 'wpt_twit_xmlrpc' );    
    14731463 
    14741464function wpt_twit_future( $id ) { 
     
    14911481} 
    14921482function wpt_twit_xmlrpc( $id ) { 
     1483    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || wp_is_post_revision( $id ) ) { return $id; } 
    14931484    jd_twit( $id, 'xmlrpc' ); 
    14941485} 
    14951486 
    1496 add_action( 'save_post', 'post_jd_twitter', 10 ); // Now things will happen twice. Hmmm...guess that's OK.  
    1497  
    1498 if ( get_option( 'jd_twit_remote' ) == '1' || ( function_exists( 'wpt_pro_exists') && wpt_pro_exists() == true && get_option( 'wpt_delay_tweets' ) > 0 ) ) { 
    1499     add_action( 'xmlrpc_publish_post', 'wpt_twit_xmlrpc' );  
    1500     add_action( 'publish_phone', 'wpt_twit_xmlrpc' ); // to add later    
     1487add_action( 'wpt_schedule_promotion_action', 'wpt_schedule_promotion' ); 
     1488function wpt_schedule_promotion() { 
     1489    if ( !function_exists( 'wpt_pro_exists' ) && get_option( 'wpt_promotion_scheduled' ) == 1 ) { 
     1490        update_option( 'wpt_promotion_scheduled', 2 ); 
     1491    } 
     1492} 
     1493 
     1494function wpt_dismiss_promotion() { 
     1495    if ( isset($_GET['dismiss']) && $_GET['dismiss'] == 'promotion' ) { 
     1496        update_option( 'wpt_promotion_scheduled', 3 );  
     1497    } 
     1498}    
     1499wpt_dismiss_promotion();  
     1500 
     1501add_action( 'admin_notices', 'wpt_promotion_notice' ); 
     1502function wpt_promotion_notice() { 
     1503    if ( current_user_can( 'activate_plugins' ) && get_option( 'wpt_promotion_scheduled' ) == 2 && get_option( 'jd_donations' ) != 1 ) { 
     1504        $upgrade = "http://www.joedolson.com/articles/wp-tweets-pro/"; 
     1505        $dismiss = admin_url('options-general.php?page=wp-to-twitter/wp-to-twitter.php&dismiss=promotion'); 
     1506        echo "<div class='updated fade'><p>".sprintf( __("I hope you've enjoyed <strong>WP to Twitter</strong>! Take a look at <a href='%s'>upgrading to WP Tweets PRO</a> for advanced Tweeting with WordPress! <a href='%s'>Dismiss</a>",'wp-to-twitter'), $upgrade, $dismiss )."</p></div>"; 
     1507    } 
    15011508} 
    15021509 
     
    15101517} 
    15111518 
     1519/* 
    15121520// Add notes about Tweet status to posts admin  
    15131521function wpt_column($cols) { 
     
    15431551 
    15441552// Actions/Filters for various tables and the css output 
     1553add_action('admin_init', 'wpt_add'); 
    15451554function wpt_add() { 
    15461555    $post_type_settings = get_option('wpt_post_types'); 
     
    15601569        add_filter("manage_${types}_custom_column", 'wpt_value', 10, 2); 
    15611570    } 
    1562  
    1563 } 
    1564  
    1565 add_action('admin_init', 'wpt_add'); 
     1571} */ 
  • wp-to-twitter/trunk/wpt-feed.php

    r753036 r769975  
    144144      $cache[$cachename]['tweets'] = $result; 
    145145      $file = $this->getCacheLocation(); 
    146       file_put_contents($file,json_encode($cache)); 
     146      $is_writable = wpt_is_writable( $file ); 
     147      if ( $is_writable ) { 
     148        file_put_contents( $file,json_encode( $cache ) ); 
     149      } 
    147150    } else { 
    148151      if (is_array($results) && isset($result['errors'][0]) && isset($result['errors'][0]['message'])) { 
  • wp-to-twitter/trunk/wpt-functions.php

    r753036 r769975  
    307307        __('<strong>Please note</strong>: I do keep records of those who have donated, but if your donation came from somebody other than your account at this web site, you must note this in your message.','wp-to-twitter') 
    308308        ."</p>"; 
     309        echo " 
     310        <p>". 
     311        __("If you're having trouble with WP to Twitter, please try to answer these questions in your message:",'wp-to-twitter') 
     312        ."</p>"; 
     313        echo "<ul>"; 
     314            echo "<li>".__('Did this error happen only once, or repeatedly?','wp-to-twitter')."</li>"; 
     315            echo "<li>".__('What was the Tweet, or an example Tweet, that produced this error?','wp-to-twitter')."</li>"; 
     316            echo "<li>".__('If there was an error message from WP to Twitter, what was it?','wp-to-twitter')."</li>"; 
     317            echo "<li>".__('What is the template you\'re using for your Tweets?','wp-to-twitter')."</li>"; 
     318        echo "</ul>"; 
    309319        } 
    310320        echo " 
     
    333343    </form>"; 
    334344} 
     345 
     346function wpt_is_writable( $file ) { 
     347    $is_writable = false; 
     348    if ( function_exists( 'wp_is_writable' ) ) { 
     349        $is_writable = wp_is_writable( $file ); 
     350    } else { 
     351        $is_writable = is_writeable( $file ); 
     352    } 
     353    return $is_writable; 
     354} 
  • wp-to-twitter/trunk/wpt-widget.php

    r753036 r769975  
    1717} 
    1818 
    19 class WPT_Latest_Tweets_Widget extends WP_Widget { 
    20  
    21 /** 
    22 * Holds widget settings defaults, populated in constructor. 
    23 * 
    24 * @var array 
    25 */ 
    26 protected $defaults; 
    27  
    28 /** 
    29 * Constructor. Set the default widget options and create widget. 
    30 * 
    31 * @since 0.1.8 
    32 */ 
    33 function __construct() { 
    34  
    35 $this->defaults = array( 
    36 'title' => '', 
    37 'twitter_id' => '', 
    38 'twitter_num' => '', 
    39 'twitter_duration' => '', 
    40 'twitter_hide_replies' => 0, 
    41 'link_links'=>'', 
    42 'link_mentions'=>'', 
    43 'link_hashtags'=>'', 
    44 'intents'=>'', 
    45 'source'=>'' 
    46 ); 
    47  
    48 $widget_ops = array( 
    49 'classname' => 'wpt-latest-tweets', 
    50 'description' => __( 'Display a list of your latest tweets.', 'wp-to-twitter' ), 
    51 ); 
    52  
    53 $control_ops = array( 
    54 'id_base' => 'wpt-latest-tweets', 
    55 'width' => 200, 
    56 'height' => 250, 
    57 ); 
    58  
    59 $this->WP_Widget( 'wpt-latest-tweets', __( 'WP to Twitter - Latest Tweets', 'wp-to-twitter' ), $widget_ops, $control_ops ); 
    60  
    61 } 
    62  
    63 /** 
    64 * Echo the widget content. 
    65 * 
    66 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget. 
    67 * @param array $instance The settings for the particular instance of the widget 
    68 */ 
    69  
    70 function widget( $args, $instance ) { 
    71     extract( $args ); 
    72     wp_enqueue_script( 'twitter-platform', "https://platform.twitter.com/widgets.js" ); 
    73     wp_enqueue_style( 'wpt-twitter-feed' ); 
    74     /** Merge with defaults */ 
    75     $instance = wp_parse_args( (array) $instance, $this->defaults ); 
    76     echo $before_widget; 
    77     if ( $instance['title'] ) { 
    78         echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; 
    79     } 
    80     echo '<div class="wpt-header">'; 
     19 
     20add_shortcode( 'get_tweets', 'wpt_get_twitter_feed' ); 
     21function wpt_get_twitter_feed( $atts, $content ) { 
     22    extract( shortcode_atts( array(  
     23            'id' => false, 
     24            'num' => 10, 
     25            'duration' => 3600, 
     26            'replies' => 0, 
     27            'rts' => 1, 
     28            'links' => 1, 
     29            'mentions' => 1, 
     30            'hashtags' => 0, 
     31            'intents' => 1, 
     32            'source' => 0 
     33        ), $atts, 'get_tweets' ) ); 
     34        $instance = array(  
     35            'twitter_id' => $id, 
     36            'twitter_num' => $num, 
     37            'twitter_duration' => $duration, 
     38            'twitter_hide_replice' => $replies, 
     39            'twitter_include_rts' => $rts, 
     40            'link_links' => $links, 
     41            'link_mentions' => $mentions, 
     42            'link_hashtags' => $hashtags, 
     43            'intents' => $intents, 
     44            'source' => $source ); 
     45    return wpt_twitter_feed( $instance ); 
     46} 
     47 
     48function wpt_twitter_feed( $instance ) { 
     49    $return = '<div class="wpt-header">'; 
    8150        $user = wpt_get_user( $instance['twitter_id'] ); 
    8251        $avatar = $user->profile_image_url_https; 
     
    8756        $follow_url = esc_url( 'https://twitter.com/'.$instance['twitter_id'] ); 
    8857        $follow_button = apply_filters ( 'wpt_follow_button', "<a href='$follow_url' class='twitter-follow-button $follow_alignment' data-width='30px' data-show-screen-name='false' data-size='large' data-show-count='false' data-lang='en'>Follow @$instance[twitter_id]</a>" ); 
    89         echo "<p> 
     58        $return .= "<p> 
    9059            $follow_button 
    9160            <img src='$avatar' alt='' class='wpt-twitter-avatar $img_alignment' /> 
     
    9362            <span class='wpt-twitter-id'><a href='$follow_url'>@$instance[twitter_id]</a></span> 
    9463            </p>"; 
    95     echo '</div>'; 
    96     echo '<ul>' . "\n"; 
     64    $return .= '</div>'; 
     65    $return .= '<ul>' . "\n"; 
    9766 
    9867    $options['exclude_replies'] = $instance['twitter_hide_replies']; 
     
    10473 
    10574    if ( isset( $rawtweets['error'] ) ) { 
    106         echo "<li>".$rawtweets['error']."</li>"; 
     75        $return .= "<li>".$rawtweets['error']."</li>"; 
    10776    } else { 
    10877        /** Build the tweets array */ 
     
    12897    if ( is_array( $tweets ) ) { 
    12998        foreach( $tweets as $tweet ) { 
    130             echo $tweet; 
     99            $return .= $tweet; 
    131100        } 
    132101    } 
    133     echo '</ul>' . "\n"; 
     102    $return .= '</ul>' . "\n"; 
     103    return $return; 
     104} 
     105 
     106 
     107class WPT_Latest_Tweets_Widget extends WP_Widget { 
     108 
     109/** 
     110* Holds widget settings defaults, populated in constructor. 
     111* 
     112* @var array 
     113*/ 
     114protected $defaults; 
     115 
     116/** 
     117* Constructor. Set the default widget options and create widget. 
     118* 
     119* @since 0.1.8 
     120*/ 
     121function __construct() { 
     122 
     123    $this->defaults = array( 
     124        'title' => '', 
     125        'twitter_id' => '', 
     126        'twitter_num' => '', 
     127        'twitter_duration' => '', 
     128        'twitter_hide_replies' => 0, 
     129        'twitter_include_rts' => 0, 
     130        'link_links'=>'', 
     131        'link_mentions'=>'', 
     132        'link_hashtags'=>'', 
     133        'intents'=>'', 
     134        'source'=>'' 
     135    ); 
     136 
     137    $widget_ops = array( 
     138        'classname' => 'wpt-latest-tweets', 
     139        'description' => __( 'Display a list of your latest tweets.', 'wp-to-twitter' ), 
     140    ); 
     141 
     142    $control_ops = array( 
     143        'id_base' => 'wpt-latest-tweets', 
     144        'width' => 200, 
     145        'height' => 250, 
     146    ); 
     147    $this->WP_Widget( 'wpt-latest-tweets', __( 'WP to Twitter - Latest Tweets', 'wp-to-twitter' ), $widget_ops, $control_ops ); 
     148} 
     149 
     150/** 
     151* Echo the widget content. 
     152* 
     153* @param array $args Display arguments including before_title, after_title, before_widget, and after_widget. 
     154* @param array $instance The settings for the particular instance of the widget 
     155*/ 
     156 
     157function widget( $args, $instance ) { 
     158    extract( $args ); 
     159    wp_enqueue_script( 'twitter-platform', "https://platform.twitter.com/widgets.js" ); 
     160    wp_enqueue_style( 'wpt-twitter-feed' ); 
     161    /** Merge with defaults */ 
     162    $instance = wp_parse_args( (array) $instance, $this->defaults ); 
     163    echo $before_widget; 
     164    if ( $instance['title'] ) { 
     165        echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; 
     166    } 
     167    echo wpt_twitter_feed( $instance ); 
    134168    echo $after_widget; 
    135169} 
     
    270304    $classes[] = ( $tweet['favorited'] )?'favorited':''; 
    271305    $clasees[] = ( $tweet['retweeted'] )?'retweeted':''; 
    272     $classes[] = ( $tweet['possibly_sensitive'] )?'sensitive':''; 
     306    $classes[] = ( isset( $tweet['possibly_sensitive'] ) )?'sensitive':''; 
    273307    $classes[] = 'lang-'.$tweet['lang']; 
    274308    $class = trim( implode( ' ', $classes ) ); 
Note: See TracChangeset for help on using the changeset viewer.