Employee Work Schedule / Multi-calendar | Prosyscom Tech


Employee Work Schedule / Multi Calendar


Dashboard with many options

Multiple calendars, create your own calendars/categories


Users can register themselves [optional] or the admin can add users.

User groups

Hour calculation

Drag & drop possible

Assigning items to users/employees

Public, private and group calendars

Recurring events, many options

custom dropdowns

Notifications on screen and/or by email

Printing views

PDF export

viewing Exchange calendars

ICS (iCalendar) export

I welcome new features

More info

This calendar application is very flexible and has many options. Adding items to the calendar is very easy and quick.
Unlike other calendar solutions this calendar is very versatile and for every event you have many fields to fill in (optionally) and you can even create own custom edit dialog fields.
Drag and drop is possible and also clicking and selecting dates in the calendar views.
An admin can assign items to employees easily.

You can schedule employees to several calendars/spaces (rooms, shops etc.) or you can do it the other way around; add the employees as calendars and assign spaces to them.

It’s a complete JavaScript calendar system, with the base jQuery Fullcalendar, Bootstrap and a PHP/MySQL backend. All Fullcalendar options can be set from the dashboard, you don’t have to go in the code yourself.
The calendar can be accessed with a login, on IP address or public use for everybody.

Unique features
– In the settings you can determine if users have to login to see or edit the calendar.
– optional locking of an event when the event is being edited by someone.
– PDF export and print of the views.
– Assigning events is possible.
– Every minute (or faster) notification on admin’s client pc when a user adds/changes an event
– Inserting, editing and deleting items is fast and easy.
Powerful searching of the complete current calendar.
Public, private or group calendars.
– Besides admin(s) now users can also create calendars.
– Supports recurring events.
– New view with period selection
– You can create custom dropdowns, the events can also be filtered on those.
Multilanguage: English, Dutch, German, Spanish, French, Norwegian, Italian, Polish, Russian and Czech. You can add your own language file.
Automatic backup of database including data. (no knowledge of cronjobs necessary)
– The complete calendar is searchable. And the search results can be clicked to go to the event in the calendar. The search results depend on the chosen calendar
Extensive dashboard, with Hour calculation, User administration, Group administration, Calendar administration and settings. in admin area
– Set alterable range and the option to make the dates gray
– Set active range
Mobile / Touch friendly
– Import users from a WordPress users table.
– Possibility to move events to another calendar.
– Add files to an event.
– Admins (employees) can create Usergroups, with sepcified users.
– Securely show events from an Exchange account.

– You can predefine locations for each calendar, so choosing a location in the event edit dialog is easier.

Notifications can be send to the admin/employer when an event is added/edited.

Moving events to other calendars is possible.
– Users can be added to user-groups and a calendar can be assigned to such a group.
– Choose date and time formats, choose 24 hr. or AM/PM.
Drag and drop items, external and within the calendar.
– It uses Fullcalendar, a jQuery plug-in.
Easy resizing calendar items.
– The calendar can stretch to whole screen width.
– Users can easily change their profile and settings.
– A small widget with upcoming events (with back/forward arrow) for use on aonther page on your website,
– You can install it in a subdomain of your wordpress installation and add a link into one of the website pages to the calendar.

I would appreciate it if people with languages other than included in the calendar would be willing to share the languagefiles so i can include them in the calendar.

INSTALLATION NOTES: The installation is easy, it is all described in quick-start.pdf and in the full documentation pdf.

Known issues

adding a repeating event fails.

go to model/events.class.php to function insertRepeatingEvent on line 2756 and find this line:

$str_query_r = 'INSERT INTO events ( `title`, `location`, `description`, `phone`, `myurl`, `customer`, `customer_id`, `team_member_id`, assigned_by, dropdown1_option_id, dropdown2_option_id, dropdown3_option_id, dropdown4_option_id, dropdown5_option_id, calendar_id, repeating_event_id, user_id, `color`, date_start, time_start, date_end, time_end, creator_id, create_date, allday) VALUES ';

insert , `customer_id`

