To use this website completely, it is necessary to store cookies on your computer.
 

* Navigator

Expand - Collapse

* Statistic

  • *Total Posts: 16404
  • *Total Topics: 2518
  • *Online Today: 10
  • *Most Online: 292
(12. Nov 2016, 09:37:31)
  • *Users: 0
  • *Guests: 0
  • *Spiders: 2
  • *Total: 2

  • *Yahoo!
  • *Baidu

Calendar PHP block

Started by andu, 01. Jan 2009, 23:07:59

previous topic - next topic

0 Members and 0 Guests are viewing this topic.

Go Down

andu

01. Jan 2009, 23:07:59
Hi! I'm just looking for some codein php that work like this one:

See atachment below

I used to have it in TP with SMF 1.1.7.
Now with SMF2.0 it seems doesn't work. I guess is because it's another version but my programming knowledge isn't that good to see where it fails....

This one is nicer the one in the forums because is smaller and shows the birthdays and all the staff from the calendar..



[attachment deleted by admin]

andu

04. Jan 2009, 18:18:15 Last Edit: 05. Jan 2009, 13:06:07 by feline
taking some code and adding some of mine i've almost finshed it!!
;D
This is the code
Code Select
global $scripturl;   
         $now = mktime();
         $today = date('j',$now);
         $year = date("Y",$now);
         $month = date("n",$now);
         $days = array($today=>array(NULL,NULL,'<a class="smalltext" style="color: steelblue; font-weight: bold; border: solid 1px black; background-color: white; padding: 0px 1px 0px 1px;" href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.$today.'" target="_self">'.$today.'</a>'));

         $day_name_length = 2;
         $month_href = $scripturl . '?action=calendar';
         $first_day = 1;
         $pn = array();

$first_of_month = gmmktime(0,0,0,$month,1,$year);
#remember that mktime will automatically correct if invalid dates are entered
# for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
# this provides a built in "rounding" feature to generate_calendar()

$day_names = array(); #generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name

list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
$weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day
$title   = htmlentities(ucfirst($month_name)).' '.$year;  #note that some locales don't capitalize month and day names

#Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03
@list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable
if($p) $p = '<span class="smalltext">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span> ';
if($n) $n = ' <span class="smalltext">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>';
$calendar = '<table>'."\n".
'<caption >'.$p.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).$n."</caption>\n<tr>";

if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
#if day_name_length is >3, the full name of the day will be printed
foreach($day_names as $d)
$calendar .= '<th class="smalltext" abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}

if($weekday > 0) $calendar .= '<td class="smalltext" colspan="'.$weekday.'"> </td>'; #initial 'empty' days
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
if($weekday == 7){
$weekday   = 0; #start a new week
$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}
if(isset($days[$day]) and is_array($days[$day])){
@list($link, $classes, $content) = $days[$day];
if(is_null($content))  $content  = $day;
$calendar .= '<td "'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>';
}
else
{
$calendar .= "<td class=\"smalltext\" style=\"padding-right:1px;\"><a";
if(((($weekday+$first_day) % 7)==0)||((($weekday+$first_day) % 7)==6))
{
$calendar .= ' style="color:#C00000;"';
}
$calendar .= " href=\"".$scripturl."?action=calendar;sa=post;month=".$month.";year=".$year.";day=".$day."\" target=\"_self\">$day</a></td>";
}
}
if($weekday != 7) $calendar .= '<td class="smalltext" colspan="'.(7-$weekday).'"> </td>'; #remaining "empty" days

echo $calendar."</tr>\n</table>\n";

// Empieza a poner los detalles del calendario

$current_date   = getdate();
$month_number   = sprintf("%02d", $current_date['mon']);

$justify      = 'center';   // Valid options: 'left', 'center', or 'right'
$limit         = 0;      // Integer value for length of list

if(!empty($_GET['justify']))   $justify            = $_GET['justify'];
if(!empty($_GET['limit']))      $limit               = $_GET['limit'];
if(!empty($_GET['month']))      $month_number         = $_GET['month'];
if(!empty($_GET['day']))      $current_date['mday']   = $_GET['day'];

if($limit == 0)               $count               = -1;

global $smcFunc, $scripturl;

$query = $smcFunc['db_query']('', '
      SELECT id_member, member_name, birthdate
      FROM {db_prefix}members
      WHERE birthdate LIKE {string:likestr}     
      AND birthdate NOT LIKE {string:notlikestr}
      ORDER BY birthdate ASC',
   array(
      'likestr' => '%-%'. $month_number .'%-%',
      'notlikestr' => '0001-01-01',
   )
);

$holi = $smcFunc['db_query']('', '
      SELECT id_holiday, title, event_date
      FROM {db_prefix}calendar_holidays
      WHERE event_date LIKE {string:likestr}     
      AND event_date NOT LIKE {string:notlikestr}
      ORDER BY event_date ASC',
   array(
      'likestr' => '%-%'. $month_number .'%-%',
      'notlikestr' => '0001-01-01',
   )
);

