I noticed the invoice parameter as well - it seems ideal. cf_id would make the perfect invoice number for paypal.
Currently plugins are set to run last and redirect is the only plugin, so it should have access to cf_id... However, without stepping through a lot of code, it's not obvious to me where cf_id would be.
For reference, the autogenerated code is:
<?php
$MyForm =& CFChronoForm::getInstance("fall09Registration");
if($MyForm->formparams("dbconnection") == "Yes"){
$user = JFactory::getUser();
$row =& JTable::getInstance("chronoforms_fall09Registration", "Table");
srand((double)microtime()*10000);
$inum = "I" . substr(base64_encode(md5(rand())), 0, 16).md5(uniqid(mt_rand(), true));
JRequest::setVar( "recordtime", JRequest::getVar( "recordtime", date("Y-m-d")." - ".date("H:i:s"), "post", "string", "" ));
JRequest::setVar( "ipaddress", JRequest::getVar( "ipaddress", $_SERVER["REMOTE_ADDR"], "post", "string", "" ));
JRequest::setVar( "uid", JRequest::getVar( "uid", $inum, "post", "string", "" ));
JRequest::setVar( "cf_user_id", JRequest::getVar( "cf_user_id", $user->id, "post", "int", "" ));
$post = JRequest::get( "post" , JREQUEST_ALLOWRAW );
if (!$row->bind( $post )) {
JError::raiseWarning(100, $row->getError());
}
if (!$row->store()) {
JError::raiseWarning(100, $row->getError());
}
$MyForm->tablerow["jos_chronoforms_fall09Registration"] = $row;
}
?>
I suppose it would be available somewhere after store() is invoked? A lot of objects flying around here. This seems like an obvious thing to do so I'm surprised the redirect plugin doesn't expose cf_id actually. Is getInstance() documented somewhere? If I invoke this in the extra code of the redirect plugin to pull the tablerow variable, can I get at cf_id that way?