Topic: LuxCal 5.2.2 - MySQL and SQLite - released 6 March 2023

This new LuxCal version 5.2.2 includes new features and improvements. Furthermore quite a number of technical issues and bug fixes have been addressed.

As usual, this new release has been tested with the help of John from Denmark, resulting in less bugs and higher quality. Thank you John!

Hereafter you will find a full summary of all changes since LuxCal version 5.2.1.

New features / improvements
• On the Upcoming Events page an option has been added to change the start and and end date. Furthermore a possibility has been added to download a file in CSV format with the events in the selected period. In the CSV file the values are separated by the vertical bar (|) character. The download buttons are not available on narrow displays.
• A setting has been added to the Views section of the administrator's Settings page, to enable a scrollbar in the day cells in Month view. When a day cell overflows, rather than increasing the height of the cell, a scrollbar will be shown. This can be particularly useful when you have many events per day.
• When in Month view a day cell is completely filled with events, it was not possible to click an empty space to create a new event. To solve this problem, the day number in the right upper corner of the day cell has been made an hyper link, which can be clicked to create a new event.
• In the Event window it is now possible to specify a venue either by typing it or by selecting it from a drop-down menu with predefined venues. When predefined venues are used, the calendar's 'files' folder must contain a file called venues.txt with a venue on each line UTF-8 encoded. On the Settings page the administrator can specify whether the user should type the venue, select it from a drop-down menu or can choose either.
• A new predefined event description texts feature has been added to the Event Add/Edit window. When the files folder contains a file named descriptions.txt with predefined description texts for one or more event categories, then in the Event Add/Edit window when a event category is selected and the description field is empty, the predefined text for that category will be copied from this file to the description field.
• On the Edit Users page (for users with manager or administrator rights), an option has been added for events owned by a certain user to transfer the ownership to an other user. This can be particularly useful for owners having Post Own rights when for instance a user leaves the team of calendar editors. Ownership can be transferred for events in a certain event category and/or with a start date in a certain date range and/or with a creation date in a certain date range.
• In the right upper corner of the calendar a "full screen" icon has been added. When clicked, the current calendar page will be shown full screen. The page will stay in full screen mode until the full screen icon is clicked again, or the Esc key is pressed or a new calendar page is selected.
• When adding and editing items, to distinguish error messages from confirmation messages, the confirmation messages of successful actions are now displayed in a different color (default green).
• In day and week view, rather than the event title, now the full event box can be clicked to view/edit the event details. The pop-up details will now also be shown when hovering the event box, rather than the event title.
• The four displays now also accept an URL parameter 'cats', with the same layout as the $cats setting in the display files. Example: www.mysite.xxx/calendar/display1.php?cats=1,3,4,8. Category IDs in the URL parameter, which are not part of the $cats setting will be ignored.
• A new admin page to perform the following clean up functions: 1. Delete past events 2. Delete inactive user accounts 3. Delete attachment files which have been used in the past or not at all 4. Delete recipients  list which have been used in the past or not at all 5. Delete thumbnails which have been used in the past or not at all.
• In the stand-alone sidebar an onclick attribute has been added to the event titles to pop up the event details. So now also on mobile devices (no hover) the event details will pop up when an event title is clicked.
• When importing events from a CSV file, it is now possible to import 'no time' events. If the imported event has no start time (blank), the event will be shown as a 'no time' event in the calendar. If the start time is 00:00 or 12:00am, the event will be shown as an 'all day' event in the calendar.
• Because iCal events without start time and end time are often national holidays, importing iCal events without start time will now result in 'no time' events in the calendar. This used to be 'all day' events.
• Embellishment of the Log In fieldset and a visibility eye has been added on the right side in the password field.

