Download the latest version here: www.paderdesign.de
------------------------------------------------------------------

<!-- Release Date 2024-01-21 -->
v1.2.83_077: guestbook\guestbook_mail.php: Applied wordwrap like in Bugfix v1.2.83_058
v1.2.83_076: contact-form\contact-form.php: Applied wordwrap like in Bugfix v1.2.83_058
v1.2.83_075: functions\standard.php: Added new function convertGigDates() (not in use yet)
v1.2.83_074: guestbook\guestbook_delete.php: Applied new function blockIP()
v1.2.83_073: functions\standard.php: Added new function blockIP()
v1.2.83_072: Bug fix: calendar\showGigDetails.php: When a gig is disabled for front end, one still can make it visible in the showDetails() by guessing the GigID in the URL query
  => changed the brackets in the SQL query
v1.2.83_071: Bug fix: calendar\showGigDetails.php: Added missing htmlspecialchars() to prevent SQLi
v1.2.83_070: Bug fix: \gallery\gallery.php: The URL query for an album began with '?&' instead of '?'
v1.2.83_069: gallery\gallery.php: If URL querie has a non existing album name, an error message gets thrown.
v1.2.83_068: gallery\gallery.php: Changed use of $_REQUEST-vars into $_GET-vars
v1.2.83_067: Bug fix: gallery\gallery.php: Added missing htmlspecialchars() to prevent SQLi
v1.2.83_066: Bug fix: guestbook\guestbook_mail.php: Added missing htmlspecialchars() to prevent SQLi
v1.2.83_065: Bug fix: contact-form\contact-form.php: Spam senders often place dozens of blank lines at the end of their message.
  ⇒ Applied a regex via pregmatch() to replace multiple blank lines with one blank line
v1.2.83_064: Bug fix: Blocking spam with phrases instead of words failed
  ⇒ guestbook\functions.php.messageIsSpam(): Optimised the block "test for blocked words"
v1.2.83_063: guestbook\functions.php.addGuestbookEntry(): Returns now either the $Code or -1 in case of failure
v1.2.83_062: guestbook\guestbook_form_internal.php: Added at the top the foreach() to optimize all POST variables (like in contact_form)
v1.2.83_061: guestbook\functions.php.sendMail(): Removed argument "Datum", but value gets generated via time() instead.
v1.2.83_060: Bugfix: emails from guestbook showed "\r\n" instead of proper line breaks
  ⇒ guestbook\functions.php.addGuestbookEntry(): mysqli_real_escape_string() got applied also to message for database storage, and also forwarded to sendemail()
  ⇒ moved sendmail() from inside addGuestbookEntry() to guestbook\guestbook_form_internal.php
v1.2.83_059: mail\mail.php: Applied wordwrap like in Bugfix v1.2.83_058
v1.2.83_058: Bugfix: Front End > Guestbook: Sending email fails when a single line is longer than ~10k characters
  ⇒ guestbook\functions.php.sendMail(): Applied wordwrap at 70 chars regarding to www.faqs.org/rfcs/rfc2822.html > 2.1.1. Line Length Limits

<!-- Release Date 2023-06-22 -->
v1.2.83_057: styles\gigkalender.css: Compiled with Sass
v1.2.83_056: frontend\example_formate.css: Compiled with Sass
v1.2.83_055: Front end > Calendar > List
  Date and Time do not break on mobile
  ⇒ gigkalender12\calendar\list.php
    Just one table cell for date and time
  ⇒ frontend\example_formate.css
    Removed "white-space: nowrap;" in ".GigKalender #List td"
    Removed "padding-right: 0.5em;" in ".GigKalender #List td"
    Added "display: inline-block;" for ".GigKalender .GigDate" and ".GigKalender .GigBeginning"
v1.2.83_054: includes\frontend_language_selector.php
  Rewritten to detect browser language, should frontend language been set to 'auto'
v1.2.83_053: admin\includes\setup\SetupFrontendLanguage.php
  Added "auto" as selectable language (to use browser language)
  ⇒ entire file rewritten
v1.2.83_052: Contact form: Added two missing language vars
  $L_Form_Completion_Time and $L_Block_IP_Address
v1.2.83_051: Updated embedded CKEditor to version 4.21.0
v1.2.83_050: install\head.php
  Added meta tag to make page responsive
v1.2.83_049: includes\header.php
  Added meta tag to make page responsive
v1.2.83_048: functions\standard.php > getShortenedString()
  Deprecated: Function utf8_decode() is deprecated in \functions\standard.php on line 30
  ⇒ changed to mb_strlen(), since the installation ensures support for the mb module again
v1.2.83_047: functions\standard.php > getShortenedString2()
  Deprecated: Function utf8_decode() is deprecated in \functions\standard.php on line 1
  ⇒ changed to mb_strlen(), since the installation ensures support for the mb module again
v1.2.83_046: example_*.php (all example files)
  Added meta tag to make page responsive
v1.2.83_045: index.php: Changed the entire session cookie creation
v1.2.83_044: Bugfix: \frontend\example_formate.css:
  W3C CSS Validator: Property "x-border" doesn't exist.
  ⇒ removed
v1.2.83_043: Bugfix: \frontend\example_formate.css:
  W3C CSS Validator: Line 253: Same color for "background-color" and "border-top-color"
  ⇒ set both to transparent, like in styles\gigkalender.css
v1.2.83_042: Bugfix: includes/error_reporting.php:
  ⇒ MySQL Error Mode set to MYSQLI_REPORT_OFF for distribution
v1.2.83_041: installation.txt: Updated requirements regarding PHP version 8.0
v1.2.83_040: Bugfix: Back-end: calendar\backend_selectGig.php: It shows a SQL statement

