From ac3ae83a1646404bcd096891bf5da7b47314cfb3 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 24 Nov 2013 18:03:12 -0800 Subject: wordpress-to-red cross-posting tool ported from Friendica --- util/wp/post_to_red/post_to_red.php | 286 ++++++++++++++++++++++++++++++++++++ util/wp/post_to_red/readme.txt | 39 +++++ 2 files changed, 325 insertions(+) create mode 100644 util/wp/post_to_red/post_to_red.php create mode 100644 util/wp/post_to_red/readme.txt (limited to 'util') diff --git a/util/wp/post_to_red/post_to_red.php b/util/wp/post_to_red/post_to_red.php new file mode 100644 index 000000000..8e62a1a56 --- /dev/null +++ b/util/wp/post_to_red/post_to_red.php @@ -0,0 +1,286 @@ +/Uis', '', $post->post_content); + + // get any tags and make them hashtags + $post_tags = get_the_tags($post_id); + if ($post_tags) { + foreach($post_tags as $tag) { + $tag_string .= "#" . $tag->name . " "; + } + } + + $message = $post->post_title . "

" . $message; + + $message .= "

permalink: " . $post->guid; + + if (isset($tag_string)) { + $message .= "
$tag_string"; + } + + $bbcode = xpost_to_html2bbcode($message); + + $url = $seed_location . '/api/statuses/update'; + + + + $headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password")); + $body = array('status' => $bbcode,'source' => 'WordPress'); + if($channel) + $body['channel'] = $channel; + + // post: + $request = new WP_Http; + $result = $request->request($url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers)); + + } + + } +} + +function post_to_red_displayAdminContent() { + + $seed_url = post_to_red_get_seed_location(); + $password = post_to_red_get_password(); + $user_acct = post_to_red_get_acct_name(); + $channel = post_to_red_get_channel_name(); + + // debug... + // echo "seed location: $seed_url
"; + // echo "password: $password
"; + // echo "user_acct: $user_acct
"; + + echo << +

CrossPost to Red Matrix

+

This plugin allows you to cross post to your Red Matrix channel.

+ + +
+

Configuration

+
+ Enter the login details of your Red Matrix account

+   + Password:   + Red Matrix URL:   + Optional channel nickname:   + +
+