$eve = $smcFunc['db_query']('', '
      SELECT id_event, start_date, end_date, id_topic, title
      FROM {db_prefix}calendar
      WHERE start_date LIKE {string:likestr}     
      AND start_date NOT LIKE {string:notlikestr}
      AND end_date LIKE {string:likestr}
      AND end_date NOT LIKE {string:notlikestr}
      ORDER BY start_date ASC',
   array(
      'likestr' => '%-%'. $month_number .'%-%',
      'notlikestr' => '0001-01-01',
   )
);


//Codigo birth

if($smcFunc['db_num_rows']($query) == 0)
   echo '<div class="smalltext" align="center"><hr><b>Nadie cumple años este mes</b><hr></div>';
else
{

echo '<div class="smalltext" align="center"><b>---Cumpleaños---</b></div>';

while(($row = $smcFunc['db_fetch_assoc']($query)) && ($count < $limit))
{
   if($limit != 0) $count++;
   
   $dob_year   = strtok($row['birthdate'], '-');
   $dob_month   = strtok('-');
   $dob_day   = strtok('-');
   $age      = sprintf("%2d", ($current_date['year'] - $dob_year));

   if($current_date['mday'] <= $dob_day)
   {
      if($current_date['mday'] == $dob_day)
      {
         $class   = 'highlight';
      }
      else
      {
         $class   = '';
      }
     
echo '
<div class="smalltext" align="center"><span class="'.$class.'">
  <span class="'.$class.'"><a href="' . $scripturl . '?action=calendar;year=' . $current_date['year'] .';month=' . $current_date['mon'] . '">' .$dob_day.'-'.$dob_month.'<a/>       <a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['member_name'] . '</a>   ('.$age.')
   </span>
</div>';
   }

}
$smcFunc['db_free_result']($query);
}

//Codigo holi

if($smcFunc['db_num_rows']($holi) == 0)
   echo '<div class="smalltext" align="center"><hr><b>No hay Festivos en este mes</b><hr></div>';
else
{

echo '<div class="smalltext" align="center"><b>---Festivos---</b></div>';

while(($row = $smcFunc['db_fetch_assoc']($holi)) && ($count < $limit))
{
   if($limit != 0) $count++;
   
   $dob_year   = strtok($row['event_date'], '-');
   $dob_month   = strtok('-');
   $dob_day   = strtok('-');
   $age      = sprintf("%2d", ($current_date['year'] - $dob_year));

   if($current_date['mday'] <= $dob_day)
   {
      if($current_date['mday'] == $dob_day)
      {
         $class   = 'highlight';
      }
      else
      {
         $class   = '';
      }
     
echo '
<div class="smalltext" align="center"><span class="'.$class.'">
  <span class="'.$class.'"><a href="' . $scripturl . '?action=calendar;year=' . $current_date['year'] .';month=' . $current_date['mon'] . '">' .$dob_day.'-'.$dob_month.'<a/>' . $row['title'] . '</a>
   </span>
</div>';
   }

}
$smcFunc['db_free_result']($holi);
}

//codigo event

if($smcFunc['db_num_rows']($eve) == 0)
   echo '<div class="smalltext" align="center"><hr><b>No hay Fiestas para este mes</b><hr></div>';
else
{

echo '<div class="smalltext" align="center"><b>---Fiestas---</b></div>';

while(($row = $smcFunc['db_fetch_assoc']($eve)) && ($count < $limit))
{
   if($limit != 0) $count++;
   
   $dob_year   = strtok($row['start_date'], '-');
   $dob_month   = strtok('-');
   $dob_day   = strtok('-');
   $dob_year   = strtok($row['end_date'], '-');
   $dob_month   = strtok('-');
   $dob_enday   = strtok('-');
   
   if(($current_date['mday'] <= $dob_day) || ($current_date['mday'] <= $dob_enday))
   {
      if(($current_date['mday'] >= $dob_day) && ($current_date['mday'] <= $dob_enday))
      {
         $class   = 'highlight';
      }
      else
      {
         $class   = '';
      }
     
if($dob_day == $dob_enday)
{
echo '
<div class="smalltext" align="center"><span class="'.$class.'">
  <span class="'.$class.'"><a href="' . $scripturl . '?action=calendar;year=' . $current_date['year'] .';month=' . $current_date['mon'] . '">' .$dob_day.'-'.$dob_month.'<a/>       <a href="' . $scripturl . '?topic=' . $row['id_topic'] . '">' . $row['title'] . '</a>
    </span>
</div>';

}
else 
{
echo '
<div class="smalltext" align="center"><span class="'.$class.'">
  <span class="'.$class.'"><a href="' . $scripturl . '?action=calendar;year=' . $current_date['year'] .';month=' . $current_date['mon'] . '">' .$dob_day.' al '.$dob_enday.'-'.$dob_month.'<a/>       <a href="' . $scripturl . '?topic=' . $row['id_topic'] . '">' . $row['title'] . '</a>
  </span>
</div>';

}
  }
 
}
$smcFunc['db_free_result']($eve);
}


