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

### GIGKALENDER CHANGELOG ###
<!-- 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:"
v1.2.77_031: languages/english.php: $L_Headline08: changed into "Calendar - Past Gigs:"
v1.2.77_030: file 'images/valid-rss.png' removed
v1.2.77_029: Backend: Admin: Frontend: new RSS-Logo valid-rss-rogers.png
v1.2.77_028: Bugfix: guestbook\guestbook_mail.php: Missing @ for mail() (it threw an exception when running on localhost without a mail server)
v1.2.77_027: Optimized code in guestbook\guestbook.php
v1.2.77_026: Bugfix: guestbook\functions.php.sendMail(): Missing @ for mail() (it threw an exception when running on localhost without a mail server)
v1.2.77_025: Backend: Guestbook: IPs displayed anonymized now
v1.2.77_024: functions/standard.php.emptyDirectory(): changed the error message for not delete files: ">ERROR: File NOT deleted!"
v1.2.77_023: functions/standard.php.emptyDirectory(): added a final / to the $strDir
v1.2.77_022: subfolder 'calendar\includes\addGig\autocomplete' removed
v1.2.77_021: Replaced JavaQueryUI based Autocomplete by HTML5 based <datalist> tag
v1.2.77_020: images/bgindex.jpg: replaced with bgindex-grey.png
v1.2.77_019: gigkalender.ini.php: some strings were in "", others in ''
v1.2.77_018: languages\english.php: changed all "member(s)" into "user(s):"
v1.2.77_017: changed all '...' into '…'
v1.2.77_016: styles\gigkalender.css: * {font-size: 100%;}
v1.2.77_015: Bugfix: languages\english.php: changed $L_Button10 = "Members" into $L_Button10 = "Users";
v1.2.77_014: Minimum password length increased to 24 characters
v1.2.77_013: Bugfix: news\backend_showAllNews.php: Setting number of lines to 'All', throws "Warning: A non-numeric value encountered..."
v1.2.77_012: Bugfix: guestbook\backend_showAllGuestbookEntries.php: Setting number of lines to 'All', throws "Warning: A non-numeric value encountered..."
v1.2.77_011: Bugfix: calendar\backend_showAllGigs.php: Setting number of lines to 'All', throws "Warning: A non-numeric value encountered..."
v1.2.77_010: news\backend_showAllNews.php: View Parameters: minimum line numbers is 10 now
v1.2.77_009: guestbook\backend_showAllGuestbookEntries.php: View Parameters: minimum line numbers is 10 now
v1.2.77_008: calendar\backend_showAllGigs.php: View Parameters: minimum line numbers is 10 now
v1.2.77_007: Bugfix: admin\import.php: Overwriting of Setup has to be checked and disabled
v1.2.77_006: Bugfix: frontend/example_guestbook-and-news.php
  => On adding a guestbook entry: "Warning: A non-numeric value encountered in F:\Eigene Dateien\PaderDesign\Projekte\0027 GigKalender\01 Skript\gigkalender12\news\news.php on line 41"
  => fixed with unique variable $PageVar in pagination URL
v1.2.77_005: Bugfix: functions\standard.php.checkEmail(): failed with new TLDs like .world
v1.2.77_004: languages\english.php: renamed $L_Lens = 'Lens' into $L_Magnify = 'Magnify',
  also in languages\deutsch.php and gallery\gallery.php
