Version: 1.00, by Colin F
Developer Last Online: Apr 2014
Version: 3.0.3
Rating:
Released: 07-10-2004
Last Update: Never
Installs: 19
Re-useable Code Translations Is in Beta Stage
No support by the author.
New Thread on Calendar Event
What it does:
This rather small hack is easy: it starts a new thread in a specific forum for every Event that is posted in the calendar. On our forum it is used for discussion of partys (as it's a party calendar).
Is it complicated?
There is actually very little to change, but in that small part, there are a lot of variables to be edited which are forum specific. That might make it a bit hard for php newlings
Changes: New files (0):
none
Changed files(1):
calendar.php
New database fields/tables(0):
none
New templates(0):
none
Changed templates(0):
none
New phrases(0):
none
Screenshots:
No visible changes
Instructions:
Backup all your forum files as well as your database
Copy the following code into your favorite PHP editing program (Dreamweaver, Wordpad, Notepad...) and edit it to fit your forums.
PHP Code:
$forumid = 1; // forumid in which to post
$botuserid = 1; //userid of poster
$botusername = "EventBot"; // username of poster
$dateformat = "m-d-y";
$threadtitle = "[".vbdate($dateformat, $dateline_from,false,true,false,true)."] ".$title;
$postmessage = "This is an automatically generated thread for the event [b]".$title."[/b].
More information on this event is available on [url=".$vboptions['bburl']."/calendar.php?".$session[sessionurl]."do=getinfo&e=".$eventid."&day=".vbdate("Y-n-j",TIMENOW,false,true,false,true)."&c=".$calendarid."]this page[/url].";
$iconid = 0;
forumid is the forumid of the forum in which the Bot will be posting the threads to the calendar events
botuserid is the userid of the user that will be shown as the author of the thread. I suggest making a special user and naming him something like EventBot
botusername is the username of the user that will be shown as the author of the thread. Should be the username to the userid indicated in botuserid. Make sure the username is enclosed in quotation marks ("").
Open your calendar.php and look for
PHP Code:
if ($calendarinfo['neweventemail'])
Above that add the code you just edited.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
What's with the ugly US date format in the title?
If you want to change the date format in the title, just change the variable dateformat.
The european format is: d.m.Y (with leading zeros on day and month)
or j.n.Y (without leading zeros on day and month).
All the recognized characters in the date format can be found under http://www.php.net/date
It's all english! Where can I translate it? ORHow can I change the post text?
The whole posttext is saved in the postmessage variable. It can be translated, changed to your liking. New lines are achieved simply by having a new line in the code, no <br /> or \n\r. Also, smileys,bbcode,img tag as well as HTML can be used if you have these options enabled for the forum specified in forumid
I want all these event threads to have a special icon
Easy. Just edit the variable iconid to the iconid of the icon you wish to use.
Can I use the Event poster as the user that posts the thread?
Sure. Just change the 2 lines
PHP Code:
$botuserid = 1; //userid of poster
$botusername = "EventBot"; // username of poster
to
PHP Code:
$botuserid = $bbuserinfo[userid]; //userid of poster
$botusername = $bbuserid[username]; // username of poster
Careful: these posts don't update the users post count.
Questions and Problems
The postcount of my bot/the user that is used to post threads hasn't changed!
It isn't supposed to. As the whole system is automated, I don't think they count as posts. Also, no one is interested in the postcount of a bot
yeah i was to suggest this.. i don't know why you use a BOT... just put the author's ID would do better... i don't see why using a bot anyway, it's not an automated feature, the creation of the thread is asked by a user...
Just what I've been looking for - but is there a way to make the thread creator the user who adds the event to the calendar?
Instead of $botuserid and $botusername use $bbuserinfo[userid] and $bbuserinfo[username].
And I wonder why this hack re-invents the wheel instead of just using build_new_post()?
PHP Code:
$forumid = 1; // forumid in which to post
// Get forum info
$foruminfo = fetch_foruminfo($forumid, false);
// Prepare the thread ...
$post[title] = "[".date($dateformat, $dateline_from)."] ".$title;
$post[poststarttime] = TIMENOW;
$post[posthash] = md5($post[poststarttime] . $bbuserinfo['userid'] . $bbuserinfo['salt']);
$post[message] = "This is an automatically generated thread for the event [b]".$title."[/b].
More information on this event is available on [url=".$vboptions['bburl']."/calendar.php?".$session[sessionurl]."do=getinfo&e=".$eventid."&day=".date("Y-n-j")."&c=".$calendarid."]this page[/url].";
$post[username] = $bbuserinfo[userid];
$post[iconid] = 0;
$post[emailupdate] = 9999;
// ... and create it
require_once('./includes/functions_newpost.php');
build_new_post('thread', $foruminfo, array(), 0, $post, $errors);
If you want to be fully flexible, one could make the text as a phrase, forum ID and date format string as a setting
OK, looks like my small hack just got fully rewritten Thanks for the help KirbyDe!
I just did this the first way I saw how from looking at the code. I haven't tested it, but KirbyDe's Code would probably work just as well if anyone wants to use that.
maybe a little setting in the admincp, calendar section, where we can disable the feature, and select what forum to use, and maybe more options, like groups that can post...
i'm suggesting, maybe i will do that later anyway.