2017 © Pedro Peláez
 

library php-calendar

A simple PHP class to generate calendars.

image

benhall14/php-calendar

A simple PHP class to generate calendars.

  • Monday, February 5, 2018
  • by benhall14
  • Repository
  • 2 Watchers
  • 1 Stars
  • 5 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 2 Versions
  • 67 % Grown

The README.md

PHP Calendar

A PHP class that makes generating calendars as easy as possible., (*1)

You can use the addEvent() or addEvents() methods to mark events on the generated calendar., (*2)

This is fully compatible with PHP 5 through to PHP 8.1+, (*3)

Installation via Composer

You can now install this class via composer., (*4)

$ composer require benhall14/php-calendar

Remember to add the composer autoloader before using the class and use the correct namespace., (*5)

require 'vendor/autoload.php';

use benhall14\phpCalendar\Calendar as Calendar;

Usage

Please make sure you have added the required classes., (*6)

Styling

You can apply styles in one of three ways:, (*7)

1) Using $calendar->stylesheet() after you have initialised a calendar;, (*8)


$calendar = new Calendar; $calendar->stylesheet();

2) Using the calendar.css (or calendar.min.css) from the css directory;, (*9)


<link rel="stylesheet" type="text/css" href="css/calendar.min.css">

3) Create your own stylesheet and add it to the head of your HTML document., (*10)

Migration

With the release of 2.0, there were some breaking changes. This includes how dates are passed to the draw method, and the translations., (*11)

The display() method no longer works like this:, (*12)


$calendar->display(array(date('Y-m-d')));

Instead, it now expects an associative array, like:, (*13)


$calendar->display(['startDate' => '2025-05-01']);

See "Translated Calendars" for more information on how calendars are now translated., (*14)

Draw a 'Month View' calendar

In its simplest form, use the following to create a calendar for current month. This will use all defaults (English, Week starting on Sunday, including stylesheet, printing to the page)., (*15)


(new Calendar)->display();

Or, you can break it down with full customisability:, (*16)


# create the calendar object $calendar = new Calendar; # change the weekly start date to "Monday" $calendar->useMondayStartingDate(); # or revert to the default "Sunday" $calendar->useSundayStartingDate(); # (optional) - if you want to use full day names instead of initials (ie, Sunday instead of S), apply the following: $calendar->useFullDayNames(); # to revert to initials, use: $calendar->useInitialDayNames(); # use the French locale, with days and month names being translated to French. $calendar->setLocale('fr_FR'); # This uses the Carbon locales - https://carbon.nesbot.com/docs/#api-localization # add your own table class(es) $calendar->addTableClasses('class-1 class-2 class-3'); # or using an array of classes. $calendar->addTableClasses(['class-1', 'class-2', 'class-3']); # (optional) - if you want to hide certain weekdays from the calendar, for example a calendar without weekends, you can use the following methods: $calendar->hideSaturdays(); # This will hide Saturdays $calendar->hideSundays(); # This will hide Sundays $calendar->hideMondays(); # This will hide Mondays $calendar->hideTuesdays(); # This will hide Tuesdays $calendar->hideWednesdays(); # This will hide Wednesdays $calendar->hideThursdays(); # This will hide Thursdays $calendar->hideFridays(); # This will hide Fridays # custom data attributes - you can add custom data attributes to days using the following: $calendar->addDataAttribute('2025-01-14', 'data-attribute-1', 'value-1'); # or for multiple attributes $calendar->addDataAttributes('2025-01-14', ['data-attribute-1' => 'value', 'data-attribute-2' => 'value-2']); # options for draw method $options = [ 'color' => 'blue', # One of the predefined colour schemes. 'startDate' => date('Y-m-d'), # the start date of the calendar. 'timeInterval' => 10, # the interval between the times - only applicable on the week view calendar. 'startTime' => '09:00', # the starting time for the week view calendar. For a 9-5 calendar, use 09:00 'endTime' => '17:00', # the end time for the weekview calendar. For a 9-5 calendar, use 17:00 ]; $calendar->draw($options); # if needed, add event $calendar->addEvent( '2022-01-14', # start date in either Y-m-d or Y-m-d H:i if you want to add a time. '2022-01-14', # end date in either Y-m-d or Y-m-d H:i if you want to add a time. 'My Birthday', # event name text true, # should the date be masked - boolean default true ['myclass', 'abc'], # (optional) additional classes in either string or array format to be included on the event days ['event-class', 'abc'] # (optional) additional classes in either string or array format to be included on the event summary box ); # or for multiple events $events = array(); $events[] = array( 'start' => '2022-01-14', 'end' => '2022-01-14', 'summary' => 'My Birthday', 'mask' => true, 'classes' => ['myclass', 'abc'], 'event_box_classes' => ['event-box-1'] ); $events[] = array( 'start' => '2022-12-25', 'end' => '2022-12-25', 'summary' => 'Christmas', 'mask' => true ); $calendar->addEvents($events); # finally, to draw a calendar echo $calendar->draw(date('Y-m-d')); # draw this months calendar # this can be repeated as many times as needed with different dates passed, such as: echo $calendar->draw(date('Y-01-01')); # draw a calendar for January this year echo $calendar->draw(date('Y-02-01')); # draw a calendar for February this year echo $calendar->draw(date('Y-03-01')); # draw a calendar for March this year echo $calendar->draw(date('Y-04-01')); # draw a calendar for April this year echo $calendar->draw(date('Y-05-01')); # draw a calendar for May this year echo $calendar->draw(date('Y-06-01')); # draw a calendar for June this year # to use the pre-made color schemes, call the ->stylesheet() method and then pass the color choice to the draw method, such as: echo $calendar->draw(date('Y-m-d')); # print a (default) turquoise calendar echo $calendar->draw(date('Y-m-d'), 'purple'); # print a purple calendar echo $calendar->draw(date('Y-m-d'), 'pink'); # print a pink calendar echo $calendar->draw(date('Y-m-d'), 'orange'); # print a orange calendar echo $calendar->draw(date('Y-m-d'), 'yellow'); # print a yellow calendar echo $calendar->draw(date('Y-m-d'), 'green'); # print a green calendar echo $calendar->draw(date('Y-m-d'), 'grey'); # print a grey calendar echo $calendar->draw(date('Y-m-d'), 'blue'); # print a blue calendar # you can also call ->display(), which handles the echo'ing and adding the stylesheet. echo $calendar->display(['date' => date('Y-m-d')]); # draw this months calendar