This will show the calendar (small) and the events on this month. Also will link to the profile in case os birthday or to the topic in case of event.

I don't understand very well the code that shows the calendar.. Is there eny chance to make it show in bold the days that got any event?

Cheers  :D

Demon Slushy

#2
04. Jan 2009, 18:51:41
Parse errors =0

In the original code looks like they should already be in bold... if I'm looking at it right.

andu

#3
04. Jan 2009, 19:24:06
I'm sorry i didn't explain myself. I mean in the calendar the day show it hightlight or another color.

In the text that advise about the event it comes up hightlighted.

But is it possible to dothe same in the days in the calendar?

Many thanks!!

Demon Slushy

#4
04. Jan 2009, 20:22:28
Code Select

<span style="background:#ffff00; color:#000000;">What you want highlighted here</span>


???

andu

#5
04. Jan 2009, 21:24:53
Sorry i didn't explain myself properly. I mean (look the image) the event comes hightlighted.
I'd like to show the days hightleghted as well. Is it possible?'

[attachment deleted by admin]

Demon Slushy

#6
04. Jan 2009, 21:59:32
I didn't find out how yet but I'm playing around with it. If I figure it out I'll post.

I did notice though you have

Code Select

[/url] <a/>


which needs to be changed too

Code Select

</a>


In the original text you posted there is code to do what you want, you could just add it into your new code?

andu

#7
05. Jan 2009, 08:53:10
Quote from: Demon Slushy on 04. Jan 2009, 21:59:32
I didn't find out how yet but I'm playing around with it. If I figure it out I'll post.

I did notice though you have

Code Select

[/url] <a/>


which needs to be changed too

Code Select

</a>


In the original text you posted there is code to do what you want, you could just add it into your new code?


:-\ No actually  I can't.

What i'd like to do is to:
Example:

  • form 2 to 4 on January there are some events. They show hightlighted under the calendar that's ok. But IN the calendar the days aren't hightlighted so they look like any other day. So if is possible i'd like to make them hightlighted when some event happens that day.



Is it possible to make every day in the calendar hightlighted in the same way than the text above? Only when there is an event going on?

Regards!!!

PD: I'm sorry because of my poor english. I'm spanish and i'm learning the languaje but i guess is not good enough yet.

feline

#8
05. Jan 2009, 16:57:57
Here a complete "Mini Calendar" for SMF 2.0 in a PortaMx php block.  ::)

This need NO database query and uses all the settings from SMF.
The first Day in the Calendar is set according the Memberprofile (First day of the week on the calendar).
Sample Image attached ...

Copy the follow code in a php block and save it.

Code removed .. see post: http://portamx.com/code-snippets/calendar-php-block/msg2237/#msg2237

Fel
Many are stubborn in relation to the path, a few in relation to the target.

andu

#9
05. Jan 2009, 18:42:59
 :D
Man you are GREAT!!

This is perfect!!

This should be included as block with the next release  ;)

Cool

#10
05. Jan 2009, 19:04:46
huhh...yes she is...
unfortunately feline allready is married... otherwise i would do!(oooops...now my wife is killing me)
|I Use: SMF 2.0.5 | PortaMx 1.51
Q: What do you do when you see a bear in the woods?
A: Play Dead!
H-A-H-L = Happy Admins Have Linux

andu

#11
05. Jan 2009, 20:03:45
Sorry I didn't see her gender...

Anyway Fel you are great however!!

edi67

#12
06. Jan 2009, 18:14:57
Work perfectly but a lot of error Log cause:

Code Select
8: Undefined index: cal_holidaycolor
8: Undefined variable: class_today
8: Undefined offset: 92
8: Undefined index: cal_eventcolor
8: Undefined index: color
File: /membri/ediboard/Themes/default/Errors.template.php (eval?)
Riga: 493


and many more, in diferente Line, if i Disable Block errors disappear is i re-enable it again appear

some solution ?

i see global funcion already wrote in code but nothing :(

andu

#13
06. Jan 2009, 18:45:38
I think the only errors coming from the calendar are those:
Quote8: Undefined index: cal_holidaycolor
8: Undefined variable: class_today
8: Undefined index: cal_eventcolor


That's becasue in the calendar it look s for that colours in setting, but SMF 2.0 doesn't have them. So is enough if you edit the color that point to those variables(search for those names in the main code)
Regards!

feline

07. Jan 2009, 00:07:03 Last Edit: 20. Mar 2009, 11:16:29 by feline
I have reworked the code ..  now it works without errors  8)

Also I have changed a lot of settings ..

