PHP Classes
Icontem

File: class_calendar.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Ken Stanley  >  Class Calendar  >  class_calendar.php  
File: class_calendar.php
Role: Class source
Content type: text/plain
Description: Main Class
Class: Class Calendar
Generate month calendar arrays
 

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 */
/******************************************************************************/

	class calendar {
		var $pad_dates		= FALSE;	/* Convert numbers like 1 to 01 */
		var $min_year		= 0;		/* Minimum year before it rolls over */
		var $max_year		= 0;		/* Maximum year before it rolls over */
        var $start_monday   = 0;		/* Start the week with Monday (0: no; 1: yes) */
		var $language		= "en";		/* Two-letter country code to determine language
										   of calendar */
		var $has_sqlite		= FALSE;	/* Whether there is support for SQLite */

		/*
		 * Name:		calendar() [class constructor]
		 * Params:		string database_filename
		 * Returns:		void
		 * Description:	Sets up connection to SQLite database_filename, and if
		 *				necessary, it will create the database first (first run).
		 *				You MUST create a subdirectory and chown it to your 
		 *				webserver's user:group! After doing that, you MUST make
		 *				the file writeable by the webserver (e.g. chmod 666 <file>).
		 *				Not doing this will generate a read/write error.
		 */
		function calendar($_calendar_language = 'en', $_calendar_db_file = 'db/calendar.sdb') {
			if (!extension_loaded('sqlite')) {
				/*
				 * This method of loading the sqlite.so/php_sqlite.dll is for
				 * easy interoperability to all versions of PHP
				 */
				if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
					$extension = "php_sqlite.dll";
				} else {
					$extension = "sqlite.so";
				}

				if (@dl($extension)) {
					$this->has_sqlite = TRUE;
				} else {
					$this->has_sqlite = FALSE;
				}
			} else {
				$this->has_sqlite = TRUE;
			}

			if (!is_writable($_calendar_db_file)) {
				$this->has_sqlite = FALSE;
			}

			if (!file_exists('class_sqlite.php')) {
				$this->has_sqlite = FALSE;
			}

			/*
			 * If there is no SQLite support then we don't need to bother
			 * trying to open or set up any kind of database. Checks like
			 * this will be throughout the class to ensure smooth operation.
			 */
			if ($this->has_sqlite) {
				include_once('class_sqlite.php');

				$this->sqlite = new sqlite($_calendar_db_file);

				if (!$this->sqlite->table_exists('events')) {
					/*
					 * Setting PRAGMA auto_vaccum will optimize the size of the database
					 * after deletions, without having to always call the VACCUM statement.
					 * This has to be set before creating the table, or nothing will happen.
					 */
					$this->sqlite->query("PRAGMA auto_vacuum = 1");

					/*
					 * Database schema (for the curious):
					 * events (
					 *		id INTEGER PRIMARY KEY AUTOINCREMENT,
					 *		month INTEGER NOT NULL,
					 *		day INTEGER NOT NULL,
					 *		year INTEGER NOT NULL,
					 *		event TEXT NOT NULL,
					 *		added INTEGER NOT NULL
					 * );
					 */
					$_calendar_sql = "CREATE TABLE events(";
					$_calendar_sql .= "id INTEGER PRIMARY KEY,";
					$_calendar_sql .= "month INTEGER,";
					$_calendar_sql .= "day INTEGER,";
					$_calendar_sql .= "year INTEGER,";
					$_calendar_sql .= "event TEXT,";
					$_calendar_sql .= "added INTEGER)";

					$this->sqlite->query($_calendar_sql);
				}
			}

			/* Language Support */
			$this->language = $_calendar_language;

			/* Begin Translation: English */
			$this->languages['en']['day'][] = "Sunday";
			$this->languages['en']['day'][] = "Monday";
			$this->languages['en']['day'][] = "Tuesday";
			$this->languages['en']['day'][] = "Wednesday";
			$this->languages['en']['day'][] = "Thursday";
			$this->languages['en']['day'][] = "Friday";
			$this->languages['en']['day'][] = "Saturday";

			$this->languages['en']['month'][] = "January";
			$this->languages['en']['month'][] = "February";
			$this->languages['en']['month'][] = "March";
			$this->languages['en']['month'][] = "April";
			$this->languages['en']['month'][] = "May";
			$this->languages['en']['month'][] = "June";
			$this->languages['en']['month'][] = "July";
			$this->languages['en']['month'][] = "August";
			$this->languages['en']['month'][] = "September";
			$this->languages['en']['month'][] = "October";
			$this->languages['en']['month'][] = "November";
			$this->languages['en']['month'][] = "December";

			if ($_calendar_language == "en") {
				$this->start_monday = 0;
				setlocale(LC_TIME, 'en_US');
			}
			/* End Translation: English */

			/* Begin Translation: Hungarian */
			$this->languages['hu']['day'][] = "Vasárnap";
			$this->languages['hu']['day'][] = "Hétfő";
			$this->languages['hu']['day'][] = "Kedd";
			$this->languages['hu']['day'][] = "Szerda";
			$this->languages['hu']['day'][] = "Csütörtök";
			$this->languages['hu']['day'][] = "Péntek";
			$this->languages['hu']['day'][] = "Szombat";

			$this->languages['hu']['month'][] = "Január";
			$this->languages['hu']['month'][] = "Február";
			$this->languages['hu']['month'][] = "Március";
			$this->languages['hu']['month'][] = "Április";
			$this->languages['hu']['month'][] = "Május";
			$this->languages['hu']['month'][] = "Június";
			$this->languages['hu']['month'][] = "Július";
			$this->languages['hu']['month'][] = "Augusztus";
			$this->languages['hu']['month'][] = "Szeptember";
			$this->languages['hu']['month'][] = "Október";
			$this->languages['hu']['month'][] = "November";
			$this->languages['hu']['month'][] = "December";

			if ($_calendar_language == "hu") {
				$this->start_monday = 1;
				setlocale(LC_TIME, 'hu_HU');
			}
			/* End Translation: Hungarian */

			/* Begin Translation: Spanish */
			$this->languages['es']['day'][] = "Lunes";
			$this->languages['es']['day'][] = "Martes";
			$this->languages['es']['day'][] = "Miércoles";
			$this->languages['es']['day'][] = "Jueves";
			$this->languages['es']['day'][] = "Viernes";
			$this->languages['es']['day'][] = "Sábado";
			$this->languages['es']['day'][] = "Domingo";

			$this->languages['es']['month'][] = "Enero";
			$this->languages['es']['month'][] = "Febrero";
			$this->languages['es']['month'][] = "Marzo";
			$this->languages['es']['month'][] = "Abril";
			$this->languages['es']['month'][] = "Mayo";
			$this->languages['es']['month'][] = "Junio";
			$this->languages['es']['month'][] = "Julio";
			$this->languages['es']['month'][] = "Agosto";
			$this->languages['es']['month'][] = "Septiembre";
			$this->languages['es']['month'][] = "Octubre";
			$this->languages['es']['month'][] = "Noviembre";
			$this->languages['es']['month'][] = "Diciembre";

			if ($_calendar_language == "es") {
				$this->start_monday = 1;
				setlocale(LC_TIME, 'es_ES');
			}
			/* End Translation: Spanish */

			/* Start Translation: French */
			$this->languages['fr']['day'][] = "Dimanche";
			$this->languages['fr']['day'][] = "Lundi";
			$this->languages['fr']['day'][] = "Mardi";
			$this->languages['fr']['day'][] = "Mercredi";
			$this->languages['fr']['day'][] = "Jeudi";
			$this->languages['fr']['day'][] = "Vendredi";
			$this->languages['fr']['day'][] = "Samedi";

			$this->languages['fr']['month'][] = "Janvier";
			$this->languages['fr']['month'][] = "Février";
			$this->languages['fr']['month'][] = "Mars";
			$this->languages['fr']['month'][] = "Avril";
			$this->languages['fr']['month'][] = "Mai";
			$this->languages['fr']['month'][] = "Juin";
			$this->languages['fr']['month'][] = "Juillet";
			$this->languages['fr']['month'][] = "Aoűt";
			$this->languages['fr']['month'][] = "Septembre";
			$this->languages['fr']['month'][] = "Octobre";
			$this->languages['fr']['month'][] = "Novembre";
			$this->languages['fr']['month'][] = "Décembre";

			if ($_calendar_language == "fr") {
				$this->start_monday = 1;
				setlocale(LC_TIME, 'fr_FR');
			}
			/* End Translation: French */

			/* Start Translation: German */
			$this->languages['de']['day'][] = "Sonntag";
			$this->languages['de']['day'][] = "Montag";
			$this->languages['de']['day'][] = "Dienstag";
			$this->languages['de']['day'][] = "Mittwoch";
			$this->languages['de']['day'][] = "Donnerstag";
			$this->languages['de']['day'][] = "Freitag";
			$this->languages['de']['day'][] = "Samstag";

			$this->languages['de']['month'][] = "Januar";
			$this->languages['de']['month'][] = "Februar";
			$this->languages['de']['month'][] = "März";
			$this->languages['de']['month'][] = "April";
			$this->languages['de']['month'][] = "Mai";
			$this->languages['de']['month'][] = "Juni";
			$this->languages['de']['month'][] = "Juli";
			$this->languages['de']['month'][] = "August";
			$this->languages['de']['month'][] = "September";
			$this->languages['de']['month'][] = "Oktober";
			$this->languages['de']['month'][] = "November";
			$this->languages['de']['month'][] = "Dezember";

			if ($_calendar_language == "de") {
				$this->start_monday = 1;
				setlocale(LC_TIME, 'de_DE');
			}
			/* End Translation: German */

			/* Start Translation: Italian */
			$this->languages['it']['day'][] = "Lunedě";
			$this->languages['it']['day'][] = "Martedě";
			$this->languages['it']['day'][] = "Mercoledě";
			$this->languages['it']['day'][] = "Giovedě";
			$this->languages['it']['day'][] = "Venerdě";
			$this->languages['it']['day'][] = "Sabato";
			$this->languages['it']['day'][] = "Domenica";

			$this->languages['it']['month'][] = "Gennaio";
			$this->languages['it']['month'][] = "Febbraio";
			$this->languages['it']['month'][] = "Marzo";
			$this->languages['it']['month'][] = "Aprile";
			$this->languages['it']['month'][] = "Maggio";
			$this->languages['it']['month'][] = "Giugno";
			$this->languages['it']['month'][] = "Luglio";
			$this->languages['it']['month'][] = "Agosto";
			$this->languages['it']['month'][] = "Settembre";
			$this->languages['it']['month'][] = "Ottobre";
			$this->languages['it']['month'][] = "Novembre";
			$this->languages['it']['month'][] = "Dicembre";

			if ($_calendar_language == "it") {
				$this->start_monday = 1;
				setlocale(LC_TIME, 'it_IT');
			}
			/* End Translation: Italian */
		}

		/*
		 * Name:        date()
		 * Params:		int time
		 * Returns:		string date
		 * Description:	Works just like PHP's date() function, but is locale
		 *				friendly.
		 */
		function date($_date_format, $_date_time) {
			$_date_hour = date("G", $_date_time);
			$_date_minute = date("i", $_date_time);
			$_date_second = date("s", $_date_time);
			$_date_month = date("n", $_date_time);
			$_date_day = date("j", $_date_time);
			$_date_year = date("Y", $_date_time);

			return strftime(
				$_date_format,
				mktime(
					$_date_hour,
					$_date_minute,
					$_date_second,
					$_date_month,
					$_date_day,
					$_date_year
				)
			);
		}

		/* Name:		get_month()
		 * Params:		int month, int year
		 * Returns:		array()
		 * Description:	Returns a multi-dimension array containing
		 *				the calendar month. The first layer of the
		 *				array are the weeks, and the second layer
		 *				are the days:
		 *
		 *					week 1: sun, mon, tue, wed, thu, fri, sat 
		 *					week 2: sun, mon, tue, wed, thu, fri, sat 
		 *					week 3: sun, mon, tue, wed, thu, fri, sat 
		 *					week 4: sun, mon, tue, wed, thu, fri, sat 
		 *					week 5: sun, mon, tue, wed, thu, fri, sat 
		 *					week 6: sun, mon, tue, wed, thu, fri, sat 
		 *
		 *				This is for easy user-formatting. See README
		 *				for example code.
		 */
		function get_month($_get_month_month, $_get_month_year) {
			$_get_month_array = array_pad(array(), 6, array_pad(array(), 7, 0));

			$_get_month_days = $this->month_length($_get_month_month, $_get_month_year);

			$k = $this->get_day($_get_month_month, 1, $_get_month_year);

			for ($i = 1, $j = 0; $i <= $_get_month_days; $i += 1) {
				if ($k > 6) {
					$j += 1;
					$k = 0;
				}

				if ($this->pad_dates) {
					$_get_month_array[$j][$k] = str_pad($i, 2, '0', STR_PAD_LEFT);
				} else {
					$_get_month_array[$j][$k] = $i;
				}

				$k += 1;
			}

			return $_get_month_array;
		}

		/*
		 * Name:		get_day()
		 * Params:		int month, int day, int year
		 * Returns:		int
		 * Description:	Returns the day of the week for the given
		 *				date as a number between 0-6:
		 *
		 *				0 = Sunday/Monday
		 *				1 = Monday/Tuesday
		 *				2 = Tuesday/Wednesday
		 *				3 = Wednesday/Thursday
		 *				4 = Thursday/Friday
		 *				5 = Friday/Saturday
		 *				6 = Saturday/Sunday
		 */
		function get_day($_get_day_month, $_get_day_day, $_get_day_year) {
			$_get_day_adj1 = (int)((14 - $_get_day_month) / 12);
			$_get_day_adj2 = $_get_day_year - $_get_day_adj1;
			$_get_day_adj3 = $_get_day_month + (12 * $_get_day_adj1) - 2;

			$_get_day_result = $_get_day_day + $_get_day_adj2 + (int)($_get_day_adj2 / 4);
			$_get_day_result -= (int)($_get_day_adj2 / 100);
			$_get_day_result += (int)($_get_day_adj2 / 400);
			$_get_day_result += (int)((31 * $_get_day_adj3) / 12);
			$_get_day_result = (7 + $_get_day_result - $this->start_monday) % 7;

			return $_get_day_result;
		}

		/*
		 * Name:		day_name()
		 * Params:		int day, int short
		 * Returns:		string
		 * Description:	Converts the numerical format of month (0-6) into
		 *				human-readable format. You can control the
		 *				size of the name by passing either a 1 (Full),
		 *				2 (First 3 letters), or 3 (First letter only)
		 *				as the second parameter.
		 */
		function day_name($_day_name_day, $_day_name_short = 0) {
			$_day_name_day = ($this->start_monday + $_day_name_day) % 7;

			$_day_name_result = $this->languages[$this->language]['day'][$_day_name_day];

			switch ($_day_name_short) {
				case 1:
					/* Shortened to the first three letters */
					return substr($_day_name_result, 0, 3);
					break;
				case 2:
					/* Shortened to the first letter only */
					return substr($_day_name_result, 0, 1);
					break;
				case 0:
				default:
					return $_day_name_result;
					break;
			}
		}

		/*
		 * Name:		month_name()
		 * Params:		int month, int short
		 * Returns:		string
		 * Description:	Converts the numerical format of month (1-12)
		 *				into human-readable format. You can control the
		 *				size of the name by passing either a 1 (Full),
		 *				2 (First 3 letters), or 3 (First letter only)
		 *				as the second parameter.
		 */
		function month_name($_month_name_month, $_month_name_short = 0) {
			$_month_name_month -= 1;
			$_month_name_result = $this->languages[$this->language]['month'][$_month_name_month];

			switch ($_month_name_short) {
				case 1:
					/* Shortened to the first three letters */
					return substr($_month_name_result, 0, 3);
					break;
				case 2:
					/* Shortened to the first letter only */
					return substr($_month_name_result, 0, 1);
					break;
				case 0:
				default:
					return $_month_name_result;
					break;
			}
		}

		/*
		 * Name:		is_leap()
		 * Params:		string year
		 * Returns:		bool
		 * Description:	Returns either TRUE or FALSE depending
		 *				on whether a year is a leap year or not.
		 */
		function is_leap($_is_leap_year) {
			if (($_is_leap_year % 4) == 0) {
				if (($_is_leap_year % 100) == 0) {
					if (($_is_leap_year % 400) == 0) {
						return TRUE;
					} else {
						return FALSE;
					}					
				} else {
					return TRUE;
				} 
			} else {
				return FALSE;
			}
		}

		/*
		 * Name:		month_length()
		 * Params:		int month, int year
		 * Returns:		int
		 * Description:	Returns the length of given month for
		 *				given year.
		 */
		function month_length($_month_length_month, $_month_length_year) {
			switch ($_month_length_month) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					$_month_length_length = 31;
					break;
				case 2:
					if ($this->is_leap($_month_length_year)) {
						$_month_length_length = 29;
					} else {
						$_month_length_length = 28;
					}
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					$_month_length_length = 30;
					break;
				default:
					$_month_length_length = 0;
			}

			return $_month_length_length;
		}

		/*
		 * Name:		valid_date()
		 * Params:		int month, int day, int year
		 * Returns:		void
		 * Description:	This function takes care to ensure the
		 *				validity of the date given. E.g. -1/01/2005
		 *				would be converted to 12/01/2004, and 13/01/2005
		 *				would be converted to 01/01/2006.
		 */
		function valid_date(&$_valid_date_month, &$_valid_date_day, &$_valid_date_year) {
			/*
			 * NOTE: If you were to try 01/60/2005 without these passes, you would
			 * get most unexpected results (i.e. 02/29/2005 for a NON-LEAP YEAR!)
			 */

			/* Pass 1: Convert the month to something legit (1-12) */
			$this->valid_month($_valid_date_month, $_valid_date_year);

			/* Pass 1: Convert the day to something legit (1-{28,29,30,31}) */
			$this->valid_day($_valid_date_month, $_valid_date_day, $_valid_date_year);

			/* Pass 1: Convert the year to within acceptable limits */
			if (isset($this->min_year) && is_numeric($this->min_year) && ($this->min_year > 0)) {
				if (isset($this->max_year) && is_numeric($this->max_year) && ($this->max_year > 0)) {
					$this->valid_year($_valid_date_year);
				}
			}

			/* Pass 2: Since the days changed, the month may need to be changed again. */
			$this->valid_month($_valid_date_month, $_valid_date_year);

			/* Pass 2: The month may have changed again, so we need to do this. */
			$this->valid_day($_valid_date_month, $_valid_date_day, $_valid_date_year);

			/* Pass 2: Convert the year to within acceptable limits */
			if (isset($this->min_year) && is_numeric($this->min_year) && ($this->min_year > 0)) {
				if (isset($this->max_year) && is_numeric($this->max_year) && ($this->max_year > 0)) {
					$this->valid_year($_valid_date_year);
				}
			}
		}

		/*
		 * Name:		valid_month()
		 * Params:		int month, int year
		 * Returns:		void
		 * Description:	Used in valid_date to roll over the month so it
		 *				stays within 1-12 constraints.
		 */
		function valid_month(&$_valid_month_month, &$_valid_month_year) {
			while ($_valid_month_month > 12) {
				$_valid_month_month -= 12;
				$_valid_month_year += 1;
			}

			while ($_valid_month_month < 1) {
				$_valid_month_month += 12;
				$_valid_month_year -= 1;
			}
		}

		/*
		 * Name:		valid_day()
		 * Params:		int month, int day, int year
		 * Returns:		void
		 * Description:	Used in valid_date to roll over the day so it
		 *				stays within 1-(whatever the last day is)
		 *				constraints.
		 */
		function valid_day(&$_valid_day_month, &$_valid_day_day, &$_valid_day_year) {
			$_valid_day_month_length = $this->month_length(
				$_valid_day_month,
				$_valid_day_year
			);

			while ($_valid_day_day > $_valid_day_month_length) {
				$_valid_day_month_length = $this->month_length(
					$_valid_day_month,
					$_valid_day_year
				);

				$_valid_day_day -= $_valid_day_month_length;
				$_valid_day_month += 1;
			}

			while ($_valid_day_day < 1) {
				$_valid_day_month_length = $this->month_length(
					$_valid_day_month,
					$_valid_day_year
				);

				$_valid_day_day += $_valid_day_month_length;
				$_valid_day_month -= 1;
			}
		}

		/*
		 * Name:		valid_year()
		 * Params:		int year
		 * Returns:		void
		 * Description:	Used in valid_date to roll over the year so it
		 *				stays within user-specified constraints.
		 *
		 *				NOTE: This function is COMPLETELY optional. To
		 *				disable it's use, DO NOT SET $this->min_year or
		 *				$this->max_year!!!!
		 */
		function valid_year(&$_valid_year_year) {
			if (isset($this->min_year) && is_numeric($this->min_year) && ($this->min_year > 0)) {
				if (isset($this->max_year) && is_numeric($this->max_year) && ($this->max_year > 0)) {
					while ($_valid_year_year > $this->max_year) {
						$_valid_year_year -= ($this->max_year - $this->min_year) + 1;
					}

					while ($_valid_year_year < $this->min_year) {
						$_valid_year_year += ($this->max_year - $this->min_year) + 1;
					}
				}
			}
		}

		/*
		 * Name:		add_event()
		 * Params:		int month, int day, int year, mixed string
		 * Returns:		bool TRUE/FALSE
		 * Description:	Adds an event for given month/day/year to the SQLite database.
		 */
		function add_event($_add_event_month, $_add_event_day, $_add_event_year, $_add_event_event) {
			if ($this->sqlite) {
				$_add_event_sql = "INSERT INTO events ";
				$_add_event_sql .= "(id, month, day, year, event, added) VALUES (";
				$_add_event_sql .= "NULL, ";
				$_add_event_sql .= "$_add_event_month, ";
				$_add_event_sql .= "$_add_event_day, ";
				$_add_event_sql .= "$_add_event_year, ";
				$_add_event_sql .= "'" . sqlite_escape_string($_add_event_event) . "', ";
				$_add_event_sql .= time() . ")";

				return $this->sqlite->query($_add_event_sql);
			} else {
				return FALSE;
			}
		}

		/*
		 * Name:		del_event()
		 * Params:		int id
		 * Returns:		bool TRUE/FALSE
		 * Description:	Removes an event from the database by given id.
		 */
		function del_event($_del_event_id) {
			if ($this->has_sqlite) {
				$_del_event_sql = "DELETE FROM events ";
				$_del_event_sql .= "WHERE id=$_del_event_id";

				return $this->sqlite->query($_del_event_sql);
			} else {
				return FALSE;
			}
		}

		/*
		 * Name:		get_event()
		 * Params:		int month, int day, int year
		 * Returns:		mixed event
		 * Description:	Retrieves an event for the given month/day/year from the database.
		 */
		function get_events($_get_events_month, $_get_events_day, $_get_events_year) {
			if ($this->has_sqlite) {
				$_get_events_sql = "SELECT * FROM events ";
				$_get_events_sql .= "WHERE month=$_get_events_month AND ";
				$_get_events_sql .= "day=$_get_events_day AND ";
				$_get_events_sql .= "year=$_get_events_year";

				$_get_events_result = $this->sqlite->fetch_assoc($_get_events_sql);

				if (sizeof($_get_events_result) > 0) {
					return $_get_events_result;
				} else {
					return FALSE;
				}
			} else {
				return FALSE;
			}
		}

		/*
		 * Name:		num_events()
		 * Params:		int month, int day, int year
		 * Returns:		int rows or bool FALSE
		 * Description:	Returns the number of events for given month/day/year.
		 */
		function num_events($_num_events_month, $_num_events_day, $_num_events_year) {
			if ($this->has_sqlite) {
				$_num_events_sql = "SELECT COUNT(*) as count FROM events ";
				$_num_events_sql .= "WHERE month=$_num_events_month AND ";
				$_num_events_sql .= "day=$_num_events_day AND ";
				$_num_events_sql .= "year=$_num_events_year";

				$_num_events_result = $this->sqlite->fetch_assoc($_num_events_sql);

				if (sizeof($_num_events_result) > 0) {
					return $_num_events_result[0]['count'];
				} else {
					return FALSE;
				}
			} else {
				return FALSE;
			}
		}
	}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products