PDA

View Full Version : Flash Variables to Wordpress Comment



coldyn8w
March 3rd, 2008, 01:05 PM
Hi there,
Im working on Flash frontend for a wordpress blog and have got much further along than I thought I ever would, see WIP here: http://n8w.co.uk/WIP/WordpressFlash/
My next task is to work out how to post comments from flash. I basically have to send some variables to the PHP file shown below.

Obviously the four variables listed a short way down have to be included ie. author, email, url and content.
My php skills are rubbish so am unsure what needs to be included for it to work but it currently isnt.
Im certain there must be an ID required so the PHP knows which post you are commenting on.
And Im quite sure my AS3 script is fine that is sending the variables, as Ive already done it for an earlier part of the project. I have attached the AS3 code also in case there is a problem with that.

If someone who knows some PHP could look over it and shed some light I would really appreciate it.

Big thanks in advance.


<?php
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
header('Allow: POST');
header('HTTP/1.1 405 Method Not Allowed');
header('Content-Type: text/plain');
exit;
}
require( dirname(__FILE__) . '/wp-config.php' );

nocache_headers();

$comment_post_ID = (int) $_POST['comment_post_ID'];

$status = $wpdb->get_row("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = '$comment_post_ID'");

if ( empty($status->comment_status) ) {
do_action('comment_id_not_found', $comment_post_ID);
exit;
} elseif ( 'closed' == $status->comment_status ) {
do_action('comment_closed', $comment_post_ID);
wp_die( __('Sorry, comments are closed for this item.') );
} elseif ( in_array($status->post_status, array('draft', 'pending') ) ) {
do_action('comment_on_draft', $comment_post_ID);
exit;
}

$comment_author = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url = trim($_POST['url']);
$comment_content = trim($_POST['comment']);

// If the user is logged in
$user = wp_get_current_user();
if ( $user->ID ) {
$comment_author = $wpdb->escape($user->display_name);
$comment_author_email = $wpdb->escape($user->user_email);
$comment_author_url = $wpdb->escape($user->user_url);
if ( current_user_can('unfiltered_html') ) {
if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
kses_remove_filters(); // start with a clean slate
kses_init_filters(); // set up the filters
}
}
} else {
if ( get_option('comment_registration') )
wp_die( __('Sorry, you must be logged in to post a comment.') );
}

$comment_type = '';

if ( get_option('require_name_email') && !$user->ID ) {
if ( 6 > strlen($comment_author_email) || '' == $comment_author )
wp_die( __('Error: please fill the required fields (name, email).') );
elseif ( !is_email($comment_author_email))
wp_die( __('Error: please enter a valid email address.') );
}

if ( '' == $comment_content )
wp_die( __('Error: please type a comment.') );

$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'user_ID');


$comment_id = wp_new_comment( $commentdata );

$comment = get_comment($comment_id);
if ( !$user->ID ) {
setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
setcookie('comment_author_url_' . COOKIEHASH, clean_url($comment->comment_author_url), time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
}

$location = ( empty($_POST['redirect_to']) ? get_permalink($comment_post_ID) : $_POST['redirect_to'] ) . '#comment-' . $comment_id;
$location = apply_filters('comment_post_redirect', $location, $comment);

wp_redirect($location);

?>

and the AS3:


var comment_author:String = "Wayno";
var comment_author_email:String = "coldy01@mac.com";
var comment_author_url:String = "www.google.co.uk";
var comment_content:String = "Hello here is a test comment"

var upldata: String = "comment_author="+comment_author+"&comment_author_email="+comment_author_email+"&comment_author_url="+comment_author_url+"&comment_content="+comment_content;

var variables:URLVariables = new URLVariables(upldata);

var request:URLRequest = new URLRequest( "http://www.n8w.co.uk/blog/wp-comments-post.php" );
request.method = URLRequestMethod.POST;
request.data = variables;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener( Event.COMPLETE, loadCompleteHandler );
try {
loader.load( request );
trace("Loaded");
body.text = "Loaded";
} catch (error:Error) {
body.text = "Unable to load URL";
}

function loadCompleteHandler( event:Event ):void {

}

coldyn8w
March 4th, 2008, 05:54 AM
got it sorted, I was sending the variables in the wrong format.....

marc_
September 9th, 2008, 07:14 AM
oh please show us the way you solved it!
dont know what you wanted to say with:"wring format".

coldyn8w
September 9th, 2008, 07:26 AM
My variables inside AS3 should have been author, email, url, comment.


Rather than comment_author, comment_email etc etc

Are you trying to do some flash to WP?


oh please show us the way you solved it!
dont know what you wanted to say with:"wring format".

marc_
September 9th, 2008, 07:30 AM
yeah iam trying. ive managed to get all the data but cant post comments...

marc_
September 9th, 2008, 07:33 AM
if i understand right it should look like this?


package de.ms.wordpressAPI {
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;

/**
* @author marc
*/
public class postComment {

public function postComment() {
var author : String = "usr";
var author_email : String = "mail@mac.com";
var author_url : String = "www.google.co.uk";
var content : String = "test12"

var upldata : String = "author=" + author + "&author_email=" + author_email + "&author_url=" + author_url + "&content=" + content;

var variables : URLVariables = new URLVariables(upldata);

var request : URLRequest = new URLRequest("blog/wp-comments-post.php");
request.method = URLRequestMethod.POST;
request.data = variables;

var loader : URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);
try {
loader.load(request);
trace("Loaded");
//body.text = "Loaded";
} catch (error : Error) {
//body.text = "Unable to load URL";
}

function loadCompleteHandler( event : Event ) : void {
trace(event,"*****")
for(var i:String in event.target){
trace(i,event.target[i])
}
}
}
}
}

