'%TITLE% %URL%', 'tweetCats ' => array( '0' ), 'clude' => 'in', 'message_preference' => 'author' ); // Get values from the WP options table in the database, re-assign if found $user_settings = get_user_option( 'leenkme_twitter', $user_id ); return wp_parse_args( $user_settings, $defaults ); } // Print the admin page for the plugin function print_twitter_settings_page() { global $dl_pluginleenkme; global $current_user; get_currentuserinfo(); $user_id = $current_user->ID; // Get the user options $user_settings = $this->get_user_settings( $user_id ); $twitter_settings = get_option( 'leenkme_twitter' ); if ( isset( $_REQUEST['update_twitter_settings'] ) ) { if ( isset( $_REQUEST['leenkme_tweetformat'] ) ) $user_settings['tweetFormat'] = $_REQUEST['leenkme_tweetformat']; if ( isset( $_REQUEST['clude'] ) && isset( $_REQUEST['tweetCats'] ) ) { $user_settings['clude'] = $_REQUEST['clude']; $user_settings['tweetCats'] = $_REQUEST['tweetCats']; } else { $user_settings['clude'] = 'in'; $user_settings['tweetCats'] = array( '0' ); } if ( isset( $_REQUEST['message_preference'] ) ) $user_settings['message_preference'] = $_REQUEST['message_preference']; update_user_option( $user_id, 'leenkme_twitter', $user_settings ); // update settings notification ?>

Twitter ()


Format Options:

  • %TITLE% -
  • %URL% -
  • %CATS% -
  • %TAGS% -

Format Preference Options:


/>     />

ID; // Get the user options $user_settings = $this->get_user_settings( $user_id ); if ( $tweet = get_post_meta( $post->ID, 'leenkme_tweet', true ) ) { delete_post_meta( $post->ID, 'leenkme_tweet', true ); update_post_meta( $post->ID, '_leenkme_tweet', $tweet ); } $tweet = get_post_meta( $post->ID, '_leenkme_tweet', true ); $format_type = get_post_meta( $post->ID, '_lm_tweet_type', true ); $exclude = get_post_meta( $post->ID, '_twitter_exclude', true ); ?> ID, $tweet, $post->post_title ); ?>

"> ">Reset ">