The event, holiday and birthday colors are used from the current theme css classes.
You can use you own styles and / or classes for all the highlights.

Here the php code:
Code Select

/******************************************************************************************
* 'Mini' Calendar in phpblock -                                                           *
*                                                                                         *
* Program Parameters/Switches can be specified to change what is displayed and how.       *
*   If highlighting is turned on, only the types of entries which are selected to         *
*   be shown will be highlighted (and have to be shown to guests for guests to see        *
*   highlights). If option of linking the day numbers to calendar event posting form      *
*   is chosen ($date_links_to_posting = true), SMF permissions are in effect and only     *
*   those allowed to post events to the calendar will have this link in effect. For       *
*   $date_links_to_posting = false, and for those not permitted to post events, day       *
*   numbers will link to the full SMF Calendar page. Additionally, if option to show      *
*   a separate 'Post Event' button is chosen ($show_post_event_button = true), it will    *
*   only show for those permitted to post events to the calendar.                         *
*                                                                                         *
* Look for 'NON-ENGLISH' to see section for changing language. This is actually more      *
*   correctly referred to as 'language other than server default' as this Calendar will   *
*   use the server's default LOCALE language for Month and Day names unless overides      *
*   are specified in the code section labeled 'NON-ENGLISH  LABELS, MONTH & DAY NAMES',   *
*   below.                                                                                *
*                                                                                         *
* Once a given day is highlighted, the highlight will not be supplanted. That means       *
*   you may want to modify the order in which highlights are applied in order to set      *
*   desired 'precedence' (i.e. if b-days highlights are applied first, once a given       *
*   day is highlighted with b-day color, it will not be changed to be highlighted         *
*   with event color if an event occurs on the same day; you need to choose an order      *
*   of precedence and sequence the highlighting accordingly by changing the sequence      *
*   of sections in the $order_hilites array. Highlighting will be done in the given       *
*   order.                                                                                *
*                                                                                         *
* Also, if you want the individual B-day/Event/Holiday sections to be ordered in a        *
*   different sequence, you need to change the sequence of entries in the $order_lists    *
*   array.                                                                                *
*                                                                                         *
* Examples of highlighting can be seen in the section 'Highlight colors & backgrounds'    *
*   below. As given, highlighting is done by applying the admin specified calendar        *
*   entry color to the date, bolded, on the default background. Commented example given   *
*   of using bold white on a background box of the admin specified calendar entry color.  *
******************************************************************************************/
global $scripturl, $modSettings, $options, $context, $user_info, $sourcedir, $txt;

// Program Paramters/Switches Section

// use forum's date/time
// include user's time offset to forum date/time
$now = mktime() + (($user_info['time_offset'] + $modSettings['time_offset']) * 3600);

// Order to do highlightling - earlier have precedence
$order_hilites = array('Birthdays', 'Events', 'Holidays');

// Order to show calendar entry lists
$order_lists = array('Birthdays', 'Events', 'Holidays');

// Alignment of calendar entry lists
$align_list_entries = 'left';

// Use 'bordercolor' class for 'gridlines' (table background)
$bordercolor_gridlines = false; // Will 'show through' between table cells to act as 'grid lines'
$gridlines_thickness = 2;       // Pixel thickness for table "cellspacing" - only used w/ $bordercolor_gridlines = true;

// Letters to show on calendar for names of each of the days
$day_name_length = 2;

// Selection for first day of the week: 0-Sunday; 1-Monday
$first_day = !empty($options['calendar_start_day']) ? $options['calendar_start_day'] : 0;

// Show B-Day list at all / to guests
$show_bdays = true;
$show_bdays_to_guests = false;

// Show Event list at all / to guests
$show_events = true;
$show_events_to_guests = true;

// Show Holiday list at all / to guests
$show_hdays = true;
$show_hdays_to_guests = true;

// If true, calendar date numbers link to calendar event posting form
// if not, links to full calendar page
$date_links_to_posting = true;

// Adds 'Post Event' button to bottom of block
$show_post_event_button = false;

// Highlight events, b-days, holidays (only if they're selected to show at all)
$show_hilites = true;

// Colors for saturday & sunday
$color_sunday = '#D00000';    // comment out to use default text colors -
$color_saturday = '#D00000';  //   can use hex codes with leading '#'

// Style to use for 'Today' highlight (color & background)
// example:
//  'color:#ff0000; background-color:#ffffff;';
$style_today = 'color:steelblue; font-weight:bold;';
// and / or
// Class to use for 'Today' highlight
$class_today = 'tborder';

// Default class to use when no other class specified
$class_default = 'windowbg';

// Class to use for column top day names
$class_day_names = '';  // Ex.: titlebg, catbg, catbg2, catbg3, windowbg, windowbg2, windowbg3

// Class for 'cells' holding text labels on calendar entry lists
$list_label_class = 'bordercolor'; // Ex.: titlebg, catbg, catbg2, catbg3, windowbg, windowbg2, windowbg3

