vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Beta Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=34)
-   -   New Thread on Calendar Event (https://vborg.vbsupport.ru/showthread.php?t=67074)

Colin F 07-10-2004 10:00 PM

New Thread on Calendar Event
 
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;
                
    $DB_site->query("INSERT INTO " TABLE_PREFIX "thread
    (title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline, iconid, visible)
    VALUES ('" 
    addslashes($threadtitle) . "', " TIMENOW ", $forumid, 1, 0, '$botusername', $botuserid, '$botusername', " TIMENOW ", $iconid, 1)
    "
    );
    $threadid $DB_site->insert_id();
                
    $DB_site->query("INSERT INTO " TABLE_PREFIX "post
    (threadid, parentid, title, username, userid, dateline, pagetext, allowsmilie, showsignature, ipaddress, iconid, visible)
    VALUES (
    $threadid, 0, '" addslashes($threadtitle) . "', '$botusername', $botuserid, " TIMENOW ", '" addslashes($postmessage) . "', 1, 0, 0, $iconid, 1)
    "
    );
    $firstpostid $DB_site->insert_id();

    $DB_site->query("UPDATE " TABLE_PREFIX "thread
    SET firstpostid = 
    $firstpostid
    WHERE threadid = 
    $threadid
    "
    );
                
    $DB_site->query("
    UPDATE " 
    TABLE_PREFIX "forum
    SET replycount = replycount +  1,
    threadcount = threadcount + 1,
    lastpost = " 
    TIMENOW ",
    lastposter = 
    $botusername,
    lastthread = '" 
    addslashes($threadtitle) . "',
    lastthreadid = 
    $threadid,
    lasticonid = 
    $iconid
    WHERE forumid = 
    $forumid
    "
    ); 

    The variables to be edited (marked green) are:
    • 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.

Colin F 07-11-2004 07:52 PM

Tips and Tricks

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 :)

FleaBag 07-12-2004 12:25 AM

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?

nexialys 07-12-2004 12:44 AM

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...

Andreas 07-12-2004 12:52 AM

Quote:

Originally Posted by FleaBag
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($forumidfalse);

// 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 :)

teksigns 07-12-2004 12:56 AM

getting error

Database error in vBulletin 3.0.0:

Invalid SQL: INSERT INTO thread
(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline, iconid, visible)
VALUES ('[] test event', 1089597260, 41, 1, 0, EventBot, 1364, EventBot, 1089597260, 0, 1)

mysql error: Unknown column 'EventBot' in 'field list'

mysql error number: 1054

Andreas 07-12-2004 01:08 AM

Quote:

Originally Posted by teksigns
getting error

PHP Code:

$DB_site->query("INSERT INTO " TABLE_PREFIX "thread
(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline, iconid, visible)
VALUES ('" 
addslashes($threadtitle) . "', " TIMENOW ", $forumid, 1, 0, $botusername$botuserid$botusername, " TIMENOW ", $iconid, 1)
"
); 

should be

PHP Code:

$DB_site->query("INSERT INTO " TABLE_PREFIX "thread
(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline, iconid, visible)
VALUES ('" 
addslashes($threadtitle) . "', " TIMENOW ", $forumid, 1, 0, '$botusername', $botuserid, '$botusername', " TIMENOW ", $iconid, 1)
"
); 

And
PHP Code:

$dateformat "m-d-y"

should be before
PHP Code:

$threadtitle 


alkatraz 07-12-2004 01:43 AM

awesome hack! thank you

Colin F 07-12-2004 09:34 AM

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.

nexialys 07-12-2004 09:47 AM

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.

MrNase 07-12-2004 04:44 PM

Could we make it so that we can select wether a new thread is started or not? Not every entry is worth a discussion :)

Colin F 07-12-2004 05:25 PM

Quote:

Originally Posted by MrNase
Could we make it so that we can select wether a new thread is started or not? Not every entry is worth a discussion :)

Sure. Just add a checkbox in the template with value=1, and put this at the beginning of the code
PHP Code:

if ($_POST[checkboxname] == 1) { 

and a } at the end of the code.

MrNase 07-13-2004 12:34 PM

That's cool. Thank you :)


I will use it :)

snyx 07-14-2004 06:34 AM

Quote:

Originally Posted by KirbyDE
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($forumidfalse);