Technical issues
• To avoid duplication of PHP code (4x), the function makeTime has been added to the toolbox. This function is used to produce the event time text for display1 - 3 and the pdf creation script.
• In the logMessage function, when writing the log message to disk, to avoid corrupt files, we now lock the log file during the write operation.
• The pop functions have been simplified by setting the max-width of the hover box, rather than the width derived from the content length.
• Date and Time Picker code simplified by using template literals (JavaScript ES6).
• In the pop function (static) setting the maxHeight of the hover box has been removed. In sporadic cases the hover box content overflowed the bottom of the box, in particular when using the mini calendar (display 1).
• The text "cat_scat_must" was not used by the software and has been removed from the files.
• In the function importSqlFile the transaction (start / commit) has been removed because the it sometimes conflicting with the MySQL auto-transaction.
• On the Search page the New Search button was a bit lost to the right and is now centered.
• The cursor for all elements with an onClick attribute is now set to 'pointer' (hand) in the style sheet and the 'point' style has been removed from all individual files.
• Te ensure a consistent set of styles, the styles are checked against the default styles and saved in the styles table at the very end of the upgrade process.
• For Month view the event title container has changed from <p> to <div> to avoid long titles from being justified. Furthermore the code to create a day cell has been optimized.
• When checking for overlaps, this is now done for today and the future days, because checking for overlaps in the past doesn't make much sense.
• When on the Settings page, in the Periodic Services section, the setting "Event expiry days" has been specified and the lcalcron.php script is started, only expired events that have not been deleted yet are deleted. Before all expired events, including already delete events, were deleted (again).
• When on the admin's Database page the Events function is used to delete events and an end date has been selected, events belonging to a category for which a repetition has been set will not be deleted. (events in a category with a repetition set have no end date and go on forever).
• To avoid selecting wrong files, the selection of file names from a folder is now done using a simple regular expression.
• For the PDF birthday calendar it is now possible to add the birthday trigger, e.g. #Frank(1983)#, in either the event description field or in one of the extra fields, rather than only in extra field 2.
• When for birthdays the age should be shown in the event title, the year of birth enclosed in parenthesis should be present somewhere either in the event description field or in one of the extra fields.
• The check on file extensions has been removed. The allowed file extensions for file uploads are specified in the File Uploads section of the Settings page and therefore there is no need to check the extension again when downloading files. Downloading program files is always forbidden.
• Since on mobile devices there is no possibility to hover an event, it was not possible to see the event details in the stand-alone sidebar. This has been solved by making side bar events clickable on mobile phones and tablets.
• Long array definitions (array()) replaced by short ([]).
• Possible birthday tags ( #name(yyyy)# ) in extra fields 1 or 2, used by the birthday calendar, are not shown anymore in the various calendar views.
• Removed the text justification for the event titles and body texts, which didn't look good when viewed on a narrow display, like a smart phone.
• For aesthetic reasons a border has been added options menu, user menu and side menu.
• There was no color specified for the "no event" text. When there was no event to show, depending on the specified display colors, this could result in an invisible, or hardly visible "no event" text.
• When an image was used in one of the event description fields, the alt attribute showed the image name and extension. The extension should not be part of the alt attribute and has been removed.
• When an imported CSV file contains image names and or email addresses, now both will be expanded to HTML tags (img-tag and a-tag with href='mailto') respectively. Images only work when the image name refers to an image in the calendar's thumbnails folder.
• For narrow screen devices the text Log In (or user name) has moved 20px to the left because t overlapped with the Full Screen icon.
• For narrow screen devices the current date in the center of the top bar is suppressed because it overlapped with the calendar title.

Bug fixes
• On the matrix-users page, the title of the left column read Event Categories, while it should be Calendar Users.
• If the calendar's upcoming sidebar is embedded in a page that can scroll, the position of the hover boxes was off-centered when the page was scrolled. Solved in the pop function by adding scrollX and scrollY to the hover box position.
• In the calcFTDate function the "case 'WEEK'" switch had two problems. 1) the $set variable was not defined as global and 2) the brackets were not placed correctly.
• Due to a possible NULL value of the temp_password field in older LuxCal versions, the upgrade to the latest 5.2.1 version could fail. The preprocessing code of the upgrade function has been revised to solve this problem.
• When events contain large images (which float left / right) and a short description, the events were shown staggered due to a missing "clear:both;" property in the "event" style.
• The makeE function performed an rtrim with the 'glue' before returning the event. For glue "<br>" and the venue within <a>-tags at the end of the event, this caused the last ">" to be removed. The rtrim was redundant and has been removed.
• When an event category allows no overlap, then when checking for overlaps, the xDates (multi-day and repeating events) were not taken into account.
• When checking for overlaps for repeating events, in the overlap function the last occurrence of the repeating event was not checked (problem solved by Stefan).
• When checking for overlaps events with "no time" checked (which are mostly reminders) are excluded from the overlay check.
• The overlap function was only checking against events in the event category the user was allowed to see even when no overlap allowed for all categories was checked. Solved.

2

Re: LuxCal 5.2.2 - MySQL and SQLite - released 6 March 2023

When will this new release become available on Softaculous so that upgrades can be assessed without any other workarounds?

3

Re: LuxCal 5.2.2 - MySQL and SQLite - released 6 March 2023

When an event has been placed on the calendar, when the notifications are to be sent out to various email addresses, how will the email be titled so that the recipients will know that it's coming from some entity that they are familiar with or are anticipating an email from?  At present, my recipients are deleting the emails because they have come from what they have claimed a strange or unknown sender, or flat never received them at all.

Re: LuxCal 5.2.2 - MySQL and SQLite - released 6 March 2023

Hi David,
I will send you an example notification email with an explanation.
Roel