PHP Classes

File: index.php

Recommend this page to a friend!
  Classes of Ken Stanley   Class Calendar   index.php   Download  
File: index.php
Role: Example script
Content type: text/plain
Description: Advanced Usage Example
Class: Class Calendar
Generate month calendar arrays
Author: By
Last change: Updated to reflect version change.
Date: 19 years ago
Size: 10,229 bytes
 

Contents

Class file image Download
<?php
/******************************************************************************/
/* class_calendar.php: Gregorian calendar to easily create calendars. */
/* Copyright (C) 2005 Ken Stanley <phpclasses@kennethpaul.com> */
/* */
/* This library is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU Lesser General Public */
/* License as published by the Free Software Foundation; either */
/* version 2.1 of the License, or (at your option) any later version. */
/* */
/* This library is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */
/* Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public */
/* License along with this library; if not, write to the Free Software */
/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/******************************************************************************/
   
include_once('class_calendar.php');

   
/* Check to see if the user requested a specific language */
   
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'en';

   
/* Create the class object */
   
$cal = new calendar($lang);

   
/* Pad all digits less than ten with a leading zero */
   
$cal->pad_dates = TRUE;

   
/* This sets an upper and lower limit for the year */
   
$cal->min_year = 1977;
   
$cal->max_year = 2007;

   
/* Set the current month, day and year; either use requested date or today's date */
   
$cal->month = (isset($_GET['month']) ? $_GET['month'] : date("m"));
   
$cal->day = (isset($_GET['day']) ? $_GET['day'] : date("d"));
   
$cal->year = (isset($_GET['year']) ? $_GET['year'] : date("Y"));

   
/* Validate the date we have to ensure it falls within our parameters */
   
$cal->valid_date($cal->month, $cal->day, $cal->year);

   
/* Create the array that contains the requested month */
   
$cal->month_array = $cal->get_month($cal->month, $cal->year);

   
/* Get the length of the requested month */
   
$cal->month_length = $cal->month_length($cal->month, $cal->year);

   
/* This array holds the day name and the month name */
   
$cal->name = array(
       
'day' => $cal->day_name($cal->get_day($cal->month, $cal->day, $cal->year)),
       
'month' => $cal->month_name($cal->month)
    );

   
/* Check to see if the user requested to view the events for a given date */
   
$get_events = (isset($_GET['ge']) && is_numeric($_GET['ge'])) ? $_GET['ge'] : 0;

   
/* Check to see if the user requested to store an event */
   
$add_event = (isset($_POST['e'])) ? $_POST['e'] : NULL;

   
/* Add the event to the SQLite database */
   
if (!is_null($add_event)) {
       
$cal->add_event($cal->month, $cal->day, $cal->year, $add_event);
    }

   
/* Check to see if the user requested to delete an event */
   
$del_event = (isset($_POST['d'])) ? $_POST['d'] : NULL;

    if (!
is_null($del_event)) {
       
$cal->del_event($del_event);
    }

   
/* Cycle through all possible parameters and build a query string for the forms;
       this ensures consistency for the end-user */
   
$query_string = '';

    if (isset(
$_GET) && (sizeof($_GET) > 0)) {
       
$query_string .= '?';
    }

    if (isset(
$cal->month) && is_numeric($cal->month)) {
       
$query_string .= "month=" . $cal->month;
    }

    if (isset(
$cal->day) && is_numeric($cal->day)) {
       
$query_string .= "&day=" . $cal->day;
    }

    if (isset(
$cal->year) && is_numeric($cal->year)) {
       
$query_string .= "&year=" . $cal->year;
    }

    if (isset(
$get_events) && is_numeric($get_events)) {
       
$query_string .= "&ge=" . $get_events;
    }

    if (isset(
$lang) && is_string($lang)) {
       
$query_string .= "&lang=" . $lang;
    }
   
/* End building query_string */
?>
<html lang="en">
 <head>
  <title>Calendar: <?php printf("%s, %s %s, %s", $cal->name['day'], $cal->name['month'], $cal->day, $cal->year);?></title>
  <meta http-equiv="Pragma" content="No-cache">
  <style type="text/css" media="screen">
BODY, FORM {
    background-color: white; color: black;
    font-size: 12px;
    margin: 0; padding: 0;
}

#CAL {
    border: 1px solid black;
    background-color: darkred;
}

#CAL A.DAY:LINK, #CAL A.DAY:VISITED {
    display: block;
    width: 100%; height: 100%;
    color: red;
    font-weight: bolder;
    text-decoration: none;
}

#CAL A.DAY:HOVER {
    background-color: red;
    color: white;
}

#CAL A.NORMAL:LINK, #CAL A.NORMAL:VISITED {
    color: red;
}

#CAL A.NORMAL:HOVER {
    color: white;
    background-color: red;
}

#CAL .HEADER {
    background-color: white; color: black;
    font-weight: bolder;
    border-bottom: 1px solid black;
    padding: 2px 4px 2px 4px;
}

#CAL .FOOTER {
    background-color: white; color: black;
    font-weight: bolder;
    border-top: 1px solid black;
    padding: 2px 4px 2px 4px;
}

#CAL .EVENT {
    background-color: white; color: black;
    padding: 2px 4px 2px 4px;
}

#CAL .INDENT {
    width: 100%; height: 100%;
    text-indent: 10px;
}

#CAL .DAY_NORMAL {
    background-color: white;
}

