vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.8 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=235)
-   -   Social Group and Album Enhancements - Social Group Calendars (https://vborg.vbsupport.ru/showthread.php?t=203352)

Farcaster 01-27-2009 10:00 PM

Social Group Calendars
 
1 Attachment(s)
In short, this modification will allow social groups on your forum have their own calendar area and have upcoming events shown on their group page. Here is a list of features:
  1. Upcoming events for a group are shown on the group's page, grouped by day.
  2. The group's next event is shown in more detail and can be configured to show the entire event description or be trimmed to a certain number of characters.
  3. Members can see events for all the social groups they belong to consolidated into one calendar.
  4. The forum home index page can be setup to show upcoming events for social groups.
  5. Non-members can see upcoming events for a public group by viewing the group's page. They will not see events for these groups in the calendar view or on the forum homepage, which will help keep the clutter down.
  6. Group's that are moderated, invite only, or must join to view content, will not display their upcoming events to non-members. Their events are also secured, so following a link to an event by a non-member will result in a no permissions error.
  7. Group owners can optionally allow members to be able to post events, or they can set their group up so that only they can post events.
  8. When clicking on the New Event link from the group's page, the event will automatically be assigned to the referring group.
  9. When creating a new event from the calendar view, the creator can assign the event to any group he has permissions to post events. These events will appear in a drop down box on the event.
  10. Admins and moderators can be set to be excluded from all filtering and permissions. This allows the administrator an unfiltered view of the social group calendar, and the ability to move or edit group's events as needed.
  11. Plays nice with Farcaster's Event Attendance v2.0 (RSVP mod).
Installation Instructions (Remember to Mark Installed)
Follow the installation instructions available here: https://vborg.vbsupport.ru/showpost....07&postcount=2

Revision LogKnown Issues
None at this time.

Farcaster 01-28-2009 09:13 AM

Unfortunately, vBulletin lacks some hooks in key places for events, such as hooks to the event SQL statements. This means that there are a number of file edits needed for this modification. Sorry for that, but I hope it will be worth it! Enjoy!

Step One – Backup Your Database and vBulletin Files!
This really needs to be said, especially since this version is in BETA. Loss of data/time/business is not the responsibility of the developer. Use at your own risk.

Step Two – Import the Product File
In the Admin CP, import rah_socialgroup_calendars_1_0_0.xml.

Step Three – Edit vBulletin File: includes/functions_calendar.php
Note: If you do not want to have Social Group Events show up in the upcoming events section on your forum homepage, then you only need do steps 1 through 7 in this section.

1. Find the first instance of (in function cache_events, near the beginning of the file):

PHP Code:

    $events $vbulletin->db->query_read_slave("
        SELECT event.*, 

2. Above that add:

PHP Code:

// Social Group Calendar **************************************************
 
    // Exempt administrators and other designated groups.
    
$exemptgroups explode(',',str_replace(' ','',$vbulletin->options['rah_socialcal_admins'])); 
 
    if (
is_member_of($vbulletin->userinfo,$exemptgroups)) {
        
$exemptsql " OR 1=1 ";
    }    
    if (
$vbulletin->userinfo['userid']) {
        
$eventjoin "     LEFT JOIN ".TABLE_PREFIX."socialgroupmember sgm ON sgm.userid = 0".$vbulletin->userinfo['userid']." AND sgm.groupid = event.socialgroupcalendar 
                        LEFT JOIN (SELECT groupid, name FROM "
.TABLE_PREFIX."socialgroup) sg ON sg.groupid = event.socialgroupcalendar";
        
$eventwhere " AND (event.socialgroupcalendar = 0 OR sgm.groupid IS NOT NULL $exemptsql) ";
        
$eventselect " sg.name as socialgroupname, ";
    }
 
    
// Social Group Calendar END *********************************************** 

3. Scroll back down and after the comma in “SELECT event.*,” add:

PHP Code:

$eventselect 

4. Scroll down about five lines to find:
PHP Code:

        LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid event.userid

5. Below that add:
PHP Code:

$eventjoin 

6. Scroll down about four lines to find:
PHP Code:

            visible 

7. Below that add:
PHP Code:

$eventwhere 

8. Find the following (in function build_events, near the end of the file):

PHP Code:

    $events $vbulletin->db->query_read_slave("
        SELECT eventid, userid, event.title, recurring, recuroption, dateline_from, dateline_to, event.calendarid, IF (dateline_to = 0, 1, 0) AS singleday, customfields,
            dateline_from AS dateline_from_user, dateline_to AS dateline_to_user, utc, dst 

9. Above that add:
PHP Code:

    // Social Group Calendar **************************************************
    
$eventjoin "     LEFT JOIN (SELECT groupid, name FROM ".TABLE_PREFIX."socialgroup) sg ON sg.groupid = event.socialgroupcalendar ";
    
$eventselect ", event.socialgroupcalendar, sg.name as socialgroupname ";
    
// Social Group Calendar END *********************************************** 

10. After “dateline_to AS dateline_to_user, utc, dst”, add:
PHP Code:

$eventselect 

11. Scroll down about two lines and find:
PHP Code:

        INNER JOIN " . TABLE_PREFIX . "calendar AS calendar USING (calendarid

12. Below that add:
PHP Code:

$eventjoin 

Step Four – Edit vBulletin File: index.php
Note: If you do not want to have Social Group Events show up in the upcoming events section on your forum homepage, you can skip this section entirely. Keep in mind though that if you do have your calendar options set to show events from the calendar that social group events will be posted to, the list will not be filtered and everyone will see them.

1. Find the following:
PHP Code:

// ### TODAY'S EVENTS #################################################
if ($vbulletin->options['showevents'])


2. Below that add:
PHP Code:

// Social Group Calendar **************************************************
// Get Social Group Memberships    
$usersocialgroups = array();    
if (
$vbulletin->userinfo['userid']) {
 
    
$getsocialgroups $vbulletin->db->query_read_slave("
    SELECT groupid 
    FROM "
.TABLE_PREFIX."socialgroupmember sgm 
    WHERE sgm.userid = "
.intval($vbulletin->userinfo['userid']));
 
    while (
$group $vbulletin->db->fetch_array($getsocialgroups)) {
        
$usersocialgroups[]=$group['groupid'];
 
    }        
}
 
// Exempt administrators and other designated groups.
$exemptgroups explode(',',str_replace(' ','',$vbulletin->options['rah_socialcal_admins']));     
 
if (
is_member_of($vbulletin->userinfo,$exemptgroups)) {
    
$exempt true;
}
// Social Group Calendar END *********************************************** 

3. Find the following:
PHP Code:

        {
            
$sub $eventinfo['dateline_from_user'] - (86400 * (intval($eventinfo['dateline_from_user'] / 86400)));
        } 

4. Below that add:
PHP Code:

        // Social Group Calendar **********************************************
        
$filterevent false;
        if (
$eventinfo['socialgroupcalendar'] AND !in_array($eventinfo['socialgroupcalendar'],$usersocialgroups)) {
            
// This is a social group event, and this is not a member.  Suppress the event
            
$filterevent true;
        }
 
        
// Add exception for admins and other designated groups.
        
if ($exempt) {
            
$filterevent false;
        }
 
        
// Add social group name to event title.
        
if ($eventinfo['socialgroupcalendar']) {
            
$eventstore[$eventinfo[eventid]]['title'] = "<font style=\"font-weight:bold\">[$eventinfo[socialgroupname]]</font> $eventinfo[title]";
        }        
        
// Social Group Calendar END ******************************************* 

5. Immediately below the code you just entered, find:
PHP Code:

        if ($vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
        { 

6. Replace with:
PHP Code:

        // Edited from original for Social Group Calendar
        
if (!$filterevent AND $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
        { 

Step Five – Upload Files
Upload the modified files to the appropriate directory in your forum.

Step Six – Edit Template: socialgroups_form
1. Find the following:
HTML Code:

<legend>$vbphrase[group_options]</legend>
<div class="smallfont">

2. Below that add:
HTML Code:

<div>
    <label for="member_entered_events"><input type="checkbox" name="member_entered_events" id="member_entered_events" value="1" $checked[member_entered_events]/> $vbphrase[member_entered_events]</label>
</div>

Step Seven – Edit Template: socialgroups_group
Note: If you’re trying to install this on version 3.7.x, the section you put the variable in will be different. Try putting it above <!--pictures--> for instance, and then adjust to be located where you want.

1. Find the following:
HTML Code:

    </div><br />
</if>
 
 
<!-- Discussions -->

2. Above that add:
HTML Code:

$socialgroups_events
Step Eight – Configuration
In the Admin CP, go into vBulletin Options -> Social Group Calendar. Set the options as desired. The product will not start working until a calendar ID is entered in this section. Make sure to configure the calendar selected to allow members to post events.

Farcaster 01-28-2009 09:15 AM

I have confirmed this to be working on vBulletin version 3.8.1. I assume that it will also work with version 3.7.x. If someone installs it on that version, please confirm if it works appropriately.

Vaupell 01-28-2009 09:34 AM

Lovely, i simply dont understand why this wasent a standard feature..

tx.. :up: :up: :up: :up: :up:

Farcaster 01-28-2009 12:41 PM

I don't either. The calendar is truly a bit underdeveloped, and the idea of events goes very well with social groups...

RvG2 01-28-2009 01:29 PM

Quote:

Originally Posted by Vaupell (Post 1727026)
Lovely, i simply dont understand why this wasent a standard feature..

tx.. :up: :up: :up: :up: :up:

You are right.

Trek 01-28-2009 05:09 PM

Going to install this now, I think this will do what I've been looking for. =)

Trek 01-28-2009 05:16 PM

Ok, one question. Is there any way (with this mod or something else) to automatically assign someone to a social group? I hope so, or my idea is dead before it gets started. heh

I guess what I'm looking for is social groups based on user group. Or if that's not possible, the ability to automatically give someone access to a social group when they are added to a specific user group.

Farcaster 01-28-2009 06:34 PM

Quote:

Originally Posted by Trek (Post 1727396)
I guess what I'm looking for is social groups based on user group. Or if that's not possible, the ability to automatically give someone access to a social group when they are added to a specific user group.

No, I'm afraid this mod doesn't do that. Nor do I know of one that does.

Trek 01-28-2009 06:49 PM

Quote:

Originally Posted by Farcaster (Post 1727454)
No, I'm afraid this mod doesn't do that. Nor do I know of one that does.

Bummer... I think this mod will do everything I need other than the auto adding to the social group. I'll do that manually I suppose until figure out something else.

Maybe I'll just write a query that adds everyone in a usergroup to a social group every night on a cron... that should work, but not really the cleanest way to go about it.

With that, this mod and your RSVP mod, I think everything I need to accomplish will work. Thanks!

Locutus2999 01-28-2009 10:40 PM

Will the events in the calendar allow comments?

concepts 01-28-2009 10:50 PM

Can you please assist me with the below error?

Warning: Invalid argument supplied for foreach() in [path]/calendar.php(1619) : eval()'d code on line 57

Farcaster 01-29-2009 12:00 AM

Quote:

Originally Posted by concepts (Post 1727626)
Warning: Invalid argument supplied for foreach() in [path]/calendar.php(1619) : eval()'d code on line 57

What were you doing at the time when that message occurred?

Brandon Sheley 01-29-2009 12:50 AM

great idea, a lot of file edits tho :(
Hopefully this gets implemented by default

Farcaster 01-29-2009 03:45 PM

Yeah, I know, the file edits are a pain. If there was another way to do it that wasn't a complete hack, I would have. My hope is that they will consider adding more hooks to the calendar.php and functions_calendar.php. That would really help.

Stubbed 01-29-2009 04:51 PM

Shame there aren't the hooks you require. I'm more than happy to do those edits, but it will make upgrading a nightmare. Will have to pass.

10 points for a solid mod idea.

Farcaster 01-29-2009 05:28 PM

Stubbed,

The good news is that they don't always update the functions_calendar.php which is where most of the file edits are. If they don't update it in a revision, then you can omit the file when you reupload the "upload" folder.

And, thanks!

Farcaster 01-30-2009 04:48 AM

Bug: The upcoming events on the forum home page sometimes loose the social group names and are no longer filtered appropriately.

If you installed 0.1.0 and completed the steps to add upcoming social events to your forum home page, follow these steps to resolve:

In functions_calendar.php, find:
PHP Code:

// Social Group Calendar **************************************************
if ($vbulletin->userinfo['userid']) {
    
$eventjoin "     LEFT JOIN (SELECT groupid, name FROM ".TABLE_PREFIX."socialgroup) sg ON sg.groupid = event.socialgroupcalendar ";
    
$eventselect ", event.socialgroupcalendar, sg.name as socialgroupname";
}    
// Social Group Calendar END *********************************************** 

Replace with:
PHP Code:

    // Social Group Calendar **************************************************
    
$eventjoin "     LEFT JOIN (SELECT groupid, name FROM ".TABLE_PREFIX."socialgroup) sg ON sg.groupid = event.socialgroupcalendar ";
    
$eventselect ", event.socialgroupcalendar, sg.name as socialgroupname ";
    
// Social Group Calendar END *********************************************** 


Vaupell 01-31-2009 10:49 PM

suggestion : Add images to each event! even costum/http links.

Trek 02-02-2009 08:46 PM

Just wanted to say I'm still watching this mod! Waiting for it to come out of beta, etc. =)

Farcaster 02-02-2009 11:26 PM

Very good, Trek. It doesn't look like there are many reported issues, so it will probably be soon. The next release should also have some additional functionality.

TNCclubman 02-27-2009 10:42 PM

Farcaster, this and your Event RSVP mod is 100% getting my vote as ESSENTIAL for the next release of vB 3.8.2...

How can this not be included is beyond me. These features are huge and I shout at the top of my lungs to vB staff.... INCLUDE THESE IN THE NEXT RELEASE!

theparentpack 03-25-2009 06:06 AM

I am looking forward to using this one, once it is out of Beta stage!!! Awesome MOD!

rainyleaves 03-29-2009 05:06 PM

Awesome mod!! Farcaster.

I need some help.
Disappear SocialGroup name at calendar title when I install with 'Farcaster's Event Attendance & vb Event Forums Integration 1.1'.
How do keep SocialGroup name at calendar title?

Please help...

Thanks.

Farcaster 04-05-2009 10:20 PM

This product is now out of BETA as no further issues have been reported and the pending issues are now resolved. Bugs resolved in version 1.0.0 include:
  • Holidays appearing after a social event in the social group calendar are erroneously appended with a social group name. - RESOLVED
  • First Event description BB code not parsed. - RESOLVED
Thank you for your patience and I hope everyone enjoys the mod.

ShawnV 04-06-2009 01:47 AM

Awesome, I will have to add this to KOWW, thanks Farcaster.

_V

Farcaster 04-06-2009 05:13 PM

I forgot to add upgrade instructions for 0.1.0 to 1.0.0. Actually, there is only one thing to do:

1. Import the file production file product-rah_socialgroup_calendars_1_0_0.xml and be sure to select "Yes" to Allow Override.

skooby 04-07-2009 12:01 AM

This is similar to your older event attendance mod. is it possible to use this mod in the way the other mod worked (by choosing a calendar, rather than a social calendar).

Farcaster 04-07-2009 02:37 AM

Skooby - not currently.

Benj 04-07-2009 03:14 AM

farcaster this is awesome !

skooby 04-07-2009 10:52 PM

Disregard :)

theparentpack 04-12-2009 07:04 PM

I have imported the xml file and have not yet done the code edits. I noticed on my forums that when I click on a Group to see the Group's page, I get this message:

No Calendar specified. If you followed a valid link, please notify the administrator

When I disable the mod, I am able to click on a Group and be taken to it's page. Will this change once the edits are done? As much as I look forward to this hack, I can't commit to it if it prevents my members from checking out the groups.

BigDog56 04-13-2009 05:02 PM

What is the calender ID?

dklassen 04-17-2009 11:45 PM

Will this work with 3.7.3?

Wayne Luke 04-19-2009 02:35 AM

I was evaluating this to see if I want to keep it and click Install. However I cam across an error.

Warning: Invalid argument supplied for foreach() in [path]/calendar.php(1825) : eval()'d code on line 70

This leads to the plugin on calendar_add_complete and this code:
PHP Code:

        if (count($othergroups)>0) {
                  
$socialgrouplist .= "<option>-------------------</option>";
        }

        
// Add options to social group list.
        
foreach ($othergroups as $socialgroup) {
                 
$selected = ($groupid==$socialgroup['groupid']) ? 'selected="selected"' "";
     
$socialgrouplist .= "<option value=\"$socialgroup[groupid]\" $selected>$socialgroup[name]</option>";
        } 

I don't have any "$othergroups" as I am the owner of all groups on the site. So shouldn't the Foreach be within the if block with the divider line so that it doesn't try to process a loop without data?

I changed the above code to:
PHP Code:

        if (count($othergroups)>0) {
            
$socialgrouplist .= "<option>-------------------</option>";
            
// Add options to social group list.
            
foreach ($othergroups as $socialgroup) {
              
$selected = ($groupid==$socialgroup['groupid']) ? 'selected="selected"' "";
              
$socialgrouplist .= "<option value=\"$socialgroup[groupid]\" $selected>$socialgroup[name]</option>";
            }
        } 

Clears up the error. Wouldn't be noticeable on an active site with different groups created.

Wild Bronco 05-04-2009 03:10 PM

Sounds nice ...

Is it thene possible to view all social group events on one Event calendar? To get a cleare look at all up coming events??

Or have a menu of calendar topics like Dog events, horse events, cat events etc ...

rEd86 05-08-2009 02:06 PM

Quote:

Originally Posted by theparentpack (Post 1789732)
I have imported the xml file and have not yet done the code edits. I noticed on my forums that when I click on a Group to see the Group's page, I get this message:

No Calendar specified. If you followed a valid link, please notify the administrator

When I disable the mod, I am able to click on a Group and be taken to it's page. Will this change once the edits are done? As much as I look forward to this hack, I can't commit to it if it prevents my members from checking out the groups.

I am experiencing the same problem for a Social Group I created after installing the product. (it's the first group of a virgin board that I am working on)

Let me know what you need from me to determine what's going on.

Thanks!

--Ed

Reeve of shinra 06-08-2009 03:34 AM

I just installed it and so far things look great. It's actually making the calendar useful!

chrisesposito 06-08-2009 04:35 AM

If I want to use a calendar besides the default, what do I use for a 'Calendar ID'? I tried the name 'Social Group Calendar' but that didn't appear to work, and I tried '1' (assuming the default calendar had an ID of 0) but the event listing refers to the default calendar name instead of the new one. :confused:

Thanks,
Chris

Reeve of shinra 06-08-2009 07:44 PM

Look in the calendar section of the admincp... if you create a new one it will take you to a screen which has all the calendar id's next to the calendar names.


All times are GMT. The time now is 04:53 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.01490 seconds
  • Memory Usage 1,927KB
  • 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
  • (4)bbcode_html_printable
  • (22)bbcode_php_printable
  • (5)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)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