Some people have a problem when they have saved config.php. It has to be saved as UTF-8 (no BOM)

Another thing that was necessary: the date functions need to have a timezone.
In config.php set TIMEZONE to the correct timezone for you

Next update


dashboard responsive
Add events via a form outside of the calendar
Adding Google calendars
Include events from an external table/database (allready in Fast & Easy Calendar

Installing for the 1st time

NEW!: DB install and migrate easier now

1. Extract the zip file and copy all the files to a folder on your server.
2. Open configs/db.config.php and change the host, name, user and password to match with your database.
3. Open configs/config.php and change the paths (FULLCAL_DIR and FULLCAL_URL) to match your paths.
If you don’t know what the path-to-web-server should be you can remove the // in front of getcwd() and press f5 on your website. That will show the correct FULLCAL_DIR.
define(‘FULLCAL_URL’, $http_host . ’/employee-work-schedule’);
Don’t change $http_host.
4. Make all the folders readable
5. Make the following folders writable (773) for everyone:
– templates_c
– system
– system/dbdump
– system/uploads
6. Create a database and put /install in the address bar in the browser and press enter.

Someone was having problems because some other folders/files were writable by group.
The providers security didn’t allow that and an Exception (softexception) was thrown.
Making them not writable for group fixed the problem.

Installing updates

First make backups of all your files in your calendar folder and your database !

1. Extract the zip file and copy all the files, NOT the configs folder, uploads folder and templates_c, to your server.
2. Check the change.log if there are database updates. If there are, execute the queries that are in the updateXX.sql file.
3. Check the change.log if there are any new config-options. If there are, add them to your config.php.

Common mistakes

1. Incorrect paths in configs/config.php
2. Incorrect database credentials in configs/db.config.php
3. File/folder permissions incorrect. Only a few folders (and files in it) have to be writable. see point 6 in section ‘Installing for the 1st time’.
4. Forgetting to execute the database queries.

Summary of Updates

All the updates are in the changelog.
The most important updates are here:

Update 59 (10-5-2018)
Added possibility to add customers. the customers can optionally be selected in the event edit dialog.
Fixed: the email text for assigning was not used, the default one was used instead. The userID was not saved correctly.
Fixed bug with alterable end date. The dates were not disabled correctly anymore.

Update 58 (21-4-2018)
fixed: ICS buttons were not hidden anymore when HIDE_ICS_BUTTON is true.
fixed: the time was not exported correctly with ICS.
fixed: USERS_SORTING was not working completely correct in all circumstances
fixed: the checkbox ‘public view’ was not checked in the calendars overview in the dashboard right after a new public calendar was created.

Update 57 (17-4-2018)
Fixed 2 notices.
Fixed, when the user select dropdown was in a public calendar event all the users were not in the dropdown and the selected user was not saved correctly.
Fixed 2 deprecated errors when using with php 7.2
Fixed: in some cases no user is selected in the user group select box that is next to the calendar.
Fixed: deleting of memos was not working as it should.
Tweak: according to the type of user select dropdown that is chosen for the calendar, the user group DD-item sets the user_id or the team_member_id in the database.
Tweak: the config-option USER_SORTING now also sorts the user dropdowns.
Fixed issue with saving and viewing memos
Fixed: saving the end date of user availability was broken.

Update 56 (29-3-2018)
Tweak: now more than one IP address can be filled in for IP access (CAL_IP in config, php)
Tweak: team member dropdown now is searchable. Implemented another multiselect for it.
Fixed issue with custom dropdown filters not working initially.
Fixed: when ALL calendars is selected, the user select box in the edit event dialog is not filled correctly.
Fixed: after dragging a user group DD-item the user id is set to the logged in user instead of the linked user from the group.
Fixed: the edit link for editing a user didn’t work when the config-option PREVIEW was missing.
Fixed notice which appeared when no alterable period was set.

Update 55 (10-3-2018)
fixed: the users list in the select box in the edit event dialog wasn’t complete for public calendars.
fixed: a super admin could only select admins when the super admin was adding a group.
fixed: in default week view a DD-item with start and end time set was saved as allDay event.
fixed: in default week view the description wasn’t visible when the event was not allDay.
added possibility to keep track of attendance (cronjob needed, see attendance.php) by sending an email when an employee is not logged in after a specific number of minutes of the day. This is checked against the employee availability that is set in the users section in the dashboard. new config options: CRONJOB_CHECK_USER_LOGIN and ATTENDANCE_MINUTES_OFFSET.
tweak: added a message when an item was added with one or more team members selected, and the team member was not saved because there is no availability set for that team member.
tweak: the ability for users to select themselves in the team member select field in the event edit dialog disappeared. this can now be set with the config option: USERS_CAN_SELECT_THEMSELVES_AS_TEAMMEMBER
Fixed issue with initial_date and alterable_startdate when switching date format in config.php.

Update 54 (1-3-2018)
Fixed issue that occurs after last update; user_id of usergroup dd-item is not saved correctly.
Fixed: in weekview when dragging an allDay event it should become the default event duration

Fixed: also check on availability when an event is dragged internally
Tweak: the users in the user select box and the team member select box are now sorted on last name.
Fixed: on newer MYSQL versions the add user query gave an error when ‘birth date’ was empty.

Update 53 (23-2-2018)
Found out that some people have a problem when they have saved config.php (probably with Notepad++). It has to be saved as UTF-8 (no BOM)
Found out that TIMEZONE is required now for the date function to work. In config.php set TIMEZONE to the correct timezone for you.
Updated Spanish language file (langES.js)
Added possibility to set initial startdate for a calendar.
Fixed issue with reminder icon showing when it shouldn’t.
Fixed: the calendar alterable date didn’t know about the configureable date format.
Fixed some issues with reminders saving and showing in the edit dialog.
Tweak: admin should see if reminder is set for a user when the admin has set that reminder.
Tweak: in users overview in dashboard the first column was not correctly set when no user colour was selected.
Tweak: when checking on availability it now also checks if the user has vacation.
Tweaked the width of times in the PDF output.
Tweak: sender name is now filled in reminder mail
Tweak: when ‘use user color’ is on (user edit form) now also the usergroup DD-items have the correct color.
Tweak: Emailtexts (dashboard) are used for the mails now.

Update 52 (30-01-2018)
added possibility to optionally use the user color for events
added possibility to make a user an admin
added possibility to multi-copy event to max. of 4 dates in one action.
ldap login (test phase)
fixed: the ‘change date’ for a copied event should be null.
fixed: when ‘user can only see own assigned items’ was set to true, the user could still see other items in the custom list view.

Update 51 (15-01-2018)
Added possibility to combine separate ‘neighbour’ events in recurring patterns. In other words, you can have a recurring pattern with moreday events. Take in account that when you did small changes to an event of the pattern, like another time or location (and you did not pull the event out of the pattern), those changes will be lost when you switch between combining and uncombining.
Added optional ‘customer’ field.
Added responsive Google-like calendar widget view, for use in an iframe somewhere else on your website.
Added lines to language files
Added possibility to set maximum users. config option MAX_USERS.
fixed: in new bootstrap login the register button was always visible, even when users are not allowed to register.
tweak: admin can change color of an event
Fixed issue that some items were not hidden when it was set that user can only see items assigned to that user.
Fixed: creator_id was not saved with recurring events
Fixed issue with UTF8 in some fields
Fixed: long names where not completely visible in the user group DD-items.
Fixed issue with showing users in the user select box while editing a vacation.
Fixed ‘php warning’.
Fixed issue with the share_type field not loading correctly.
New config-option CRONJOB_REMINDERS, set this to true if you have a cronjob set up with reminders.php as action.
Fixed: in safari the team members were not correctly shown on the event on the calendar view when more than 2.
Fixed: in the custom list view a user could see items that were assigned to other users even when ‘users can only see their own assigned items’ was true.

Update 50 (13-11-2017)
added possibility to create memos and show them as popup to users. when the user clicks the ‘x’ it is hidden the next time
added lines to language files
updated documentation
added reminders (email), cronjob required, see documentation
fixed issue with showing the ‘infix’ field in forms.
tweak: availability should not be checked if the event belongs to an admin
added a config-option (CALENDAR_ID_SELECTABLE_IN_ADD_EVENT_DIALOG) that allows you to select a calendar when adding an event, even when more than 1 calendars are selected in the calendar. (not preferable ! can give problems if you have calendars with teammember field shown and other calendars with teammember field hidden)
tweak: in the add event dialog the phone icon and url icon should not be visible.
tweak: improved behavior of mouseover
tweak: changed icon for assigned event
fixed: setting ‘calendar can be moved to other calendar’ was always ticked in calendar edit form.
fixed: When the DD-items block had fixed position (CAL_BLOCK_FIXED_POSITION in config.php) the DD-item was moved under the calendar.
Added possibility to set a calendar as type ‘vacation’ with special features. The admin can approve vacations in the dashboard.
Added vacations hour calculation section in the dashboard.
Added hour calculation export to CSV, for better support with ‘Numbers for Mac’.
Added another option to monthly recurring pattern, example: every 4th Monday of the month.

Update 49 (25-08-2017)
Added possibility to set employee availability. (CHECK_EMPLOYEE_AVAILABILITY in config.php)
Added Russian languagefile
Added ‘assigned to’ in mouseover.
Added possibility to allow users to edit only the current item of a recurrence pattern instead of the whole pattern, config-option: USERS_CAN_EDIT_WHOLE_PATTERN
Added possibility to show dates with no events in the custom list view, config-option: SHOW_EMPTY_DATES_IN_LISTVIEW
Fixed: in some cases when adding an event, the end time was not set correctly according to the default event duration setting.
Fixed: the check if an new item will be overlapping was not looking at the calendarID.
Fixed: dropdown labels were undefined in the mouse over popup when the event was added right before that.
Fixed an issue with checking on overlapping events when drag&drop a user group DD-item.
Fixed: issue with showing the custom dropdown values in the email.
Fixed issue with calculation in hour calculation when there was an event with starttime same as endtime.
Fixed issue in hour calculation when calculating hours of events with team members selected.
Deprecated config-option: SELECTED_TEAMMEMBERS_ARE_AUTOMATICALLY_ASSIGNED, now you can set it for each calendar separately.

Update 48 (21-6-2017)
added possibility to use a specific error log file within the calendar folder. you can set it in config.php
fixed issue with adding and removing a team member immediately in the edit dialog without saving in between.
fixed issue with users being able to drag events, when in config,php was set that users only can change teammemberfield or title. added possibility to set that past events are blocked for changing by users.
fixed: user that only can change team member can also not see the simple edit dialog.
fixed: message in login form was not showed.
fixed: clicking in the custom list view on a last month date was taking you to the wrong month and therefore the emphasizing of the event was not visible.
fixed: issue with saving the color of a user in the user edit form in the dashboard.
added possibility that a user can optionally have rights to manage team members for an event. new config-option: USERS_CAN_MANAGE_EVENT_TEAMMEMBERS (default: false)
added automatic database install and migrate functionality.

Update 47 (13-5-2017)
userfilter can now also be visible for users.
Added possibility to define how the user filter should work.
added ‘last updated events’ to dashboard.
Added option to automatically assign all the selected team members, and thus also include in hour calculation
added possibility to let a user only change team member field
If you want to set a specific calendar height it is possible now
now you can choose if you want to display a message if you add an event and there is already a duplicate of it existing,
tweak: users couldn’t add themselves to teammemberfield without removing the other selected user(s)
tweak: now it is configurable how many items are shown in dashboard.
several new config-options
Added possibility to set a width for the left block
Fixed MYSQL issue with hour calculation, users (ID 1, ID 2, ID 3 .. until 10) where assigned hours that not belonged to them.
Fix: due to upgrading jQuery version, some buttons in the edit dialog were not visually disabled.

– Let me know what else you want to see in the hour calculation


You might also like More from author