coldyn8w
September 9th, 2008, 07:39 AM
dont have time to go through yours sorry but heres mine:

Im sure you can mash the two together to get what you want. I dont think mine has any way of showing an error if the comment doesnt post, but it definitely posts them

You probably only need to look at the submit comment function,
let me know if you get it running
g




package {

import flash.display.Sprite;
import flash.events.*;
import flash.net.*;

import caurina.transitions.Tweener;


public class CommentForm extends Sprite {

private var variables:URLVariables;
private var request:URLRequest;
private var loader:URLLoader;
public var idTarget:Number;
public var commentSheet:CommentSheet;


public function CommentForm() {

commentSheet = new CommentSheet();
addChild(commentSheet);
commentSheet.closeBtn.addEventListener(MouseEvent. CLICK, closeComment);
commentSheet.closeBtn.addEventListener(MouseEvent. ROLL_OVER, closeRoll);
commentSheet.closeBtn.addEventListener(MouseEvent. ROLL_OUT, closeOut);
commentSheet.closeBtn.useHandCursor = true;
commentSheet.closeBtn.buttonMode = true;


commentSheet.alpha = 0;
commentSheet.submit.addEventListener(MouseEvent.CL ICK, submitComment);
Tweener.addTween(commentSheet,{alpha:1, time:.3, transition:"easeInQuad"});


}

private function submitComment(e:MouseEvent) {

variables = new URLVariables();
variables.author = commentSheet.author.text;
variables.email = commentSheet.email.text;
variables.url = commentSheet.url.text;
variables.comment = commentSheet.comment.text;
variables.comment_post_ID = idTarget;

request = new URLRequest( "http://yourblog.com/wp-comments-post.php");
request.method = URLRequestMethod.POST;
request.data = variables;

loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;

try {
loader.load( request );
commentSheet.comment.text = "Thanks your comment has been recieved";
//body.text = "sent";
} catch (error:Error) {
//body.text = "Unable to load URL";
}
}



private function closeComment(e:MouseEvent) {
Tweener.addTween(commentSheet,{alpha:0, time:.5, transition:"easeOutQuad", onComplete:function(){removeChild(this)}});
//removeChild(commentSheet);
}
private function closeRoll(e:MouseEvent) {
//Tweener.addTween(e.target,{_color:0x2E2617, value:1, time:.1, transition:"easeOutQuad"});
e.target.gotoAndStop(2)

}
private function closeOut(e:MouseEvent) {
//Tweener.addTween(e.target,{_color:0x826844, value:1, time:.1, transition:"easeOutQuad"});
e.target.gotoAndStop(1)

}

public function onStageResize( w:Number, h:Number ):void {

/*this.y = h/2 - w/2;
//commentSheet.commentBack.x = -commentSheet.x;
//commentSheet.commentBack.y = -commentSheet.y;*/
commentSheet.commentBack.width = w;
commentSheet.commentBack.height = h;





}
}


}

marc_
September 9th, 2008, 09:59 AM
sweet! works perfect!
thanks a lot!

coldyn8w
September 9th, 2008, 10:02 AM
no problem mate,

can I ask what your using for the rest of your site? ie. collecting the posts from the DB

AMF-PHP?