// 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 :)

I don't like this automated message within the thread, is it possible it mimic the calendar post into the new thread?

Colin F 07-14-2004 02:19 PM

Theoretically yes.

Try making $post[message] = $message;

DaveLogic 07-14-2004 06:58 PM

Quote:

Originally Posted by Colin F
Theoretically yes.

Try making $post[message] = $message;

This works with the main message content but would it be possible to say include a link (alike the original ) say Click here for full info which would rthen link back to the calendat???

Colin F 07-14-2004 08:05 PM

Do you want the message content as well as a link back, or just part of the message content and a link saying something like [...more]?

The first could be done with something like
PHP Code:

$post[message] = $message."
[url="
.$vboptions['bburl']."/calendar.php?".$session[sessionurl]."do=getinfo&e=".$eventid."&day=".date("Y-n-j")."&c=".$calendarid."]Click here for full info[/url]"


FleaBag 07-16-2004 04:52 AM

Code:

Invalid SQL: 
UPDATE forum
SET replycount = replycount +  1,
threadcount = threadcount + 1,
lastpost = 1089956923,
lastposter = EventBot,
lastthread = '[07-12-04] hkhkhk',
lastthreadid = 12529,
lasticonid = 0
WHERE forumid = 47

mysql error: Unknown column 'EventBot' in 'field list'

Any idea what went wrong?

Colin F 07-24-2004 07:46 AM

surround EventBot with 's
making it:
PHP Code:

$DB_site->query("
UPDATE " 
TABLE_PREFIX "forum
SET replycount = replycount +  1,
threadcount = threadcount + 1,
lastpost = " 
TIMENOW ",
lastposter = '
$botusername',
lastthread = '" 
addslashes($threadtitle) . "',
lastthreadid = 
$threadid,
lasticonid = 
$iconid
WHERE forumid = 
$forumid
"
); 


obsidian 07-28-2004 02:35 PM

I tried this out using Colins original hack and it comes up with a thread title that is one day off of the event. The "posted by" on the thread view is also blank. I ended up trying Kirby's code as well and the username shows up but the date is 1 day off as well.

Edit: After digging through the calendar.php file I assume this is because I am using a single all day event. If I do the ranged event it comes up correctly. I guess when it gets the single all day event it starts the previous day plus how ever many hours. Anyways anyone have an idea on a simple fix for it :)

PUPSTAHS 07-30-2004 06:08 PM

Quote:

Originally Posted by obsidian
I do the ranged event it comes up correctly. I guess when it gets the single all day event it starts the previous day plus how ever many hours. Anyways anyone have an idea on a simple fix for it :)

I'm having the same problem. Links to all day events always link to the day *before* the event starts, but ranged events work fine.

Anyone got a fix?

BTW great hack colin

PUPSTAHS 08-09-2004 07:35 PM

So, is anyone working on a fix for the all-day-event bug mentioned above? It would be very much appreciated by at least several users.

Colin F 08-10-2004 04:08 AM

I assume this is because of the timezone settings of some users. As I'm in GMT+1, I don't have any problems with this.

I'll have a look at it tonight though...

Colin F 08-10-2004 07:08 PM

I've updated the first post with some info to (hopefully) fix the allday problem some users are having.

The changes are in the two calles to the function date(). These are now changed to vbdate() and some parameters were added.

SamirDarji 08-20-2004 08:34 AM

This is exactly the type of hack I've been searching for. Well, all except one thing--I want the new thread to be displayed as part of the calendar event listing page. It doesn't sound too hard in theory, but you never know until you get into it. Thoughts anyone?

Lionel 10-30-2004 11:22 PM

I am able to fix the problems on that one. Wish I could solve my problem with the other hack by the same author.

Torqued 11-10-2004 03:16 PM

Quote:

Originally Posted by Colin F
Theoretically yes.

Try making $post[message] = $message;


Actually.. I want both. :) I want the $message text as well as an automated message @ the bottom of the post.. so how do I modify the code below to put a couple of blank lines between the $message and the "This is an automatically generated blah blah blah"

Quote:

$postmessage = $message."This is an automatically generated thread for the event ".$title.".
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=".$calendari d."]this page[ /url].";

Colin F 11-10-2004 03:24 PM

Quote:

Originally Posted by Torqued
Actually.. I want both. :) I want the $message text as well as an automated message @ the bottom of the post.. so how do I modify the code below to put a couple of blank lines between the $message and the "This is an automatically generated blah blah blah"

Change this:
Code:

$postmessage = $message."This is an automatically generated thread for the event ".$title.".
to this:
Code:

$postmessage = $message."


This is an automatically generated thread for the event ".$title.".

Not sure if that works though.... you might also be able to use /n

Lionel 11-10-2004 03:34 PM

I used \n to insert a blank line

obsidian 11-19-2004 01:46 PM

Is there a way to move the forum jump dropdown into this and use it as a selection box for where to post the thread? Reason I ask is that I now have a couple calendars for different groups. I would like to be for the people to post their events on their private calendar and have this hack post the thread in their private forum.

benFF 11-24-2004 12:00 AM

Is there anyway to make the calendar event link to the forum post about it, allowing users to discuss the calendar item easily?

Just also found the vb2 version of this hack, which actually allowed you to specify a forum and when a user went to start a new thread in it, it would automatically take them to the calendar input instead (which was then inserted into the forum as well as the calendar). This would be an awesome feature, as it would make sure people were entering events in the calendar and not just making a forum post....

SamirDarji 11-24-2004 02:46 PM

Check out my calendar for a small change that allows me to put various event-related links. It's still a manual process as there is no way to keep a hard link between the thread and event listing. :(

nexialys 11-25-2004 10:18 AM

it's easy to keep a link to the thread and event... but Colin F will have to update his code... not sure he will:

1- add a new field to events, adding the new threadid when new thread is created.
2- when thread is created, modify the event message by adding a new line with the thread url... (go to this url to read the thread XXX)
...

with that threadid in a field, you can do a lot of things..

Bison 12-11-2004 01:40 PM

Nice idea, but it's quite confusing on how to do this. Could someone clean up these two hacks and make them easier to try?

Viks 12-31-2004 01:18 AM

hi guys, Colin,
I am getting the follwing error message when i add a new calender event.
Once I go back to my forum i see the thread and the event but the error message occurs each time a new event is added.

Error message==
===============

Database error in vBulletin 3.0.3:

Invalid SQL:
UPDATE forum
SET replycount = replycount + 1,
threadcount = threadcount + 1,
lastpost = 1104462847,
lastposter = ,
lastthread = '[12-30-04] new event',
lastthreadid = 62,
lasticonid = 0
WHERE forumid = 18

mysql error: You have an error in your SQL syntax near '
lastthread = '[12-30-04] new event',
lastthreadid = 62,
lasticonid = 0
WHER' at line 6

mysql error number: 1064

Date: Thursday 30th of December 2004 10:14:08 PM
Script: http://www.myforums.com/forums/calendar.php
Referer: http://www.myforums.com/forums/calen...ype=single&c=1
Username: A
IP Address: 64.1.2.3

============================================

please help.

thanks

vik

Viks 01-05-2005 04:06 AM

Hi there, I was hoping to get some assistance on this. kindly help.

thanks

Vik

MikaK 01-06-2005 08:26 AM

Quote:

Originally Posted by benFF
Is there anyway to make the calendar event link to the forum post about it, allowing users to discuss the calendar item easily?

Just also found the vb2 version of this hack, which actually allowed you to specify a forum and when a user went to start a new thread in it, it would automatically take them to the calendar input instead (which was then inserted into the forum as well as the calendar). This would be an awesome feature, as it would make sure people were entering events in the calendar and not just making a forum post....

Would be very cool! I have installed the "Colin F" version of this hack.
=Mika=

scottishcruise 01-23-2005 05:44 PM

I am also getting the mysql error as posted by Viks, any help?? - the calendar event and thread seem to work fine but the error isn't nice to see when ppl are adding events :(

Viks 02-27-2005 03:07 PM

no update on this one yet .. Colin?

CyberSlash69 03-01-2005 02:04 AM

Was wondering if there is a hack, or a way that this can be switched around.. In PhpbbFM you post a thread, and in the thread you can edit the date you would like this to go to and it will automatically be added into the calendar.. Pretty much just the opposite of what it is now.. But it was much easier.


All times are GMT. The time now is 04:49 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01694 seconds
  • Memory Usage 1,909KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (13)bbcode_php_printable
  • (10)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete