phpScheduleIt Administration
Administration
If you are in an Application Administrator role then you will see the Application Management menu item. All administrative tasks can be found here.
Setting up Schedules
When installing phpScheduleIt a default schedule will be created with out of the box settings. From the Schedules menu option you can view and edit attributes of the current schedules.
Each schedule must have a layout defined for it. This controls the availability of the resources on that schedule. Clicking the Change Layout link will bring up the layout editor. Here you can create and change the time slots that are available for reservation and blocked from reservation. There is no restriction on the slot times, but you must provide slot values for all 24 hours of the day, one per line. Also, the time format must be in 24 hour time. You can also provide a display label for any or all slots, if you wish.
A slot without a label should be formatted like this: 10:25 - 16:50
A slot with a label should be formatted like this: 10:25 - 16:50 Schedule Period 4
Below the slot configuration windows is a slot creation wizard. This will set up available slots at the given interval between the start and end times.
Setting up Resources
You can view and manage resources from the Resources menu option. Here you can change the attributes and usage configuration of a resource.
Resources in phpScheduleIt can be anything you want to make bookable, such as rooms or equipment. Every resource must be assigned to a schedule in order for it to be bookable. The resource will inherit whatever layout the schedule uses.
Setting a minimum reservation duration will prevent booking from lasting longer than the set amount. The default is no minimum.
Setting a maximum reservation duration will prevent booking from lasting shorter than the set amount. The default is no maximum.
Setting a resource to require approval will place all bookings for that resource into a pending state until approved. The default is no approval required.
Setting a resource to automatically grant permission to it will grant all new users permission to access the resource at registration time. The default is to automatically grant permissions.
You can require a booking lead time by setting a resource to require a certain number of days/hours/minutes notification. For example, if it is currently 10:30 AM on a Monday and the resource requires 1 days notification, the resource will not be able to be booked until 10:30 AM on Sunday. The default is that reservations can be made up until the current time.
You can prevent resources from being booked too far into the future by requiring a maximum notification of days/hours/minutes. For example, if it is currently 10:30 AM on a Monday and the resource cannot end more than 1 day in the future, the resource will bot be able to be booked past 10:30 AM on Tuesday. The default is no maximum.
Certain resources cannot have a usage capacity. For example, some conference rooms may only hold up to 8 people. Setting the resource capacity will prevent any more than the configured number of participants at one time, excluding the organizer. The default is that resources have unlimited capacity.
Application Administrators are exempt from usage constraints.
Resource Images
You can set a resource image which will be displayed when viewing resource details from the reservation page. This requires php_gd2 to be installed and enabled in your php.ini file. More Details
Setting up Accessories
Accessories can be thought of as objects used during a reservation. Examples may be projectors or chairs in a conference room.
Accessories can be viewed and managed from the Accessories menu item, under the Resources menu item. Setting a accessory quantity will prevent more than that number of accessories from being booked at a time.
Setting up Quotas
Quotas prevent reservations from being booked based on a configurable limit. The quota system in phpScheduleIt is very flexible, allowing you to build limits based on reservation length and number reservations. Also, quota limits "stack". For example, if a quota exists limiting a resource to 5 hours per day and another quota exists limiting to 4 reservations per day a user would be able to make 4 hour-long reservations but would be restricting from making 3 two-hour-long reservations. This allows powerful quota combinations to be built.
Application Administrators are exempt from quota limits.
Setting up Announcements
Announcements are a very simple way to display notifications to phpScheduleIt users. From the Announcements menu item you can view and manage the announcements that are displayed on users dashboards. An announcement can be configured with an optional start and end date. An optional priority level is also available, which sorts announcements from 1 to 10.
HTML is allows within the announcement text. This allows you to embed links or images from anywhere on the web.
Setting up Groups
Groups in phpScheduleIt organize users, control resource access permissions and define roles within the application.
Roles
Roles give a group of users the authorization to perform certain actions.
Application Administrator: Users that belong to a group that is given the Application Administrator role are open to full administrative privileges. This role has nearly zero restrictions on what resources can be booked. It can manage all aspects of the application.
Group Administrator: Users that belong to a group that is given the Group Administrator role are able to manage their groups and reserve on behalf of and manage users within that group.
Resource Administrator: Users that belong to a group that is given the Resource Administrator role are able to manage their resources and approve reservations for their resources.
Schedule Administrator: Users that belong to a group that is given the Schedule Administrator role are able to manage their schedules and resources belonging to their schedules and approve reservations on their schedules.
Viewing and Managing Reservations
You can view and manage reservations from the Reservations menu item. By default you will see the last 7 days and the next 7 days worth of reservations. This can be filtered more or less granular depending on what you are looking for. This tool allows you to quickly find an act on a reservation. You can also export the list of filtered reservations to CSV format for further reporting.
Reservation Approval
Setting $conf['settings']['reservation']['updates.require.approval'] to true will put all reservation requests into a pending state. The reservation becomes active only after an administrator approves it. From the Reservations admin tool an administrator will be able to view and approve pending reservations. Pending reservations will be highlighted.
Viewing and Managing Users
You can add, view, and manage all registered users from the Users menu item. This tool allows you to change resource access permissions of individual users, deactivate or delete accounts, reset user passwords, and edit user details. You can also add new users to phpScheduleIt. This is especially useful if self-registration is turned off.
Reporting
Reports are accessible to all application, group, resource and schedule administrators. When the currently logged in user has access to reporting features, they will see a Reports navigation item. phpScheduleIt comes with a set of Common Reports which can be viewed as a list of results, a chart, exported to CSV and printed. In addition, ad-hoc reports can be created from the Create New Report menu item. This also allows listing, charting, exporting and printing. In addition, custom reports can be saved and accessed again at a later time from the My Saved Reports menu item. Saved reports also have the ability to be emailed.
Reservation Reminders
Users can request that reminder emails are send prior to the beginning or end of a reservation. In order for this feature to function, $conf['settings']['enable.email'] and $conf['settings']['reservation']['enable.reminders'] must both be set to true. Also, a scheduled task must be configured on your server to execute /phpScheduleIt/Jobs/sendreminders.php
On Linux, a cron job can be used. The command to run is php followed by the full path to phpScheduleIt/Jobs/sendreminders.php. The full path to sendreminders.php on this server is /var/www/cal/Jobs/sendreminders.php
An example cron configuration might look like: * * * * * php /var/www/cal/Jobs/sendreminders.php
If you have access to cPanel through a hosting provider, setting up a cron job in cPanel is straightforward. Either select the Every Minute option from the Common Settings menu, or enter * for minute, hour, day, month and weekday.
On Windows, a scheduled task can be used. The task must be configured to run every minute. The task to execute is php followed by the full path to phpScheduleIt/Jobs/sendreminders.php
Configuration
Some of phpScheduleIt's functionality can only be controlled by editing the config file.
$conf['settings']['server.timezone']This must reflect the timezone of the server that phpScheduleIt is hosted on. This server is currently set to Europe/Berlin. Possible values are located here: http://php.net/manual/en/timezones.php
$conf['settings']['allow.self.registration']If users are allowed to register new accounts.
$conf['settings']['admin.email']The email address of the main application administrator
$conf['settings']['default.page.size']The initial number of rows for any page that displays a list of data
$conf['settings']['enable.email']Whether or not any emails are sent out of phpScheduleIt
$conf['settings']['default.language']Default language for all users. This can be any language in the phpScheduleIt lang directory
$conf['settings']['script.url']The full public URL to the root of this instance of phpScheduleIt. This should be the Web directory which contains files like bookings.php and calendar.php
$conf['settings']['password.pattern']A regular expression to enforce password complexity during user account registration
$conf['settings']['schedule']['show.inaccessible.resources']Whether or not resources that are not accessible to the user are displayed in the schedule
$conf['settings']['schedule']['reservation.label']The format of what to display for the reservation slot on the Bookings page. Available tokens are {name}, {title}, {description}, {email}, {phone} , {organization}, {position}. Leave it blank for no label. Any combination of tokens can be used.
$conf['settings']['schedule']['hide.blocked.periods']If blocked periods should be hidden on the bookings page. Default is false.
$conf['settings']['image.upload.directory']The physical directory to store images. This directory will need to be writable (755 suggested). This can be the full directory or relative to the phpScheduleIt root directory.
$conf['settings']['image.upload.url']The URL where uploaded images can be viewed from. This can be the full URL or relative to $conf['settings']['script.url'].
$conf['settings']['cache.templates']Whether or not templates are cached. It is recommended to set this to true, as long as tpl_c is writable
$conf['settings']['use.local.jquery']Whether or not a local version of jQuery files should be used. If set to false, the files will be served from the Google CDN. It is recommended to set this to false to improve performance and bandwidth usage. Default is false.
$conf['settings']['registration.captcha.enabled']Whether or not captcha image security is enabled during user account registration
$conf['settings']['registration.require.email.activation']Whether or not a user will be required to activate their account by email before logging in.
$conf['settings']['registration.auto.subscribe.email']Whether or not users will be automatically subscribed to all emails upon registration.
$conf['settings']['inactivity.timeout']Number of minutes before the user is automatically logged out. Leave this blank if you do not want users automatically logged out.
$conf['settings']['name.format']Display format for first name and last name. Default is '{first} {last}'.
$conf['settings']['css.extension.file']Full or relative URL to an additional CSS file to include. This can be used to override the default style with adjustments or a full theme. Leave this blank if you are not extending the style of phpScheduleIt.
$conf['settings']['disable.password.reset']If the password reset functionality should be disabled. Default is false.
$conf['settings']['home.url']Where the user will be redirected when the logo is clicked. Default is the user's homepage.
$conf['settings']['logout.url']Where the user will be redirected after being logged out. Default is the login page.
$conf['settings']['ics']['require.login']If users should be required to log in to add a reservation to Outlook.
$conf['settings']['ics']['subscription.key']If you want to allow webcal subscriptions, set this to a difficult to guess value. If nothing is set then webcal subscriptions will be disabled.
$conf['settings']['privacy']['view.schedules']If non-authenticated users can view the booking schedules. Default is false.
$conf['settings']['privacy']['view.reservations']If non-authenticated users can view reservation details. Default is false.
$conf['settings']['privacy']['hide.user.details']If non-adminstrators can view personal information about other users. Default is false.
$conf['settings']['reservation']['start.time.constraint']When reservations can be created or edited. Options are future, current, none. Future means reservations cannot be created or modified if the starting time of the selected slot is in the past. Current means reservations can be created or modified if the ending time of the selected slot is not in the past. None means that there is no restriction on when reservations can be created or modified. Default is future.
$conf['settings']['reservation']['updates.require.approval']Whether or not updates to reservations which have previously been approved require approval again. Default is false.
$conf['settings']['reservation']['prevent.participation']Whether or not users should be prevented from adding and inviting others to a reservation. Default is false.
$conf['settings']['reservation']['prevent.recurrence']Whether or not users should be prevented creating recurring reservations. Default is false.
$conf['settings']['reservation.notify']['resource.admin.add']Whether or not to send an email to all resource administrators when a reservation is created. Default is false.
$conf['settings']['reservation.notify']['resource.admin.update']Whether or not to send an email to all resource administrators when a reservation is updated. Default is false.
$conf['settings']['reservation.notify']['resource.admin.delete']Whether or not to send an email to all resource administrators when a reservation is deleted. Default is false.
$conf['settings']['reservation.notify']['application.admin.add']Whether or not to send an email to all application administrators when a reservation is created. Default is false.
$conf['settings']['reservation.notify']['application.admin.update']Whether or not to send an email to all application administrators when a reservation is updated. Default is false.
$conf['settings']['reservation.notify']['application.admin.delete']Whether or not to send an email to all application administrators when a reservation is deleted. Default is false.
$conf['settings']['reservation.notify']['group.admin.add']Whether or not to send an email to all group administrators when a reservation is created. Default is false.
$conf['settings']['reservation.notify']['group.admin.update']Whether or not to send an email to all group administrators when a reservation is updated. Default is false.
$conf['settings']['reservation.notify']['group.admin.delete']Whether or not to send an email to all group administrators when a reservation is deleted. Default is false.
$conf['settings']['uploads']['enable.reservation.attachments']If users are allowed to attach files to reservations. Default is false.
$conf['settings']['uploads']['reservation.attachment.path']The full or relative filesystem path (relative to the root of your phpScheduleIt directory) to store reservation attachments. This directory must be writable by PHP (755 suggested). Default is uploads/reservation
$conf['settings']['uploads']['reservation.attachment.extensions']Comma separated list of safe file extensions. Leaving this blank will allow all file types (not recommended).
$conf['settings']['database']['type']Any PEAR::MDB2 supported type
$conf['settings']['database']['user']Database user with access to the configured database
$conf['settings']['database']['password']Password for the database user
$conf['settings']['database']['hostspec']Database host URL or named pipe
$conf['settings']['database']['name']Name of phpScheduleIt database
$conf['settings']['phpmailer']['mailer']PHP email library. Options are mail, smtp, sendmail, qmail
$conf['settings']['phpmailer']['smtp.host']SMTP host, if using smtp
$conf['settings']['phpmailer']['smtp.port']SMTP port, if using smtp, usually 25
$conf['settings']['phpmailer']['smtp.secure']SMTP security, if using smtp. Options are '', ssl or tls
$conf['settings']['phpmailer']['smtp.auth']SMTP requies authentication, if using smtp. Options are true or false
$conf['settings']['phpmailer']['smtp.username']SMTP username, if using smtp
$conf['settings']['phpmailer']['smtp.password']SMTP password, if using smtp
$conf['settings']['phpmailer']['sendmail.path']Path to sendmail, if using sendmail
$conf['settings']['plugins']['Authentication']Name of authentication plugin to use. For more on plugins, see Plugins below
$conf['settings']['plugins']['Authorization']Name of authorization plugin to use. For more on plugins, see Plugins below
$conf['settings']['plugins']['Permission']Name of permission plugin to use. For more on plugins, see Plugins below
$conf['settings']['plugins']['PreReservation']Name of prereservation plugin to use. For more on plugins, see Plugins below
$conf['settings']['plugins']['PostReservation']Name of postreservation plugin to use. For more on plugins, see Plugins below
$conf['settings']['install.password']If you are running an installation or upgrade, you will be required to provide a value here. Set this to any random value.
$conf['settings']['pages']['enable.configuration']If the configuration management page should be available to application administrators. Options are true or false.
$conf['settings']['api']['enabled']If the phpScheduleIt's RESTful API should be enabled. See more about prerequisites for using the API in the readme_installation.html file. Options are true or false.
$conf['settings']['recaptcha']['enabled']If reCAPTCHA should be used instead of the built in captcha. Options are true or false.
$conf['settings']['recaptcha']['public.key']Your reCAPTCHA public key. Visit www.google.com/recaptcha to sign up.
$conf['settings']['recaptcha']['private.key']Your reCAPTCHA private key. Visit www.google.com/recaptcha to sign up.
Plugins
The following components are currently pluggable:
- Authentication - Who is allowed to log in
- Authorization - What a user can do when you are logged in
- Permission - What resources a user has access to
- Pre Reservation - What happens before a reservation is booked
- Post Reservation - What happens after a reservation is booked
To enable a plugin, set the value of the config setting to the name of the plugin folder. For example, to enable LDAP authentication, set $conf['settings']['plugins']['Authentication'] = 'Ldap';
Plugins may have their own configuration files. For LDAP, rename or copy /plugins/Authentication/Ldap/Ldap.config.dist to /plugins/Authentication/Ldap/Ldap.config and edit all values that are applicable to your environment.
Installing Plugins
To install a new plugin copy the folder to either the Authentication, Authorization and Permission directory. Then change either $conf['settings']['plugins']['Authentication'], $conf['settings']['plugins']['Authorization'] or $conf['settings']['plugins']['Permission'] in config.php to the name of that folder.