// Class for 'cells' holding calendar entry lists
//   use regular variable for all same class
//   use two-member array to alternate between the two
// examples:
//  $list_entry_class = 'windowbg';
//  $list_entry_class = array('windowbg2','windowbg3');
$list_entry_class = '';

// Highlight style (colors & backgrounds & font)
// example:
//  'font-weight:bold; color:#ff0000; background-color:#ffffff;';
// and / or
// Highlight class (a existing class name)
// example:
//  'myclassname';
$hilite_bday_style = 'font-weight:bold;';
$hilite_bday_class = 'birthday'; // default style

$hilite_hday_style = 'font-weight:bold;';
$hilite_hday_class = 'holiday'; // default style

$hilite_event_style = 'font-weight:bold;';
$hilite_event_class = 'event'; // default style

// Choose to show 'look-behind' for the various entry types
$show_bdays_past = false;
$show_events_past = false;
$show_hdays_past = false;

// For any of the above chosen, days prior to today to display -
//    use '0' (zero) to use beginning of current month
$past_look_behind_period = 0;

// Non-English Labels, Month and Day Names
// To use Month and Day names other than the default on your server,
//   remove the two asterisk '*******' lines (the first starts with '/***'
//   and the second ends '***/') and supply the List Section Labels and the
//   Month and Day names to use per instructions below.
$list_label_bdays = 'Birthdays';  // Change to labels in language of choice
$list_label_events = 'Events';
$list_label_hdays = 'Holidays';
// $list_label_bdays = 'Cumpleaños'; 
// $list_label_events = 'Fiestas';
// $list_label_hdays = 'Festivos';

// specify all the day names in desired language
// The Startday is set according the Firstday in the Member profile
$day_names = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
// $day_names = array('Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado');

// setup the day_names array according the Memberprofile
$i = $first_day;
while(!empty($i))
{
$fd = array_shift($day_names);
array_push($day_names, $fd);
$i--;
}

// specify the month names in desired language
$month_nam = array();
$month_nam['01'] = 'January';       
$month_nam['02'] = 'February';
$month_nam['03'] = 'March';
$month_nam['04'] = 'April';
$month_nam['05'] = 'May';
$month_nam['06'] = 'June';
$month_nam['07'] = 'July';
$month_nam['08'] = 'August';
$month_nam['09'] = 'September';
$month_nam['10'] = 'October';
$month_nam['11'] = 'November';
$month_nam['12'] = 'December';

// $month_nam['01'] = 'Enero';       
// $month_nam['02'] = 'Febrero';
// $month_nam['03'] = 'Marzo';
// $month_nam['04'] = 'Abril';
// $month_nam['05'] = 'Mayo';
// $month_nam['06'] = 'Junio';
// $month_nam['07'] = 'Julio';
// $month_nam['08'] = 'Agosto';
// $month_nam['09'] = 'Septiembre';
// $month_nam['10'] = 'Octubre';
// $month_nam['11'] = 'Noviembre';
// $month_nam['12'] = 'Diciembre';

$month_name = $month_nam[date('m',$now)];
//NAMES (end)

//  Program Paramters/Switches Section - End
//    (modify below at your own risk!!!)

if (empty($class_default))
$class_default = 'windowbg';

if (empty($hilite_bday_style))
$hilite_bday_class = $class_default;

if (empty($hilite_hday_class))
$hilite_hday_class = $class_default;

if (empty($hilite_event_class))
$hilite_event_class = $class_default;

$table_bkgrd = 'class="'.$class_default.'" cellspacing="1" cellpadding="1" style="margin:0 auto; text-align:center;"';
if ($bordercolor_gridlines)
$table_bkgrd = 'class="bordercolor" cellspacing="'.$gridlines_thickness.'" cellpadding="1" style="margin:0 auto; text-align:center;"';

$today = strftime('%d', $now);
$year = date('Y',$now);
$month = date('n',$now);
$nowdate = strftime('%Y-%m-%d', $now);

$month_href = $scripturl . '?action=calendar;year='.$year.';month='.$month;

require_once($sourcedir . '/Subs-Calendar.php');

$low_date_base = strftime('%Y-%m-%d', $now - 24 * 3600);
$high_date_base = strftime('%Y-%m-%d', $now + $modSettings['cal_days_for_index'] * 24 * 3600);

$low_date = ($show_bdays_past || $show_events_past || $show_hdays_past) ? ( ($past_look_behind_period == 0) ? date('Y',$now).'-'.date('m',$now).'-01' : strftime('%Y-%m-%d', $now - (($past_look_behind_period + 1) * 24 * 3600)) ) : $low_date_base;
$high_date = $high_date_base;
$low_date_ts = strtotime($low_date);