Draw a 'Week View' calendar

Instead of a 'month view' calendar, you can now render as a 'week view'. To do this, simply use ->useWeekView(). Remember, when adding events to a week-view calendar, you need to include the time too (see events above)., (*17)


$events = array(); $events[] = array( 'start' => '2022-01-14 14:40', 'end' => '2022-01-14 15:10', 'summary' => 'My Birthday', 'mask' => true, 'classes' => ['myclass', 'abc'] ); $events[] = array( 'start' => '2022-11-04 14:00', 'end' => '2022-11-04 18:30', 'summary' => 'Event 1', 'mask' => true ); $events[] = array( 'start' => '2022-11-04 14:00', 'end' => '2022-11-04 18:30', 'summary' => 'Event 2', 'mask' => true ); $calendar = new Calendar; $calendar->addEvents($events)->setTimeFormat('00:00', '00:00', 10)->useWeekView()->display(['startDate' => date('Y-m-d'), 'color' => 'green']);

You can change the start/end times of the day, along with the time interval by using the ->setTimeFormat method:, (*18)


$calendar->setTimeFormat('09:00', '17:00', 10)->useWeekView()->display(['startDate' => date('Y-m-d'), 'green']); # This will print a week view calendar with 10 minute slots from 9AM to 5PM - ie. 08:00, 08:10, 08:20 and so on.

Monday Start Date

You can now change the weekly start date from a Sunday to a Monday. To activate this, simple use the useMondayStartingDate() method before you 'draw'., (*19)


$calendar = new Calendar; $calendar->useMondayStartingDate(); $calendar->display(['startDate' => date('Y-m-d'), 'color' => 'green']);

Translated Calendars

We now use automatically from the date and the setLocale() method. If you use ->setLocale('fr_FR'), then the days and month names will be French. For more information on the Carbon localization, see https://carbon.nesbot.com/docs/#api-localization, (*20)

Credits

Requirements

Carbon, (*21)

License

Copyright (c) 2016-2022 Benjamin Hall, ben@conobe.co.uk https://conobe.co.uk, (*22)

Licensed under the MIT license, (*23)

Donate?

If you find this project helpful or useful in any way, please consider getting me a cup of coffee - It's really appreciated :), (*24)

Donate, (*25)

The Versions

05/02 2018

dev-master

9999999-dev https://github.com/benhall14/php-calendar

A simple PHP class to generate calendars.

  Sources   Download

MIT

The Requires

  • php >=5.3

 

calendar date time calendars

05/02 2018

1.0

1.0.0.0 https://github.com/benhall14/php-calendar

A simple PHP class to generate calendars.

  Sources   Download

MIT

The Requires

  • php >=5.3

 

calendar date time calendars