From 59e19a1f45a3502559dd1df33c453aa2f99cb995 Mon Sep 17 00:00:00 2001
From: friendica <info@friendica.com>
Date: Sat, 25 Oct 2014 01:03:36 -0700
Subject: moved post_to_red to its own project (
 https://github.com/friendica/wptored ), which I was planning to do anyway
 since it's kind of lost in the util folder, but also because having it there
 may present licensing issues, as it's GPL.

---
 util/wp/post_to_red/post_to_red.php | 493 ------------------------------------
 util/wp/post_to_red/readme.txt      |  39 ---
 2 files changed, 532 deletions(-)
 delete mode 100644 util/wp/post_to_red/post_to_red.php
 delete mode 100644 util/wp/post_to_red/readme.txt

(limited to 'util/wp/post_to_red')

diff --git a/util/wp/post_to_red/post_to_red.php b/util/wp/post_to_red/post_to_red.php
deleted file mode 100644
index ea6026ae2..000000000
--- a/util/wp/post_to_red/post_to_red.php
+++ /dev/null
@@ -1,493 +0,0 @@
-<?php
-/*
-Plugin Name: CrossPost to Red Matrix
-Plugin URI: http://blog.duthied.com/2011/09/12/friendika-cross-poster-wordpress-plugin/
-Description: This plugin allows you to cross post to your Red Matrix account. Extended by Mike Macgirvin from a Friendica cross-posting tool 
-Version: 1.2
-Author: Devlon Duthied
-Author URI: http://blog.duthied.com
-*/
-
-/*  Copyright 2011 Devlon Duthie (email: duthied@gmail.com)
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License, version 2, as 
-    published by the Free Software Foundation.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-define("post_to_red_path", WP_PLUGIN_URL . "/" . str_replace(basename( __FILE__), "", plugin_basename(__FILE__)));
-define("post_to_red_version", "1.2");
-$plugin_dir = basename(dirname(__FILE__));
-$plugin = plugin_basename(__FILE__); 
-
-define("post_to_red_acct_name", "post_to_red_admin_options");
-
-function post_to_red_deactivate() {
-	delete_option('post_to_red_seed_location');
-	delete_option('post_to_red_acct_name');
-	delete_option('post_to_red_user_name');
-	delete_option('post_to_red_password');
-}
-
-function post_to_red_get_seed_location() {
-	return get_option('post_to_red_seed_location');
-}
-
-function post_to_red_get_acct_name() {
-	return get_option('post_to_red_acct_name');
-}
-
-function post_to_red_get_channel_name() {
-	return get_option('post_to_red_channel_name');
-}
-
-function post_to_red_get_password() {
-	return get_option('post_to_red_password');
-}
-
-function post_to_red_post($post_id) {
-
-	$post = get_post($post_id);
-	
-    if (isset($_POST['post_to_red'])) {
-		update_post_meta($post_id, 'post_to_red', '1');
-	} 
-
-	// if meta has been set
-	if (get_post_meta($post_id, "post_to_red", true) === '1') {
-
-		$user_name = post_to_red_get_acct_name();
-		$password = post_to_red_get_password();
-		$seed_location = post_to_red_get_seed_location();
-		$channel = post_to_red_get_channel_name();
-		$backlink = get_option('post_to_red_backlink');
-		
-		if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
-			// remove potential comments
-			$message = preg_replace('/<!--(.*)-->/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_id = site_url() . '/' . $post_id;
-
-			if (isset($tag_string)) {
-				$message .=  "<br />$tag_string";	
-			}
-
-			$cats = '';
-
-			$terms = get_the_terms($post_id,'category');
-			if($terms) {
-				foreach($terms as $term) {
-					if(strlen($cats))
-						$cats .= ',';
-					$cats .= htmlspecialchars_decode($term->name, ENT_COMPAT);
-				}
-			}
-
-
-
-			$bbcode = xpost_to_html2bbcode($message);
-
-			if($backlink)
-				$bbcode .= "\n\n" . _('Source:') . ' ' . '[url]' . get_permalink($post_id) . '[/url]';
-			
-			$url = $seed_location . '/api/statuses/update';
-			
-			$headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
-			$body = array(
-				'title'     => xpost_to_html2bbcode($post->post_title),
-				'status'    => $bbcode,
-				'source'    => 'WordPress', 
-				'namespace' => 'wordpress',
-				'remote_id' => $message_id,
-				'permalink' => $post->guid
-			);
-			if($channel)
-				$body['channel'] = $channel;
-			if($cats)
-				$body['category'] = $cats;
-
-			// post:
-			$request = new WP_Http;
-			$result = $request->request($url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers));
-
-		}
-		
-	}
-}
-
-
-function post_to_red_delete_post($post_id) {
-
-	$post = get_post($post_id);
-	
-	// if meta has been set
-	if ((get_post_meta($post_id, "post_to_red", true) == '1') || (get_post_meta($post_id, "post_from_red", true) == '1')) {
-
-		$user_name = post_to_red_get_acct_name();
-		$password = post_to_red_get_password();
-		$seed_location = post_to_red_get_seed_location();
-		$channel = post_to_red_get_channel_name();
-		
-		if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
-
-			$message_id = site_url() . '/' . $post_id;
-			$url = $seed_location . '/api/statuses/destroy';
-			
-			$headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
-			$body = array(
-				'namespace' => 'wordpress',
-				'remote_id' => $message_id,
-			);
-			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_delete_comment($post_id) {
-
-	// The comment may already be destroyed so we can't query it or the parent post. That means
-	// we have to make a network call for any deleted comment to see if it's registered on Red. 
-	// We really need a "before_delete_comment" action in WP to make
-	// this more efficient.
-
-	$user_name = post_to_red_get_acct_name();
-	$password = post_to_red_get_password();
-	$seed_location = post_to_red_get_seed_location();
-	$channel = post_to_red_get_channel_name();
-		
-	if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
-
-		$message_id = site_url() . '/' . $post_id;
-		$url = $seed_location . '/api/statuses/destroy';
-			
-		$headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
-		$body = array(
-			'namespace' => 'wordpress',
-			'comment_id' => $message_id,
-		);
-		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();
-	$backlink = get_option('post_to_red_backlink');
-	$backlink_checked = ((intval($backlink)) ? ' checked="checked" ' : '');
-	// debug...
-	// echo "seed location: $seed_url</br>";
-	// echo "password: $password</br>";
-	// echo "user_acct: $user_acct</br>";
-	
-	echo <<<EOF
-	<div class='wrap'>
-		<h2>CrossPost to Red Matrix</h2>
-		<p>This plugin allows you to cross post to your Red Matrix channel.</p>
-	</div>
-	
-	<div class="wrap">
-		<h2>Configuration</h2>
-		<form method="post" action="{$_SERVER["REQUEST_URI"]}">
-			Enter the login details of your Red Matrix account<br /><br />
-			Login (email): <input type="text" name="post_to_red_acct_name" value="{$user_acct}"/><br />
-			Password: <input type="password" name="post_to_red_password" value="{$password}"/><br />
-			Red Matrix URL: <input type="text" name="post_to_red_url" value="{$seed_url}"/><br />
-			Optional channel nickname: <input type="text" name="post_to_red_channel" value="{$channel}"/><br />
-			Add permalink to posts? <input type="checkbox" name="post_to_red_backlink" value="1" {$backlink_checked} /><br />
-			<input type="submit" value="Save" name="submit" />
-		</form>
-		<p></p>
-	</div>
-EOF;
-
-	if(isset($_POST['submit']))	{
-		echo "<div style='text-align:center;padding:4px;width:200px;background-color:#FFFF99;border:1xp solid #CCCCCC;color:#000000;'>Settings Saved!</div>";
-	}
-}
-
-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 '<input type="checkbox" name="post_to_red" value="1" /> 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((! array_key_exists('post_to_red_nonce', $_POST))
-    || (!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');
-	} 
-}
-
-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"];
-		$channelname = $_REQUEST['post_to_red_channel'];
-
-		
-		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);
-		update_option('post_to_red_backlink', $_REQUEST['post_to_red_backlink']);		
-	}
-	
-	post_to_red_displayAdminContent();
-}
-
-function post_to_red_settings_link($links) { 
-	$settings_link = '<a href="options-general.php?page=xpost-to-redmatrix">Settings</a>'; 
-  	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');
-add_action('before_delete_post', 'post_to_red_delete_post');
-
-add_action('delete_comment', 'post_to_red_delete_comment');
-
-add_filter('xmlrpc_methods', 'red_xmlrpc_methods');
-
-add_filter('get_avatar', 'post_to_red_get_avatar',10,5);
-
-
-function red_xmlrpc_methods($methods) {
-	$methods['red.Comment'] = 'red_comment';
-	return $methods;
-}
-
-function red_comment($args) {
-	global $wp_xmlrpc_server;
-	$wp_xmlrpc_server->escape( $args );
-
-	$blog_id  = $args[0];
-	$username = $args[1];
-	$password = $args[2];
-	$post       = $args[3];
-	$content_struct = $args[4];
-
-	if ( ! $user = $wp_xmlrpc_server->login( $username, $password ) )
-		return $wp_xmlrpc_server->error;
-
-	if ( is_numeric($post) )
-		$post_id = absint($post);
-	else
-		$post_id = url_to_postid($post);
-
-	if ( ! $post_id )
-		return new IXR_Error( 404, __( 'Invalid post ID.' ) );
-	if ( ! get_post($post_id) )
-		return new IXR_Error( 404, __( 'Invalid post ID.' ) );
-
-	$comment['comment_post_ID'] = $post_id;
-
-	$comment['comment_author'] = '';
-	if ( isset($content_struct['author']) )
-		$comment['comment_author'] = $content_struct['author'];
-
-	$comment['comment_author_email'] = '';
-	if ( isset($content_struct['author_email']) )
-		$comment['comment_author_email'] = $content_struct['author_email'];
-
-	$comment['comment_author_url'] = '';
-	if ( isset($content_struct['author_url']) )
-		$comment['comment_author_url'] = $content_struct['author_url'];
-
-	$comment['user_ID'] = 0;
-
-	if ( get_option('require_name_email') ) {
-		if ( 6 > strlen($comment['comment_author_email']) || '' == $comment['comment_author'] )
-			return new IXR_Error( 403, __( 'Comment author name and email are required' ) );
-		elseif ( !is_email($comment['comment_author_email']) )
-			return new IXR_Error( 403, __( 'A valid email address is required' ) );
-	}
-
-	if(isset($content_struct['comment_id'])) {
-		$comment['comment_ID'] = intval($content_struct['comment_id']);
-		$edit = true;
-	}
-	$comment['comment_post_ID']  = $post_id;
-	$comment['comment_parent']   = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
-	$comment['comment_content']  = isset($content_struct['content'])        ? $content_struct['content'] : null;
-
-	do_action('xmlrpc_call', 'red.Comment');
-
-	if($edit) {
-		$result = wp_update_comment($comment);
-		$comment_ID = $comment['comment_ID'];
-	}
-	else {
-       	$comment_ID = wp_new_comment( $comment );
-		if($comment_ID)
-			wp_set_comment_status($comment_ID,'approve');
-	}
-
-	if(isset($content_struct['red_avatar']))
-		add_comment_meta($comment_ID,'red_avatar',$content_struct['red_avatar'],true);
-
-	do_action( 'xmlrpc_call_success_red_Comment', $comment_ID, $args );
-
-	return $comment_ID;
-}
-
-function post_to_red_get_avatar($avatar,$id_or_email,$size,$default,$alt) {
-
-	if(! is_object($id_or_email))
-		return $avatar;
-	if((! array_key_exists('comment_author_email',$id_or_email)) || (empty($id_or_email->comment_author_email)))
-		return $avatar;
-	if((! array_key_exists('comment_ID', $id_or_email)) || (! intval($id_or_email->comment_ID)))
-		return $avatar;
-	$l = get_comment_meta($id_or_email->comment_ID,'red_avatar',true);
-	if($l) {
-		$safe_alt = esc_attr($alt);
-		$avatar = "<img alt='{$safe_alt}' src='{$l}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
-	}
-	return $avatar;
-}
-
-
-// from:
-// http://www.docgate.com/tutorial/php/how-to-convert-html-to-bbcode-with-php-script.html
-
-//function exists also in post to friendica plugin; load only if not yet loaded by that plugin
-if(!function_exists('xpost_to_html2bbcode')) {
-	function xpost_to_html2bbcode($text) {
-		$htmltags = array(
-			'/\<b\>(.*?)\<\/b\>/is',
-			'/\<i\>(.*?)\<\/i\>/is',
-			'/\<u\>(.*?)\<\/u\>/is',
-			'/\<ul.*?\>(.*?)\<\/ul\>/is',
-			'/\<li\>(.*?)\<\/li\>/is',
-			'/\<img(.*?) src=\"(.*?)\" alt=\"(.*?)\" title=\"Smile(y?)\" \/\>/is',		// some smiley
-			'/\<img(.*?) src=\"http:\/\/(.*?)\" (.*?)\>/is',
-			'/\<img(.*?) src=\"(.*?)\" alt=\":(.*?)\" .*? \/\>/is',				// some smiley
-			'/\<div class=\"quotecontent\"\>(.*?)\<\/div\>/is',	
-			'/\<div class=\"codecontent\"\>(.*?)\<\/div\>/is',	
-			'/\<div class=\"quotetitle\"\>(.*?)\<\/div\>/is',	
-			'/\<div class=\"codetitle\"\>(.*?)\<\/div\>/is',
-			'/\<cite.*?\>(.*?)\<\/cite\>/is',
-			'/\<blockquote.*?\>(.*?)\<\/blockquote\>/is',
-			'/\<div\>(.*?)\<\/div\>/is',
-			'/\<code\>(.*?)\<\/code\>/is',
-			'/\<br(.*?)\>/is',
-			'/\<strong\>(.*?)\<\/strong\>/is',
-			'/\<em\>(.*?)\<\/em\>/is',
-			'/\<a href=\"mailto:(.*?)\"(.*?)\>(.*?)\<\/a\>/is',
-			'/\<a .*?href=\"(.*?)\"(.*?)\>http:\/\/(.*?)\<\/a\>/is',
-			'/\<a .*?href=\"(.*?)\"(.*?)\>(.*?)\<\/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('<br>', '<br />'), "\n", $text);
-			$ntext = str_replace(array('<strong>', '</strong>'), array('[b]', '[/b]'), $ntext);
-			$ntext = str_replace(array('<em>', '</em>'), 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
deleted file mode 100644
index e27c46236..000000000
--- a/util/wp/post_to_red/readme.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-=== 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