Skip to content

solution10/calendar

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Solution10\Calendar

The Calendar component is a simple, but powerful package to help you in the rendering of, well, Calendars!

Build Status Latest Stable Version Total Downloads License

Features

  • No dependancies
  • PHP 5.3+
  • Straightforward interface
  • Support for multiple "resolutions" (week view, month view etc)
  • Easily extended
  • Templating system agnostic

Getting Started

Installation is via composer, in the usual manner:

{
    "require": {
        "solution10/calendar": "^1.0"
    }
}

Creating a basic calendar is as such:

<?php
// Creates a calendar, using today as a starting point.
$calendar = new Solution10\Calendar\Calendar(new DateTime('now'));

// We now need to give the calendar a "resolution". This tells the
// Calendar whether we're showing a month view, or a Week, or maybe
// even a whole year. Let's start with a Month:

$calendar->setResolution(new MonthResolution());

// That's it! Let's grab the view data and render:
$viewData = $calendar->viewData();
$months = $viewData['contents'];
?>

<?php foreach ($months as $month): ?>
<table>
    <caption><?php echo $month->title('F Y'); ?></caption>
    <thead>
        <tr>
            <?php foreach ($month->weeks()[0]->days() as $day): ?>
                <th><?php echo $day->date()->format('D'); ?></th>
            <?php endforeach; ?>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($month->weeks() as $week): ?>
            <tr>
                <?php foreach ($week->days() as $day): ?>
                    <td>
                        <?php
                            if ($day->isOverflow()) {
                                if ($calendar->resolution()->showOverflowDays()) {
                                    echo '<span style="color: #ccc">'.$day->date()->format('d').'</span>';
                                } else {
                                    echo '&nbsp;';
                                }
                            } else {
                                echo $day->date()->format('d');
                            }
                        ?>
                    </td>
                <?php endforeach; ?>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>
<?php endforeach; ?>

Solution10\Calendar does not provide you with templates as we have no idea what templating engine (if any) you're using. Instead, we give you a powerful and simple API so you can do the rendering yourself.

Further Reading

Userguide

For more information on creating Calendars, see the Calendars Section.

If you want to know more about Resolutions, check out the Resolutions Section.

Want to see how you can add Events to your calendars? You'll be wanting the Events Section.

PHP Requirements

  • PHP >= 5.3

Author

Alex Gisby: GitHub, Twitter

License

MIT

Contributing

Contributors Notes