<!-- Release Date 2022-10-17 -->
v1.2.83_039: installation.txt: Updated requirements regarding PHP module 'mbstring'
v1.2.83_038: install\index2.php: The installation also checks, if 'mbstring' module in PHP is enabled
v1.2.83_037: Bugfix: When gallery is opened there is this message:
  ⇒ Deprecated: Implicit conversion from float 136.51612903225808 to int loses precision in \gallery\functions.php on line 53
  ⇒ devision $newwidth/ratio caused a float, which does not work in functions like imagecreatetruecolor()
  ⇒ added a round().
v1.2.83_036: Bugfix: In some search engine results, like Ecosia, there was a PHP warning shown:
  ⇒ "Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /includes/backend_language_selector.php on line 7"
  ⇒ Apparently search engines do not have a language set, so here an empty language string is given
  ⇒ includes\backend_language_selector.php: Changed it with an isset()
v1.2.83_035: Bugfix: Front-End: Gallery: ERROR about missing 'original' folder was given
  ⇒ gallery\gallery.php: $OriginalsPath was wrong defined
v1.2.83_034: Bugfix: Front-End: Calendar: Several warnings in detail view, shortend strings were not required, the gig notes were shown twice and an 'x' was printed out twice
  ⇒ calendar\includes\frontend\subString.php: It was a WIP, but fixed now.
v1.2.83_033: Bugfix: Fatal error: Uncaught mysqli_sql_exception: Unknown column 'SetupContactURL' in 'field list' in functions\standard.php:12
  ⇒ includes\error_reporting.php: MySQLi Error Mode is permanently set to 'MYSQLI_REPORT_ERROR'
  ⇒ GigKalender 1.4 must have it permanently set to 'MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT'
v1.2.83_032: \guestbook\includes\showAllGuestbookEntries\subString.php
  ⇒ Applied new function getShortenedString2()
v1.2.83_031: \filesharing\filesharing.php: the mb_strtolower() has to vanish, as GigKalender will not relay on mbstring functions any longer
  ⇒ Removed counting of uppercase characters in file name
  ⇒ Removed mb_strtolower(), so file names keep their uppercase chararcters
v1.2.83_030: \calendar\includes\frontend\subString.php
  ⇒ Using new function getShortenedString2()
v1.2.83_029: \calendar\includes\frontend\GigNotes.php
  ⇒ Applied new function getShortenedString2()
v1.2.83_028: Bugfix: Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in \functions\standard.php on line 11
  ⇒ \functions\standard.php: getShortenedString2()
  ⇒ Added an IF statement
v1.2.83_027: \guestbook\includes\showAllGuestbookEntries\subString.php
  ⇒ Applied new function getShortenedString2()
v1.2.83_026: \functions\standard.php:
  - to get rid of mb_strlen() and mb_substr
  ⇒ Added new function getShortenedString2()
v1.2.83_025: includes\error_reporting.php: For backward compatibility with PHP versions < 8.1, MYSQLI error mode will be turned off here.
v1.2.83_024: Bugfix: \install\deinstall.php
  - Fatal error: Uncaught mysqli_sql_exception: Unknown table 'gigkalender12_gigs' ... thrown in \install\deinstall.php on line 30
  ⇒ Rewritten a fair part of \install\deinstall.php by using two new functions
v1.2.83_023: Bugfix: install\deinstall.php: If you run deinstallation although GigKalender isn't installed, a Fatal Error gets thrown.
  - Fatal error: Uncaught mysqli_sql_exception: Table 'gigkalender12_setup' doesn't exist ... thrown in \functions\standard.php on line 11
  - included was still the old \includes\header.php
  ⇒ including the new \install\head.php
v1.2.83_022: Bugfix: On deinstall: Fatal error: Uncaught mysqli_sql_exception: Unknown table 'gigkalender12_menu' in install\deinstall.php on line 59
  ⇒ \install\deinstall.php: Added an IF EXISTS to SQL statement
v1.2.83_021: Bugfix: /frontend/example_gallery.php
  ⇒ If subfolder 'original' doesn't exist, a warning gets thrown:
  ⇒ Warning: Undefined array key -1 in \gallery\gallery.php on line 67
  ⇒ \gallery\gallery.php: added an IF clause to filter for missing folders
v1.2.83_020: install/index2.php: Modified to make use of install/head.php
v1.2.83_019: install/index.php: Modified to make use of install/head.php
v1.2.83_018: Installation failed under new XAMPP with PHP 8.1 and MariaDB
  ⇒ This happened, because installation and backend both included the same includes/head.php
  ⇒ The includes/head.php requested a var from database table, which did not exist before it got installed
  ⇒ Apparently the new MariaDB v10.4.24 is not failing silently anymore
  ⇒ Added new file install/head.php
v1.2.83_017: Bugfix: frontend/example_gallery.php?&album=demo&image=1
  ⇒ Deprecated: nl2br(): Passing null to parameter #1 ($string) of type string is deprecated in \gallery\gallery.php on line 161
  ⇒ https://github.com/justinrainbow/json-schema/pull/666
  ⇒ added an "if ($Text!==NULL)"
v1.2.83_016: Bugfix: /frontend/example_calendar_past.php:
  Fatal error: Uncaught mysqli_sql_exception: Unknown column 'SetupFrontendCalendarGigDetailsURL' in 'field list'
  ⇒ functions/standard.php.getFrontendURL($Var):
    added an IF to perform getSetup() to not perform it on vars defined in gigkalender.ini.php

<!-- Release Date 2021-05-01 -->
v1.2.83_015: Bugfix: Password with a '<' could not be stored into database
  ⇒ functions\standard.php.editCurrentUser():
    Removed the strip_tags() functions
