The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Creating a new poll post with php? Ideas?
I know how to create a normal post with php, but I'm searching through the code and haven't yet figured out how to do it.
Thought someone here might be able to point me in the right direction. I use this as a function to deal with creating and editing posts. Code:
function node_handler($userid, $title, $postmsg, $nodeid, $parentid, $channelid){ global $vbulletin; $options = []; $input = array( 'title' => $title, 'rawtext' => $postmsg, 'nodeid' => $nodeid, 'parentid' => $parentid, 'channelid' => $channelid, 'ret' => '', 'tags' => '', 'reason' => '', 'iconid' => '', 'prefixid' => '', 'hvinput' => '', 'subtype' => '', 'userid' => $userid, 'username' => 'User', 'nl2br' => false, ); $api = Api_InterfaceAbstract::instance(); $user = $api->callApi('user', 'fetchUserinfo', array($userid)); $time = vB5_Request::get('timeNow'); $textData = array( 'title' => $input['title'], 'parentid' => $input['parentid'], 'prefixid' => $input['prefixid'], 'iconid' => $input['iconid'] ); $options = array(); if ($input['nodeid'] > 0){ //If we're here. We are to edit a post. $result = array(); if ($user['userid'] < 1){ return 0; } $textData['rawtext'] = $input['rawtext']; $textData['reason'] = $input['reason']; // We need to convert WYSIWYG html here and run the img check if (isset($textData['rawtext'])){ $tmpText = $api->callApi('bbcode', 'convertWysiwygTextToBbcode', array($textData['rawtext'], $options)); vB5_Frontend_Controller_Bbcode::verifyImgCheck($tmpText); } if ($input['nl2br']){ // not using ckeditor (on edit, 'nl2br' goes in the data array) $textData['nl2br'] = true; } $nodeId = $api->callApi('content_text', 'update', [$input['nodeid'], $textData, $options]); $tags = !empty($input['tags']) ? explode(',', $input['tags']) : array(); $tagRet = $api->callApi('tags', 'updateUserTags', array($input['nodeid'], $tags)); } else{ //Here we start a new post/thread $nodeId = $api->callApi('content_text', 'add', [$input, $options]); } return $nodeId; } http://vb5support.com/resources/api/...tent_Poll.html Its unclear how to add a poll and what options would be in the poll. Or I'm blind. Could be either. I just need a Yes/No Poll. I can't explain why I can't use jquery to do this, but I need this to if possible work with the above function. Ideas? Suggestions? Glenn!! I know you've got someway to tell me I've screwed up and its right there! I've tried adding 'polloptions' =>array('Yes', 'No') to both options and input array, but come up with nothing but a normal post. Gotta be missing something. |
#2
|
||||
|
||||
Take a look at actionPoll() function in createcontent.php frontend controller. Try creating a poll and inspect the ajax call to see the options passed.
You call the content_poll api not content_text. Based on content type, you call content_<type> api. The types are text, poll, gallery, video and link. |
Благодарность от: | ||
Necrophyte |
#3
|
|||
|
|||
So here's what worked for me in the end.
I tried using actionpoll() function as a guide but it threw me off. Also tried looking at the ajax requested/sent info which again. Threw me off. The api looks for different data. Traced content_text to poll.php in api folder. Led me to what it was looking for so I could give it the info. 'polloptions' needed to actually be called 'options' in a multi-dimensional array with 'titles'. This is what worked for me in case someone comes to see this. Code:
function startpoll($userid, $forum_id, $postmsg, $title){ global $vbulletin; $api = Api_InterfaceAbstract::instance(); $user = $api->callApi('user', 'fetchUserinfo', array($userid)); $input = array( 'title' => $title, 'authorname' => $user['username'], 'rawtext' => $postmsg, 'nodeid' => 0, 'parentid' => $forum_id, 'channelid' => $forum_id, 'ret' => '', 'tags' => '', 'reason' => '', 'iconid' => 0, 'prefixid' => '', 'hvinput' => '', 'subtype' => '', 'userid' => $userid, 'username' => 'User', 'nl2br' => false, 'options' => array(array ('title' => 'Yes, I support.'), array ('title' => 'No, I do not support.')), 'timeout' => 0, 'multiple' => false, 'ret' => '', 'public' => false, 'parseurl' => false, ); $options = array( 'skipDupCheck' => true ); $nodeId = $api->callApi('content_poll', 'add', [$input, $options]); return $nodeId; } |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|