if ($show_bdays)
{
$bdays = $show_bdays_past ? getBirthdayRange($low_date, $high_date) : getBirthdayRange($low_date_base, $high_date);
ksort($bdays);
}

if ($show_events)
{
$events = $show_events_past ? getEventRange($low_date, $high_date, false) : getEventRange($low_date_base, $high_date, false);
ksort($events);
}

if ($show_hdays)
{
$holidays = $show_hdays_past ? getHolidayRange($low_date, $high_date) : getHolidayRange($low_date_base, $high_date);
ksort($holidays);
}

$stub = '<a class="smalltext" style="'.$style_today.'padding: 0px 2px 0px 2px;"';
// Highlighted 'Today' Box
if ($date_links_to_posting && allowedTo('calendar_post'))
$days = array($today => array(NULL, $class_today, $stub.' href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.$today.'" target="_self">'.date('j',$now).'</a>'));
else
$days = array($today => array(NULL, $class_today, $stub.' href="'.htmlspecialchars($month_href).'" target="_self">'.date('j',$now).'</a>'));

// HIGHLIGHTING (start)
if ($show_hilites)
{
foreach($order_hilites as $hilite_to_do)
{
$flag = strtoupper(substr($hilite_to_do,0,1));

// B-Day Highlighting
if ($flag == 'B')
{
if ($show_bdays)
{
if ($show_bdays_to_guests || !$user_info['is_guest'])
{
$stub = '<a class="smalltext" style="'. $hilite_bday_style .'padding: 0px 2px 0px 2px;"';
foreach($bdays as $startdate => $value)
{
if(!isset($days[substr($startdate,8)]) || !is_array($days[substr($startdate,8)]))
{
if (substr($startdate,0,7) == substr($nowdate,0,7))
{
if ($date_links_to_posting && allowedTo('calendar_post'))
$days[substr($startdate,8)] = array(NULL, $hilite_bday_class, $stub.' href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.substr($startdate,8).'" target="_self"><span class="'.$hilite_bday_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
else
$days[substr($startdate,8)] = array(NULL, $hilite_bday_class, $stub.' href="'.htmlspecialchars($month_href).'" target="_self"><span class="'.$hilite_bday_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
}
}
}
}
}
}

// Event Highlighting
if ($flag == 'E')
{
if ($show_events)
{
if ($show_events_to_guests || !$user_info['is_guest'])
{
$stub = '<a class="smalltext" style="'. $hilite_event_style .'padding: 0px 2px 0px 2px;"';
foreach($events as $startdate => $value)
{
if(!isset($days[substr($startdate,8)]) || !is_array($days[substr($startdate,8)]))
{
if (substr($startdate,0,7) == substr($nowdate,0,7))
{
if ($date_links_to_posting && allowedTo('calendar_post'))
$days[substr($startdate,8)] = array(NULL, $hilite_event_class, $stub.' href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.substr($startdate,8).'" target="_self"><span class="'.$hilite_event_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
else
$days[substr($startdate,8)] = array(NULL, $hilite_event_class, $stub.' href="'.htmlspecialchars($month_href).'" target="_self"><span class="'.$hilite_event_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
}
}
}
}
}
}

// Holiday Highlighting
if ($flag == 'H')
{
if ($show_hdays)
{
if ($show_hdays_to_guests || !$user_info['is_guest'])
{
$stub = '<a class="smalltext" style="'. $hilite_hday_style .'padding: 0px 2px 0px 2px;"';
foreach($holidays as $startdate => $value)
{
if (!isset($days[substr($startdate,8)]) || !is_array($days[substr($startdate,8)]))
{
if (substr($startdate,0,7) == substr($nowdate,0,7))
{
if ($date_links_to_posting && allowedTo('calendar_post'))
$days[substr($startdate,8)] = array(NULL, $hilite_hday_class, $stub.' href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.substr($startdate,8).'" target="_self"><span class="'.$hilite_hday_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
else
$days[substr($startdate,8)] = array(NULL, $hilite_hday_class, $stub.' href="'.htmlspecialchars($month_href).'" target="_self"><span class="'.$hilite_hday_class.'">'.sprintf('%d',substr($startdate,8)).'</span></a>');
}
}
}
}
}
}
}
}
// HIGHLIGHTING (end)

$first_of_month = gmmktime(0,0,0,$month,1,$year);
list($month, $year, $weekday) = explode(',',gmstrftime('%m,%Y,%w',$first_of_month));

if (!isset($month_nam['12']))
{
$day_names = array();                                      // generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400)    // January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t));           // %A means full textual day name
list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
}

$weekday = ($weekday + 7 - $first_day) % 7;                // adjust for $first_day
$title   = htmlentities(ucfirst($month_name)).' '.$year;   // note that some locales don't capitalize month and day names

$calendar = '<table '.$table_bkgrd.'>'.'<caption >'.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).'</caption><tr>';

if (empty($class_day_names))
$class_day_names = $class_default;

if($day_name_length)
{                                      #if the day names should be shown ($day_name_length > 0)
foreach($day_names as $d)
$calendar .= '<th class="'.$class_day_names.' smalltext" align="center" valign="middle" abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
$calendar .= '</tr><tr style="text-align:right;">';
}

if($weekday > 0)
$calendar .= '<td class="'.$class_default.'" colspan="'.$weekday.'"> </td>'; #initial 'empty' days

for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++)
{
if($weekday == 7)
{
$weekday   = 0; #start a new week
$calendar .= '</tr><tr style="text-align:right;">';
}

$daynow = sprintf('%02d',$day);
$col_width = ' width="14%"';
if (((($weekday+$first_day) % 7) == 0) || ((($weekday+$first_day) % 7) == 0))
$col_width = ' width="15%"';

if(isset($days[$daynow]) && is_array($days[$daynow]))
{
@list($link, $classes, $content) = $days[$daynow];
if(is_null($content)) 
$content  = $daynow;
$calendar .= '<td'.$col_width.' align="center" valign="middle" '.($classes ? ' class="'.htmlspecialchars($classes).'" style="padding: 0px 0px 0px 0px;font-size: x-small;">' : '>').($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>';
}
else
{
$calendar .= '<td'.$col_width.' class="'.$class_default.'" align="center" valign="middle" style="padding: 0px 0px 0px 0px;font-size: x-small;"><a class="smalltext"';
if (((($weekday+$first_day) % 7) == 0) && isset($color_sunday))
$calendar .= ' style="color:'.$color_sunday.';"';
if (((($weekday+$first_day) % 7) == 6) && isset($color_saturday))
$calendar .= ' style="color:'.$color_saturday.';"';
if ($date_links_to_posting && allowedTo('calendar_post'))
$calendar .= ' href="'.$scripturl.'?action=calendar;sa=post;month='.$month.';year='.$year.';day='.$day.'" target="_self">'.$day.'</a></td>';
else
$calendar .= ' href="'.htmlspecialchars($month_href).'" target="_self">'.$day.'</a></td>';
}
}

if($weekday != 7)
$calendar .= '<td class="'.$class_default.'" colspan="'.(7-$weekday).'"> </td>'; #remaining "empty" days

echo $calendar.'</tr>';

foreach($order_lists as $list_to_do)
{
$flag = strtoupper(substr($list_to_do,0,1));

if (!isset($align_list_entries))
$align_list_entries = 'center';
elseif ($align_list_entries <> 'left')
$align_list_entries = 'center';

if (empty($list_label_class))
$list_label_class = $class_default;

if (empty($list_entry_class))
$list_entry_class = $class_default;

// BIRTHDAY SECTION
if(($flag == 'B') && $show_bdays)
{
if($show_bdays_to_guests || !$user_info['is_guest'])
{
if (!empty($bdays))
{
echo '<tr'. (isset($list_label_class) ? ' class="'.$list_label_class.'"' : '') .'><td colspan="7" class="smalltext" align="center" style="font-weight: bold;">'.$list_label_bdays.'</td></tr>';
$ctr = 0;

foreach($bdays as $startdate => $bday_date)
{
if (($startdate >= strftime('%Y-%m-%d', $low_date_ts)) && ($startdate <= strftime('%Y-%m-%d', $now + $modSettings['cal_days_for_index'] * 24 * 3600)))
{
foreach ($bday_date as $member)
{
$class_to_use = isset($list_entry_class) ? ( !is_array($list_entry_class) ? ' class="'.$list_entry_class.'"' : ' class="'.$list_entry_class[($ctr++) % count($list_entry_class)].'"') : '';
$birthdate = strtotime($startdate);
$text_start = !isset($month_nam['12']) ? date("M j",$birthdate) : substr($month_nam[strftime('%m', $birthdate)],0,3) . date(" j",$birthdate);

echo '<tr'.$class_to_use.'><td colspan="7" class="smalltext" style="padding: 0px 0px 0px 0px;" width="100%" align="'.$align_list_entries.'">';
echo '<a href="', $scripturl, '?action=calendar;year=' . date("Y") . ';month=' . substr($startdate,5,2) . '"><strong>' . $text_start . ':</strong></a> ';
echo '<a href="' . $scripturl . '?action=profile;u=' . $member['id'] . '" title="' . $txt['profile_of'] . ' ' . $member['name'] . '">' . '<span class="'.$hilite_bday_class.'">' . ( ($nowdate == $startdate) ? '<b>' : '') . $member['name'] . (isset($member['age']) ? '(' . $member['age'] . ')' : '') . ( ($nowdate == $startdate) ? '</b>' : '') . '</span>' . '</a>';
echo '</td></tr>';
}
}
}
}
}
}

// EVENTS SECTION
if(($flag == 'E') && $show_events)
{
if($show_events_to_guests || !$user_info['is_guest'])
{
if (!empty($events))
{
$events_printed = array();
echo '<tr'. (isset($list_label_class) ? ' class="'.$list_label_class.'"' : '') .'><td colspan="7" class="smalltext" align="center" style="font-weight: bold;">'.$list_label_events.'</td></tr>';
$ctr = 0;

foreach ($events as $startdate => $evt_date)
{
if (($startdate >= strftime('%Y-%m-%d', $low_date_ts)) && ($startdate <= strftime('%Y-%m-%d', $now + $modSettings['cal_days_for_index'] * 24 * 3600)))
{
foreach ($evt_date as $event)
{
if (!in_array($event['id'],$events_printed))
{
$events_printed[] = $event['id'];
$class_to_use = isset($list_entry_class) ? ( !is_array($list_entry_class) ? ' class="'.$list_entry_class.'"' : ' class="'.$list_entry_class[($ctr++) % count($list_entry_class)].'"') : '';

$evt_start = strtotime($event['start_date']);
$evt_end = strtotime($event['end_date']);
$text_start = !isset($month_nam['12']) ? date("M j",$evt_start) : substr($month_nam[strftime('%m', $evt_start)],0,3) . date(" j",$evt_start);
$text_end = ($event['start_date'] == $event['end_date'] ? '' : '-'. (substr($event['start_date'],5,2) == substr($event['end_date'],5,2) ? date("j",$evt_end) : (!isset($month_nam['12']) ? date("M j",$evt_end) : substr($month_nam[strftime('%m', $evt_start)],0,3) . date(" j",$evt_start))));

$link = $event['topic'] == 0 ? '<span class="'.$hilite_event_class.'">'. $event['title'] .'</span>' : '<a href="' . $scripturl . '?topic=' . $event['topic'] . '.0' . '"><span class="'.$hilite_event_class.'">' . $event['title'] . '</span></a>';

echo '<tr'.$class_to_use.'><td colspan="7" class="smalltext" style="padding: 0px 0px 0px 0px;" width="100%" align="'.$align_list_entries.'">';
echo '<a href="', $scripturl, '?action=calendar;year=' . date("Y") . ';month=' . substr($startdate,5,2) . '"><strong>' . $text_start . $text_end . ':</strong></a> ';
echo  ( ($nowdate >= $event['start_date']) && ($event['end_date'] >= $nowdate) ) ? '<b>'.$link.'</b>' : $link;
echo '</td></tr>';
}
}
}
}
}
}
}

// HOLIDAY SECTION
if(($flag == 'H') && $show_hdays)
{
if($show_hdays_to_guests || !$user_info['is_guest'])
{
if (!empty($holidays))
{
echo '<tr'. (isset($list_label_class) ? ' class="'.$list_label_class.'"' : '') .'><td colspan="7" class="smalltext" align="center" style="font-weight: bold;">'.$list_label_hdays.'</td></tr>';
$ctr = 0;

foreach ($holidays as $hDate => $hday)
{
if (($hDate >= strftime('%Y-%m-%d', $low_date_ts)) && ($hDate <= strftime('%Y-%m-%d', $now + $modSettings['cal_days_for_index'] * 24 * 3600)))
{
$eventdate = strtotime(date("Y").substr($hDate, 4));
foreach ($hday as $holiday)
{
$class_to_use = isset($list_entry_class) ? ( !is_array($list_entry_class) ? ' class="'.$list_entry_class.'"' : ' class="'.$list_entry_class[($ctr++) % count($list_entry_class)].'"') : '';
$text_start = !isset($month_nam['12']) ? date("M j",$eventdate) : substr($month_nam[strftime('%m', $eventdate)],0,3) . date(" j",$eventdate);

echo '<tr'.$class_to_use.'><td colspan="7" class="smalltext" style="padding: 0px 0px 0px 0px;" width="100%" align="'.$align_list_entries.'">';
echo '<a href="', $scripturl, '?action=calendar;year=' . date("Y") . ';month=' . substr($startdate,5,2) . '"><strong>' . $text_start . ':</strong></a> ';
echo '<span class="'.$hilite_hday_class.'">'.$holiday.'</span>';
echo '</td></tr>';
}
}
}
}
}
}
}

if ($show_post_event_button)
{
if (allowedTo('calendar_post'))
{
echo '<tr><td colspan="7" class="'.$class_default.'" align="center" valign="middle">';
echo '<hr/ >';
echo '<a href="', $scripturl,  '?action=calendar;sa=post;month=', $month, ';year=', $year, ';sesc=', $context['session_id'], '">','<br />', create_button('calendarpe.gif', 'calendar23', 'calendar23', 'align="middle"'), '</a>';
echo '</td></tr>';
}
}

echo '</table>';


See attached image from above code.

Fel

[attachment deleted by admin]
Many are stubborn in relation to the path, a few in relation to the target.

Go Up