v1.2.83_014: Bugfix: Password with a backslash could not be stored into database
  ⇒ user\editCurrentUser.php: Using Post variable $_POST['UserNewPassword'] directly instead of $UserNewPassword
v1.2.83_013: includes\login.php: Enabled 'autofocus' on input field 'username'
v1.2.83_012: Bugfix: functions\import\12\user.php: Importing users with a backslash in password failed
  ⇒ Defined '"' as escape parameter
v1.2.83_011: .htaccess: Enabled COMPRESSING FILES
v1.2.83_010: .htaccess: Enabled BROWSER CACHING
v1.2.83_009: Renamed function logoutInactiveUser() into logoutInactiveUsers()
v1.2.83_008: frontend\example_contact-form.php: Replaced the German sentence with a shorter English one ("Please, drop me a message")
v1.2.83_007: frontend\example_contact-form.php: Removed unused variables
v1.2.83_006: contact-form/contact-form: $L_Result_NOK got replaced by $L_ERROR_Email_could_not_be_sent
v1.2.83_005: contact-form/contact-form: $L_Result_OK got replaced by $L_142
v1.2.83_004: contact-form/contact-form: mail() is now using the new language var $L_New_message_via_contact_form as subject
v1.2.83_003: contact-form/contact-form: mail() is now using the guestbooks email address for administration (setup var 'SetupGuestbookMail')
v1.2.83_002: Bugfix: Former update files did not rename "images/filesharing_notes.gif" to "images/filesharing_sheet-music.gif"
  ⇒ the full version has been correct
v1.2.83_001: Updated embedded CKEditor to version 4.16.0
v1.2.83: New feature: Admin: Export: Exported files are now saved in subfolders named by current date and time

<!-- Release Date 2021-03-03 -->
v1.2.82_008: Gallery: A demo album is now permanently included
v1.2.82_007: Bugfix: Front-end: Calendar: Notes in Detailview did show text non-formatted (all formats removed)
⇒ removed "$GigNotes = strip_tags($GigNotes);"
⇒ removed "$GigNotes = htmlspecialchars($GigNotes, ENT_QUOTES);"
v1.2.82_006: Bugfix: Front-end can not load calendars:
⇒ "Warning: include_once(calendar/calendar_wrapper.php): Failed to open stream: No such file or directory in calendar\calendar.php on line 14
⇒ moved "calendar/_keep/calendar_wrapper.php" back into "calendar\"
v1.2.82_005: frontend\example_formate.css: changed to "display: inline-block;" in .GigKalender .pagination
v1.2.82_004: frontend\example_formate.css: added "margin: 0;" to .GigKalender .NewsEntryHeadline
v1.2.82_003: frontend\example_formate.css: removed "margin-bottom" in .GigKalender .NewsNavigation
v1.2.82_002: frontend\example_formate.css: added "margin: 0;" to .GigKalender .GuestbookEntryHeadline
v1.2.82_001: frontend\example_formate.css: removed "margin-bottom" in .GigKalender .GuestbookNavigation
v1.2.82: New feature: The listed albums in the gallery got a pagination

<!-- Release Date 2021-01-04 -->
v1.2.81_005: admin\import.php.81: Warning: A non-numeric value encountered...
  ⇒ applied using function formatFileSize()
v1.2.81_004: admin\export.php.40: Warning: A non-numeric value encountered...
  ⇒ applied using function formatFileSize()
v1.2.81_003: removed all get_magic_quotes_gpc() (deprecated since PHP 7.4)
v1.2.81_002: contact-form\contact-form.php: Optimized layout of emails sent after filing the form
v1.2.81_001: contact-form\contact-form.php: Added missing honey-pot as spam protection, a hidden URL field.

<!-- Release Date 2020-10-12 -->
v1.2.81: Back end: Calendar: Added a new button to copy an existing gig to a new one
v1.2.80_193: contact-form\contact-form.php: Implemented an Anti Spam Timestamp, which can identify spam by calculating the time spent to fill the form
v1.2.80_192: guestbook\guestbook_form_internal.php: Implemented an Anti Spam Timestamp, which can identify spam by calculating the time spent to fill the form

<!-- Release Date 2020-09-06 -->
v1.2.80_191: gallery\gallery.php.142: Added a CSS identifier "Image", id="Image"
v1.2.80_190: gallery\gallery.php.144: Removed the unnecessary <br>-Tag
v1.2.80_189: frontend\example_formate.css: Removed "x-width: 100%;" in ".GigKalender .NewsEntryHeadline"
v1.2.80_188: frontend\example_formate.css: Removed "x-width: 100%;" in ".GigKalender .GuestbookEntryHeadline"
v1.2.80_187: gallery\templates\gallery_entry.php.28: The string 'Images' got replaced by a language variable $L_Images
v1.2.80_186: frontend\example_formate.css: ".GigKalender .GuestbookEntryComment":
  ⇒ removed "font-style: italic;"
v1.2.80_185: frontend\example_formate.css: ".GigKalender .NewsNavigation":
  ⇒ removed "font-size: 0.8em;"
v1.2.80_184: frontend\example_formate.css: ".GigKalender .GuestbookNavigation":
  ⇒ removed "font-size: 0.8em;"
v1.2.80_183: frontend\example_formate.css: ".GigKalender .NewsEntryDate":
  ⇒ removed "font-size: 0.8em;"
v1.2.80_182: frontend\example_formate.css: ".GigKalender .GuestbookEntryDate":
  ⇒ removed "font-size: 0.8em;"
v1.2.80_181: frontend\example_formate.css: ".GigKalender .GuestbookEntryHeadline":
  ⇒ removed "padding-top: 2px;"
v1.2.80_180: frontend\example_formate.css: ".GigKalender .NewsEntryHeadline":
  ⇒ removed "padding-top: 2px;"
v1.2.80_179: frontend\example_formate.css: ".GigKalender .NewsEntryHeadline":
  ⇒ removed "font-size: 1em;"
v1.2.80_178: frontend\example_formate.css: ".GigKalender .GuestbookEntryComment":
  ⇒ removed "font-size: 0.8em;"
v1.2.80_177: frontend\example_formate.css: ".GigKalender .GuestbookEntryText":
  ⇒ removed "font-size: 0.9em;"
v1.2.80_176: frontend\example_formate.css: ".GigKalender .NewsEntryText":
  ⇒ removed "font-size: 0.9em;"
v1.2.80_175: Bugfix: Front-end: News: An image in a news entry does not spawn the container, so the image overlaps the next entry.
  ⇒ frontend\example_formate.css: Added "overflow:auto;" to ".GigKalender .NewsEntryText"
v1.2.80_174: update.sql.php: script gives out a hint now on renaming attempt, the target file or folder name already exists.
v1.2.80_173: Bugfix: Back-end threw "Warning: include(includes/setup/SetupRefreshTime.php)"
  ⇒ In a previous version "SetupRefreshtime.php" got renamed into "SetupRefreshTime.php"
  ⇒ the correspondening update file did not consider that
v1.2.80_172: Bugfix: Front-end: Accessing Guestbook when not logged in as Admin threw "Notice: Trying to access array offset on value of type null in /functions/standard.php on line 1126
  ⇒ its a new restriction of PHP 7.4
  ⇒ fixed in functions\standard.php.IsUserAdmin()

<!-- Release Date 2020-08-04 -->
v1.2.80_171: Bugfix: Front-end: When opening a direct link to gig details, the Back-button does not work ⇒ now it leads to 'calendar'. But for past gigs, it does not link to 'calendar_past' (archived gigs). This will get fixed in v1.4, since it requires changes to gigkalender.ini.php
v1.2.80_170: Bugfix: Front-end: A gig scheduled for present day is NOT listed in 'calendar' nor in 'calendar_past'
  ⇒ calendar/calendar_sql.php.19: had to be "GigDate>='.$Timestamp"

<!-- Release Date 2020-05-04 -->
v1.2.80_169: Bugfix: admin\setup.php:18: Including "SetupRefreshtime.php" had to be "SetupRefreshTime.php"
v1.2.80_168: contact-form\contact-form.php: Changed imploding to use "\r\n"
v1.2.80_167: contact-form\contact-form.php: Added mime-version to header
v1.2.80_166: contact-form\contact-form.php: Added user-agent to header
v1.2.80_165: Bugfix: Contact Form: Email got not send with umlauts in name
  ⇒ contact-form\contact-form.php: converting name string into 64bit utf-8
v1.2.80_164: Bugfix: guestbook\guestbook_mail.php.37: Wrong data inserted into fields of messageIsSpam()
v1.2.80_163: Guestbook-Form: 'http' in Name field is detected as spam
v1.2.80_162: Guestbook-Form: blocked words in Name field are detected as spam
v1.2.80_161: Contact-Form: 'http' in Name field is detected as spam
v1.2.80_160: Contact-Form: blocked words in Name field are detected as spam now
v1.2.80_159: Bugfix: contact-form\contact-form.php: added missing asterixes (*) for required form fields
v1.2.80_158: Bugfix: contact-form\contact-form.php: added missing charset for form ⇒ accept-charset="UTF-8"
v1.2.80_157: Bugfix: contact-form\contact-form.php.18: form failed handling umlauts ⇒ removed "htmlentities($$key)"
v1.2.80_156: Bugfix: contact-form\contact-form.php: replaced several language variables with those in language files
v1.2.80_155: Bugfix: guestbook\guestbook_form_internal.php.150: check on 'code' is not required anylonger ⇒ removed
v1.2.80_154: Bugfix: guestbook\guestbook_form_internal.php.149: Applied variable $L_ERROR_Message_contains_invalide_characters
v1.2.80_153: frontend\example_formate.css: changed width of input fields and textareas
v1.2.80_152: frontend\example_formate.css: textarea can be resized vertical only
v1.2.80_151: Bugfix: frontend\example_formate.css: input field and textarea had different width
v1.2.80_150: Bugfix: contact-form\contact-form.php: added missing spam test for the message
v1.2.80_149: Bugfix: Some emails from contact form were lacking the url to block spam, except the IP query
  ⇒ contact-form\contact-form.php:52: replaced $_SERVER["HTTP_REFERER"] with a call of new function getCurrentURL()
v1.2.80_148: contact-form\contact-form.php: fixed unclosed div container after sending form
v1.2.80_147: contact-form\contact-form.php: Added the generation of $Path for including files

<!-- Release Date 2019-07-03 -->
v1.2.80_146: Bugfix: styles\gigkalender.css: Removed some disabled declarations and fixed comments
v1.2.80_145: Bugfix: Back End: Calendar: List: If you enabled "Status" in the
  attributes, there had been "Status" twice in the print preview
v1.2.80_144: Bugfix: Front End > Calendar > Table View: table headers can not be enabled
v1.2.80_143: Bugfix: Front End: Calendar: List-View: design got distorted by overlong lines
  ⇒ now breaking the lines to behind the date and beginning time