/> $tweet_len ) $tweet_len_class = 'lm_tweet_count_superwarn'; else if ( 20 > $tweet_len ) $tweet_len_class = 'lm_tweet_count_warn'; else $tweet_len_class = 'lm_tweet_count'; ?> post_status ) { ?>
$diffLen ) $title = leenkme_trim_words( $title, $diffLen ); $tweet = str_ireplace( "%TITLE%", $title, $tweet ); } if ( preg_match( '/%CATS%/i', $tweet ) ) { $cat_array = array(); $post_categories = array(); if ( false === $cats ) $post_categories = wp_get_post_categories( $post_id ); else if ( !empty( $cats ) ) $post_categories = split( ',', $cats ); foreach( $post_categories as $c ) { $cat = get_category( $c ); $cat_array[] = "#" . preg_replace( '/\W/', '', $cat->name ); } $cat_str = trim( join( ' ', $cat_array ) ); $tweetLen = strlen( utf8_decode( $tweet ) ); $catLen = strlen( utf8_decode( $cat_str ) ); $totalLen = $catLen + $tweetLen - 6; // subtract 5 for "%CATS%". if ( $totalLen > $maxLen ) { $split_cat_str = preg_split( '/\s/', $cat_str ); while ( $totalLen > $maxLen ) { array_pop( $split_cat_str ); $cat_str = join( ' ', (array)$split_cat_str ); $catLen = strlen( utf8_decode( $cat_str ) ); $totalLen = $catLen + $tweetLen - 6; // subtract 5 for "%CATS%". } } $tweet = str_ireplace( '%CATS%', $cat_str, $tweet ); } if ( preg_match( '/%TAGS%/i', $tweet ) ) { $tag_array = array(); if ( false === $tags ) { $post_tags = wp_get_post_tags( $post_id ); $tag_str = ""; foreach( (array)$post_tags as $t ) { $tag = get_tag( $t ); $tag_array[] = "#" . preg_replace( '/\W/', '', $tag->name ); } } else if ( !empty( $tags ) ) { $post_tags = split( ',', $tags ); $tag_str = ""; foreach($post_tags as $t){ $tag_array[] = "#" . preg_replace( '/\W/', '', $t ); } } $tag_str = trim( join( ' ', $tag_array ) ); $tweetLen = strlen( utf8_decode( $tweet ) ); $tagLen = strlen( utf8_decode( $tag_str ) ); $totalLen = $tagLen + $tweetLen - 6; // subtract 5 for "%CATS%". if ( $totalLen > $maxLen ) { $split_tag_str = preg_split( '/\s/', $tag_str ); while ( $totalLen > $maxLen ) { array_pop( $split_tag_str ); $tag_str = join( " ", (array)$split_tag_str ); $tagLen = strlen( utf8_decode( $tag_str ) ); $totalLen = $tagLen + $tweetLen - 6; // subtract 5 for "%CATS%". } } $tweet = str_ireplace( '%TAGS%', $tag_str, $tweet ); } } else { $tweet = get_post_meta( $post_id, '_leenkme_tweet', true ); } $tweet = apply_filters( 'leenkme_custom_replacement_args', $tweet, $post_id ); return trim( html_entity_decode( $tweet, ENT_COMPAT, get_bloginfo('charset') ) ); } function leenkme_ajax_tweet() { check_ajax_referer( 'tweet' ); global $current_user; get_currentuserinfo(); $user_id = $current_user->ID; global $dl_pluginleenkme; $user_settings = $dl_pluginleenkme->get_user_settings( $user_id ); if ( $api_key = $user_settings['leenkme_API'] ) { $tweet = sprintf( __( 'Testing the @leenk_me Twitter Plugin for #WordPress %s - %d', 'leenkme' ), 'http://leenk.me/', rand(10,99) ); $connect_arr[$api_key]['twitter_status'] = $tweet; $result = leenkme_ajax_connect( $connect_arr ); if ( isset( $result[$api_key] ) ) { if ( is_wp_error( $result[$api_key] ) ) { die( $result[$api_key]->get_error_message() ); } else if ( isset( $result[$api_key]['response']['code'] ) ) { die( $result[$api_key]['body'] ); } else { die( __( 'ERROR: Unknown error, please try again. If this continues to fail, contact leenk.me support.', 'leenkme' ) ); } } else { die( __( 'ERROR: Unknown error, please try again. If this continues to fail, contact leenk.me support.', 'leenkme' ) ); } } else { die( __( 'ERROR: You have no entered your leenk.me API key. Please check your leenk.me settings.', 'leenkme' ) ); } } function leenkme_ajax_retweet() { check_ajax_referer( 'leenkme' ); if ( isset( $_REQUEST['id'] ) ) { if ( get_post_meta( $_REQUEST['id'], '_twitter_exclude', true ) ) { die( __( 'You have excluded this post from publishing to your Twitter account. If you would like to publish it, edit the post and remove the exclude check box in the post settings.', 'leenkme' ) ); } else if ( isset( $_REQUEST['tweet'] ) ) { $results = leenkme_ajax_connect( leenkme_publish_to_twitter( array(), array( 'ID' => $_REQUEST['id'], 'post_author' => $_REQUEST['post_author'] ), $_REQUEST['tweet'], true ) ); if ( isset( $results ) ) { $out = array(); foreach( $results as $result ) { if ( is_wp_error( $result ) ) { $out[] = "

" . $result->get_error_message() . "

"; } else if ( isset( $result['response']['code'] ) ) { $out[] = "

" . $result['body'] . "

"; } else { $out[] = "

" . __( 'Error received! Please check your Twitter settings and try again. If this continues to fail, contact leenk.me support.', 'leenkme' ) . "

"; } } die( join( (array)$out ) ); } else { die( __( 'ERROR: Unknown error, please try again. If this continues to fail, contact leenk.me support.', 'leenkme' ) ); } } else { die( __( 'ERROR: Unable to determine tweet. If this continues to fail, contact leenk.me support.', 'leenkme' ) ); } } else { die( __( 'ERROR: Unable to determine Post ID.', 'leenkme' ) ); } } // Add function to publish to twitter function leenkme_publish_to_twitter( $connect_arr = array(), $post, $tweet = false, $debug = false ) { global $wpdb, $dl_pluginleenkme, $dl_pluginleenkmeTwitter; if ( get_post_meta( $post['ID'], '_twitter_exclude', true ) ) $exclude_twitter = true; else $exclude_twitter = false; if ( !$exclude_twitter ) { $leenkme_settings = $dl_pluginleenkme->get_leenkme_settings(); if ( in_array( get_post_type( $post['ID'] ), $leenkme_settings['post_types'] ) ) { $options = get_option( 'leenkme_twitter' ); $leenkme_users = leenkme_get_users(); foreach ( $leenkme_users as $leenkme_user ) { $user_settings = $dl_pluginleenkme->get_user_settings( $leenkme_user->ID ); if ( empty( $user_settings['leenkme_API'] ) ) continue; //Skip user if they do not have an API key set $api_key = $user_settings['leenkme_API']; $options = $dl_pluginleenkmeTwitter->get_user_settings( $leenkme_user->ID ); if ( !empty( $options ) ) { if ( ( !empty( $options['tweetCats'] ) && isset( $options['clude'] ) ) && !( 'in' == $options['clude'] && in_array( '0', $options['tweetCats'] ) ) ) { if ( 'ex' == $options['clude'] && in_array( '0', (array)$options['tweetCats'] ) ) { if ( $debug ) echo '

' . __( 'You have your Leenk.me Twitter settings set to Exclude All Categories.', 'leenkme' ) . '

'; continue; } $match = false; $post_categories = wp_get_post_categories( $post['ID'] ); foreach ( $post_categories as $cat ) { if ( in_array( (int)$cat, $options['tweetCats'] ) ) { $match = true; } } if ( ( 'ex' == $options['clude'] && $match ) ) { if ( $debug ) echo '

' . __( '

Post in an excluded category, check your Leenk.me Twitter settings or remove the post from the excluded category.', 'leenkme' ) . '

'; continue; } else if ( ( 'in' == $options['clude'] && !$match ) ) { if ( $debug ) echo '

' . __( 'Post not found in an included category, check your Leenk.me Twitter settings or add the post into the included category.', 'leenkme' ) . '

'; continue; } } if ( $leenkme_user->ID != $post['post_author'] && ( 'mine' == $options['message_preference'] || ( 'manual' == $options['message_preference'] && '' == get_post_meta( $post['ID'], '_lm_tweet_type', true ) ) ) ) $prefer_user = true; else $prefer_user = false; if ( $prefer_user ) { $tweet = stripslashes( html_entity_decode( get_leenkme_expanded_tweet( $post['ID'], $options['tweetFormat'], get_the_title( $post['ID'] ) ), ENT_COMPAT, get_bloginfo('charset') ) ); } else { if ( empty( $tweet ) && !( $tweet = get_post_meta( $post['ID'], '_leenkme_tweet', true ) ) ) $tweet = get_leenkme_expanded_tweet( $post['ID'], $options['tweetFormat'], get_the_title( $post['ID'] ) ); $tweet = stripslashes( html_entity_decode( $tweet, ENT_COMPAT, get_bloginfo('charset') ) ); } if ( !has_filter( 'get_shortlink', 'leenkme_get_shortlink_handler', 1, 4 ) ) { if ( !( $url = get_post_meta( $post['ID'], '_leenkme_shortened_url', true ) ) ) $url = leenkme_url_shortener( $post['ID'] ); echo $tweet; if ( preg_match( '/%URL%/i', $tweet ) ) { $urlLen = strlen( $url ); $tweetLen = strlen( utf8_decode( $tweet ) ); $totalLen = $urlLen + $tweetLen - 5; // subtract 5 for "%URL%". if ( 140 >= $totalLen ) $tweet = str_ireplace( "%URL%", $url, $tweet ); else $tweet = str_ireplace( "%URL%", "", $tweet ); // Too Long (need to get rid of URL). } echo $tweet; } $connect_arr[$api_key]['twitter_status'] = $tweet; } } } } return $connect_arr; } // Actions and filters if ( isset( $dl_pluginleenkmeTwitter ) ) { add_action( 'save_post', array( $dl_pluginleenkmeTwitter, 'leenkme_twitter_meta_tags' ) ); // Whenever you publish a post, post to twitter add_filter( 'leenkme_connect', 'leenkme_publish_to_twitter', 10, 2 ); add_action( 'wp_ajax_tweet', 'leenkme_ajax_tweet' ); add_action( 'wp_ajax_retweet', 'leenkme_ajax_retweet' ); }