#CAL .DAY_SELECTED {
    color: white;
    font-weight: bolder;
}
  </style>
 </head>
 <body>
  <table border=0 cellpadding=0 cellspacing=0 width="100%" style="height: 100%">
   <tr>
    <td align="center" valign="middle">
     <table id="cal" border=0 cellpadding=0 cellspacing=5 width=300>
      <tr>
       <td align="left" class="header" colspan=7>
        <table border=0 cellpadding=0 cellspacing=0 width="100%">
         <tr>
          <td>
           <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get" name="lang">
            <input type="hidden" name="month" value="<?php echo $cal->month;?>">
            <input type="hidden" name="day" value="<?php echo $cal->day;?>">
            <input type="hidden" name="year" value="<?php echo $cal->year;?>">
            <label>Language:</label>
            <select name="lang" onchange="document.forms.lang.submit()">
             <option value="en" <?php if ($lang == "en") { echo "selected"; }?>>English
             <option value="fr" <?php if ($lang == "fr") { echo "selected"; }?>>French
             <option value="de" <?php if ($lang == "de") { echo "selected"; }?>>German
             <option value="hu" <?php if ($lang == "hu") { echo "selected"; }?>>Hungarian
             <option value="it" <?php if ($lang == "it") { echo "selected"; }?>>Italian
            </select>
           </form>
          </td>
          <td align="left">
           <a class="normal" href="<?php echo $_SERVER['PHP_SELF'];?>">Reset</a>
          </td>
         </tr>
        </table>
       </td>
      </tr>
      <tr>
       <td align="center" valign="middle" class="header" colspan=7>
        <?php printf("%s, %s %s, %s", $cal->name['day'], $cal->name['month'], $cal->day, $cal->year);?>
       </td>
      </tr>
      <tr>
<?php
   
for ($i = 0; $i < 7; $i += 1) {
?>
<td align="center" valign="middle" class="header"><?php echo $cal->day_name($i, 2);?></td>
<?php
   
}
?>
</tr>
<?php
   
for ($i = 0; $i <= 5; $i += 1) {
?>
<tr>
<?php
       
for ($j = 0; $j <= 6; $j += 1) {
           
$d = $cal->month_array[$i][$j];

            if (
$d == 0) {
?>
<td align="center" valign="middle" class="day_selected">&nbsp;</td>
<?php
           
} else {
               
$num_events = $cal->num_events($cal->month, $d, $cal->year);

                if (
$num_events > 0) {
                   
$day = sprintf(
                       
"<a class=\"day\" href=\"%s?month=%s&amp;day=%s&amp;year=%s&amp;lang=%s&amp;ge=1\">%s</a>",
                       
$_SERVER['PHP_SELF'],
                        (int)
$cal->month,
                        (int)
$d,
                        (int)
$cal->year,
                       
$lang,
                       
$d
                   
);
                } else {
                   
$day = $d;
                }

                if (
$d == $cal->day) {
?>
<td align="center" valign="middle" class="day_selected"><?php echo $day;?></td>
<?php
               
} else {
?>
<td align="center" valign="middle" class="day_normal"><?php echo $day;?></td>
<?php
               
}
            }
        }
?>
</tr>
<?php
   
}
?>
<tr>
       <td align="center" valign="middle" class="footer" colspan=7>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get">
         <input type="hidden" name="lang" value="<?php echo $lang;?>">
         <select name="month">
<?php
   
for ($i = 1; $i <= 12; $i += 1) {
        if (
$i == $cal->month) {
?>
<option value="<?php echo $i;?>" SELECTED><?php echo $cal->month_name($i);?>
<?php
       
} else {
?>
<option value="<?php echo $i;?>"><?php echo $cal->month_name($i);?>
<?php
       
}
    }
?>
</select>
         <input type="text" name="day" value="<?php echo $cal->day;?>" size=2 maxlength=2>
         <input type="text" name="year" value="<?php echo $cal->year;?>" size=4 maxlength=4>
         <input type="submit" value="Submit">
        </form>
       </td>
      </tr>
<?php
   
if ($cal->has_sqlite) {
?>
<tr>
       <td align="center" class="footer" colspan=7>
        <form action="<?php echo $_SERVER['PHP_SELF'] . $query_string;?>" method="post">
         <label>Add Event:</label>
         <input type="text" name="e">
         <input type="submit" value="Add">
        </form>
       </td>
      </tr>
<?php
       
if ($get_events == TRUE) {
           
$events = $cal->get_events($cal->month, $cal->day, $cal->year);

            if (
$events) {
                for (
$i = 0, $j = sizeof($events); $i < $j; $i += 1) {
?>
<tr>
       <td class="event" colspan=7>
        <table border=0 cellpadding=0 cellspacing=0 width="100%">
         <tr>
          <td><strong><cite><?php echo $cal->date("%a, %d %b %Y %T %Z", $events[$i]['added']);?></cite></strong></td>
          <td align="right">
           <form action="<?php echo $_SERVER['PHP_SELF'] . $query_string;?>" method="post">
            <input type="hidden" name="d" value="<?php echo $events[$i]['id'];?>">
            <input type="submit" value="Delete">
           </form>
          </td>
         </tr>
         <tr>
          <td colspan=2><span class="indent"><?php echo $events[$i]['event'];?></span></td>
         </tr>
        </table>
       </td>
      </tr>
<?php
               
}
            }
        }
    }
?>
</table>
    </td>
   </tr>
  </table>
 </body>
</html>