x00
Don't PM about development, I'm not currently taking on clients MVP
$PluginInfo['ExtendAPI'] = array(
'Name' => 'ExtendAPI',
'Description' => "ExtendAPI",
'Version' => '0.1',
'Author' => 'me'
);
if (!function_exists('unserialize_xml')) {
function unserialize_xml($input, $callback = null, $recurse = false){
// Get input, loading an xml string with simplexml if its the top level of recursion
$data = ((!$recurse) && is_string($input))? simplexml_load_string($input): $input;
// Convert SimpleXMLElements to array
if ($data instanceof SimpleXMLElement) $data = (array) $data;
// Recurse into arrays
if (is_array($data)) foreach ($data as &$item) $item = unserialize_xml($item, $callback, true);
// Run callback and return
return (!is_array($data) && is_callable($callback))? call_user_func($callback, $data): $data;
}
}
class ExtendAPI extends Gdn_Plugin {
public function PostController_Render_Before(&$Sender){
if(in_array($Sender->DeliveryMethod(),array(DELIVERY_METHOD_JSON,DELIVERY_METHOD_XML))){
if ($Sender->Request->RequestMethod()== 'POST') {
$RawContent = file_get_contents("php://input");
if($Sender->DeliveryMethod()==DELIVERY_METHOD_JSON){
$Data = json_decode($RawContent);
}elseif($Sender->DeliveryMethod()==DELIVERY_METHOD_XML){
//dependent on some basic xml parser in this case using SimpleXML.
$Data = unserialize_xml($RawContent);
}
foreach($Data As $NodeName => $NodeValue ){
SetValue( $Sender->Form->InputPrefix.'/'.($NodeName=='TransKey'?'TransientKey':$NodeName),$_POST,$NodeValue);
}
if ($Sender->Form->AuthenticatedPostBack() === TRUE) {
var_dump($Sender->Form);
//TO DO validation, save, draft, etc.
//TO DO output succes/fail, etc
}
}else if ($Sender->Request->RequestMethod() == 'GET') {
$Sender->SetData(array('DiscussionID'=>'','Name'=>'','Body'=>'','CategoryID'=>'','Close'=>'','Save_Draft'=>''));
$Sender->SetData('TransKey',Gdn::Session()->TransientKey());//'TransientKey' is strippped out so use 'TransKey'
$Sender->SetData('RequiredFields',array('Name','Body','CategoryID'));
}
}
}
}
Don't PM about development, I'm not currently taking on clients.
grep is your friend.
Answers
a) Default the Gdn_Form->InputPrefix = '' so that API calls can pass parameters in a straightforward manner. This has been done on a branch, but needs testing with javascript and css and whatnot to make sure it works.
b) Provide an oauth 2.0 endpoint so that users can sign in to the forum through the API. If you want to hack an access_token query string I'd tie into
Gdn_Dispatcher_BeforeDispatch_Handlerand start a session based on what is passed into that query string parameter.- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •I don't have time to continue right, but take the baton.
Don't PM about development, I'm not currently taking on clients.
grep is your friend.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •pretags instead ofcodetags.- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •Don't PM about development, I'm not currently taking on clients.
grep is your friend.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •Don't PM about development, I'm not currently taking on clients.
grep is your friend.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •I suppose we can add a rule for code cascading inside a pre tag for those that are being truly semantically correct.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •Don't PM about development, I'm not currently taking on clients.
grep is your friend.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •Thank you both very much for your help. I've taken the basic plugin you wrote and am working with it. Since I barely know any PHP, it's going to be very interesting. I'll post back once I have better results.
Regards,
z.
- Spam
- Abuse
- Troll
0 • Off Topic Insightful Awesome LOL •