+
+EOF; + + if(isset($_POST['submit'])) { + echo "
Settings Saved!
"; + } +} + +function post_to_red_post_checkbox() { + add_meta_box( + 'post_to_red_meta_box_id', + 'Cross Post to Red Matrix', + 'post_to_red_post_meta_content', + 'post', + 'normal', + 'default' + ); +} + +function post_to_red_post_meta_content($post_id) { + wp_nonce_field(plugin_basename( __FILE__ ), 'post_to_red_nonce'); + echo ' Cross post?'; +} + +function post_to_red_post_field_data($post_id) { + + // check if this isn't an auto save + if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) + return; + + // security check +// if (!wp_verify_nonce( $_POST['post_to_red_nonce'], plugin_basename( __FILE__ ))) +// return; + + // now store data in custom fields based on checkboxes selected + if (isset($_POST['post_to_red'])) { + update_post_meta($post_id, 'post_to_red', 1); + } else { + update_post_meta($post_id, 'post_to_red', 0); + } +} + +function post_to_red_display_admin_page() { + + if ((isset($_REQUEST["post_to_red_acct_name"])) && (isset($_REQUEST["post_to_red_password"]))) { + + $password = $_REQUEST["post_to_red_password"]; + $red_url = $_REQUEST["post_to_red_url"]; + + update_option('post_to_red_acct_name', $_REQUEST["post_to_red_acct_name"]); + update_option('post_to_red_channel_name', $channelname); + update_option('post_to_red_seed_location', $red_url); + update_option('post_to_red_password', $password); + + } + + post_to_red_displayAdminContent(); +} + +function post_to_red_settings_link($links) { + $settings_link = 'Settings'; + array_unshift($links, $settings_link); + return $links; +} + +function post_to_red_admin() { + add_options_page("Crosspost to redmatrix", "Crosspost to redmatrix", "manage_options", "xpost-to-redmatrix", "post_to_red_display_admin_page"); +} + +register_deactivation_hook( __FILE__, 'post_to_red_deactivate' ); + +add_filter("plugin_action_links_$plugin", "post_to_red_settings_link"); + +add_action("admin_menu", "post_to_red_admin"); +add_action('publish_post', 'post_to_red_post'); +add_action('add_meta_boxes', 'post_to_red_post_checkbox'); +add_action('save_post', 'post_to_red_post_field_data'); + +// from: +// http://www.docgate.com/tutorial/php/how-to-convert-html-to-bbcode-with-php-script.html +function xpost_to_html2bbcode($text) { + $htmltags = array( + '/\(.*?)\<\/b\>/is', + '/\(.*?)\<\/i\>/is', + '/\(.*?)\<\/u\>/is', + '/\(.*?)\<\/ul\>/is', + '/\(.*?)\<\/li\>/is', + '/\/is', // some smiley + '/\/is', + '/\/is', // some smiley + '/\
(.*?)\<\/div\>/is', + '/\
(.*?)\<\/div\>/is', + '/\
(.*?)\<\/div\>/is', + '/\
(.*?)\<\/div\>/is', + '/\(.*?)\<\/cite\>/is', + '/\(.*?)\<\/blockquote\>/is', + '/\(.*?)\<\/div\>/is', + '/\(.*?)\<\/code\>/is', + '/\/is', + '/\(.*?)\<\/strong\>/is', + '/\(.*?)\<\/em\>/is', + '/\(.*?)\<\/a\>/is', + '/\http:\/\/(.*?)\<\/a\>/is', + '/\(.*?)\<\/a\>/is' + ); + + $bbtags = array( + '[b]$1[/b]', + '[i]$1[/i]', + '[u]$1[/u]', + '[list]$1[/list]', + '[*]$1', + '$3', + '[img]http://$2[/img]' . "\n", + ':$3', + '\[quote\]$1\[/quote\]', + '\[code\]$1\[/code\]', + '', + '', + '', + '\[quote\]$1\[/quote\]', + '$1', + '\[code\]$1\[/code\]', + "\n", + '[b]$1[/b]', + '[i]$1[/i]', + '[email=$1]$3[/email]', + '[url]$1[/url]', + '[url=$1]$3[/url]' + ); + + $text = str_replace ("\n", ' ', $text); + $ntext = preg_replace ($htmltags, $bbtags, $text); + $ntext = preg_replace ($htmltags, $bbtags, $ntext); + + // for too large text and cannot handle by str_replace + if (!$ntext) { + $ntext = str_replace(array('
', '
'), "\n", $text); + $ntext = str_replace(array('', ''), array('[b]', '[/b]'), $ntext); + $ntext = str_replace(array('', ''), array('[i]', '[/i]'), $ntext); + } + + $ntext = strip_tags($ntext); + + $ntext = trim(html_entity_decode($ntext,ENT_QUOTES,'UTF-8')); + return $ntext; +} + + diff --git a/util/wp/post_to_red/readme.txt b/util/wp/post_to_red/readme.txt new file mode 100644 index 000000000..e27c46236 --- /dev/null +++ b/util/wp/post_to_red/readme.txt @@ -0,0 +1,39 @@ +=== CrossPost to redmatrix === +Contributors: duthied, macgirvin +Donate link: TBD +Tags: redmatrix, crosspost +Requires at least: 3.2 +Tested up to: 3.2 +Stable tag: 1.2 + +CrossPost to Red Matrix for WordPress + +== Description == +This plugin allows you to cross post to your Red Matrix account. + +**Note, this plugin converts the html from wordpress into bbcode. +The bbcode conversion doesn't handle height and width of an image, so be warned that if you post a very large +image that is resized via height and with attributes, those attributes won't be honored in the resulatant post. + +== Changelog == += 1.2 = +* ensured no function name collision + += 1.1 = +* Added feedback to settings form post. + += 1.0 = +* Initial release. + +== Installation == + +1. Install the plugin from your Wordpress admin panel. + +OR + +1. Upload the plugin folder to the `/wp-content/plugins/` directory. +2. Activate the plugin through the 'Plugins' menu in WordPress. +3. On the settings page enter your account name and password and the nickname of the channel to post to - then click the submit button +4. To cross-post ensure the check box in the 'Cross Post To redmatrix' is checked before publishing. + +== Frequently Asked Questions == -- cgit v1.2.3