<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[LuxCal Web Calendar — What's New]]></title>
		<link>https://www.luxsoft.eu/lcforum/index.php</link>
		<atom:link href="https://www.luxsoft.eu/lcforum/extern.php?action=feed&amp;fid=3&amp;type=rss" rel="self" type="application/rss+xml"></atom:link>
		<description><![CDATA[The most recent topics at LuxCal Web Calendar.]]></description>
		<lastBuildDate>Sat, 25 Jul 2026 11:57:27 +0000</lastBuildDate>
		<generator>PunBB 1.4.4</generator>
		<item>
			<title><![CDATA[LuxCal 5.3.5 - MySQL and SQLite - released 26 July 2026]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=543&amp;action=new</link>
			<description><![CDATA[<p>In this new LuxCal version 5.3.5 you will find some handy new features. A number of&nbsp; technical issues have been addressed, which are not directly visible to the user, and a number of bugs have been solved. Furthermore the exporting of events in an .ics file, both by a cron job and via the administrator&#039;s Settings page has been thoroughly reviewed and improved.</p><p>This LuxCal version has been tested with PHP 8.4.<br>&gt;&gt;&gt;&gt; FOR THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</p><p>And as usual some last minute issues have been found by John from Denmark, the best beta-tester of the universe, who always helps to make the LuxCal Web Calendar a better product. Thank you John!</p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.3.4.</p><p><strong>New features / improvements</strong><br></p><ul><li><p>In the Event Add/Edit window three mini buttons Bold, Italic and Underline have been added in the top bar (next to the smiley), which can be used to easily add these style tags to a selected text in one of the text fields.</p></li><li><p>On the Text Editor page, when editing the info.txt text, three mini buttons Bold, Italic and Underline are displayed just above the edit form, which can be used to easily add style tags to a selected text.</p></li><li><p>The events were sorted on &quot;event time and time added to the calendar&quot;. Because many calendar users use the title field for a person&#039;s name, the sorting has been changed to &quot;event time and event title&quot;.</p></li><li><p>Normally events without a defined start time appear at the top of an event list, in case of multiple events on the same day. For events without start time it is now possible to move an event to the bottom of the list of events by adding an * (asterisk) at the start of the event title.</p></li><li><p>On the Settings page, section Events, for Event title layout, a new component #sc (short category) is available. When #sc is part of the specified event title layout, it will be replaced by the part of the event category name up to the first space character. This way it will for instance be possible to start the Event category name by a symbol (e.g. a complex UTF character), which will be added to the event title. This feature will only work if the multi-byte functions are enabled in the PHP installation on your server.</p></li><li><p>If on the Settings page, in the section Events, Specifying venues is &quot;Venue list&quot; or &quot;Both&quot;and the file venues.php with pre-defined venues is present, the filter Venues - with the pre-defined venues - is added to the Options Panel. This will allow the user to select events for a specified venue.</p></li></ul><p><strong>Technical issues</strong><br></p><ul><li><p>Code simplification. The content of the printNice function has been reduced to just window.print() and @media print styles have been added to the style sheet instead. Furthermore the noPrint class has been added to the user name and the full screen symbol in the top bar.</p></li><li><p>The @media print styles have moved to the end of the css file, so that they are not overruled by subsequent styles and the entire contents of scroll boxes are printed.</p></li><li><p>When positioning the Add/Edit Event window, now the left side of the current window is taken into account, so that - when multiple calendar windows are open - the Add/Edit Event window will be positioned within the window of the calendar concerned.</p></li><li><p>The layout of the Cleanup, Database, Search, Thumbnails and all import/export pages with an explanation on the right side of the screen has been redesigned to get a better fit across the screen.</p></li><li><p>In the Add/Edit event window specifying a venue from a list has been simplified. When on the admin&#039;s Settings page, section Events, Specifying venues is set to &quot;Venue list&quot;, then the pre-defined venues from the list will appear in the drop-down list of the Venue field and when Specifying venues is set to &quot;Both&quot;, the previously typed venues (history), followed by the pre-defined venue list will appear in the history drop-down list of the Venue field. In HTML this is called a datalist.</p></li></ul><p><strong>Bug fixes</strong><br></p><ul><li><p>The regular expression $rxEML did not find email addresses with a sub domain (i.e. John@Brown.co.uk). Regex updated.</p></li><li><p>The feature to export events in ICS format via a cronjob or via the admin&#039;s side menu has been reviewed thoroughly. The following problems have been solved in the iCal export software:<br> </p><ol class="decimal"><li><p>The UID could contain a space, if the event title contained a space in the first four characters, </p></li><li><p>Individual days deleted from repeating events were not reflected in the exported iCal files,</p></li><li><p>The iCal field LAST-MODIFIED was filled with the dummy date 99999999 when the event had not been modified.</p></li><li><p>For &quot;all day&quot; events the end date (DTEND) in the exported events was corrupted.</p></li><li><p>Events created with &quot;No time&quot; set, caused syntax errors for the DTSTART and DTEND properties.</p></li><li><p>VTIMEZONE component added. Note: The required STANDARD and/or DAYLIGHT property is still missing, because the values of these properties are not known by the calendar. This will cause an error when validating the&nbsp; exported iCal file.</p></li></ol></li></ul>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Sat, 25 Jul 2026 11:57:27 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=543&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.3.4 - MySQL and SQLite - released 25 August 2025]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=528&amp;action=new</link>
			<description><![CDATA[<p>In this new LuxCal version 5.3.4 you will find only a few minor new features. This version is released because there were a number of bug which have been solved. Furthermore some technical issues have been addressed, which will improve the stability of the calendar software.<br>This LuxCal version has been tested with PHP 8.4.<br>&gt;&gt;&gt;&gt; FOR THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</p><p>And as usual some last minute issues have been found by John from Denmark, the best beta-tester of the universe, who always helps to make the LuxCal Web Calendar a better product. Thank you John!</p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.3.3.</p><p>New features / improvements<br>• On the User Profile page and the Edit Users page the eye symbol has been added to the password fields.<br>• On the Event, Day marker, Search, CleanUp and Event File Export pages, the date input fields, which are initially blank, now contain a placeholder showing the date format to be used.<br>• On the administrator Settings page the header with the Save Settings button has now been excluded from the scroll area, so that the Save Settings button remains always visible.</p><p>Technical issues<br>• The Message-ID field containing the event ID has been added to the email headers. This can be useful when troubleshooting the sending of emails.<br>• The dmark scripts still contained code which was related to processing of normal events, which however was not relevant for day markers. The redundant code has been removed from the scripts.<br>• When the hit/bot counter is read from the file, it&#039;s directly converted to an integer. This resolves a PHP deprecate warning.<br>• In the fields title, venue and text1-3 HTML tags which are not closed are annulled by adding a closing tag directly following the opening tag.<br>• Before using the event title in an email subject field and the event title and venue in SMS messages, possible HTML tags are removed.<br>• In the Add/Edit Event window in the help (red ?) text for the description fields, the image description was only shown when on the Settings page &quot;Show images in month view&quot; was checked. Images can always be added, so they should always be mentioned in the help text.</p><p>Bug fixes<br>• The ITtoDT function returned a blank time when the time started with a &#039;9&#039;. See V5.3.3 - Technical issues no. 17. Ok for dates, but not for times. The test should be: when the time starts with &#039;99&#039;.<br>• Double quote ( &quot; ) missing in the Danish language file at the end of line 253.<br>• When the page &quot;Changes&quot; is selected and changed events are found, PHP error messages appear in the background of the page. Because on lines 105 - 107 the variable name $evt has accidentally been replaced by $row.<br>• When at the start of the retrieve function the filter is built and a selection on one or more event categories has to be made, the category sequence number was used, rather than the category ID. If on the administrators Category page the category sequence numbers have been changed and in the option panel one or several event categories were selected this led to the display of wrong events in the calendar views.<br>• When editing one occurrence of a recurring day marker, and SQL error occurred because of a &quot;notify&quot; field in the SQL statement, while for day markers notifications are not relevant.<br>• When upgrading from calendar V5.1 or V5.2, the sub-categories were not copied to the 5.3 database. Bug in upgrade function solved.<br>• When producing PDF files, day markers were not displayed correctly. The text and background colors were not applied correctly and &lt;b&gt; tags were present in the title.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Wed, 20 Aug 2025 19:00:36 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=528&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.3.3 - MySQL and SQLite - released 24 December 2024]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=516&amp;action=new</link>
			<description><![CDATA[<p>In this new LuxCal version 5.3.3 you will find some interesting new features and improvements. Furthermore a number of technical issues have been addressed and a few bugs have been fixes.<br></p><h5><strong>&gt;&gt;&gt;&gt; FOR THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</strong></h5><p><span style="color:purple">And again John from Denmark, the best beta-tester of the universe, spent a considerable amount of time beta testing this new version and helped to make the LuxCal Web Calendar a better product. Thank you John!</span></p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.3.2.</p><p><strong>New features / improvements</strong><br>• In the Event Edit/Add window in the notification section an icon has been added right next to the list with recipients. When this icon is clicked a list opens from which recipients can be selected. This list contains 1) a list with the recipients lists from the reciplists folder, 2) the registered recipients and 3) a list with all recipients specified in the file +recipients.txt. The latter file can for instance contain often used recipients, who are not registered. It is still possible to also manually type recipients in the &quot;To&quot; field.<br>• The previous info text editor has been upgraded to a general text editor which can be used to edit the info-text in the right side bar, the file with public (not registered) recipients and the recipients list files, which can can be added to the recipients in its entirety.<br>• In notification recipients list files on each line text starting with a #-character is treated as comments and will be flushed.<br>• A new &quot;display&quot; (display4) has been added, which shows the events in a very compact list with each event on one single line. For details see <a href="http://www.luxsoft.eu" target="_blank">www.luxsoft.eu</a>&nbsp; - Demos - Displays.<br>• When a public user (not logged in) visits the calendar or one of the displays for the first time, the calendar / display user interface language will be the same as the browser language. If no browser language is found or if it is not a valid calendar language, the default language specified on the settings page will be taken.<br>• A setting has been added to the Settings page to enable the logging of all notification messages sent by email, Telegram and SMS. The message log can be viewed on a new page &quot;Notification Message Log&quot;, which is available to users with admin or manager rights, via an option in the ☰ menu.<br>• For the MySQL version of the calendar, independent of the MySQL database in use, the Search function is now always case-insensitive. For the SQLite version it was already always case-insensitive.<br>• When entering event times on mobile devices the decimal keypad will be forced, which makes entering times easier. To separate hours from minutes the . (period) or , (comma) on the decimal keypad can be used.<br>• The HTML &lt;sub&gt; and &lt;sup&gt; tags are now allowed in the event title and description fields, so that chemical and mathematical formulas can be used.<br>• In the configuration section of display0, 1 and 2 the PDF button can now also be enabled for logged in users only.<br>• In email and telegram notification messages the label in front of the date and time field is now just &quot;Date&quot; when no event times have been specified.</p><p><strong>Technical issues</strong><br>• In the catMenu function the $selected variable was set twice.<br>• The use of the addslashes and htmlspecialchars functions to &quot;escape&quot; quotes in the pop text of the &quot;pop&quot; and &quot;popM&quot; functions is overkill and could possibly create problems for some browser. Both functions have been replaced by a new &quot;unQuote&quot; function, which only replaces single and double quotes by the respective HTML entities &amp;apos; and &amp;quot;. HTML tags are left intact.<br>• The JPCERT/CC in Japan reported an SQL injection vulnerability (ID: JVN#91510849) caused by the retrieve function, due to the fact that a possible external filter, including it&#039;s values, is directly embedded in the SQL statement. In all scripts which are calling the retrieve function the values are now separated from the filter and introduced in a prepared statement with placeholders.<br>• The JPCERT/CC in Japan reported a path traversal vulnerability (IDs JVN#89939615 and JVN#01069027, describing the same problem), caused by the dloarder script. The validation part of the dloader.php script has been redesigned to solve this vulnerability.<br>• The JPCERT/CC in Japan reported an SQL injection vulnerability (ID JVN#26024080), caused by the script that produces the pdf file with events. Solved by using a prepared SQL statement.<br>• On the Search page the wild cards _ and &amp; have been replaced by the more common ? and *.<br>• In fields title, venue, description, and extra fields, the &quot;&#039;&quot; character is replaced by &amp;apos (HTML5) instead of &amp;#039; (HTML401).<br>• For the function htmlspecialchars the flag ENT_HTML5 has been added to the flag ENT_QUOTES, so that single quotes are converted to &amp;apos; (HTML5) rather than &amp;#039; (HTML401).<br>• Stray &lt;td&gt;-tag removed in the top bar of the Event Edit/Add window.<br>• In the event functions and day marking functions newE, editE, newM and editM the mode and state parameters were not used and have been removed.<br>• The name and value of the repeat box OK button were not used and have been removed.<br>• The Set Repetition box is now properly centered.<br>• The Dutch and Polish language files have been updated.<br>• In the Day Marking window the option &quot;rolling&quot; has been removed from the repeat section. Rolling is not relevant for day markings.<br>• In the colgroup of the left column, the &lt;col&gt; tag had a redundant &lt;/col&gt; tag, which has been removed. The HTML &lt;col&gt; tag has no closing tag.<br>• Detection of &quot;all day&quot; and &quot;no time&quot; simplified.<br>• In the IDtoDD and ITtoDT functions, a date or a time starting with &#039;9&#039; is converted to an empty date or time. This simplifies the calling scripts, which don&#039;t need to test on &#039;9&#039; before calling these functions.<br>• Rather than composing the event time on the spot, these scripts are now using the makeTime function.<br>• Incrementing the hit counter is now better protected with a file lock. Before, occasionally at random moments the counter file could be deleted.<br>• If the php.ini setting allow_url_fopen is disabled, then the function file_get_contents cannot be used to communicate with Telegram. Web hosts sometimes disable this setting to avoid Remote File Inclusion (RFI) attacks and unauthorized access. Therefore, if the php.ini setting allow_url_fopen is disabled, the calendar switches to the cURL library for the communication with Telegram.<br>• The True Type fonts files, used when printing the birthday calendar, have been updated. They caused PHP &#039;deprecation&#039; warning messages when running the calendar with PHP 8.2.</p><p><strong>Bug fixes</strong><br>• When on the admin&#039;s Category page the IDs are not identical to the sequence numbers, then when in the Options Panel one single category has been selected, when adding a new event the default category in the Add Event window will not be the selected category in the Options Panel. Solved.<br>• In the array $evtArr the event end date was not converted to ISO format. For multi-day events this resulted in the &quot;full&quot; date / time of notification messages in a garbled end date.<br>• The conditions to determine the value of the variables $ald and $ntm were not enclosed in brackets and therefore for the search page and the displays &quot;all day&quot; was shown for events with no time (blank).<br>• In LuxCal V5.3.1 a bug was introduced which resulted in the fact that events that need approval, but are not yet approved were visible to other users. Events that need approval should only be visible to other users after approval by a user with manager rights.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Thu, 19 Dec 2024 15:33:08 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=516&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.3.2 - MySQL and SQLite - released 12 April 2024]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=499&amp;action=new</link>
			<description><![CDATA[<p>Unfortunately LuxCal version 5.3.1 has the following problem on several pages: <strong>Clicking an event to open it doesn&#039;t work</strong>.<br>The solution is very simple, but since it requires a change on several pages (some10 pages), we decided to release a new version.</p><p>Users of the current version 5.3.1, who encounter these problems, are advised to upgrade to version 5.3.2.</p><p>We are sorry for the inconvenience.</p><p>Roel</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Wed, 10 Apr 2024 09:43:44 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=499&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.3.1 - MySQL and SQLite - released 19 March 2024]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=490&amp;action=new</link>
			<description><![CDATA[<p>In this new LuxCal version 5.3.1 you will find some interesting new features and improvements. Furthermore a number of technical issues have been addressed and a few bugs have been fixes.<br></p><h5><strong>&gt;&gt;&gt;&gt; FOR THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</strong></h5><p><span style="color:purple">As always, John from Denmark spent a lot of time beta testing this new version and helped to make the LuxCal Web Calendar a better product. Thanks again John!</span></p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.2.4.</p><p><strong>New features / improvements</strong><br>• When enabled on the Settings page, in the Event and Day Marker windows an emoji picker can be opened, which can be used to add emojis to the title and description fields.<br>• The event notification system has been revised. In addition to email and SMS notifications now also Telegram notifications are possible. Which service for notification is used is now determined by each individual user, rather than by the sending script. The user can select from the message services enabled on the Settings page via which service to receive notifications. The user can also select to receive notifications via more than one service, for instance both via email and Telegram messages. For more details see the admin_guide.html document.<br>• To give certain users calendar access for a limited duration, for each user account an expiry date can be specified. To do so one needs manager rights or up.<br>• On the admin&#039;s Edit Categories page you can now add a list with notification recipients to an event category. When on the calendar an event is added, edited or delete in this category, a notification will be sent to the recipients specified for the category. If the event editor is part of the recipients list, he/she will be excluded from the notifications to be sent. If the editor wants a notification as well, he/she can check &quot;send notification now&quot; in the Event window.<br>• On narrow displays in Month view the &quot;Previous year&quot; and &quot;Next year&quot; arrows in the navigation bar will float left and right respectively, so that they are further away from the normal &quot;Previous&quot; and &quot;Next&quot; arrows.<br>• The settings specifying the view buttons on the navigation bar for public and logged in users have been split in settings for large displays and settings for small displays. This way the admin can specify less buttons for small displays, so that the navigation bar on small displays fits on one line.<br>• As background information, on the Manage Database page a list with useful totals of database records is shown. Furthermore the length of the date fields have been limited to 10 characters.<br>• When not used the &#039;To approve&#039;, &#039;Upcoming&#039; and &#039;Todo&#039; side lists can now be disabled on the Settings page. This will result in less database accesses and faster calendar load times.<br>• When specified on the Settings page, a calendar logo will be displayed on the Log In page just below the Log In dialog box. The height of the logo can also be specified. The maximum width is 80% of the window width.<br>• The calendar can now remember multiple user log-ins from different devices. So for example when you log in from your mobile phone and from your desktop computer, while in both cases selecting &quot;Remember me&quot;, the calendar will remember both log ins.<br>• When on the Thumbnails page a thumbnail is clicked, a &quot;Copied to clipboard&quot; notification is shown for some seconds.<br>• On the Thumbnail Images page, the Manage Thumbnails box has been given a bit more padding and the Submit button is horizontally centered now. Embellishment.<br>• The form on the Contact page has been redesigned. Embellishment</p><p><strong>Technical issues</strong><br>• Non-recurring events and recurring events are retrieved with one single database query, instead of two separate queries. This results in <br>&nbsp; &nbsp; faster calendar load times.<br>• Several code optimizations to speed up calendar load times.<br>• In the options menu, the entries in the calendar selection table were enclosed in redundant &lt;div&gt;-tags. &lt;div&gt;-tags removed.<br>• On the Settings page, in the Events section, for the Event drag and drop setting, the &quot;enabled&quot; radio button was followed by a stray &#039;&gt;&#039; character. Character removed.<br>• In the JavaScript &quot;onclick&quot;, &quot;onmouseover&quot; code, by using the back-tick character the code has been made more consistent, better readable and less prone to interference with quotes in text strings.<br>• For the so-called Displays, in the &lt;script&gt;-tags where the toolbox.js file is loaded the calendar version number is added to the toolbox.js, to ensure the loading of the last toolbox.js version.<br>• In the Add / Edit Event window, both Help question mark symbols (Description and To) have been replaced by more discrete question marks.<br>• On the admin&#039;s Database page, the number of characters in the date input fields has been limited to 10.<br>• In the list of sub-categories, the first entry (None) was hard coded and consequently the same in all languages. It&#039;s now taken from the language file (ui-&lt;lang&gt;.php).<br>• In all functions the unused global variables have been deleted. Cleaning up.<br>• Empty and duplicate entries are removed from the recipients list, before the list is used to send notifications.<br>• On the User Profile page, when a field contained an invalid value, the field was reloaded from the database so that the user could not see why the value was invalid. Solved.<br>• The regex $rxPhone updated, so that a mobile phone number must start with a + or a 0 (zero) character.<br>• Both pages Import Users and Export Users have been revised. The telegram chat ID has been added to imported and exported files. Further changes: When exporting all users, the Public User is skipped. When importing users, the error handling and reporting of the file to import has been improved.<br>• LuxCal versions 2.7 - 3.2 (older than 10 years) are not supported anymore and have been removed from the upgrade procedure. If someone is still using a version &lt; 4.1 and needs help, LuxSoft should be contacted.<br>• On the Settings page, section Reminders - SMS, the validation of the calendar phone number has been added.<br>• In the saveSettings function, to avoid leading and trailing spaces, the values are trimmed before saving them to the DB settings table.<br>• In the right upper corner, on the navigation bar, the Log In link overlapped the Full Screen symbol and the User Menu was not aligned with the User name<br>• The Thumbnails page was not responsive and did not show correctly on a narrow screen device<br>• The current date and time have been removed from the header in email notifications because it was redundant. The email client already shows the date and time of email messages.<br>• To cope with emoji and other special characters, for the MySQL version the database collation is set to utf8mb4.</p><p><strong>Bug fixes</strong><br>• To check the current settings against the $defSet entries in the toolboxx.php file, the &#039;short-ternary&#039; operator was used instead of the &#039;null coalescing&#039; operator, which could result in showing wrong check box values on the Settings page, whilst the actual $set value was correct.<br>• In the Upcoming view events could not be clicked anymore to open or edit event details (due to nested single quotes). Solved.<br>• Thumbnail images in the onmouseover pop attribute could cause strange effects. In some PHP versions &lt; 8.1 single quotes were not converted to HTML entities because ENT_QUOTES was missing in the htmlspecialchars PHP function.<br>• When updating the user profile data, the &quot;User profile updated&quot; message was shown in the error message color, instead of the confirmation message color (green).<br>• When a user self registered or asked for a new password, the confirmation message was shown in the error message color, instead of the confirmation message color (green).</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Tue, 12 Mar 2024 18:07:22 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=490&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.2.4 - MySQL and SQLite - released 16 November 2023]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=476&amp;action=new</link>
			<description><![CDATA[<p>In this new LuxCal version 5.2.4 a number of technical issues have been addressed and a few bugs have been fixes. In addition an &quot;About LuxCal &quot; option has been added to the side menu.<br></p><h5><strong>&gt;&gt;&gt;&gt; IMPORTANT: FOR THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</strong></h5><p><span style="color:purple">As always, John from Denmark took part in the beta testing of this new version and helped to make the LuxCal Web Calendar a better product. Thank you John!</span></p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.2.3.</p><p><strong>New features / improvements</strong><br>• In the side menu an option &quot;About LuxCal&quot; has been added, which is available for users with administrator rights. When this option is selected, an About LuxCal overlay is shown with the current calendar version and a message if a newer version is available at the LuxSoft website with download links. In addition, if important information is available, LuxSoft can add note or warning texts to this overlay. Calendar administrators are advised to select this menu option from time to time.</p><p><strong>Technical issues</strong><br>• A cross-site scripting / SQL injection vulnerability reported by JPCERT/CC has been solved. [VN: JVN#15005948 / TN: JPCERT#97783326]. Now all calendar input data, i.e. GET, POST and COOKIE variables, are sanitized and the variables with a fixed-format are validated at the start of the code.<br>• The email regex ($rxEML) has been improved. In special cases, when the event description contained a URL link, which included a @-sign, the regex to create email links didn&#039;t work. This resulted in an empty description field.<br>• In the post-processing of the upgrade function, when searching for old &quot;sml&quot; email links, the offset in strpos function has been removed. PHP 8.1 didn&#039;t like offsets outside the haystack.<br>• On the page Event File Import - iCal format the &quot;Check all Ignore boxes&quot; button has been changed into a &quot;Toggle all Ignore boxes&quot; button.<br>• Code simplification. For the user menu, side menu and options panel: the JavaScript code element.style.height.slice(0,1) &gt; &#039;0&#039; has been replaced replaced by element.clientHeight &gt; &#039;x&#039; and element.style.width.slice(0,1) &gt; &#039;0&#039; has been replaced by element.clientWidth &gt; &#039;x&#039;.<br>• General code simplifications in the JavaScript toolbox. Most of the times testing on undefined is not needed. Several others.<br>• Code simplification. The label-tags can be put &quot;around&quot; the item concerned, rather than using &lt;label for=&#039;&lt;id&gt;&#039;, which makes most ids redundant and the code simpler.<br>• Code simplification. When using the scandir function, filtering of files is now done by a PHP preg_grep function.<br>• Code simplification. The long array definition notation (array()) has been replaced by the short notation ([]).<br>• Code simplification. In the calendar &lt;head&gt; section &quot;onpageshow&quot; has been combined with &quot;onload&quot;.<br>• For events in a category with &quot;to be approved&quot; set, the &quot;approved&quot; check box and label in the Event window have moved inside the color of the page body.</p><p><strong>Bug fixes</strong><br>• If on the settings page for the Event date format a separator, other than &#039;-&#039; had been specified, then in reminder emails, the back-link to the calendar below the email message, did not work. This is because the date &#039;nD&#039; is used in DD format (with the user-defined separator). The GET-parameter validation function however, requires a &#039;-&#039; separator. Validation regex updated.<br>• In the makeE function, under case 6, there was a break; after each line (nom and nos). There should however be just one break; after both lines.<br>• An error in the regex to extract an email address from the event&#039;s description field and produce the mailto-link, resulted in a mailto link which didn&#039;t work and could, when editing the event, not be converted back to the originally entered email address.<br>• To avoid SQL errors during the upgrade process, in the pre-processing section of the upgrade function the DB fields notRecip and notMail (&lt; V4.5) have been added to the list of possible NULL fields that must be set to NO NULL.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Sun, 12 Nov 2023 21:16:16 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=476&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.2.3 - MySQL and SQLite - released 15 August 2023]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=468&amp;action=new</link>
			<description><![CDATA[<p>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.<br></p><h5><strong>&gt;&gt;&gt;&gt; AS OF THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 &lt;&lt;&lt;&lt;</strong></h5><p><span style="color:purple">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!</span></p><p>Hereafter you will find a full summary of all changes since the previous LuxCal version 5.2.2.</p><p><strong>New features / improvements</strong><br>• 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 &quot;edited date/time&quot; and &quot;edited by&quot; 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&#039;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 &quot;No cat&quot;.<br>• 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&#039;t need to be pressed to submit the selection.<br>• 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 &quot;who should see what&quot;. By this change the previous setting &quot;Show event details to users&quot; has become redundant and has been removed.<br>• 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 &quot;sticky&quot;. Also, when scrolling on narrow screen devices the header will stick at the top of the screen.<br>• In the side panel&#039;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&quot;.<br>• The &quot;todo&quot; events for which the &quot;rolling&quot; option has been set, will stop rolling when the user checks the &quot;todo&quot; check box.<br>• For events in the event base category &quot;no cat&quot; the &quot;no overlap allowed&quot; option cannot be set anymore. So, events in the &quot;no cat&quot; category can always overlap.<br>• 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.<br>• In the Edit User Profile form the * for the note has been made class=&#039;hired&#039;.</p><p><strong>Technical issues</strong><br>• To keep the calendar state of the art and cutting edge, in various files the calendar&#039;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.<br>• 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 &quot;substr&quot; function has been replaced by the &quot;slice&quot; function.<br>• Two vulnerabilities reported by JPCERT/CC solved. A cross-site scripting and an SQL injection vulnerability. [VN: JVN#04876736, JVN#59855261 / TN: JPCERT#90779540].<br>• To avoid vulnerabilities, in passwords the characters &lt;, &gt; and ~ are not allowed. When using these characters, an error message will be shown.<br>• 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 &lt;div&gt;, rather than in a &quot;data-&quot; field, which makes the drag functions simpler.<br>• For &quot;todo&quot; events toggling the check box in the database is now done via the more modern and simpler &quot;async await fetch&quot; method, rather than using the XMLHttpRequest method (AJAX). The checkevt.php file has been integrated in the toolsaaf.php file and has been removed.<br>• Toggling the check box for &quot;todo&quot; events and editing events using the new drag and drop feature has been made more secure by applying a token.<br>• The parameter &quot;dbSel&quot; 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 &quot;Options panel menus&quot; in the section Navigation Bar on the Settings page.<br>• The HTML &lt;pre&gt; &lt;/pre&gt; tags (spacers) have been replaced by &amp;ensp; (if one space in between) and &amp;emsp; (if 2 spaces in between).<br>• On the Settings page the event related fields have moved from the Views section to the Events section, which is more logical.<br>• Code simplified by using the $eDetails variable set in index.php, rather than performing the &quot;may see details&quot; test again.<br>• 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.<br>• 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.<br>• On the Settings page, in the general section, improved label and text of the Maintenance mode.<br>• For all admin pages the div with class &#039;scrollbox&#039; has been removed and the scrollbar of the &#039;content&#039; div will be used. This is a code simplification and the scrolling is done over the total vertical space.<br>• Header with arrows and date span made more responsive by switching to 3-letter months on narrow displays.<br>• Because of the limited space available in the Options menu and in the side bar&#039;s text field, the scroll bars have been made &quot;thin&quot;. 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.<br>• Rather than validating entered email addresses using a user-defined regular expression, now the PHP filter_var function is used, which is a simplification<br>• When a user logs in with an invalid email address, rather than displaying a generic error message, now the message will be &quot;invalid email address&quot;. Furthermore the &quot;Register&quot; button has been made bold.<br>• The dates stored in the &quot;checked&#039; and &#039;xDates&#039; 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.<br>• During the calendar upgrade process the database tables will be compacted before the post-processing starts.<br>• 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 <br>&nbsp; &nbsp; the overall calendar upgrade time. </p><p><strong>Bug fixes</strong><br>• 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.<br>• 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.<br>• In the displays 1 - 3 empty lines in the event description were not shown due to a css error. Solved.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Fri, 11 Aug 2023 14:59:39 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=468&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.2.2 - MySQL and SQLite - released 6 March 2023]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=459&amp;action=new</link>
			<description><![CDATA[<p>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.</p><p><span style="color:purple">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!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 5.2.1.</p><p><strong>New features / improvements</strong><br>• 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.<br>• A setting has been added to the Views section of the administrator&#039;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.<br>• 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.<br>• 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&#039;s &#039;files&#039; 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.<br>• 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.<br>• 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.<br>• In the right upper corner of the calendar a &quot;full screen&quot; 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.<br>• 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).<br>• 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.<br>• The four displays now also accept an URL parameter &#039;cats&#039;, with the same layout as the $cats setting in the display files. Example: <a href="http://www.mysite.xxx/calendar/display1.php?cats=1,3,4,8" target="_blank">www.mysite.xxx/calendar/display1.php?cats=1,3,4,8</a>. Category IDs in the URL parameter, which are not part of the $cats setting will be ignored.<br>• 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&nbsp; 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.<br>• 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.<br>• When importing events from a CSV file, it is now possible to import &#039;no time&#039; events. If the imported event has no start time (blank), the event will be shown as a &#039;no time&#039; event in the calendar. If the start time is 00:00 or 12:00am, the event will be shown as an &#039;all day&#039; event in the calendar.<br>• Because iCal events without start time and end time are often national holidays, importing iCal events without start time will now result in &#039;no time&#039; events in the calendar. This used to be &#039;all day&#039; events.<br>• Embellishment of the Log In fieldset and a visibility eye has been added on the right side in the password field.</p><p><strong>Technical issues</strong><br>• 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.<br>• 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.<br>• The pop functions have been simplified by setting the max-width of the hover box, rather than the width derived from the content length.<br>• Date and Time Picker code simplified by using template literals (JavaScript ES6).<br>• 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).<br>• The text &quot;cat_scat_must&quot; was not used by the software and has been removed from the files.<br>• In the function importSqlFile the transaction (start / commit) has been removed because the it sometimes conflicting with the MySQL auto-transaction.<br>• On the Search page the New Search button was a bit lost to the right and is now centered.<br>• The cursor for all elements with an onClick attribute is now set to &#039;pointer&#039; (hand) in the style sheet and the &#039;point&#039; style has been removed from all individual files.<br>• 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.<br>• For Month view the event title container has changed from &lt;p&gt; to &lt;div&gt; to avoid long titles from being justified. Furthermore the code to create a day cell has been optimized.<br>• When checking for overlaps, this is now done for today and the future days, because checking for overlaps in the past doesn&#039;t make much sense.<br>• When on the Settings page, in the Periodic Services section, the setting &quot;Event expiry days&quot; 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).<br>• When on the admin&#039;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).<br>• To avoid selecting wrong files, the selection of file names from a folder is now done using a simple regular expression.<br>• 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.<br>• 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.<br>• 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.<br>• 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.<br>• Long array definitions (array()) replaced by short ([]).<br>• 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.<br>• Removed the text justification for the event titles and body texts, which didn&#039;t look good when viewed on a narrow display, like a smart phone.<br>• For aesthetic reasons a border has been added options menu, user menu and side menu.<br>• There was no color specified for the &quot;no event&quot; text. When there was no event to show, depending on the specified display colors, this could result in an invisible, or hardly visible &quot;no event&quot; text.<br>• 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.<br>• 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=&#039;mailto&#039;) respectively. Images only work when the image name refers to an image in the calendar&#039;s thumbnails folder.<br>• 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.<br>• For narrow screen devices the current date in the center of the top bar is suppressed because it overlapped with the calendar title.</p><p><strong>Bug fixes</strong><br>• On the matrix-users page, the title of the left column read Event Categories, while it should be Calendar Users.<br>• If the calendar&#039;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.<br>• In the calcFTDate function the &quot;case &#039;WEEK&#039;&quot; switch had two problems. 1) the $set variable was not defined as global and 2) the brackets were not placed correctly.<br>• 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.<br>• When events contain large images (which float left / right) and a short description, the events were shown staggered due to a missing &quot;clear:both;&quot; property in the &quot;event&quot; style.<br>• The makeE function performed an rtrim with the &#039;glue&#039; before returning the event. For glue &quot;&lt;br&gt;&quot; and the venue within &lt;a&gt;-tags at the end of the event, this caused the last &quot;&gt;&quot; to be removed. The rtrim was redundant and has been removed.<br>• When an event category allows no overlap, then when checking for overlaps, the xDates (multi-day and repeating events) were not taken into account.<br>• 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).<br>• When checking for overlaps events with &quot;no time&quot; checked (which are mostly reminders) are excluded from the overlay check.<br>• 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.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Tue, 28 Feb 2023 09:51:44 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=459&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JavaScript applets available]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=439&amp;action=new</link>
			<description><![CDATA[<p>When you go to the menu Smile =&gt; Applets, you can now see and download the JavaScript applets produced in our spare time when not working on the LuxCal calendar.<br>The applets are fully self-contained and have no relation with the calendar whatsoever.</p><p>Enjoy!<br>Roel</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Wed, 29 Jun 2022 11:26:03 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=439&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.2.1 - MySQL and SQLite - released 30 May 2022]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=433&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 5.2.1 is a special bug-fix release and includes no functional changes. In this version technical issues have been addresses and improved and quite a number of&nbsp; bugs have been fixed.</p><p><span style="color:purple">As usual, this new release has been tested with the help of John from Denmark. Thank you John!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 5.2.0.</p><p><strong>Technical issues</strong><br>• The styles defining the position and height of the calendar&#039;s top bar, navigation bar and calendar content are now all calculated. In previous calendar versions the navigation bar position was depending on the previous HTML element, which meant that in case of a PHP message the navigation bar shifted down so that the side menu could not be selected anymore.<br>• When using PHP 8, sometimes email reminder messages are not HTML formatted. This is due to a PHP change to process (explode) the mail headers. In PHP 7 and before the separator could be either \n or \r\n, in PHP 8 only \r\n will work. Now we made the separator a parameter at the top of the messaging.php file, which will be applied wherever email headers are defined in the code.<br>• The code for the horizontal scrolling in the matrix views and the gantt view has been re-designed and simplified. In matrix view, the left column rows now always stay aligned with the calendar <br>&nbsp; &nbsp; rows, also with many events per day, which causes the height of a day cell to increase.<br>• In the database table definitions all fields which can be NULL are now set to NOT NULL. This change is needed to avoid conflicts with PHP 8 functions which don&#039;t accept the value NULL as parameter anymore.<br>• The PHP manual warns that some databases, including MySQL, can issue an implicit COMMIT when a CREATE TABLE query is issued within a transaction, which possibly causes the following SQL error: &quot;SQL transaction error: There is no active transaction - Query: commit transaction&quot;, when upgrading a calendar. Therefore for the upgrade process the &#039;START TRANSACTION&#039; and &#039;COMMIT&#039; statements have been removed.<br>• When upgrading the calendar and post-processing the Settings table, integer values in the queries are now specified as strings, matching <br>&nbsp; &nbsp; the type of the rows in the settings table, which are specified as VARCHAR in the database.<br>• Because in the stylesheet HTML paragraphs have text-align set to &quot;justify&quot;, accidentally also long event titles had their text justified. This has now been rectified.<br>• The re-direct (header location) to the index.php file, when the cron job is aborted, has been removed because it was not useful.<br>• For day-marker events, which always apply to full days, the &quot;no time&quot; field is now always set. This avoids the text &quot;all day&quot; to show.<br>• When uploading thumbnail images, now spaces and quotes are converted to underscores. Before only spaces were converted and a quote in a thumbnail file name caused an SQL error when checking if the thumbnail is in use.<br>• To prevent existing tables to be initialized with default data when the install script is run more than once, the functions initializing the database tables now only initialize tables that are new (empty). Except the users Public Access and Administrator in the users table, which are always initialized with the latest administrator credentials.<br>• A relative path to the unifont directory has been defined at the top of the tfpdf.php file so that the calendar is folder-independent and can be moved to any folder without the need to delete the files in the fonts/unifont folder, which are automatically generated (when not present) by the tfddf.php script.<br>• General cascading style sheet script update.</p><p><strong>Bug fixes</strong><br>• When displaying the user profile, the field name &#039;number&#039; (now msingID) was used in the SQL query to retrieve the user data from the database and caused an SQL error.<br>• It was possible on the User Groups page, when editing a group for a user with post rights, to leave all check boxes in the categories &quot;Add&quot; column unchecked. This resulted in a number of PHP warning messages when a user in this group tried to add an event. This has been solved by a validation check for the Add/Edit User Group form, ensuring that at least one &quot;Add&quot; column check box is checked for users with post rights.<br>• On the Search page, when using an apostrophe in the search text, this resulted in an SQL error. Solved by applying the &#039;htmlspecialchars&#039; function to the search text before using it in an SQL query.<br>• On the Settings page, in the section Navigation Bar, it was not possible to have both values 1 and 11 in the same &quot;View buttons on navigation bar&quot; list. Solved.<br>• The time picker did not automatically close after selecting a time. Solved.<br>• Multi-day events with &quot;no time&quot; selected were causing a PHP error in both Week and Day view.<br>•&nbsp; In past calendar versions, in certain cases, the styles database table could contain each style name twice, which caused an SQL error when upgrading a calendar, because in newer calendar versions the name field is indexed and must be unique.<br>• On the Edit User Group page, when editing a user group a View check-box for a specific event category is unchecked while the corresponding Add check-box is checked, the Add check-box remained wrongly checked.<br>• The UI-text &quot;log_answer&quot; =&gt; &quot;Tu respuesta&quot;, was missing in the Spanish language file.<br>• The UI-text &quot;sch_calendar&quot; =&gt; &quot;Přejít do kalendáře&quot;, was&nbsp; <br>&nbsp; &nbsp; missing in the Czech language file.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Sun, 29 May 2022 19:13:01 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=433&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.2.0 - MySQL and SQLite - released 15 Jan. 2022]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=394&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 5.2.0 includes interesting new features, improved technical issues and bug-fixes.<br>Most important new features / improvements:<br>• Two authentication bypass vulnerabilities, which could be exploited by a software expert to acquire admin access to the calendar have been remedied.<br>• In the event window a &quot;No Time&quot; checkbox has been added, which can be checked for events for which the time is unimportant.</p><p><span style="color:purple">As usual, this new release has been tested with the help of John from Denmark. Thank you John!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 5.1.1.</p><p><strong>New features/Improvements</strong><br>• In the event window a &quot;No Time&quot; checkbox has been added just below the &quot;All Day&quot; checkbox. When No Time is checked, the start and end time fields will be hidden and in the various calendar views neither the time of the event, nor the text &quot;All day&quot;, will be shown.<br>• Two authentication bypass vulnerabilities, in the calendar and in the displays, which could be exploited by a computer software expert to acquire admin access to the calendar have been remedied.<br>• A new setting has been added in the Views section of the Settings page, which can be used to enable/disable the display of the current date on the top bar of the calendar views. For narrow screen devices, because of lack of space, the current date has been removed from the top bar.<br>• For the Side Panel a new check box &quot;Today&quot; has been added in the Views section of the Settings page. When this check box is checked, the Side Panel will always use the date of today and when unchecked, the Side Panel will follow the date currently selected in the main calendar.&nbsp; &nbsp; <br>• In the configuration section of the Upcoming Events and Birthday Calendar PDF print scripts, when the calendar ID setting is left blank (&quot;&quot;), the current calendar will be taken (rather then the default calendar, as in the past).<br>• Date picker and time picker look enhanced and a few minor HTML flaws fixed.</p><p><strong>Technical issues</strong><br>• When a cron job is running daily and no cron services are active (no email, no SMS, no reports) the cron job summary will show a message &quot;No reminders or periodic services active&quot;.<br>• When the cron job processing fails due to the security checks, the log message now shows which of the security checks failed, i.e. local cron started from a remote server or remote cron IP-address mismatch.<br>• scrollY function renamed into scrollV (vertical). scrollY is a reserved JavaScript word.<br>• When producing PDF prints and on the Settings page a logo path has been specified, the software now checks if the logo file is available on the specified path.<br>• A minor error in the calculation of the &quot;to&quot; date has been corrected. At the same time the &quot;from&quot; and &quot;to&quot; date calculation functions have been combined in one calcFTDate function.<br>• The height of the date input fields used to select the date bracket for PDF prints has been made proportional to the selected font size.<br>• During a calendar upgrade, the old &#039;sml&#039; format of email links in the text1, text2 and text3 fields of the events table is now converted to the new format.<br>• The regex used to parse the text for the birthday calendar has been simplified. It is now possible to use round brackets in the birthday text between the #-characters.<br>• In past calendar versions, the text &quot;[cd]&quot; was replaced by the current event date because at that time this date was used by the email links. This is not done anymore and therefore the PHP code for these replacements has been removed.<br>• Further PHP 8 compatibility improvements (mktime function).<br>• The lctools.php script has been removed from the calendar&#039;s installation package. Creating multiple calendars can be done easily via the&nbsp; installxxx.php script.</p><p><strong>Bug fixes</strong><br>• In the event report, which is opened when an event is clicked, events for which a sub-category has been selected are not shown in the sub-category color.<br>• When adding an event in an event category for which &quot;No overlap allowed&quot; has be set to &quot;same category&quot;, an SQL error occurred. (This problem was introduced when adding the event type).<br>• Because of a stray variable ($eStyle), when an event with a URL in one of its description fields was shown in the side bar, a PHP Notice was produced.<br>• In the PDF Birthday Calendar portrait/landscape window, the labels of the radio buttons could not be clicked. Solved.<br>• The function to make the event repeat text produced &quot;Rolling&quot; when Repeat every xth weekday of month y was selected. (Missing break; in the switch statement).<br>• The problem with the left margin on landscape and portrait PDF prints, when a page break falls in the middle of the event body, is solved.<br>• The validation of GET variables has moved to after getting the settings, because if a GET variable is not valid, an alert message is shown, which uses some settings. For the same reason, the loading of the winXP variable is moved to before validating the GET variables.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Thu, 13 Jan 2022 22:16:30 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=394&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.1.1 - MySQL and SQLite - released 25 Aug. 2021]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=366&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 5.1.1 includes interesting new features, improved technical issues and bug-fixes.<br>Most important new features / improvements:<br>• Fully prepared for PHP 8.<br>• A new Day Marking feature has been added. Users with at least manager rights can &quot;mark&quot; days in the calendar with a specified color and a text at the top of the day cell.<br>• A simple Side Panel info text editor has been added to the calendar, to create/edit info texts for to be displayed in the side panel.<br>• On the admin&#039;s Settings page a free-format text message can be specified, which will be added as a paragraph to the end of reminder email messages.<br>• If the PHP multi-byte extension is installed, the printing of PDF files supports UTF-8 text (European fonts, Cyrillic fonts, Greek fonts, Asian fonts, etc.)</p><p><span style="color:purple">This new release has been tested again with the help of John from Denmark. Thank you John, well done!</span><br><span style="color:purple">Yordan from Bulgaria helped with adding UTF-8 support to the PDF creation features and tested the implementation. Thank you Yordan!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 5.1.0.</p><p><strong>New features/Improvements</strong><br>• A new Day Marking feature has been added. Users with at least manager rights can &quot;mark&quot; days in the calendar. In year and month view, and in the mini calendars the top line of the day cell is shown with the specified background color and optionally a short text in a specified color.<br>• When in the PHP installation multi-byte support is installed (&quot;mbstring&quot;), the printing of PDF files supports UTF-8 text (European fonts, Cyrillic fonts, Greek fonts, Asian fonts, etc.). If multi-byte support is not installed, the PDF print feature uses the Helvetica font with cp1252 (Western Europe) encoding, as in earlier calendar versions.<br>• Via the configuration files, it is now possible for PDF printouts to specify the page size (A4 or Letter).<br>• For the allowed HTML tags in the event title the &lt;center&gt;-tag, which is not supported in HTML5, has been removed and the &lt;br&gt;-tag has been added, so that users can split event titles over multiple lines by inserting a &lt;br&gt;-tag.<br>• A simple Side Panel info text editor has been added to the calendar. When logged in with at least Manager rights the side menu shows an entry &quot;Info Text Editor&quot;.&nbsp; &nbsp; The editor page with instructions, can produce backup copies of the file sidepanel/info.txt with a date/time stamp and can create/edit the file sidepanel/info.txt with the side panel info messages.<br>• For the info text in the side panel in Month, Week and Day view it is now possible, in the line preceding the message, to specify the exact start date and end date during which the message should be displayed (~m.d-m.d~).<br>• It is now possible to show a side panel with one or more of the side panel items on each of the calendar view pages. On the Settings page, in the Views section, for each side panel item it can be specified in which view it should be shown.<br>• On the admin&#039;s Settings page, in the section Reminders, a free-format text message can be specified, which will be added as a paragraph to the end of reminder email messages. HTML-tags are allowed in the text message.<br>• When enabled on the Settings page, users with sufficient rights will get an option in the side menu to print a Birthday Calendar to a PDF file.<br>• The Upcoming Events page, the Changed Events page and the Search page have become more responsive and consequently better viewable on narrow display devices.<br>• The stand-alone mini-calendar (display0) and the mini calendar in the optional sidebar in month, week and day view now shows the full day in the category color for events which have &quot;Day color&quot; set. When days have been marked (see new Day Marker feature above) these days will also be marked in the stand-alone mini calendar and the mini calendar in the optional sidebar. The optional Day Marker text will be shown when hovering the day cell top line.<br>• Month view and the mini calendars have now an extra set of arrows in the header to skip to the previous and next year.<br>• The &quot;drag time&quot; feature in week and day view has been improved. The dragging is more reactive now and accidental dragging above the start drag time is not possible anymore.<br>• The symbols to toggle between the reduced and full size of the event window have been replaced by the more common ▼ and ▲ symbols.<br>• The width of all date and time input fields is now expressed in &#039;em&#039;, which makes the field width better fit and uniform in different browsers.<br>• On the Upcoming Events page the padding has been reduced to compact the list of events.<br>• On the settings page the time interval and height of the time slots in day and week view belong together and therefore have been put on the same line. Cosmetic change.<br>• URL links in events were always opening in a new (blank) page/tab. It is now possible to place the prefix &#039;S:&#039; in front of the URL, which makes the URL link open in the same (Self) page/tab.<br>• If the event title in the left column of the gantt chart is long or contains &lt;br&gt;-tags and uses more than one line, the table cell can now be scrolled via the mouse wheel.<br>• When on the categories page sorting the categories on name, the sorting has been changed from case-sensitive to case-insensitive.<br>• The restore function on the calendar&#039;s database page has been improved. It is now possible to import .sql backup files from earlier calendar versions, starting with calendar version 2.7.2. When importing a database backup file from an earlier calendar version, the database will automatically be upgraded to the current calendar version. In addition, it is now also possible to import .sql backup files from both MySQL and SQLite type databases. However, when importing a backup file from a different database type, the calendar version of the source and destination calendar must be the same.<br>• In month view a 2-pixel left and right margin have been added to the events in the day cells.<br>• The tools in the !luxcal-toolbox folder, which can be handy when experiencing problems, have been improved. The cron.php tool used to periodically run multiple applications via one single cronjob on your server, has been made more flexible. It can now be run either once a day, or each hour. When run each hour, for each script to be started, the start hour can be specified. In addition, for each script it can be specified if a confirmation email should be sent and if the result should be logged.</p><p><strong>Technical issues</strong><br>• The function &quot;array_key_exists&quot; has been replaced by function &quot;isset&quot;. PHP 8 compatibility.<br>• The function &quot;implode&quot; without first parameter (glue) has been given an empty string as first parameter. PHP 8 compatibility.<br>• The checkSettings function now also saves the checked settings to the database.<br>• Simplification: on the search, changes and upcoming pages a list of events is now put in one table, rather than putting each individual event in its own table.<br>• HTML syntax error in the search results repaired. The &lt;dir&gt;-tag should be &lt;div&gt; (2x).<br>• Some headers have been added to the download script to ensure compatibility with all browsers. In addition, the user can now see the file size when the download starts.<br>• To the headers for PHP and SMTP mail &quot;Return-path&quot; has been added. Some mail servers seem to prefer this. The header for SMTP mail had a redundant (double) CRLF just before the &quot;$message&quot;. One CRLF removed.<br>• On the Settings page, the &quot;Restore last user selections&quot; and the expiry days have been moved to one and the same line. Cosmetic change.<br>• When the install and upgrade scripts are started with URL parameter ?phpinfo, the PHPinfo() function will be started and the script will be aborted. This can help to solve problems when the calendar installation fails.<br>• Various changes in the toolbox.js file. JavaScript code simplified. Support for IE11 dropped. Redundant &quot;return false&quot; statements removed. The winFit function has been simplified. For the pop functions the name &#039;popobj&#039; replaced by &#039;popElm&#039; (naming confusion), all strings converted to &#039;template literals&#039; (enclosed by back ticks).<br>• The PDF classes to print upcoming events to a PDF file, have been revised and made more flexible. The precision with which the elements are positioned on the page has improved. <br>• The fpdf class used to produce PDF files has been upgraded from version 1.8.2 to 1.8.3.</p><p><strong>Bug fixes</strong><br>• When upgrading from LuxCal versions 2.7 - 3.2 in the settings table the setting dateFormat was not converted from the old format &#039;1&#039;, &#039;2&#039; or 3 to &#039;d-m-y&#039;, &#039;m-d-y&#039; or &#039;y-m-d&#039; respectively.<br>• Upgrading from calendar versions 4.5 and 4.6 produced an SQL error, because in the upgrade function the old multi-field sub-categories were not converted to the new flexible single field sub-categories format.<br>• Email links did not work in email reminder messages. The use of email links in the event description and extra fields has been completely reviewed and simplified, without loss of functionality.<br>• On the Changes page PHP messages &quot;Notice: Undefined index: sc1 in retrievc.php on line 148&quot; were displayed.<br>• Email addresses with a 1-character local part (e.g. j@mail.com) were flagged as invalid. They are however valid and should be accepted.<br>• When in the Changes view a different From date was selected, on narrow displays the To date was partially hidden by the list with changes.<br>• When in the options panel one single category was selected, for which repeat was set, and thereafter a new event was created, eventform0 was mistakenly opened with PHP errors (tx1, tx2 and tx3 undefined). Solved.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Wed, 18 Aug 2021 20:26:58 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=366&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 5.1.0 - MySQL and SQLite - released 1 Dec. 2020]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=334&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 5.1.0 includes interesting new features, improved technical issues and bug-fixes.<br>Most important new features / improvements:<br>• No more &quot;PHP session expired&quot; messages for view-only calendar pages, so all pages without forms with input fields.<br>• New &quot;rolling&quot; events. Once the start date of these events has passed, it will keep on &quot;rolling&quot; to the current day, until the user deselects &quot;rolling&quot;. When a reminder has been set for a rolling event, a new reminder will be sent each day the event rolls to a next day.<br>• In month view the full-width event title line (from the left to the right margin of the day cell) can now be clicked to open the event report or edit window and can be hovered to view the pop-up box with event details.<br>• Event sub-categories are now more flexible and not limited anymore to a maximum of four. In addition sub-categories can be copied from other event categories.</p><p><span style="color:purple">This new release has been tested again with the help of John from Denmark. Thank you John, well done!</span><br><span style="color:purple">The Dutch and German language files have been thoroughly reviewed, corrected and completed by Piotr in Germany. Thank you Piotr!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 4.7.9.</p><p><strong>New features/Improvements</strong><br>• Calendar pages not containing forms that can affect the database content will not time out anymore when a PHP session expires. This means that the calendar can stay open and unused for long periods of time without &quot;PHP session expired&quot; messages. Only pages with forms that can affect the database content will time out when the user does not submit the form within the expiry time of the PHP session (24 minutes).<br>• When the user does not submit the form in the Add/Edit Event window in time and the PHP session expires, to avoid the loading of the calendar in the Add/Edit Event window, together with the &quot;PHP session expired&quot; message just a &quot;Close&quot; button is displayed, instead of a &quot;Restart&quot; button.<br>• In the Add/Edit Event window, the &quot;Set Repetition&quot; overlay has a new option &quot;Rolling&quot;. A rolling event is an event that, once the start date has passed, will always &quot;roll&quot; to the current day. When a reminder has been set for a rolling event, a new reminder will be sent each day the event rolls to a next day. When the user deselects &quot;Rolling&quot;, the event will stop rolling and remain fixed at the current day. Rolling events will help users who have a tendency to postpone their tasks.<br>• The way event sub-categories are stored in the calendar database has been made more flexible. The maximum number of sub-categories, which was four in the last calendar version, is now flexible and can be selected when editing a category. It is now also possible to copy all sub-categories of one category to an other category. Sub-categories present in previous LuxCal versions, will be automatically converted and preserved during the upgrade process to LuxCal V5.1.0.<br>• In month view the full-width event title line (from the left to the right margin of the day cell) is a hyper-link which can be clicked to open the event report window or the edit event window and can be hovered to view the pop-up box with event details. In previous versions only the event title text was a hyper-link.<br>• When on the Settings page in the &quot;Events layout&quot; template the extra fields were included and contained an image, the image would be shown on the calendar, even if on the Settings page &quot;Show images in month view&quot; was disabled. If &quot;Show images in month view&quot; was enabled, the image would be shown twice. This has been solved by removing images in the event title.<br>• The default number of days to search back and the default number of days to search ahead, which used to be fixed 365 days respectively, can now be specified on the admin&#039;s Settings page.<br>• On the User profile page, in the Change my data form a &quot;Done&quot; button has been added to return to the calendar page after the user data has been changed.<br>• On the Edit User Groups page in the Edit User Group form the interaction between the View and Add event categories check boxes has been improved. The (un)checking of the Add check boxes have been made subordinate to the (un)checking of the View check boxes.<br>• The log-in box on the Log In page has been made slightly narrower to make it also fit on a mobile phone in portrait position.<br>• A script, called cron.php, has been added to the !luxcal-toolbox folder. When multiple calendars have been installed, this script can be used to start multiple lcalcron.php scripts, using only one cron job. An explanation is given in the readme_cron.txt file.<br>• Several small stand-alone tools have been added to the !luxcal-toolbox folder in the LuxCal zip-file. These tools can be used to get information about your server and the PHP installation on your server.<br>• On the settings page, in the General section, the &quot;Link to parent page&quot; can now, besides a URL, also be a path relative to the calendar root folder.</p><p><strong>Technical issues</strong><br>• The token used to validate user inputs is now only used for forms. The token which was stored in a cookie (LXtkn) has moved as a hidden input to each form that directly affects the database. In combination with item number 2 hereafter this means that only pages with these forms will time out when the submission does not take place within the expiry time of the PHP session (24 minutes). Surfing the calendar pages which contain no forms affecting the db will not depend on PHP sessions and will therefore not time out when the PHP session expires.<br>• The last user selections (cP, cC, cU, cG and cD) were saved in a PHP session variable and, if on the Settings page Restore last user selections was selected, also in a cookie. Storing variables in two places is undesirable and therefore they are now always and only stored in a cookie. At the initial start of the calendar these values will be used if on the settings page Restore last user selections has been selected.<br>• The user rights (privs) were stores in a PHP session variable and used by the dloader. To reduce the dependency on PHP session variables, the dloader is now getting the user privileges from the database.<br>• To avoid duplication of code the code to produce the Side Panel in month, week and day view has moved to a the new file vfunctions.php. The dw_functions have also moved to this new file.<br>• Like for the calendar&#039;s month, week and day view, now also for the the calendar sidebar the event layout can be specified via a template with keys.<br>• In the alert.php file the HTML lang tag is set to the language corresponding to the ISOCODE in the active ui-{lang}.php file.<br>• The regex to extract side panel info messages from the file info.txt has improved, so that only messages are extracted where there are no other characters but spaces in front of the ~ (tilde) character of the month number.<br>• On the Settings page PHP info hyper-link replaced by a button.<br>• The code to submit the event edit form when a new category is selected has changed from onChange=&quot;document.forms[&#039;event&#039;].submit();&quot; to onChange=&quot;this.form.submit();&quot;. Code simplification.<br>• When in the Add/Edit Event window a category is selected for which a repetition has been specified, the &quot;Change repetition&quot; button is suppressed. Category repetitions always overwrite.<br>• In the previous version, when in the event layout template, between two separators one #-parameter resulted in an empty string, the whole section was omitted. This has changed: now the whole section is omitted when ALL #-parameters between two separators result in an empty string.<br>• Since many ISPs only accept PHP mails being sent from an email address hosted on the same server as the calendar, the &quot;From&quot; field of all emails will always be the calendar email address. When on the Settings page, in the section Periodic Functions the &quot;Add &#039;Reply To&#039; field&quot; has been checked, emails will contain a &#039;Reply to&quot; field with the event owner&#039;s email address.<br>• Since not all ISPs accept PHP mails with a blank &#039;To&#039; field the &#039;To&#039; field is now set to the calendar email address. In addition, to make the source code of emails better readable, after each &lt;/tr&gt; and &lt;br&gt; tag, a crlf (\r\n) has been added.<br>• The link rel=&quot;canonical&quot; has been removed from the page header because is was not useful.<br>• Rather than passing the current calendar ID in the calendar&#039;s head section via a parameter in the style sheet URL, the style sheet is now getting the calendar ID directly from the LXCcid cookie.<br>• The URL for valid time zones updated to <a href="https://www.php.net/manual/en/timezones.php." target="_blank">https://www.php.net/manual/en/timezones.php.</a><br>• For a new installation of the calendar the initial language for the administrator is set to English. In the previous calendar version it was not set and resulted in Bulgarian (first in the list).<br>• To prevent session fixation attacks, the PHP session ID is regenerated each time the index.php file runs. </p><p><strong>Bug fixes</strong><br>• Due to an erroneous style (&quot;body {overflow:hidden;}&quot;) the calendar pages can not be scrolled on a mobile device. Solved.<br>• In the Add / Edit Event window, when there are two consecutive separator characters (;;) in the Send mail&#039;s &quot;To&quot; field, a PHP notification message was shown. Solved.<br>• For events in Week and Day view, falling outside the active day hours, the event layout template from the Settings page was not used and always resulted in: start time followed by event title.<br>• When the Help window overflowed and the content was scrolled up, the overflow part did not have the correct background color.<br>• There was an error in the backupDatabase function. The PRIMARY KEY (`ID`) directive at the end of the CREATE TABLE commands was mistaken for a table field by the regex. When trying to import the .sql backup file,&nbsp; this resulted in an SQL error.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Thu, 19 Nov 2020 20:25:59 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=334&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 4.7.9 - MySQL and SQLite - released 2 August 2020]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=319&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 4.7.9 includes interesting new features, improved technical issues and bug-fixes.<br>Most important new features / improvements:<br>• Various improvements for the stand-alone displays. E.g. More flexible styling possibilities, filtering on event sub-categories, for birthdays automatic display of age, favicon possible.<br>• More flexibility to tailor the event title in month, week and day view, including and option for birthdays to automatically display the age of the person in your own format.<br>• The side bar information messages for each month have been grouped together in one file called info.txt. Messages can now be displayed during one single month or during several months.</p><p><span style="color:red">This new release has been tested again with the help of John from Denmark. Thank you John, you&#039;re a hero!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 4.7.8.</p><p><strong>New features/Improvements</strong><br>• Stand-alone displays: More flexible styling possibilities. 1) The margins of the event container, containing the event head and body, can now be specified separately. 2) The font attributes of the &quot;No events&quot; text can be specified separately and the text has no background color anymore.<br>• Stand-alone displays: The possibility to filter events on event subcategories has been added.<br>• Stand-alone displays: For all displays a new configuration parameter has been added to specify a favicon.<br>• Stand-alone displays: An option has been added for displays to show for birthdays the age of a person in the event title. E.g. &quot;Harry Potter (18)&quot;.<br>• An option has been added for month, week and day view to add for birthdays the age of a person to the event title. On the settings page you can add the key #a to the Event layout templates. If an event in an event category with &quot;Repeat&quot; set to &quot;every year&quot; has a year of birth in parentheses, e.g. (1982), specified somewhere in it&#039;s description field, the key #a in the event layout template will be replaced by the age of the person, which is the difference between the year of birth and the year of the calendar date. E.g. &quot;Harry Potter (18)&quot;.<br>• In the views Upcoming Events and Changes, if an event in an event category with &quot;Repeat&quot; set to &quot;every year&quot; has a year of birth in parentheses, e.g. (1982), specified somewhere in it&#039;s description field, the age of that person will be shown in parentheses at the end of the event title.<br>• The event layout template for Month, Week and Day view has been improved. It now accepts separators (|-character) to split the template in different sections. If in a section with a #-parameter this parameter results in an empty string, then the whole section will be omitted and not be displayed. The template may also contain HTML tags; e.g. &lt;b&gt;#e&lt;/b&gt;.<br>• On the Log-in page and the admin pages a Help button has been added on the right side of the Navigation Bar. On these pages it is not so obvious to open the side menu and select Help to get to the User Guide.<br>• When the matrix views are loaded, the focus is given to the matrix part of the page, so that the left/right arrow keys can directly be used to scroll the matrix left and right. This doesn&#039;t work in Chrome.<br>• The information messages for each month have been grouped together in one file called info.txt, rather than 12 individual files. It is now possible to define messages to be displayed during one single month or during several months.<br>• In the calendar URL, when using the cC parameter, it is now possible to specify negative event category sequence numbers for event categories that should be excluded from the calendar (e.g. ?cC[]=-2, &amp;cC[]=-4).<br>• Drag functions to drag the Todo, To Approve and Upcoming Events lists have improved. The sidebars can not be moved out of the window anymore, they moves smoother and the text in the header cannot unintentionally be selected anymore.<br>• For the Todo list it is now possible to specify on the settings page the number of days to look back.</p><p><strong>Technical issues</strong><br>• On the admin&#039;s settings page, the width of the center box with the field sets was fixed 900px, but is now variable, which avoids field set lines to be wrapped when using languages with longer texts.</p><p><strong>Bug fixes</strong><br>• 01. pdfclass1.php, pdfclass2.php: If in the configuration settings for the pdf print layout no event body fields were specified, then the starting position of the event time(s) was always reset to the left margin.<br>• The connection to the calendar database was established before a possible pdf.cnf file was included and therefore the $calID setting from the pdf.cnf file did not overrule the default setting.<br>• The red X in the right upper corner of the User Guide window did not work anymore (since V4.7.7). Solved.<br>• In the past for new calendar installations the user interface language for the Public User was set to English, fixed. From now on the language for the Public user is left blank, which means the default language specified on the Settings page is taken.<br>• Stand-alone displays: The user interface language file used in the displays was the one corresponding to the default language on the admin&#039;s settings page. However, since the option to login has been added to the displays, the language file should correspond to the language specified in the account of the user.<br>• When the side panel was enabled, in week and day view the mini calendar in the side bar always showed the work days only, also when the main week view showed the full week.<br>• When validating the user name in email and sms recipients lists, &quot;\u&quot; was used to specify the range of accented characters. However &quot;\u&quot; is not supported by PCRE. Changed to &quot;\x{}&quot;.<br>• When separating fields of an imported file, if a separator character is escaped by a backslash, the backslash character was not removed from the the field. Solved by using the PHP str_getcsv function, rather than the preg_split function.<br>• In display0 (the mini-calendar) one could just move one month forward or backward, a next click on the arrows showed the&nbsp; message &#039;not permitted (display0)&#039;. Solved by replacing REQUEST_URI by PHP_SELF.<br>• In the event description it is now possible to use image with more than one dot in the file name, for example: pink.2020.png.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Sat, 01 Aug 2020 21:14:07 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=319&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[LuxCal 4.7.8 - MySQL and SQLite - released 20 March 2020]]></title>
			<link>https://www.luxsoft.eu/lcforum/viewtopic.php?id=296&amp;action=new</link>
			<description><![CDATA[<p><strong>Highlights</strong></p><p>This new LuxCal version 4.7.8 includes interesting new features, improved technical issues and bug-fixes.<br>Most important new features / improvements:<br>• New function to print calendar events to a nicely formatted PDF file.<br>• Templates have been added to the settings page to specify the layout of events shown in Month, Week and Day view.<br>• The stand-alone &quot;displays&quot; have been revised and a log in and a PDF print option has been added.</p><p><span style="color:red">This new release has been tested again with the help of John from Denmark. Thank you John, you&#039;re a hero!</span></p><p>Hereafter you will find a full summary of all changes since LuxCal version 4.7.7.</p><p><strong>New features/Improvements</strong><br>• A new PDF file printing facility has been added. When selecting the &quot;PDF File&quot; option in the calendar&#039;s side menu, a dialog box will appear where the user can select an A4 or A5 PDF file layout and can specify a start and end date; when clicking &quot;OK&quot;, a PDF file with the events in the specified date bracket will be produced and offered for download. The printed content of the PDF file (fields to be printed, colors, etc.) is configurable to a high degree by the administrator.To avoid overwriting the configuration settings of the PDF prints, when upgrading to a new calendar version, the PDF configuration files reside in a new &quot;configs&quot; folder. Example PDF configuration files are available in the &quot;samples&quot; sub-folder.<br>• Two new templates have been added to the settings page, which are used to specify the fields and layout of the events to be displayed in Month view and Week/Day view respectively. Possible fields are: start time, start and end time, event owner, event title, venue, category, extra field 1 and extra field 2. For each of these fields a unique placeholder can be specified in the templates. In addition a special &quot;new line&quot; placeholder is available, so that the event fields can cover several lines. This new feature supersedes the &quot;Show end time in Month view&quot; setting, which therefore has been removed.<br>• All displays have been upgraded. Display0 - display3 have now a login option and display0, display1 and display2 have a PDF print option. When enabling the log in option, the user rights of the full calendar will apply. So it is for instance now possible to show more details to logged in users. The displays are distributed again with each new calendar version. This will ensure the compatibility of displays with the calendar.<br>• To avoid overwriting the configuration settings of displays, when upgrading to a new calendar version, the way to tailor the configuration settings of the displays has changed. The displayX.php scripts reside in the calendar&#039;s root folder, whilst the configuration files reside in a new &quot;configs&quot; folder. Example configuration files are available in a &quot;samples&quot; sub-folder.<br>• When enabled on the Settings page, week numbers will be added to the matrix and gantt chart views. The colors of the week days and dates have been aligned with all other headers and the column widths has been increased to make the weekday and date fit for all languages.<br>• The positioning of the hover box with event details has been improved for the mini calendar and the matrix views with event squares or symbols. Before it was difficult to move the mouse from the mini square to the hover box.<br>• The layout of the Log In form has been improved. In the previous version it could easily happen that when logging in the user clicked the &quot;Send new password&quot; button instead of the &quot;Log in&quot; button.<br>• On the Settings page the setting &quot;Event colors based on category / user group&quot; has moved from the Event section to the Views section and an option &quot;no color&quot; has been added.</p><p><strong>Technical issues</strong><br>• To avoid the need for a manual page refresh (Ctrl-F5) after a calendar upgrade, a toolbox.js and css.php reload is forced after a calendar upgrade by adding the calendar version number to the respective tags in the HTML head section.<br>• The color of the file selection input dialog text was not aligned with the color for buttons selected when styling the calendar and was with dark background colors difficult to read.<br>• There were several minor problems with the table columns in the event window, which could lead to problems with long event category names. Tables simplified and number of columns reduced. Dates were in some browsers not fully visible and have been given more space.<br>• iOS - mobile safari bug fix removed. This bug fix was required for old Safari versions. It was a meta name=&quot;viewport&quot; tag sent before &lt;!DOCTYPE html&gt; which is not proper HTML.<br>• Style iframe.csHelp deleted. Style was not used anymore.<br>• PHP code for the top bar simplified and current date centered independent of calendar title length.<br>• In the backupDatabase function the INSERT INTO statement now includes a column list before VALUES, which makes the function less prone to SQL errors when using the .sql file to restore the database. The importSqlFile function has been improved to cope with large backup files with several INSERT queries per table. The counting of imported rows is now accurate.<br>• Measures have been taken to allow the lctools.php script to download calendar back up files.<br>• The folder for the side panel image files and info area files is now always the &quot;sidepanel&quot; folder and cannot be specified anymore on the Settings page. The files will not be overwritten with a calendar upgrade, because the example files are now stored in the &quot;samples&quot; sub-folder of the sidepanel folder.</p><p><strong>Bug fixes</strong><br>• The scrolling in the hover box with event details did not work.<br>• The variable $cat with the category parameters of the current event was not set correctly, which resulted in PHP notices, when using PHP 7.4.<br>• The color of the text on the Log In page took the color of the navigation bar; so if in the UI styling a light text color on the navigation bar was chosen, the text on the Log In page was hard to read.<br>• When installing the calendar, at the moment of initializing the styles table, the calendar title (assigned to the row &quot;THEME&quot;) was not yet available in the settings ($set), which cause a PHP notice message when running PHP 7.4.<br>• In the makeE function, when producing the address button in the venue field, the full address was also show on narrow displays. This should be the other way around; the full address should be shown on wide displays only.</p>]]></description>
			<author><![CDATA[null@example.com (Roel)]]></author>
			<pubDate>Tue, 17 Mar 2020 15:51:34 +0000</pubDate>
			<guid>https://www.luxsoft.eu/lcforum/viewtopic.php?id=296&amp;action=new</guid>
		</item>
	</channel>
</rss>
