CrossPost to Red Matrix
This plugin allows you to cross post to your Red Matrix channel.
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((! 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 = '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');
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 = "";
}
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\>/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;
}
}