Ich schreibe es mal auf deutsch, da geht das fl?ssiger. Wie bereits erw?hnt besteht ein Event in vB5 nicht nur aus einem Eintrag in den Event-Table, sondern aus einem Topic in einem Forumschannel, einem ersten Post in diesem Topic sowie eben jenem Eintrag im Event-Table.
Wie delicjous bereits schrieb - am Sinnvollsten ist ein vB-interne L?sung
Modul, welches die gleichen Frontendcontroller anbietet, die vB auch verwendet bei der Erstellung, Bearbeitung und L?schung von Events
- erstellen/bearbeiten : POST auf /forum/create-content/event (mit unt ohne mitgelieferte nodeid)
- delete : POST auf /forum/ajax/api/node/deleteNodes
Nur f?r ?bersicht der Events m?sste man schauen, ob vB da schon was im Frontend bietet (/forum/ajax/render/widget_calendar__events ist etwas unhandlich)
Falls du aber unbedingt ?ber die Api gehen willst, dann so.
- Script muss auf deinen vB-Server, aber au?erhalb vom vB-Verzeichnis,
- Zeile 5 vbpath muss angepasst werden
- Zeile 7-11 ?bernimmt die Sitzung des aktuell am vB angemeldeten Users und Initialisiert vB und die Api im Allgemeinen
- Zeile 13-23 aktueller User - auf diesen Infos musst du deine Berechtigung zum Ausf?hren des Scriptes aufbauen
- Zeile 38-47 deine Daten zum Event, Zeile 39 muss angepasst werden
- Zeile 51 dient zur Kontrolle, ob du deine EventApi bekommen hast
- Zeile 54 sollte dir die NodeId zum neu eingetragenen Event ausgeben.
PHP Code:
<?php
try {
// Path to your vBulletin installation
$vbpath = '/var/www/html/forum';
// Start script
define('CSRF_PROTECTION', false);
require_once($vbpath . '/includes/vb5/autoloader.php');
vB5_Autoloader::register($vbpath);
vB5_Frontend_Application::init('config.php');
// Check current logged in user or group for rights to run this script
$userAPI = vB_Api::instance("user");
$userinfo = $userAPI->fetchCurrentUserinfo();
var_dump($userinfo['userid']);
var_dump($userinfo['username']);
var_dump($userinfo['usergroupid']);
var_dump($userinfo['membergroupids']);
var_dump($userinfo['displaygroupid']);
// No rights should die
//die();
/*
$data = array(
'parentid' => $forumChannelId,
'title' => $title,
'rawtext' => $text,
'location' => $location,
'eventstartdate' => $eventStartDate,
'eventenddate' => $eventEndDate,
'allday' => false
);
*/
$data = array(
'parentid' => '21', //Channel for events
'title' => 'New Test Event',
'rawtext' => 'Test Event Description',
'location' => '',
'eventstartdate' => '1610755200', //01/16/2021 @ 12:00am (UTC)
'eventenddate' => '1610784000', //01/16/2021 @ 8:00am (UTC)
'allday' => false
);
$options = array();
$eventApi= vB_Api_Content_Event::getContentApi(vB_Types::instance()->getContentTypeID('vBForum_Event'));
//Now you should get a dump of event api
//var_dump($eventApi);
$result = $eventApi->add($data, $options);
var_dump($result);
} catch (vB_Exception_Database $e) {
echo "An exception: " . $e->getMessage() . "\n";
} catch (Exception $e) {
echo "An exception: " . $e->getMessage() . "\n";
}