##############################################################
## MOD Title: [Birthdays 2.0.1] Topic calendar Add-on
## MOD Author: TerraFrost < terrafrost@phpbb.com > (Jim Wigginton) http://www.frostjedi.com/terra/wordpress/
## MOD Description: Adds a Birthday field to v1.0.1 of Ptirhiik's Topic calendar MOD.
## MOD Version: 1.0.0
##
## Installation Level: Easy
## Installation Time: 7 Minutes
##
## Files To Edit: 3
## language/lang_english/lang_main.php
## templates/subSilver/calendar_overview_profil.tpl
## includes/functions_calendar.php
##
## Included Files: 0
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## For security purposes, please check: http://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at http://www.phpbb.com/mods/
##############################################################
## Author Notes:
##
## Intended for this MOD:
## http://www.phpbb.com/phpBB/viewtopic.php?t=150857
##
##############################################################
## MOD History:
##
## 2006-04-20 - Version 1.0.0
## - initial release
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['View_Birthdays'] = 'Happy Birthday!';
#
#-----[ BEFORE, ADD ]-----------------------------------
#
$lang['Age'] = 'Age';
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/calendar_overview_profil.tpl
#
#-----[ FIND ]------------------------------------------
#
{AVATAR} |
{L_AGE}: {AGE} |
#
#-----[ REPLACE WITH ]----------------------------------
#
{AVATAR} |
{L_AGE}: {AGE}
|
#
#-----[ OPEN ]------------------------------------------
#
includes/functions_calendar.php
#
#-----[ FIND ]------------------------------------------
#
function get_event_PCP_birthday(&$events, &$number, $start_date, $end_date, $limit=false, $start=0, $max_limit=-1)
{
global $template, $lang, $images, $userdata, $board_config, $db, $phpbb_root_path, $phpEx;
global $tree;
// init results
$number = 0;
if ($max_limit < 0)
{
$max_limit = $board_config['topics_per_page'];
}
// add birthday events (only with Profile Control Panel) for logged people eyes
if ($board_config['calendar_birthday'] && isset($lang['Happy_birthday']) && isset($userdata['user_birthday']) && ($userdata['user_id'] != ANONYMOUS))
{
// get start month
$sql_where = '';
$work_date = $start_date;
while ( intval(date('Ym', $work_date)) <= intval(date('Ym', $end_date)) )
{
$start_month = date('md', $work_date );
$end_month = date('m', $work_date) . '99';
if ( intval(date('Ym', $work_date)) == intval(date('Ym', $end_date)) )
{
$end_month = date('md', $end_date);
}
$sql_where .= !empty($sql_where) ? ' OR' : '';
$sql_where .= " ( RIGHT(u.user_birthday, 4) >= $start_month AND RIGHT(u.user_birthday, 4) < $end_month )";
// go to next month
$work_year = intval(date('Y', $work_date));
$work_month = intval(date('m', $work_date));
$work_month++;
if ($work_month > 12)
{
$work_month = 1;
$work_year++;
}
$work_date = mktime( 0,0,0, $work_month, 01, $work_year );
}
// select now profiles
if (!empty($sql_where))
{
$user_id = $userdata['user_id'];
$sql = "SELECT u.*,
(CASE WHEN b.buddy_ignore = 0 THEN 1 ELSE 0 END) as user_friend,
i.buddy_ignore AS user_ignore,
b.buddy_visible AS user_visible
FROM ((" . USERS_TABLE . " AS u
LEFT JOIN " . BUDDYS_TABLE . " AS b ON b.user_id=u.user_id AND b.buddy_id=$user_id)
LEFT JOIN " . BUDDYS_TABLE . " AS i ON i.user_id=$user_id AND i.buddy_id=u.user_id)
WHERE u.user_id <> " . ANONYMOUS . "
AND u.user_birthday <> 0
AND u.user_birthday <> ''
AND ( $sql_where )
ORDER BY username";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not read user table to get birthday today info', '', __LINE__, __FILE__, $sql);
}
// get the number of occurences
$number = $db->sql_numrows($result);
// if limit per page asked, limit the number of results
if ($limit)
{
$sql .= " LIMIT $start, $max_limit";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain topics information', '', __LINE__, __FILE__, $sql);
}
}
// read users
while ($row = $db->sql_fetchrow($result))
{
// user info
$user_id = $row['user_id'];
$username = $row['username'];
$user_birthday = $row['user_birthday'];
// get user relational status
$ignore = $row['user_ignore'];
$friend = $row['user_friend'];
$always_visible = $row['user_visible'];
// get the status of each info
$real_display = ( !$ignore && $userdata['user_allow_real'] && $row['user_allow_real'] && ( ($row['user_viewreal'] == YES) || ( ($row['user_viewreal'] == FRIEND_ONLY) && $friend ) ) );
// take care of admin status
if ( is_admin($userdata) || ($user_id == $userdata['user_id']) )
{
$real_display = true;
}
if ($real_display)
{
$txt_class = get_user_level_class($row['user_level'], 'genmed', $row);
if ($row['user_allow_viewonline'] != YES)
{
$username = '' . $username . '';
}
$username_link = append_sid($phpbb_root_path . "./profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
$event_month = intval(substr($user_birthday, 4, 2));
$event_day = intval(substr($user_birthday, 6, 2));
$start_month = intval(date('m', $start_date));
$event_year = intval(date('Y', $start_date));
if ($event_month < $start_month) $event_year++;
$event_time = mktime( 0,0,0, $event_month, $event_day, $event_year );
// build the overview
$sav_tpl = $template->_tpldata;
$det_handler = '_overview_profil_' . $user_id;
$template->set_filenames(array(
$det_handler => 'calendar_overview_profil.tpl')
);
$age = $event_year - intval(substr($user_birthday, 0, 4));
if ( intval(substr($user_birthday, 4, 4)) > intval(date('md', $event_time)) ) $age--;
if ($age <= 0) $age = '';
// avatar
$avatar_display = ( $userdata['user_viewavatar'] && $row['user_allowavatar'] );
if ( is_admin($userdata)|| ($view_user_id == $user_id) )
{
$avatar_display = true;
}
$avatar = '';
if ( $avatar_display && $row['user_avatar_type'] )
{
switch( $row['user_avatar_type'] )
{
case USER_AVATAR_UPLOAD:
$avatar = ( $board_config['allow_avatar_upload'] ) ? '
' : '';
break;
case USER_AVATAR_REMOTE:
$avatar = ( $board_config['allow_avatar_remote'] ) ? '
' : '';
break;
case USER_AVATAR_GALLERY:
$avatar = ( $board_config['allow_avatar_local'] ) ? '
' : '';
break;
}
}
$template->assign_vars(array(
'L_TITLE' => $lang['Happy_birthday'],
'L_USERNAME' => $username,
'TXT_CLASS' => $txt_class,
'L_AGE' => $lang['Age'],
'AVATAR' => $avatar,
'AGE' => $age,
)
);
$template->assign_var_from_handle('_calendar_overview', $det_handler);
$message = $template->_tpldata['.'][0]['_calendar_overview'];
$template->_tpldata = $sav_tpl;
// remove \n remaining from the template
$message = preg_replace("/[\n\r]{1,2}/", '', $message);
// store only the new values
$new_row = array();
$new_row['event_id'] = POST_USERS_URL . $user_id;
$new_row['event_author_id'] = $user_id;
$new_row['event_author'] = $username;
$new_row['event_time'] = $event_time;
$new_row['event_last_author_id'] = '';
$new_row['event_last_author'] = '';
$new_row['event_last_time'] = '';
$new_row['event_replies'] = '';
$new_row['event_views'] = '';
$new_row['event_type'] = POST_BIRTHDAY;
$new_row['event_vote'] = '';
$new_row['event_status'] = '';
$new_row['event_moved_id'] = '';
$new_row['event_last_id'] = '';
$new_row['event_forum_id'] = '';
$new_row['event_forum_name'] = '';
$new_row['event_icon'] = '';
$new_row['event_title'] = $username;
$new_row['event_short_title'] = $username;
$new_row['event_message'] = $message;
$new_row['event_calendar_time'] = $event_time;
$new_row['event_calendar_duration'] = '';
$new_row['event_link'] = $username_link;
$new_row['event_txt_class'] = $txt_class;
$new_row['event_type_icon'] = '
';
$events[] = $new_row;
}
}
}
}
}
#
#-----[ REPLACE WITH ]----------------------------------
#
function get_event_PCP_birthday(&$events, &$number, $start_date, $end_date, $limit=false, $start=0, $max_limit=-1)
{
global $template, $lang, $images, $userdata, $board_config, $db, $phpbb_root_path, $phpEx;
global $tree;
// init results
$number = 0;
if ($max_limit < 0)
{
$max_limit = $board_config['topics_per_page'];
}
$sql = "SELECT user_id, username, user_birthday, user_avatar, user_avatar_type
FROM " . USERS_TABLE . "
WHERE user_birthday >= " . gmdate('md0000',$start_date) . "
AND user_birthday <= " . gmdate('md9999',$end_date);
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not read user table to get birthday today info', '', __LINE__, __FILE__, $sql);
}
// get the number of occurences
$number = $db->sql_numrows($result);
// if limit per page asked, limit the number of results
if ($limit)
{
$sql .= " LIMIT $start, $max_limit";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain topics information', '', __LINE__, __FILE__, $sql);
}
}
// read users
while ($row = $db->sql_fetchrow($result))
{
// user info
$user_id = $row['user_id'];
$username = $row['username'];
$user_birthday = $row['user_birthday'];
//$txt_class = get_user_level_class($row['user_level'], 'genmed', $row);
if ($row['user_allow_viewonline'] != YES)
{
$username = '' . $username . '';
}
$username_link = append_sid($phpbb_root_path . "./profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
preg_match('/(..)(..)(....)/', sprintf('%08d',$userdata['user_birthday']), $bday_parts);
$event_month = $bday_parts[1];
$event_day = $bday_parts[2];
//$event_year = $bday_parts[3];
$start_month = intval(date('m', $start_date));
$event_year = intval(date('Y', $start_date));
if ($event_month < $start_month) $event_year++;
$event_time = mktime( 0,0,0, $event_month, $event_day, $event_year );
// build the overview
$sav_tpl = $template->_tpldata;
$det_handler = '_overview_profil_' . $user_id;
$template->set_filenames(array(
$det_handler => 'calendar_overview_profil.tpl')
);
$txt_class = 'genmed';
$bday_month_day = $event_month.$event_day;
$bday_year = $user_birthday - 10000*$bday_month_day;
$age = '';
if ( $bday_year )
{
$template->assign_block_vars('agerow',array());
$age = gmdate('Y')-$bday_year;
}
// avatar
$avatar_display = ( $userdata['user_viewavatar'] && $row['user_allowavatar'] );
if ( $userdata['user_level'] == ADMIN || ($view_user_id == $user_id) )
{
$avatar_display = true;
}
$avatar = '';
if ( $avatar_display && $row['user_avatar_type'] )
{
switch( $row['user_avatar_type'] )
{
case USER_AVATAR_UPLOAD:
$avatar = ( $board_config['allow_avatar_upload'] ) ? '
' : '';
break;
case USER_AVATAR_REMOTE:
$avatar = ( $board_config['allow_avatar_remote'] ) ? '
' : '';
break;
case USER_AVATAR_GALLERY:
$avatar = ( $board_config['allow_avatar_local'] ) ? '
' : '';
break;
}
}
$template->assign_vars(array(
'L_TITLE' => $lang['View_Birthdays'],
'L_USERNAME' => $username,
'TXT_CLASS' => $txt_class,
'AVATAR' => $avatar,
'L_AGE' => $lang['Age'],
'AGE' => $age,
)
);
$template->assign_var_from_handle('_calendar_overview', $det_handler);
$message = $template->_tpldata['.'][0]['_calendar_overview'];
$template->_tpldata = $sav_tpl;
// remove \n remaining from the template
$message = preg_replace("/[\n\r]{1,2}/", '', $message);
// store only the new values
$new_row = array();
$new_row['event_id'] = POST_USERS_URL . $user_id;
$new_row['event_author_id'] = $user_id;
$new_row['event_author'] = $username;
$new_row['event_time'] = $event_time;
$new_row['event_last_author_id'] = '';
$new_row['event_last_author'] = '';
$new_row['event_last_time'] = '';
$new_row['event_replies'] = '';
$new_row['event_views'] = '';
$new_row['event_type'] = POST_BIRTHDAY;
$new_row['event_vote'] = '';
$new_row['event_status'] = '';
$new_row['event_moved_id'] = '';
$new_row['event_last_id'] = '';
$new_row['event_forum_id'] = '';
$new_row['event_forum_name'] = '';
$new_row['event_icon'] = '';
$new_row['event_title'] = $username;
$new_row['event_short_title'] = $username;
$new_row['event_calendar_time'] = $event_time;
$new_row['event_calendar_duration'] = '';
$new_row['event_message'] = $message;
$new_row['event_link'] = $username_link;
$new_row['event_txt_class'] = $txt_class;
$new_row['event_type_icon'] = '
';
$events[] = $new_row;
}
}
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------
#
# EoM