Topic: LuxCal 5.2.3 - MySQL and SQLite - released 15 August 2023

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

>>>> AS OF THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 <<<<

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

Hereafter you will find a full summary of all changes since the previous LuxCal version 5.2.2.

New features / improvements
• Drag and drop functionality has been added to the Year and Month view pages, so that events can easily be re-arranged without losing the calendar oversight. With this feature the mouse can be used to drag events from one day cell to an other day cell. Normal events, multi-day events and repeating events can be dragged and dropped. Dragged and dropped events will also have their "edited date/time" and "edited by" fields updated. If the ctrl-key is pressed while dropping the event, the event will not be moved, but a copy of the event will be dropped. If the side panel with the mini calendar is displayed, the drag and drop functionality is also present for this mini calendar and between the mini calendar and the year and month calendar. This makes the drag and drop feature very powerful. In Month view for example, one can select in the mini calendar one of the next months and drag events from the current month to the selected next month and vice versa. Day markings can also be dragged and dropped. They should be dropped in the event area of the day cell and not in the header area of the cell. In addition to the new feature described above, in a multi-calendar setup a user with at least manager rights can now also copy events from the current calendar to the other calendars. This works as follows: When the user drags an event from the Month view page, the Year view page, or the mini-calendar in the side panel and drops it on the calendar's top bar, a dialog box opens where the destination calendar(s) can be selected. If thereafter the Copy Event button is pressed, the event will be copied to the selected calendar(s). Because the other calendar(s) most likely will have different event categories, the category of the copied event will be set to "No cat".
• Since in the Options Panel the Calendar check boxes (if present), the View check boxes and the Language check boxes can have only one check box selected, they have been made auto-submit and therefore for these columns the Done button doesn't need to be pressed to submit the selection.
• On the settings page the event templates, where the fields to be shown in the general views, the upcoming view and the hover box could be specified, has been split in Event templates for public users and Event templates for logged-in users, adding more flexibility to "who should see what". By this change the previous setting "Show event details to users" has become redundant and has been removed.
• The Month, Week and Day view pages have been re-designed to avoid the misalignment of the calendar header and the calendar body, which could occur when the calendar body had no scrollbar. The header row which is now part of the calendar body table, has been made "sticky". Also, when scrolling on narrow screen devices the header will stick at the top of the screen.
• In the side panel's mini calendar, the date in the day cells is now right aligned, as in the Year and Month view calendars. Furthermore the font size of the date in the day cells has been slightly reduced".
• The "todo" events for which the "rolling" option has been set, will stop rolling when the user checks the "todo" check box.
• For events in the event base category "no cat" the "no overlap allowed" option cannot be set anymore. So, events in the "no cat" category can always overlap.
• To make maximum space available for the calendar content, the page footer is now positioned at the very bottom of the page and the footer height is fixed at 20px.
• In the Edit User Profile form the * for the note has been made class='hired'.

Technical issues
• To keep the calendar state of the art and cutting edge, in various files the calendar's PHP code has been simplified by using new features introduced in PHP 7, like e.g. the null coalescing operator and the shorthand ternary (Elvis) operator.
• To keep the calendar state of the art, in the JavaScript code the variable and constant declarations have been aligned with the ES6 JavaScript standard. In addition the deprecated JavaScript "substr" function has been replaced by the "slice" function.
• Two vulnerabilities reported by JPCERT/CC solved. A cross-site scripting and an SQL injection vulnerability. [VN: JVN#04876736, JVN#59855261 / TN: JPCERT#90779540].
• To avoid vulnerabilities, in passwords the characters <, > and ~ are not allowed. When using these characters, an error message will be shown.
• On the week and day view pages, for each time slot the date and the time are now stored in the id of the time slot <div>, rather than in a "data-" field, which makes the drag functions simpler.
• For "todo" events toggling the check box in the database is now done via the more modern and simpler "async await fetch" method, rather than using the XMLHttpRequest method (AJAX). The checkevt.php file has been integrated in the toolsaaf.php file and has been removed.
• Toggling the check box for "todo" events and editing events using the new drag and drop feature has been made more secure by applying a token.
• The parameter "dbSel" in the lcconfig.php file was redundant and has been removed. Whether in case of multiple calendars and when an administrator is logged in, the Options Panel shows a column with calendar IDs (to switch calendars), now solely depends on the setting "Options panel menus" in the section Navigation Bar on the Settings page.
• The HTML <pre> </pre> tags (spacers) have been replaced by &ensp; (if one space in between) and &emsp; (if 2 spaces in between).
• On the Settings page the event related fields have moved from the Views section to the Events section, which is more logical.
• Code simplified by using the $eDetails variable set in index.php, rather than performing the "may see details" test again.
• The bar with the left and right arrows with the time span in between has been made 4 pixels higher and the time span text is now better aligned with the arrows.
• In the head section of the mini-calendar the toolbox.js was loaded twice and the calID JavaScript calID variable was defined twice. This was no problem, but redundant.
• On the Settings page, in the general section, improved label and text of the Maintenance mode.
• For all admin pages the div with class 'scrollbox' has been removed and the scrollbar of the 'content' div will be used. This is a code simplification and the scrolling is done over the total vertical space.
• Header with arrows and date span made more responsive by switching to 3-letter months on narrow displays.
• Because of the limited space available in the Options menu and in the side bar's text field, the scroll bars have been made "thin". NOTE: for the moment this only works in the Firefox browser. We hope and expect the scrollbar-width property will be endorsed by W3C and thereafter be supported by other browsers.
• Rather than validating entered email addresses using a user-defined regular expression, now the PHP filter_var function is used, which is a simplification
• When a user logs in with an invalid email address, rather than displaying a generic error message, now the message will be "invalid email address". Furthermore the "Register" button has been made bold.
• The dates stored in the "checked' and 'xDates' fields of the events database table have been replaced by an offset number of days w.r.t. the event start date. This gives a much better user experience when events are moved with the drag and drop feature.
• During the calendar upgrade process the database tables will be compacted before the post-processing starts.
• In the upgrade section the tables post processing processes have been rearranged in the order of the calendar versions. This way it will be easier for future versions to selectively run the processes and speed up
    the overall calendar upgrade time.

Bug fixes
• Several PHP warning messages resolved, which occurred when the user asked for a pdf file. These warnings did not prevent the PDF feature from functioning.
• When exporting a .ics file, some lines in the exported file could become longer than 75 characters, which is the maximum length allowed according to the RFC 5545 specification.
• In the displays 1 - 3 empty lines in the event description were not shown due to a css error. Solved.

Re: LuxCal 5.2.3 - MySQL and SQLite - released 15 August 2023

Hi Roel,
you wrote that PHP VERSION REQUIRED IS 7 now. Are there any experiences/problems with using php 8 ?
Would like to know before switching php version. (A lot of webhosters are forcing their customers to do so...)

Thanks, Stefan

Re: LuxCal 5.2.3 - MySQL and SQLite - released 15 August 2023

Hi Stefan,
I'm very keen on staying compatible with the latest PHP versions and have spent a lot of time on this.
I know there are many LuxCal calendars running on PHP 8.2, like my own test calendars, and I have received not a single complaint or problem report.

So summarizing I think, if you are running one of the latest LuxCal versions, you can safely switch to  PHP 8 smile

Regards,
Roel

Re: LuxCal 5.2.3 - MySQL and SQLite - released 15 August 2023

Thanks for that!! smile