v1.2.77_003: install\demo\guestbook.php: Changed Email address
v1.2.77_002: Backend: CSS: 5px padding on left and right side (#Box)
v1.2.77_001: Bugfix: languages/deutsch.php: $L_ERROR_Missing_agreement = "Deine Einwilligung fehlt!";
v1.2.77: New Feature: Frontend > Guestbook > Add: Form requires agreement to privacy policy
  - You can toggle this feature in gigkalender.ini.php: $SetupFrontendGuestbookPrivacyPolicy
  - You can define an URL to the privacy policy in gigkalender.ini.php: $SetupFrontendPrivacyPolicyURL
v1.2.76_029: Bugfix: guestbook\guestbook_add.php: 122: Added a trim() to get rid of blanks infront of URLs or at its end
v1.2.76_028: Bugfix: guestbook\guestbook_add.php: 121: No default "http://" anymore
v1.2.76_027: Bugfix: guestbook\guestbook_add.php: 120: Empty URL does not get replaces with "http://" anymore
v1.2.76_026: Bugfix: backend_addGig: removed all four initial "http" strings in URL fields
v1.2.76_025: Bugfix: backend_addGig: Strip whitespaces from the beginning and end of a URL
v1.2.76_024: Bugfix: backend_addGig: URLs beginning with HTTPS are being rejected as invalid
v1.2.76_023: frontend/*.php: files switched to UTF8
v1.2.76_022: frontend/*.*: files switched to HTML5
v1.2.76_021: frontend/example_calendar-future-and-past.php: file removed
v1.2.76_020: Bugfix: admin\includes\addUser\UserCurrentPassword.php: A password with backslash failed =>
v1.2.76_019: functions\standard.php.getUID(): Bugfix: Login failed with password containing a backslashs
v1.2.76_018: update.sql.php: added support to delete old files and folders, and improved output and its formatting
v1.2.76_017: file 'install/index4.php' removed
v1.2.76_016: Backend: Calender: List: new Pagination
v1.2.76_015: Frontend: News: new Pagination
v1.2.76_014: Bugfix: example_guestbook.php?page=40 caused a warning message, when there are less than 40 pages
v1.2.76_013: Frontend: Guestbook: new Pagination
v1.2.76_012: Bugfix: guestbook\functions.php: GuestbookNavigation(): optimized the way the Navigation-URL gets determined
v1.2.76_011: Bugfix: news\functions.php: NewsNavigation(): optimized the way the Navigation-URL gets determined (was different from GB)
v1.2.76_010: gallery\images\lens.gif: Icon shows a lens now
v1.2.76_009: Increased size of Gallery icons from 18x18 to 32x32 px
v1.2.76_008: Bugfix: gigkalender.ini.php: All boolean values written uppercase
v1.2.76_007: functions\standard.php: getGoogleMapsURL(): simplified function
v1.2.76_006: functions\standard.php: getGoogleMapsURL(): Updated Google-Maps-URL
v1.2.76_005: Bugfix: gigkalender12\installation.txt: "var" => "variable"
v1.2.76_004: Bugfix: gigkalender12\installation.txt: "Tutorials can be ..." => "Detailes tutorials can be ..."
v1.2.76_003: Bugfix: gigkalender12\installation.txt: Updated PaderDesign-URL to "https..."
v1.2.76_002: Bugfix: install\demo\guestbook.php: Updated $gb_EchteURL to "https..."
v1.2.76_001: rewriting news feeds after installation
v1.2.76: New Feature: Gallery now supports GIF images.
v1.2.75_042: Bugfix: gallery\functions.php:46: Undefined variable: SetupFrontendGalleryImagesInterlacing
v1.2.75_041: gallery\albums\album: renamed into 'demo'
v1.2.75_040: gallery\albums\album\original: created 3 new example images as PNG, JPG and GIF
v1.2.75_039: gallery\images\gallery_example_images.pspimage: improved visually
v1.2.75_038: Bugfix: installation.txt: Updated requirements
v1.2.75_037: Bugfix: install\index2.php: Changed minimum MySQL version to 5.5
v1.2.75_036: Bugfix: functions\standard.php.isEmailDomainValid(): array_pop() threw a notice, because it accepts a variable only
v1.2.75_035: Bugfix: languages/deutsch.php: $_ERROR_Old_user_NOT_deleted
v1.2.75_034: Bugfix: languages/deutsch.php: $L_License11
v1.2.75_033: Bugfix: languages/deutsch.php: $L_196
v1.2.75_032: Bugfix: languages/deutsch.php: $L_197
v1.2.75_031: Bugfix: languages/deutsch.php: $L_198
v1.2.75_030: Bugfix: languages/deutsch.php: $L_199
v1.2.75_029: Bugfix: languages/deutsch.php: $L_183
v1.2.75_028: Bugfix: languages/deutsch.php: $L_089
v1.2.75_027: Bugfix: languages/deutsch.php: $L_035
v1.2.75_026: Bugfix: languages/english.php: $L_ERROR_No_installation_of_gigkalender_present
v1.2.75_025: Bugfix: languages/english.php: $L_143
v1.2.75_024: Bugfix: languages/english.php: $L_216
v1.2.75_023: Bugfix: languages/english.php: $L_141
v1.2.75_022: Bugfix: languages/english.php: $L_134
v1.2.75_021: Bugfix: languages/english.php: $L_075
v1.2.75_021: Bugfix: languages/english.php: $L_GigIsPrivate
v1.2.75_020: Bugfix: languages/deutsch.php: $L_Please_log_into_the_backend
v1.2.75_019: Bugfix: languages/english.php: $L_148
v1.2.75_018: Bugfix: admin\delUser.php: deleting other accounts than own one failed

<!-- Release Date 2018-10-04 -->
v1.2.75_017: replaced install/index3.php with install/index4.php => removed donation buttons during installation
v1.2.75_016: help/donate.php: removed the Flattr donation option
v1.2.75_015: migrated file includes/donate.php into help/donate.php
v1.2.75_014: Bugfix: admin\delUser.php: Blocked misusing GET var 'uid' to delete own admin account.
v1.2.75_013: Bugfix: admin\showUsers.php: it was possible to delete own admin account => removed the delete icon for own user
v1.2.75_012: Bugfix: functions\standard.php.logout():992: Cause a warning on logout about session_name() => session_name() got removed
v1.2.75_011: Bugfix: calendar\includes\addGig\GigCity.php:8: when back-end language is English, "Location" has to be "City"
v1.2.75_010: Bugfix: calendar\showGigDetails.php:40: Undefined variable: GigLocation
v1.2.75_009: Bugfix: calendar\backend_addGig.php:205: removed deprecated each() by using foreach() instead of while()
v1.2.75_008: Bugfix: admin\includes\editAttributes.php:196: removed deprecated each() by using foreach() instead of while()
v1.2.75_007: Bugfix: functions/standard.getFrontendURL(): parse_str: deprecated without second argument => rewritten entire function
v1.2.75_006: Bugfix: help/threads.php:100: Fixed error "Function name must be a string" on mysqli_close
v1.2.75_005: Footer: changed http to https in url of paderdesign.de
v1.2.75_004: Updated installation.txt
v1.2.75_003: Bugfix: Backend>Admin>User>Edit User: displays permanently "Session: Offline"
v1.2.75_002: index.php: JavaScript loading uses SWITCH now, instead of a bunch of IFs
v1.2.75_001: Bugfix: index.php: wrong placed </div> tag
v1.2.75: New Feature: Updated embedded CKEditor to version 4.10.0
v1.2.74_010: Bugfix: Backend>Admin>User: Can neither edit nor add users => removed token() from addUser.php
v1.2.74_009: Bugfix: functions/import/12/setup.php: fgetcsv(): max line length set to 0 (=unlimited)
v1.2.74_008: Bugfix: help/threads.php: changed all url protocolls from HTTP to HTTPS
v1.2.74_007: Bugfix: help/forum.php: changed all url protocolls from HTTP to HTTPS
v1.2.74_006: Bugfix: calendar/showGigDetails:40: "Notice: Array to string conversion": $$Attributes[$i]!='' => ${$Attributes[$i]}!=''
v1.2.74_005: Bugfix: functions/standard.php:355: preg_match for Timestamps: '(/[0-9]{9,10})/' => '/([0-9]{9,10})/'
v1.2.74_004: Bugfix: includes/header.php:17: removed redundant slash / from path to favicon
v1.2.74_003: calendar/showGigDetails.php:46: removed empty table row
v1.2.74_002: calendar/showGigDetails.php:25: removed empty table row
v1.2.74_001: calendar/showGigDetails.php:36: fixed the issue with the empty string of $GigLocation
v1.2.74: New Feature: Gallery: Alternate Text (Alt) shows picture file name, if image description text-file is empty (improvement for search engine picture search)
v1.2.73_002: Bugfix: gallery/gallery_entry.php: removed there counter
v1.2.73_001: Bugfix: gallery/gallery_entry.php:64: Gallery shows the album icons twice
v1.2.73: New Feature: Updated embedded CKEditor to version 4.5.10
v1.2.72_002: MySQL-Database-Update: News: 'LastEditor' may have up to 20 characters now
v1.2.72_001: MySQL-Database-Update: News: 'AddedFrom' may have up to 20 characters now
v1.2.72: New Feature: Changes in Gallery: It automatically generates Thumbnails and scaled Images from files in the 'original' folder.
13 v1.2.71_041: installation.txt: Added a hint about tutorials and fixed a typo
13 v1.2.71_040: replaced ALL deprecated functions mysql_close() with mysqli_close()
13 v1.2.71_039: replaced ALL deprecated functions mysql_error() with mysqli_error()
13 v1.2.71_038: replaced ALL deprecated functions mysql_select_db() with mysqli_select_db()
13 v1.2.71_037: replaced ALL deprecated functions mysql_query() with mysqli_query()
13 v1.2.71_036: replaced ALL deprecated functions mysql_fetch_row() with mysqli_fetch_row()
13 v1.2.71_035: replaced ALL deprecated functions mysql_real_escape_string() with mysqli_real_escape_string()
13 v1.2.71_034: replaced ALL deprecated functions mysql_num_rows() with mysqli_num_rows()
13 v1.2.71_033: replaced ALL deprecated functions mysql_fetch_array() with mysqli_fetch_array()
13 v1.2.71_032: replaced ALL deprecated functions mysql_fetch_assoc() with mysqli_fetch_assoc()
13 v1.2.71_031: replaced ALL global $db_name; with global $db;
13 v1.2.71_030: replaced ALL deprecated functions mysql_db_query() with mysqli_query()
13 v1.2.71_029: gigkalender.ini.php: added mysqli_select_db();
13 v1.2.71_028: install/deinstall.php: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_027: functions/standard.php:addUser(): replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_026: functions/standard.php:testDoppelteUser(): replaced deprecated function mysql_fetch_row() with mysqli_fetch_row()
13 v1.2.71_025: functions/standard.php:testDoppelteUser(): replaced deprecated function mysql_num_rows() with mysqli_num_rows()
13 v1.2.71_024: functions/standard.php:testDoppelteUser(): replaced deprecated function mysql_query() with mysqli_query()
13 v1.2.71_023: functions/standard.php:addUser(): replaced deprecated function mysql_real_escape_string() with mysqli_real_escape_string()
13 v1.2.71_022: install/iniNews.php:26: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_021: install/iniGuestbook.php:28: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_020: install/iniGigs.php:70: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_019: install/iniUser.php:32: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_018: install/iniSetup.php:161: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_017: install/iniSetup.php:58: replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_016: install/index2.php:36: replaced deprecated function mysql_query() with mysqli_query()
13 v1.2.71_015: functions/standard.php:isDatabasePresent(): replaced deprecated function mysql_select_db() with mysqli_select_db()
13 v1.2.71_014: install/index2.php:28: replaced deprecated function mysql_get_server_info() with mysqli_get_server_info()
13 v1.2.71_013: functions/standard.php:getUID(): replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_012: functions/standard.php:loggedIn(): replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_011: functions/standard.php:getCurrentUserVar(): replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_010: functions/standard.php:logoutInactiveUser(): replaced deprecated function mysql_db_query() with mysqli_query()
13 v1.2.71_009: functions/standard.php:getSetup(): replaced deprecated function mysql_db_query() with mysqli_query()
13 -v1.2.71_008: gigkalender.ini.php:84: replaced deprecated function mysql_query with mysqli_query
13 v1.2.71_007: gigkalender.ini.php:82: replaced deprecated function mysql_connect with mysqli_connect
13 v1.2.71_006: installation.txt: Optimized the instructions
13 v1.2.71_006: guestbook/functions.php:203: changed 'word' into 'blocked-word' to be more unique in log files
13 v1.2.71_005: guestbook/functions.php:214: changed 'code' into 'blocked-character' to be more unique in log files
13 v1.2.71_004: guestbook/functions.php:210: changed 'domain' into 'blocked-url' to be more unique in log files
13 v1.2.71_003: guestbook/functions.php:190: changed 'ip' into 'blocked-ip' to be more unique in log files
13 v1.2.71_002: guestbook/functions.php:184: changed 'url' into 'hidden-url' to be more unique in log files
13 v1.2.71_002: guestbook/functions.php: messageIsSpam(): Changed order off filters to improve performance
v1.2.71_001: calendar/includes/addGig/autocomplete: JQuery-UI updated to v1.10.3 including updating JQuery to v1.9.1
v1.2.71: New Feature: editor: Switched the internal editor from TinyMCE Editor to CKEditor
13 v1.2.70_006: frontend/images: new Atom and RSS Feed icons as SVG and PNG
13 v1.2.70_005: frontend/example_formate.css:200: .GigKalender .NewsEntryHeadline {... font-size: 1em;}
13 v1.2.70_004: news/news.php: 57: Changed "<div class="NewsEntryHeadline">" into "<h2 class="NewsEntryHeadline">"
v1.2.70_003: Updated Editor to version 3.5.7
v1.2.70_002: Bugfix: admin/showUsers.php: restructure the source code
v1.2.70_001: Bugfix: admin/showUsers.php: Logged in as User it was possible to display the page 'showUsers' by changing the var 'inhalt' in the url.

v1.2.70: New Feature: news/backend_showAllNews: New Button (iBrowser) to upload images