v1.2.80_142: Bugfix: gigkalender.ini.php: avoids double-slashes in URLs because of a final slash in the $GigKalenderPath
v1.2.80_141: contact-form/gigKalender_kontaktForm_v06.php: File deleted
v1.2.80_140: contact-form/gigKalender_kontaktForm_v06.php: File deleted
v1.2.80_139: contact-form/gigKalender_kontaktForm_v06.php: File deleted
v1.2.80_138: install\iniSetup.php: on default, the $SetupNewsChannelURL is empty now, so internal links work correct after installation, but can be changed if necessary
v1.2.80_137: frontend/example_guestbook_form: missing HTTP_REFERER when page is being opened directly
v1.2.80_136: news\news.php: reusing generated Pagination at top and bottom
v1.2.80_135: news\functions.php.getNewsFrontendNavigation(): function renamed into getNewsFrontendPagination()
v1.2.80_134: Bugfix: news\backend_showAllNews.php:29: Wrong session variable
v1.2.80_133: Bugfix: guestbook\backend_showAllGuestbookEntries.php:36: Wrong session variable
v1.2.80_132: guestbook\guestbook_show.php: reusing generated Pagination at top and bottom
v1.2.80_131: guestbook\functions.php.getGuestbookFrontendPagination(): removed the $Locator to differentiate between Top and Bottom pagination
v1.2.80_130: guestbook\functions.php.getGuestbookFrontendPagination(): removed JavaScript on form
v1.2.80_129: guestbook\functions.php.getGuestbookFrontendNavigation(): renamed into getGuestbookFrontendPagination()
v1.2.80_128: Bugfix: Back End: Calendar: List: set to short pagination > pagination is missing the query in the last button
v1.2.80_127: Bugfix: Front End: GB and News pagination: When less than 9 pages listed, first button contains a query in its URL
v1.2.80_126: installation.txt: Updated
v1.2.80_125: functions\standard.php.transformPassword(): Function removed (not in use)
v1.2.80_124: includes/editor: Folder removed
v1.2.80_123: Updated embedded CKEditor to version 4.11.4
v1.2.80_122: Cleaned up code in calendar\includes\showAllGigs\*.*
v1.2.80_121: Back End > Calendar> List: loading faster now, by not including sub files for empty fields
  ⇒ Calendar List in Back End loads ~36% faster
v1.2.80_120: calendar\includes\showAllGigs\GigDate.php: file removed
v1.2.80_119: calendar\includes\showAllGigs\subString.php: file removed
v1.2.80_118: Files in calendar\includes\showAllGigs don't make use of the file subString.php anymore
  ⇒ now using new function getShortenedString()
  ⇒ Calendar List in Back End loads ~40% faster
v1.2.80_117: functions\standard.php: new Function getShortenedString()
v1.2.80_116: Bugfix: calendar\backend_showAllGigs.php: table cells for GigStatus had no CSS class declaration for printing
v1.2.80_115: Bugfix: calendar\backend_showAllGigs.php: GigStatus had been in English always
v1.2.80_114: Bugfix: Back End: Calendar: Add Gig: Autocomplete listed from database, but also just typed in strings (browser-side form data)
  ⇒ added 'autocomplete="off"' to all input-tags in charge
v1.2.80_113: includes\footer.php: changed PaderDesign-URL to the GigKalender page
v1.2.80_112: Bugfix: guestbook\guestbook_form_internal.php: Gets real visitor IP via new function getRealIP()
  ⇒ might reduce spam by blocking the real IP. also, before one IP was returned as 'unknown'
v1.2.80_111: moved function getRealIP() from contact-form\contact-form.php to functions\standard.php
v1.2.80_110: Bugfix: Front End: Guestbook: Pagination: First button got wrong URL when no URL defined in gigkalender.ini.php
  ⇒ functions\standard.php.getFrontendURL(): $Path is generated now by str_replace()
v1.2.80_109: Bugfix: guestbook\functions.php.addGuestbookEntry(): Adding new entries failed, because empty ICQ variable wasn't set to NULL
v1.2.80_108: Bugfix: guestbook\functions.php.addGuestbookEntry(): Optimized to give out error messages in case adding new entry to database failed
v1.2.80_107: Bugfix: functions\standard.php.getFrontendURL(): did not consider the variable $SetupGalleryURL defined in gigkalender.ini.php
v1.2.80_106: Bugfix: functions\standard.php.getFrontendURL(): did not consider the variable $SetupGuestbookEmailURL defined in gigkalender.ini.php
v1.2.80_105: install\iniSetup.php: $SetupUserMaximumInactivityTime = "180";
v1.2.80_104: frontent\example_guestbook_add.php: file removed
v1.2.80_103: Bugfix: languages\deutsch.php: expression of variable $L_021 optimized.
v1.2.80_102: Bugfix: Back End: Some buttons too short, e.g. in Import: define min-width
v1.2.80_101: Bugfix: Email from new guestbook entry always said "Uhr" behind the entry time
v1.2.80_100: Bugfix: Email from a new guestbook entry always said "Datum" independent of selected language
v1.2.80_099: Bugfix: Front End: Current Month: URLs to gig details were wrong
v1.2.80_098: Bugfix: Back End: Calendar: List: On adding a new gig, URLs with https:// are changed into "http://https:/"
v1.2.80_097: Bugfix: Google Maps URL did not work, because Google turned of the direct URL service
  ⇒ Map URLs are now opening an OpenStreetmap map
v1.2.80_096: functions\standard.php: renamed function getGoogleMapsURL() into getMapsURL()
v1.2.80_095: Bugfix: in email about new guestbook entry, a missing ICQ number was shown as "NULL"
v1.2.80_094: Bugfix: languages\english.php: Fixed several bad expressions "Are you sure you..." into "Do you really want to..."
v1.2.80_093: Bugfix: Back End: Calendar: List: renamed header from "Gig View" into "List View"
v1.2.80_092: Bugfix: Front End: Guestbook: If pagination is not displayed, the entry link moved into wrong position, because of an empty div container
  ⇒ \guestbook\functions.php.getGuestbookFrontendNavigation(): gives out a "&nbsp;" now
v1.2.80_091: Bugfix: Back End: CSS: some small buttons too short, width set to 6em
v1.2.80_090: Bugfix: Back End: CSS: some buttons were too short, like the one during installation ⇒ CSS: width set to auto
v1.2.80_089: Bugfix: Back End: Calendar: Year: several warnings when subfolder 'cache' is missing
v1.2.80_088: Bugfix: Installation made use of a page refresh timer ⇒ removed
v1.2.80_087: Bugfix: imports used the delimiter defined in the code, not the one defined in the setup
v1.2.80_086: Renamed all variables $ErsterWochentag into $FirstDayOfTheWeek
v1.2.80_085: Renamed all variables $Zelle into $Cell
v1.2.80_084: Renamed function TimestampAusDatum() into getTimestampFromDate()
v1.2.80_083: Renamed all variables $TimestampVonHeute into $TimestampOfToday
v1.2.80_082: Renamed function WochentagVonDatum() into getWeekdayFromDate()
v1.2.80_081: Renamed URL query parameter Jahr into Year
v1.2.80_080: Renamed CSS class Jahr into Year
v1.2.80_079: Renamed all variables $Tag into $Day
v1.2.80_078: Renamed all variables $wochentag into $Weekday
v1.2.80_077: Renamed all variables $timestamp into $Timestamp
v1.2.80_076: Renamed all variables $MonatsName into $NameOfMonth
v1.2.80_075: Renamed CSS class XXX into Month
v1.2.80_074: Renamed all variables $unixtimestamp into $UnixTimestamp
v1.2.80_073: Renamed all variables $Jahr into $Year
v1.2.80_072: Renamed all variables $Monat into $Month
v1.2.80_071: functions\standard.php: Optimized function
v1.2.80_070: Renamed all variables $Inhalt into $Content
v1.2.80_069: Renamed function GetTooltip() into getTooltip()
v1.2.80_068: Renamed function AnzahlGigsMitGleichemDatum() into getNumberOfGigsAtSameDay()
v1.2.80_067: Renamed all variables $AnzahlGigsMitGleichemDatum into $NumberOfGigsAtSameDay
v1.2.80_066: Renamed function AnzahlTagedesMonats() into getDaysOfAMonth()
v1.2.80_065: Renamed all variables $AnzahlTagedesMonats into $getDaysOfAMonth
v1.2.80_064: Renamed all sql queries containing ['Anzahl'] or ['zahl'] into ['number']
v1.2.80_063: Renamed all variables $AnzahlZeichen into $NumberOfCharacters
v1.2.80_062: Renamed all variables $AnzahlDateien into $NumberOfFiles
v1.2.80_061: Renamed all variables $result into $Result
v1.2.80_060: Renamed function AnzahlVeroeffentlichterNewsInDatenbank() into getNumberOfPublishedNewsEntries()
v1.2.80_059: Renamed all variables $sql into $SQLQuery
v1.2.80_058: Renamed all variables $SQL_Befehl into $SQLQuery
v1.2.80_057: Renamed all variables $resultat into $Result
v1.2.80_056: Renamed all variables $aktuellerEintrag into $CurrentEntry
v1.2.80_055: Renamed all variables $obersterEintrag into $TopEntry
v1.2.80_054: Renamed all variables $AnzahlGigsImZeitraum into $NumberOfGigsInPeriod
v1.2.80_053: Renamed all variables $EintraegeProSeite into $EntriesPerPage
v1.2.80_052: Renamed all variables $AnzahlEintraege into $NumberOfEntries
v1.2.80_051: Renamed all variables $CurrentPage into $CurrentPage
v1.2.80_050: Renamed all variables $AnzahlSeiten into $NumberOfPages
v1.2.80_049: news\functions.php.getNewsFrontendNavigation(): removed function parameter $Locator
v1.2.80_048: Bugfix: Front End: Guestbook: It wasn't possible to add a guestbook entry by accessing the form directly
v1.2.80_047: Bugfix: images/bgindex.jpg: file removed
v1.2.80_046: Bugfix: Back End: CSS: Background color still blue, changed into dark-grey
v1.2.80_045: Bugfix: Installation fails, when subfolder 'cache' is missing
  ⇒ functions\standard.php.emptyDirectory(): now checks first whether directory exists
v1.2.80_044: Frontend: guestbook form: visitors with blocked IPs can not see the form anymore
v1.2.80_043: Bugfix: Frontend: On adding a GB entry, sending of email fails on certain email domains, e.g. "urx7.com"
  ⇒ guestbook\functions.php.sendMail(): sender email address is the admin email address now ($SetupGuestbookMail)
v1.2.80_042: guestbook\functions.php.writeSpamLog(): Removed all blanks " " in spam log headers, like "[ Email ]" to ""[Email]""
v1.2.80_041: Bugfix: guestbook\functions.php.writeSpamLog(): String "[ eMail ]" changed into "[ Email ]"

<!-- Release Date 2019-04-28 -->
v1.2.80_040: Bugfix: functions\standard.php: When new Pagination lists less than 10 pages, button for last page has no page identifier (leads to page 1 then)
v1.2.80_039: Back End: News: new Pagination
v1.2.80_038: Back End: Guestbook: new Pagination
v1.2.80_037: Bugfix: Back End: User was not logged out when max. Inactivity was up
v1.2.80_036: removed variable $L_150 from the language files (not in use anymore)
v1.2.80_035: Bugfix: frontend\images\guestbook_form.png: file missing due to update gigkalender_v1.2.79_009_DEV_update_80_022_DEV ⇒ applied new modification date to file
v1.2.80_034: Bugfix: calendar\showGigDetails.php: When showing multiple gigs (from Month View) there was no empty row between the gigs listed
v1.2.80_033: removed variable $L_203 from the language files
v1.2.80_032: renamed all variables $L_ERROR_eMail_could_not_be_sent into $L_ERROR_Email_could_not_be_sent
v1.2.80_031: renamed all variables $L_203 into $L_ERROR_Email_could_not_be_sent
v1.2.80_030: Bugfix: Back End: Admin: Users: adding new user enforced to assign a language (not necessary)
v1.2.80_029: Bugfix: languages\english.php: Improved variables $L_055 and $L_056
v1.2.80_028: Bugfix: Back End>Guestbook: after editing an entry with an empty ICQ field, it had value 0 in database. Now it is NULL.
v1.2.80_027: Bugfix: Back End>Admin>Import: There had been no notice about not having anything selected
v1.2.80_026: Back End>Admin>Import: Removed the use of SessionCookies
v1.2.80_025: Bugfix: Back End>Admin>Tools: Strings were English only
v1.2.80_024: Bugfix: calendar\calendar_wrapper.php: $timestamp was written upper case
v1.2.80_023: Bugfix: calendar\includes\frontend\GigDetailsLink.php: GigDetailsLink showed timestamp in link instead of GigID, so link did not work
v1.2.80_022: guestbook\functions.php.addGuestbookEntry(): optimized function
v1.2.80_021: guestbook\functions.php.EintragHinzufuegen(): renamed into addGuestbookEntry()
v1.2.80_020: guestbook\functions.php.messageIsSpam(): just cleaned up the code
v1.2.80_019: guestbook\guestbook_form.php: simplified the handling of $BackURL
v1.2.80_018: guestbook\guestbook_form.php: senden!='' changed into isset($senden)
v1.2.80_017: guestbook\guestbook_form.php: removed the conversion of POST-vars into standard vars
v1.2.80_016: guestbook\guestbook.php: added the conversion of $_Post-vars into standard vars
v1.2.80_015: guestbook\guestbook.php: added the conversion of $_GET-vars into standard vars
v1.2.80_014: guestbook\guestbook.php: removed the conversion of REQUEST-vars into standard vars
v1.2.80_013: guestbook\functions.php.isFormReload(): return type set to BOOL
v1.2.80_012: guestbook\functions.php.isFormReload(): added escaping of special characters via mysqli_real_escape_string()
v1.2.80_011: update.sql.php: added capability to delete files and folders
v1.2.80_010: Bugfix: filesharing/downloadNotes.php renamed into 'downloadSheetMusic.php'
v1.2.80_009: Bugfix: filesharing\notes renamed into 'sheetmusic'
v1.2.80_008: Bugfix: submenues\filesharing.php: renamed "downloadNotes" into "downloadSheetMusic"
v1.2.80_007: Bugfix: images/filesharing_notes.gif renamed into filesharing_sheet-music.gif
v1.2.80_006: Bugfix: languages\english.php: Variable $L_Notes renamed into $L_Sheet_Music
v1.2.80_005: Bugfix: Back End>File Sharing: menu button 'Notes' renamed into 'Sheet Music'
v1.2.80_004: Back End>Admin>Import: After importing, all checkboxes are unticked.
v1.2.80_003: Bugfix: functions\standard.php.getFrontendURL(): "Notice: Undefined variable: SetupGuestbookFormURL"
v1.2.80_002: $CharsSetupUserMaximumInactivityTime can have 3 chars, is Small Integer and default 60 minutes
v1.2.80_001: Bugfix: guestbook/guestbook_delete.php: If guestbook entry gets
  deleted via email and $SetupGuestbookURL in gigkalender.ini.php is not set,
  back link to guestbook is wrong ⇒ gives out a notice now
v1.2.80: New feature: gigkalender.ini.php:
  new variable $SetupFrontendGuestbookBlockedIPsLimit
  guestbook\guestbook_delete.php
v1.2.79_009: languages\deutsch.php.$_ERROR_Old_guestbook_entries_NOT_deleted: changed into "FEHLER: Alte Gästebuch-Einträge NICHT gelöscht!"
v1.2.79_008: languages\english.php.$L_203: changed into "ERROR: Email could NOT been sent!"
v1.2.79_007: guestbook\guestbook_show.php: applied a <H2> tag for the headers of guestbook entries
v1.2.79_006: languages\english.php.$L_182: changed into "The GigKalender is offered free of charge.";
v1.2.79_005: languages\deutsch.php.$L_182: changed into "Der GigKalender wird kostenlos angeboten.";
v1.2.79_004: gigkalender.ini.php: improved error messaging, if connection to database failed
v1.2.79_003: help/threads.php: updated to HTML5
v1.2.79_002: functions\standard.php.MonatsNameVonDatum(): rename into getNameOfMonthFromNumberOfMonth()
v1.2.79_001: functions\standard.php.MonatsNameVonDatum(): function rewritten
v1.2.79: New Feature: gigkalender.ini.php:
  new variable $SetupFrontendCalendarArtistFilter
  ⇒ Entering an artist name will display gigs of this particular artist only
v1.2.78_052: guestbook\functions.php.GuestbookNavigation(): renamed into getGuestbookFrontendNavigation()
v1.2.78_051: news\functions.php.getNewsFrontendNavigation(): return type set to :String
v1.2.78_050: news\functions.php.NewsNavigation(): renamed into getNewsFrontendNavigation()
v1.2.78_049: includes\backend_language_selector.php: If language file not found, it gives out an error message
v1.2.78_048: includes\backend_language_selector.php: Using global var $PATH for including files
v1.2.78_047: Bugfix: guestbook\guestbook_form.php: entering a website URL without protocoll triggers error message
v1.2.78_046: languages\english.php.$L_Frontend: renamed into $L_Front_End_Calendar
v1.2.78_045: languages\english.php.$L_Frontend: "Front End" ⇒ "Front End - Calendar"
v1.2.78_044: languages\english.php.$L_202: "Calendar" ⇒ "Back End - Calendar"
v1.2.78_043: languages\english.php.$L_067: "Back End" ⇒ "Back End - General"
v1.2.78_042: Backend: Admin: Members: numbers of asterix * in column Password represented password length
v1.2.78_041: Bugfix: Frontend>Gallery>Image-View: Double-Arrow-Icon to jump to first or last image is always a link, even when grayed out
  gallery\gallery.php
v1.2.78_040: Bugfix: example_guestbook-and-news.php: Pagination of News leads to example_news.php
  ⇒ functions\standard.php.getFrontendURL(): Function revised and fully implented in all front end views
v1.2.78_039: frontend/images/guestbook_add.png: renamed into 'guestbook_form.png'
v1.2.78_038: Guestbook: renamed all 'add' into 'form'
v1.2.78_037: guestbook/guestbook_add.php: renamed into 'guestbook_form.php'
v1.2.78_036: gigkalender.ini.php: added comments, that URLs should be absolute paths
v1.2.78_035: Bugfix: languages\deutsch.php: $L_071 = "Deine Anmeldedaten waren NICHT korrekt!";
v1.2.78_034: frontend/example_full.php: New example file, which demonstrates a full website
v1.2.78_033: functions\standard.php: New function getFileNames():Array
v1.2.78_032: functions\standard.php: New function formatFileSize():String
v1.2.78_031: Bugfix: filesharing\filesharing.php:
  Renaming of files caused names like test_1_1_1_1.mid
  ⇒ entire code rewritten
v1.2.78_030: filesharing\filesharing.php: partially rewritten
v1.2.78_029: Bugfix: filesharing\filesharing.php: removed all utf8_encode(), since it caused various mistakes
v1.2.78_028: Bugfix: language/english.php: $L_197 = "ERROR: At least one file name contains upper case letters!";
v1.2.78_027: Bugfix: language/english.php: $L_199 = "Error:" changed into "ERROR:"
v1.2.78_026: Bugfix: language/english.php: 4 times changed "At least on filename contains" into "At least one file name contains"
v1.2.78_025: Bugfix: Frontend: Gallery: gives out a warning on unknown file formats, like BMP, TIF, PSD,...
  ⇒ gallery\functions.php.getArrayOfImagesInFolder(): returns only known file formats like jpg, jpeg, png and gif
  ⇒ file extensions can be lower or upper case now
v1.2.78_024: gallery\functions.php.getArrayOfImagesInFolder(): rewritten function for using globe()
v1.2.78_023: gallery\functions.php: removed obsolet function countImages();
v1.2.78_022: guestbook\guestbook_add.php: gives out an error message, if message contains a blocked character.
v1.2.78_021: guestbook\functions.php.messageIsSpam(): Function returns 'noSpam', if message does not look like spam
v1.2.78_020: guestbook\functions.php.messageIsSpam(): Improved the way it checks for characters, it saves the detected blocked character into spam.log
v1.2.78_019: guestbook\functions.php.messageIsSpam(): Improved the way it checks for words, with surrounding blanks
v1.2.78_018: news\news.php: Faster code to calculate page of requested article, when accessed from news feed with NewsID
v1.2.78_017: Bugfix: news\news.php: If NewsID referred to not existing article, a warning was thrown: "Warning: A non-numeric value encountered..."
v1.2.78_016: Bugfix: Backend: renamed all GET variables "inhalt" into "content"
v1.2.78_015: Backend: Calendar: List: Pagination: Removed the title "Page:"
v1.2.78_014: styles/gigkalender.css: page centered: body {margin: 0 auto 0 auto;}
v1.2.78_013: styles/gigkalender.css: Maximum page width set: body {max-width: 1200px;}
v1.2.78_012: Removed subolder 'gallery/albums/album'
v1.2.78_011: functions\standard.php: removed obsolet function GigsPublished()
v1.2.78_010: Optimized code in calendar\table.php
v1.2.78_009: Optimized code in calendar\list.php
v1.2.78_008: Optimized code in calendar\calendar_past.php
v1.2.78_007: Optimized code in calendar\calendar.php
v1.2.78_006: functions\standard.php.GigsPublished(): Optimized code
v1.2.78_005: Bugfix: Front End: Calendar: If all gigs in period are 'Option', there was no note about no gigs, just nothing.
  ⇒ functions\standard.php.GigsPublished(): missing brackets in SQL command
v1.2.78_004: languages/deutsch.php: updated strings $L_060 and $L_075
v1.2.78_003: languages/english.php: updated strings $L_060 and $L_075
v1.2.78_002: languages/deutsch.php: $L_109: changed into "Gästebuch-Formular"
v1.2.78_001: languages/english.php: $L_109: changed into "Guestbook Form"
v1.2.78: New Feature: Back End: Admin: Front End: User can let language blank, so browser language will be detected
v1.2.77_032: languages/deutsch.php: $L_Headline08: changed into "Kalender - Vergangene Gigs:"
