DIR : /home/kozerus/public_html/dgs/scripts/ChangeLog

/home/kozerus/public_html/dgs/scripts

------------------------------------------------------------------
General infos
------------------------------------------------------------------
changelog reference at:
http://www.gnu.org/prep/standards/html_node/Change-Logs.html

previous server upgrade:
Release [2016-08-20] - DGS 1.19.12 - tag [release-1_19_12-20160920] on branch [DGS-stable-20160820]

------------------------------------------------------------------
ChangeLog
------------------------------------------------------------------

### ----- release-1_20_5-20200603 -----

2020-06-03 jug

   * include/std_functions.php (echo_dragon_top_bar),
     bookmark.php:
   - add 'my-running-games' to top bar bookmarks

   * include/globals.php (DGS_VERSION),
     eidogo.php:
   - change default edit-mode for EidoGo player to 'play'

### ----- release-1_20_4-20200522 -----

2020-05-22 jug

   * eidogo/*, eidogo.php, game.php:
   - replace link to remote EidoGo server with dedicated EidoGo player directly on DGS

   * game_players.php (show_errors):
   - fix bug with null type-hinting for accepting MPG-invitation

   * INSTALL:
   - add recommendations for .htaccess file

### ----- release-1_20_3-20190610 -----

2019-06-10 jug

   * include/quick/quick_message.php (QuickHandlerMessage.process_cmd_move_msg, ~.process_cmd_delete_msg),
     include/message_functions.php (change_folders),
     message.php (handle_change_folder):
   - Fix type-hinting bug on quick-suite deleting message
     - change signature for change_folders() allowing NULL-folders argument

   * include/std_functions.php (start_page):
   - fix type-hinting bug: accept $player_row == null

   * scripts/updates/1.20/database_changes.mysql,
     scripts/updates/1.20/fix_gamesetup_15h_days.php,
     clock_tick.php:
   - fix bug with weekend-time for removing sleeping time
     - adjust migration formulas to include adjustment of byotime

### ----- release-1_20_2-20190421 -----

2019-04-20 jug

   * include/time_functions.php (is_weekend_clock_stopped, get_game_clock, timeleft_days_to_ticks,
       get_time_remaining_warning_class, time_convert_to_hours, time_convert_to_longer_unit;
       TimeFormat.echo_time, ~.echo_onvacation, ~.parse_time_days_hours),
     include/game_functions.php (MultiPlayerGame.load_game_players;
       GameHelper.update_clock, ~.load_game_row; GameSetupBuilder.__construct;
       NextGameOrder.make_timeout_date),
     include/wroom_control.php (WaitingroomControl.join_waitingroom_game),
     include/globals.php (QUICK_VERSION, GAME_CLOCK, GAME_WEEKEND_CLOCK),
     include/message_functions.php (DgsMessage.load_message_receivers),
     include/cache_globals.php (HOURS_PER_DAY),
     include/gui_functions.php (echo_off_time),
     include/std_functions.php (is_logged_in),
     include/make_game.php (create_game),
     tournaments/include/tournament_*.php,
     scripts/updates/1.20/fix_gamesetup_15h_days.php,
     scripts/updates/1.20/database_changes.mysql,
     deploy/local/mariadb/init-db/002_dragon-tables.sql,
     deploy/local/mariadb/init-db/003_dragon-data.sql,
     specs/db/dragon-data.sql, specs/db/dragon-ddl.sql,
     specs/db/table-Games.txt, specs/db/table-Players.txt,
     specs/quick_suite.txt,
     scripts/data_export.php, scripts/player_consistency.php, scripts/game_consistency.php,
     scripts/index.php,
     scripts/tests/TimeFormatTest.php, scripts/tests/GameSetupTest.php,
     tournaments/ladder/view.php, tournaments/cron_tournaments.php,
     clock_tick.php (handle_game_timeouts),
     daily_cron.php, halfhourly_cron.php, edit_profile.php, game_players.php,
     gameinfo.php, edit_vacation.php, userinfo.php, game.php, NEWS:
     - Remove sleeping time: a DGS day has 24 hours now (not 15h/day any more)
       - add game-clock id=30, weekend-game-clock id=40 to replace former 48 game-clocks
       - remove db-fields Players.Nightstart/ClockUsed/ClockChanged
       - remove unused funcs
-----------
-- add two main game-clocks (standard & weekend)
INSERT INTO Clock (ID, Ticks, Lastchanged)
   SELECT 30, MAX(Ticks), NOW() FROM Clock WHERE ID BETWEEN 0 and 23 ;
INSERT INTO Clock (ID, Ticks, Lastchanged)
   SELECT 40, MAX(Ticks), NOW() FROM Clock WHERE ID BETWEEN 100 and 123 ;

-- replace old vacation-clock -101 with just -1
UPDATE Games SET ClockUsed=-1 WHERE ClockUsed < -1 ;

-- replace 24 all-week game-clocks with standard game-clock (id=30)
UPDATE Games G
   INNER JOIN Clock C ON C.ID=G.ClockUsed
   INNER JOIN Clock GClock ON GClock.ID=30
   SET G.ClockUsed=30, G.LastTicks=G.LastTicks - C.Ticks + GClock.Ticks
   WHERE G.ClockUsed BETWEEN 0 AND 23 ;

-- replace 24 weekend game-clocks with one weekend game-clock (id=40)
UPDATE Games G
   INNER JOIN Clock C ON C.ID=G.ClockUsed
   INNER JOIN Clock GClock ON GClock.ID=40
   SET G.ClockUsed=40, G.LastTicks=G.LastTicks - C.Ticks + GClock.Ticks
   WHERE G.ClockUsed BETWEEN 100 AND 123 ;

-- replace 15hour-day-based times for main-/extra-time with 24h-day time
UPDATE Games
   SET
      Maintime=FLOOR(Maintime/15)*24 + Maintime % 15,
      Byotime=FLOOR(Byotime/15)*24 + Byotime % 15,
      Black_Maintime=FLOOR(Black_Maintime/15)*24 + Black_Maintime % 15,
      Black_Byotime=FLOOR(Black_Byotime/15)*24 + Black_Byotime % 15,
      White_Maintime=FLOOR(White_Maintime/15)*24 + White_Maintime % 15,
      White_Byotime=FLOOR(White_Byotime/15)*24 + White_Byotime % 15 ;
UPDATE GameInvitation
   SET
      Maintime=FLOOR(Maintime/15)*24 + Maintime % 15,
      Byotime=FLOOR(Byotime/15)*24 + Byotime % 15 ;
UPDATE Waitingroom
   SET
      Maintime=FLOOR(Maintime/15)*24 + Maintime % 15,
      Byotime=FLOOR(Byotime/15)*24 + Byotime % 15 ;
UPDATE TournamentRules
   SET
      Maintime=FLOOR(Maintime/15)*24 + Maintime % 15,
      Byotime=FLOOR(Byotime/15)*24 + Byotime % 15 ;

-- replace 15hour-day-based times for main-/extra-time in game-based profile-templates
UPDATE Profiles SET Text=CONCAT('MIGR_15h_DAYS ',Text) WHERE Type IN (28, 29) ;
-- execute 'scripts/updates/1.20/fix_gamesetup_15h_days.php'

-- recalculate Games.TimeOutDate for 24h-days
-- execute 'scripts/fix_games_timeleft.php'

-- clear cache
-- execute 'scripts/apc_clear_cache.php'

-- remove 9h sleep time & replace with full 24h-day
ALTER TABLE Players
   DROP COLUMN Nightstart,
   DROP COLUMN ClockUsed,
   DROP COLUMN ClockChanged ;
-----------

2019-04-19 jug

   * include/std_functions.php ($html_safe_preg):
   - ensure minimum domainpart size of tag auto-link detection
     - space following 'http://' does not qualify as auto-link

2019-01-03 jug

   * include/time_functions.php (TIMEFMT_HOUR2; TimeFormat.echo_hour):
   - add two-character enforced time-formatting for hours to support right-alignment

   * confirm.php (load_next_game, jump_to_next_game), NEWS:
   - add turn-over on skip or submit to next game if end of game-list is reached

   * include/std_functions.php (STARTFLAG_MESSAGES, start_html),
     include/globals.php (CSS_VERSION),
     js/messages.js,
     skins/dragon/screen.css,
     message.php:
   - add "Quote"-button on replyable messages to <quote> parent message text
     - works only with enabled JavaScript

   * include/quick/quick_message.php (QFLAGS_SAFE_INPUT; QuickHandlerMessage.fill_message_info),
     specs/quick_suite.txt:
   - add safe_input flag to quick-message info to return textarea-safe subject & text

   * include/quick/quick_handler.php (QOPT_FLAGS, QUICK_STD_OPTIONS;
       class QuickHandler, ~._parse_options, ~.is_flags_option):
   - add flags option to provide quick-handler specific flags

2019-01-02 jug

   * tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_users_by_id,
       ~.update_tournament_pool_ranks),
     tournaments/roundrobin/edit_ranks.php:
   - fix rank check on updating tournament pool rank for multiple pools and actual pool-size per pool

2019-01-01 jug

   * forum/forum_functions.php (FPOST_FLAG_KEEP_EMAIL),
     include/globals.php (CSS_VERSION),
     specs/db/table-Posts.txt, skins/dragon/screen.css,
     scripts/replace_emails_posts.php (find_posts_with_emails, show_posts_with_emails, toggle_keep_email,
       replace_email , print_page)
     scripts/index.php:
   - [SECURITY][GDPR] Add admin script to moderate emails in forum posts
     - add Posts-flag FPOST_FLAG_KEEP_EMAIL to keep email in post

2019-01-01 jug

   * forum/forum_functions.php (DisplayForum.draw_post),
     scripts/README.developers, NEWS:
   - disable change functionalities for forum tags & likes if JavaScript is disabled

   * */../*.php, scripts/README.developers:
   - [PHP Cleanup]
     - add PHP5 type-hinting for classes & arrays in functions
     - cleanup type-hinting redundant instanceof- and argument checks
     - changed function-signatures if type-hinted argument needs default-value
     - add interfaces: StoneReader
     - cleanup: rename some arguments to clarify meaning or type
     - cleanup: remove some ambiguity of function arguments
     - fix IDE-warnings (bugs):
       - correct wrong-typed arguments on typed-hint function calls: new Table(..ConfigTableColumns..)
       - remove unnecessary arguments & variables
       - fix declaration of static functions
       - fix using wrong variables / var-typos
       - fix clash between function arguments and global variables
       - fix function visibility modifiers
   - document type-hinting in developers README

2018-12-29 jug

   * skins/dragon/print.css, skins/dragon/screen.css, skins/dragon2/screen.css:
   - Cleanup and remove CSS for very old browser versions

   * include/table_columns.php (Table.make_table),
     skins/dragon/screen.css,
     message_thread.php, NEWS:
   - add message-thread tree-overview at top with links to full messages below with texts
   - add reset of row-number for Table-class

   * message_thread.php:
   - show messages on message-thread page always with full texts

   * scripts/data_export.php:
   - [SECURITY] remove free SQL query for super-admins

   * scripts/data_report.php [removed],
     scripts/index.php:
   - [SECURITY][cleanup] remove database arbitrary query tool

   * forum/search.php, NEWS:
   - added order by likes on forum-search

   * forum/forum_functions.php (DisplayForum.draw_overview),
     skins/dragon/screen.css, js/tags.js:
   - add read-only likes-counter on threadpost-overview

   * forum/forum_functions.php (TAG_LIKE; class DisplayForum, ~.compareForumTags, ~.draw_post;
       class ForumPost, ~.__construct, ~.has_user_tag, ~.to_string, ~.build_query_sql, ~.update_post_likes;
       Tag.renderTagList;
       Tagged.load_tagged_by_user, ~.exists_tagged),
     include/quick/quick_tag.php (TAGCMD_TOGGLE_LIKE, TAG_COMMANDS;
       QuickHandlerTag.prepare, ~.process, ~.process_cmd_toggle_like),
     include/quick/quick_message.php (QuickHandlerMessage.process_cmd_send_msg),
     include/quick/quick_handler.php (QuickHandler.addErrorText),
     include/globals.php (CSS_VERSION, JS_VERSION, QUICK_VERSION),
     deploy/local/mariadb/init-db/002_dragon-tables.sql,
     scripts/updates/1.20/database_changes.mysql, scripts/updates/1.20/other_changes.txt,
     specs/db/dragon-ddl.sql, specs/db/table-Posts.txt, specs/db/table-Tags.txt,
     specs/quick_suite.txt, specs/forums.txt,
     skins/dragon/screen.css, images/likes.gif, js/tags.js, NEWS:
   - add like-icon with counter on forum posts
     - enabled with ENABLE_FORUM_TAGS
     - click on like-icon toggles state for logged-in user and forum post
     - not-liked posts are shown with transparent like-icon
     - show like-icon also if user has no private tags
     - store likes-counter in Posts-table
     - store user-liked state in Tagged-table with tag-id < 0
     - extend quick-tag-handler with command to toggle like-state of forum post
     - ignore tags < 0 on rendering private tags
-----------
-- added Likes-counter to forum posts
ALTER TABLE Posts
   ADD CountLikes smallint unsigned NOT NULL default '0' ;
-----------

2018-12-28 jug

   * js/common.js (DGS.QuickRemoteApi, ~.handle_quick_do_success, ~.handle_quick_do_error,
       ~.show_error_box, ~.update_quota, ~.call_quick_do, ~.get_quick_do, ~.post_quick_do)
     js/game-editor.js (DGS.GamePageEditor.handle_action_save_notes; DGS.QuickRemoteApi.save_game_notes)
     js/tags.js:
   - add quick-do error-handling on toggling tags
     - refactor common quick-do-handling of JS-game-editor

   * include/std_functions.php (start_html),
     include/utilities.php (add_js_assign),
     js/tags.js, forum/read.php, forum/search.php:
   - use global DGS.constants to set ENABLE_FORUM_TAGS for JavaScript

   * include/std_functions.php (STARTFLAG_GAME_EDITOR, STARTFLAG_TAGS; start_html),
     js/jquery-1.11.3.min.js [removed],
     js/jquery-ui-1.11.4.custom.min.js [removed],
     js/jquery.scrollTo-1.4.3.1-min.js [removed],
     js/jquery-ui-1.12.1.custom.min.js, js/jquery.scrollTo-2.1.2-min.js,
     js/common.js, js/tags.js,
     forum/read.php, forum/search.php:
   - cleanup loading of JavaScript libs
     - fix order to load JavaScript libs & include code to satisfy dependencies
     - update jQuery to 3.3.1 for forum-tags & game-editor
     - update jQuery-UI to 1.12.1, jQuery-scrollTo to 2.1.2
     - always load new CSS for local development

2018-12-27 jug

   * scripts/updates/1.20/other_changes.txt, images/search.gif,
     forum/search.php, forum/tags.php, NEWS:
   - add search on tags-list linked to forum-search finding forum posts tagged with specific tag

   * include/filter.php (class FilterCheckboxArray, ~.__construct, ~.build_query, ~.get_input_element,
       ~.to_string, ~.build_fname),
     code_examples/filter_example2.php:
   - Add filter-name template for CheckboxArray-filter to support searching forum-tags

2018-12-26 jug

   * include/cache_globals.php (CACHE_GRP_TAGS, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
     scripts/updates/1.20/other_changes.txt, specs/caching.txt,
     forum/forum_functions.php (Tag.load_cache_tags, ~.delete_cache_tags),
     forum/edit_tag.php, forum/read.php, forum/search.php, forum/tags.php:
   - Add caching for private tags
     - invalidate cache on creating, updating and deleting tag-entry for user

   * include/filter.php (class FilterCheckboxArray, ~.build_query),
     forum/search.php, skins/dragon/screen.css, NEWS:
   - add search for forum posts with private tags
   - add support FC_SQL_TEMPLATE for CheckboxArray-filter

   * forum/forum_functions.php (MASK_DRAWPOST_NO_TAGS;
       class DisplayForum, ~.setForumTags, ~.compareForumTags, ~.sortForumUserTags, ~.prepare_forum_tags,
         ~.make_link_array, ~.draw_post;
       class ForumThread, ~.set_user_tags, ~.load_posts;
       class ForumPost, ~.add_user_tags, ~.build_query_sql, ~.load_post; $ENTITY_TAGS;
       class Tag, ~.__construct, ~.delete_tag, ~.render_tag, ~.persist, ~.insert, ~.update, ~.delete,
         ~.fillEntityData, ~.new_tag, ~.build_query_sql, ~.new_from_row, ~.load_tag, ~.load_tags,
         ~.renderTag, ~.renderTagList;
       class Tagged, ~.load_tagged_by_user, ~.insert, ~.delete),
     include/quick/quick_tag.php (class QuickHandlerTag, ~.canHandle, ~.parseURL, ~.prepare, ~.process,
       ~.process_cmd_update_tag),
     include/quick/quick_suite.php (QuickSuite.getQuickHandler),
     include/quick/quick_handler.php (QOBJ_TAG),
     include/std_functions.php (STARTFLAG_JQUERY; start_html, start_page),
     include/std_classes.php (ListIterator.addItem),
     include/globals.php (CSS_VERSION, JS_VERSION),
     include/error_codes.php (ErrorCode.init),
     include/config.php (ENABLE_FORUM_TAGS),
     js/common.js (document.ready),
     js/jquery-3.3.1.min.js,
     scripts/updates/1.20/database_changes.mysql, scripts/updates/1.20/other_changes.txt,
     deploy/local/mariadb/init-db/002_dragon-tables.sql,
     specs/db/dragon-ddl.sql, specs/db/table-Tags.txt, specs/quick_suite.txt,
     skins/dragon/screen.css,
     forum/edit_tag.php (parse_edit_form),
     forum/read.php (show_revision_history),
     forum/search.php, forum/tags.php,
     site_map.php, NEWS:
   - add private customizable tags on forum posts
     - add feature-toggle to enable forum posts: ENABLE_FORUM_TAGS
     - store tags with Name & colors in new Tags table
     - store tags activated for forum posts in new Tagged table
     - link to tag list in forum bar header & footer
     - toggle tags on post-view with edit-icon toggling tags-edit-mode
     - add quick-do handler for adding & deleting forum post tags
     - utilize jQuery 3.3.1 for tags
-----------
-- added table for private tags for forum posts
CREATE TABLE Tags (
  ID int NOT NULL auto_increment,
  User_ID int NOT NULL,
  Name varchar(64) NOT NULL,
  ColorBG char(6) NOT NULL,
  ColorFG char(6) NOT NULL,
  PRIMARY KEY (ID),
  KEY (User_ID)
) ENGINE=MyISAM ;

-- added table for storing tags on forum posts
CREATE TABLE Tagged (
  User_ID int NOT NULL,
  Post_ID int NOT NULL,
  Tag_ID int NOT NULL,
  PRIMARY KEY (User_ID,Post_ID,Tag_ID),
  KEY User_Post (User_ID,Post_ID)
) ENGINE=MyISAM ;
-----------

   * include/connect2mysql.php (mysql_addslashes):
   - fix PHP warning: replace deprecated function
     - remove deprecated function mysql_escape_string()
     - use replacement for mysql_real_escape_string()-function if no db-connection exists

2018-11-18 jug

   * forum/old_links_redirect.php, scripts/convert_from_old_forum.php  [removed],
     phorum/index.php, phorum/list.php phorum/post.php phorum/read.php [removed],
     forum/forum_functions.php  (class ForumPost),
     specs/db/DB-Tables.sql, specs/db/dragon-ddl.sql, specs/db/table-Posts.txt,
     deploy/local/mariadb/init-db/002_dragon-tables.sql,
     scripts/updates/1.20/database_changes.mysql,
     specs/forums.txt, specs/caching.txt, error.php, robots.txt:
   - cleanup: remove old forum '/phorum'-stuff
     - remove old /phorum code, scripts & php files
     - drop table-column Posts.old_ID
-----------
-- cleanup: remove Posts.old_ID
ALTER TABLE Posts
   DROP COLUMN old_ID ;
-----------

   * include/register_functions.php (UserRegistration.build_email_verification, ~.build_common_verify_texts),
     include/error_codes.php (ErrorCode.echo_error_text, ~.fill_email_support, ~.init),
     forgot.php, translate.php:
   - replace forum support-request with supporter-mail-contact for forgotten & wrong password
   - move common texts into ErrorCode: contact:mail_support, contact:context

   * deploy/local/README.md, deploy/local/docker-compose.yml,
     deploy/local/web/Dockerfile, deploy/local/web/php.ini,
     scripts/mailtest.php:
   - Add mailhog to local dockerized DGS to catch mails for debugging

   * forum/forum_functions.php (DisplayForum.forum_message_box):
   - replace note for guest-user on forum-post with not posting private-data,
     but instead writing supporter-mail

   * include/register_functions.php (UserRegistration.register_user, ~.register_blocked_user,
       ~.build_email_verification, ~.build_common_verify_texts),
     include/config.php (EMAIL_SUPPORT; DEL FORUM_ID_SUPPORT),
     scripts/updates/1.20/other_changes.txt,
     do_registration_blocked.php, edit_email.php, register.php, verify_email.php:
   - replace support-request via forum-post exposing private data with supporter-mail-contact
     - change global config: add EMAIL_SUPPORT, remove FORUM_ID_SUPPORT
     - replace guest-user forum support-request with supporter-mail
     - replace note to use forum for support-help with supporter-mail
       on account activation & changed mail verification
     - replace automated forum-post for registering IP-blocked user with supporter-mail

2018-11-11 jug

   * include/message_functions.php (class DgsMessage, ~.add_warning, ~.add_warnings, ~.get_warnings,
         ~.load_message_receivers;
       MessageControl.read_message_receivers),
     include/std_functions.php (buildWarnListString),
     message.php, NEWS:
   - show warning on sending message to user rejecting messages from

2018-11-10 jug

   * include/std_functions.php ($html_safe_preg):
   - fix link-markup for href with single quotes
     - previous char can not be ' (single-quote) for auto-link detection

2018-11-04 jug

   * include/sgf_parser.php (class GameSgfParser, ~.parse_sgf_game),
     goban_editor.php (create_igoban_from_parsed_sgf):
   - parse markup from SGF for Goban-Editor: CR=circle, MA=cross, SQ=square, TR=triangle

   * include/sgf_parser.php (class GameSgfParser, ~.parse_sgf_game),
     goban_editor.php (create_igoban_from_parsed_sgf):
   - parse letter & stone-number labels from SGF for Goban-Editor

   * include/sgf_parser.php (GameSgfParser.add_points, ~.parse_sgf_game, ~.parse_points),
     scripts/tests/GameSgfParserTest.php  (test_verify_game_shape_setup, test_parse_points),
     scripts/tests/SgfParserTest.php (test_sgf_parser):
   - parse compressed list of points on uploaded SGF for AB/AW-SGF-props

   * tournaments/edit_properties.php, tournaments/ladder/edit_props.php, NEWS:
   - allow edit for tournament-directors with Admin-Edit right for:
     - edit of tournament-ladder-properties on tournament status NEW/REG/PLAY
     - edit of tournament-properties on tournament-status NEW/REG

2018-11-03 jug

   * include/countries.php (getCountryText),
     images/flags/an.gif [removed],
     images/flags/bq.gif, images/flags/cw.gif, images/flags/ss.gif,
     images/flags/sx.gif, images/flags/tf.gif:
   - synchronize countries with ISO-3166-1 updates till 2013-07-11
     - add countries & flags:
       BQ (Bonaire, Sint Eustatius and Saba),
       CW (Curacao),
       TF (French Southern Territories),
       SX (Sint Maarten (Dutch part)),
       SS (South Sudan),
     - remove country-codes & flags:
       AN (Netherlands Antilles)
     - rename countries:
       BO (Bolivia -> Bolivia (Plurinational State of)),
       MD (Moldova -> Moldova (Republic of)),
       PS (Palestinian Territory -> Palestine, State of),
       VE (Venezuela -> Venezuela (Bolivarian Republic of))

   * *.php:
   - align text in translation texts and comments: byoyomi -> byo-yomi

   * include/globals.php (SGF_MAXSIZE_UPLOAD):
   - increased max size of SGF upload for goban-editor & conditional-moves: 30 -> 200KB

   * faq.php:
   - do not decrease quota on browsing FAQ

   * deploy/local/fix-docker-terminal-size.sh, deploy/local/README.md:
   - add script to fix docker terminal-size issue

   * include/classlib_user.php (User.calculate_hero_ratio):
   - fix bug: show hero% also if user has rating status INIT,
     i.e. user has a rating, but has not started a rated game yet

   * tournaments/view_tournament.php:
   - add creation datetime of tournament

   * scripts/tests/DgsUnitTest.php (DUT_LOG_OK; class DgsUnitTest, ~.__construct, ~.runTests, ~.setUp,
       ~.assertEquals, ~.assertSame, ~.assertTrue, ~.assertFalse, ~.assertNull, ~.assertNotNull,
       ~.handle_assertion, ~.equals),
     scripts/tests/DgsUnitTestRunner.php (class DgsUnitTestRunner; ~.runSuite, ~.init_php,
       ~.find_test_class),
     scripts/tests/*Test.php (class *Test),
     scripts/tests/AllTests.php [removed], scripts/tests/run_tests.php [removed],
     scripts/tests/Makefile, scripts/tests/README.test,
     deploy/local/web/php.ini, .gitignore:
   - replace phpunit framework with own simple unit test framework
     - phpunit is no longer supported for PHP 5.4
     - refactor and cleanup unit tests formerly based on phpunit

2018-11-02 jug

   * include/std_functions.php (REF_LINK_MOVEONLY; $html_safe_preg; replace_move_tag, game_reference):
   - extend game markup with move-text only notation:
     render "<game gid#move|S>" with text "#NN" | "#Shape-Setup"
   - replace "<move NN>" markup tag with showing move-only game-tag "<game gid#NN>"

   * include/std_functions.php ($html_safe_preg):
   - fix garbled markup "<link |text>"
   - fix auto-link detection
     - previous char can not be: < > = _ ; | "
     - eat multiple same ending chars
     - link end can be EOL

   * scripts/updates/1.20/ChangeLog, specs/FAQ-jug, specs/TODO-jug:
   - release 1.20.1 deployed

### ----- release-1_20_1-20181101 -----

2018-10-14 jug

   * deploy/local/README.md, INSTALL,
     deploy/local/mariadb/*, deploy/local/web/*:
   - add docker-based installation for local DGS

   * INSTALL, scripts/apc.php, .gitignore:
   - adjust & cleanup INSTALL docu for new LIVE server from May-2018 with:
     mariadb 5.5.60, apache 2.4.6, php 5.4.16
   - adjust INSTALL adding more references to sub-chapters
   - adjust APC to APCu 4.0.11 on LIVE server
   - ignore 'scripts/apc-live.php'

   * specs/Utf8-changing-charset.txt:
   - add basic links about UTF8 & encoding

2018-06-24 jug

   * include/game_functions.php (NextGameOrder.build_status_games_query),
     include/gamelist_control.php (GameListControl.build_games_query),
     include/db_classes.php (EntityData.build_sql_update):
   - fix mysql upgrade incompatibility: hex codes like 0x10 are now treated more strictly
     as string and need casting to number

2017-02-18 jug

   * include/game_functions.php (FairKomiNegotiation.save_komi, ~.start_fairkomi_game),
     confirm.php (jump_to_next_game, do_komi_save):
   - jump to next game after change to fair-komi negotiation
     - keep game if fair-komi game started and player is first to move, otherwise jump to next game
     - show komi-bid-save info on according "next" page with previous game-id

2017-01-18 jug

   * include/sgf_parser.php (SGFP_OPT_MERGE_PROPS; SgfParser.parse_sgf, ~.parse_sgf_game_tree,
       ~.sgf_parse_node, ~.parse_sgf_game),
     scripts/tests/GameSgfParserTest.php, scripts/tests/SgfParserTest.php,
     goban_editor.php (create_igoban_from_sgf_text):
   - add option for lenient SGF-parsing by merging certain SGF-node-properties
     - merge SGF-node-properties on lenient SGF-parsing: C AB AW LB
     - add better location & error-context on SGF-parse-errors
   - adjust SGF-parsing to assume Go-Game default, if "GM[1]"-property is missing

2017-01-17 jug

   * goban_editor.php (load_igoban_from_sgf, create_igoban_from_sgf_text):
   - create <igoban> from SGF-text-format in goban-editor
     - add textarea-input to paste raw SGF-format to create goban from
     - restrict max-size of SGF-input to 30KB
     - show goban-preview only if no error

2017-01-16 jug

   * include/sgf_builder.php (PLAYER_INFO_STD, PLAYER_INFO_MPG; class SgfBuilder, ~.set_mode_player_info),
     specs/quick_suite.txt, sgf.php:
   - add option on SGF-download to include & exclude player-info on move-nodes
     replace option 'mpg' with new option 'pinfo' to control including player-info on each move-node
     - default is to include player-info for MPG, and no player-info for std-game
     - option can enable or disable player-info for std-game and MPG
     - enabling for std-game only includes player-info on nodes with text-comment

2017-01-15 jug

   * include/game_functions.php (GameHelper.load_game_row),
     game.php (draw_game_info):
   - show online-icon on game-page for other player if "online"

2017-01-08 jug

   * include/std_functions.php ($html_safe_preg):
   - extend markup "<home #jump>" with jump to anchor within local page

   * include/std_functions.php ($html_safe_preg):
   - stop parsing of auto-link on more punctuation and word-boundary chars if followed by white-space
     - stop auto-link at space-followed chars: . , : ; ! ? ( ) [ ] { } ' ` " & |

   * include/std_functions.php ($html_safe_preg, $html_safe_preg_tag_clash; make_html_safe),
     include/globals.php (CSS_VERSION),
     skins/dragon/screen.css:
   - fix fit-to-shrink issue of <code> & <pre> tag by replacing with div-surrounded pre inlined-block
   - extend inner right horiz-space for pre-based tags

2016-12-24 jug

   * include/std_functions.php ($html_safe_preg):
   - avoid including '.' in http-autolink if ended with '. '

2016-11-27 jug

   * rating_changes.php:
   - show full precision if diff-value < 0.01

2016-11-26 jug

   * include/rating.php (update_rating2),
     scripts/experiments/simulate-games-ratingchanges.php:
   - add script to simulate game-playing for rating-changes

2016-11-17 jug

   * include/std_functions.php (LOGIN_SKIP_EXP_CHK, LOGIN_DEFAULT_OPTS_ADM_OPS,
       LOGIN_DEFAULT_OPTS_TDIR_OPS; is_logged_in),
     features/edit_feature.php, forum/admin.php, forum/admin_show_forumlog.php,
     scripts/experiments/flush_test.php, scripts/updates/1.0.15/fix_game_comments.php,
     scripts/updates/1.0.15/fix_message_thread.php, scripts/updates/1.0.16/fix_default_max_handi.php,
     scripts/updates/1.0.16/fix_game_invitations.php, scripts/updates/1.0.16/fix_new_game_expert_view.php,
     scripts/updates/1.0.18/fix_hero_ratio.php, scripts/updates/1.19/seed_game_stats.php,
     scripts/check_block_ip.php, scripts/check_players_email.php, scripts/clear_datastore.php,
     scripts/convert_from_old_forum.php, scripts/convert_posindex.php, scripts/data_export.php,
     scripts/data_report.php, scripts/dgs_cache_admin.php, scripts/fix_game_snapshot.php,
     scripts/fix_games_timeleft.php, scripts/fix_ladder_seq_wins.php, scripts/forum_consistency.php,
     scripts/game_consistency.php, scripts/game_stats_consistency.php, scripts/generate_translation_texts.php,
     scripts/index.php, scripts/mailtest.php, scripts/make_handicap_pattern.php,
     scripts/message_consistency.php, scripts/player_consistency.php, scripts/recalculate_ratings2.php,
     scripts/server-info.php, scripts/start_frozen_clocks.php, scripts/tournament_consistency.php,
     scripts/translation_consistency.php, scripts/update_translation_pages.php, scripts/voting_consistency.php,
     admin.php, admin_admins.php, admin_bulletin.php, admin_contrib.php, admin_do_translators.php,
     admin_faq.php, admin_game.php, admin_password.php, admin_rating.php, admin_show_adminlog.php,
     admin_show_errorlog.php, admin_show_faqlog.php, admin_show_users.php, admin_survey.php,
     admin_translators.php, admin_users.php, translate.php,
     tournaments/ladder/admin.php, tournaments/ladder/edit_props.php,
     tournaments/league/manage_linked.php,
     tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_pairing.php, tournaments/roundrobin/edit_points.php,
     tournaments/roundrobin/edit_pools.php, tournaments/roundrobin/edit_ranks.php,
     tournaments/roundrobin/edit_round_props.php, tournaments/roundrobin/edit_round_status.php,
     tournaments/roundrobin/edit_rounds.php,
     tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_news.php,
     tournaments/edit_participant.php, tournaments/edit_properties.php, tournaments/edit_results.php,
     tournaments/edit_rules.php, tournaments/edit_status.php, tournaments/edit_tournament.php,
     tournaments/game_admin.php, tournaments/manage_tournament.php, tournaments/show_tournament_log.php:
   - avoid expire-login-check and quota-decrement for admin and tournament-director operations
     - add login-option to skip session-expire-check

2016-11-16 jug

   * include/message_functions.php (change_folders_for_marked_messages),
     list_messages.php:
   - add button on message-list to move marked messages into Trashcan-folder with one-click
   - changed button-order for empty-trashcan on message-list

   * include/message_functions.php (MessageListBuilder.message_list_query, ~.load_cache_message_list),
     include/table_columns.php (Table.handle_show_rows, ~.make_show_rows),
     include/config.php (ENABLE_MESSAGE_NAVIGATION),
     scripts/updates/1.20/other_changes.txt,
     list_messages.php, search_messages.php, status.php:
   - add navigation & entries-count & show-rows-selection for message-list & message-search
     - add global-config 'ENABLE_MESSAGE_NAVIGATION' to control navigation/entries-count
       for message-list & message-search, and control show-rows for message-list
     - Table-class: allow manual adding of show-rows form-elements

   * tournaments/include/tournament.php (class Tournament, ~.__construct, ~.copyCleanup,
       ~.hasLinkedTournaments, ~.fillEntityData, ~.new_from_row, ~.update_tournament_links),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin._createTournament,
       ~._persistTournamentData, ~.copyTournament)
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_copy_tournament,
       ~.log_spawn_next_cycle, ~.log_link_tournament),
     tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_links,
       ~.build_form_confirm),
     tournaments/include/tournament_league_helper.php (TournamentLeagueHelper.spawn_next_cycle,
       ~.link_tournaments),
     tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.copyTournament),
     tournaments/include/tournament_template_league.php (TournamentTemplateLeague.copyTournament),
     tournaments/include/tournament_director.php (TournamentDirector.copy_tournament_directors),
     tournaments/include/tournament_properties.php (TournamentProperties.copyCleanup),
     tournaments/include/tournament_template.php (TournamentTemplate.copyTournament),
     tournaments/include/tournament_points.php (TournamentPoints.copyCleanup),
     tournaments/include/tournament_round.php (TournamentRound.copyCleanup),
     tournaments/include/tournament_rules.php (TournamentRules.copyCleanup),
     tournaments/include/tournament_log.php (TLOG_ACT_COPY, TLOG_ACT_LINK),
     include/db_classes.php (Entity.get_sql_copy_fields),
     include/globals.php (CSS_VERSION),
     scripts/updates/1.20/database_changes.mysql, scripts/update_translation_pages.php,
     skins/dragon/screen.css, specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
     tournaments/roundrobin/view_pools.php, tournaments/manage_tournament.php,
     tournaments/show_tournament_log.php, tournaments/view_tournament.php,
     tournaments/league/manage_linked.php:
   - add spawning of new league-cycle tournament and link source with newly created tournament
     - add new managed_linked-page to spawn new tournament as copy and link them
     - add Tournament.Prev_tid/Next_tid to store links to previous/next cycle-tournament
     - add links to previous/next cycle-tournament on view-tournament-, view-pools-, managed-linked-,
       manage-tournament-page
     - add copying of tournament used for spawning next league-cycle,
       prepare for later copy-tournament-feature
-----------
-- add previous/next cycle tournament for league-tournament
ALTER TABLE Tournament
   ADD Prev_tid int NOT NULL default '0',
   ADD Next_tid int NOT NULL default '0' ;
-----------

   * tournaments/include/tournament_league_helper.php (class TournamentLeagueHelper,
       ~.fill_relegations_tournament_pool),
     tournaments/include/tournament_round_helper.php (class TournamentRoundHelper),
     tournaments/roundrobin/edit_ranks.php:
   - refactor TournamentRoundHelper.fill_relegations_tournament_pool() into new TournamentLeagueHelper

2016-11-12 jug

   * specs/README.todo, specs/TODO-jug, specs/FAQ-jug:
   - published JUG's local TODO-file with README

   * include/std_functions.php (is_logged_in),
     edit_email.php, edit_profile.php:
   - prevent session-expire on POST-requests to avoid losing user-input-data
   - prevent losing input-data on session-expire by replacing GET-form with POST-form

2016-11-09 jug

   * tournaments/include/tournament_template_league.php (TournamentTemplateLeague.check_pools_finish_tournament_type_specific,
       ~.check_pools_relegations):
   - extend rank-summary checks for correct relegations of pool-users for league-tournaments
     - check for double-ranks that may need tie-breaking
     - check for users with rank-based relegations that doesn't match the league-configuration
     - check for too many relegations with promoted, demoted or staying pool-users
     - reporting incorrect relegations as warnings to allow T-director to overwrite

2016-11-08 jug

   * tournaments/include/tournament_template_league.php (TournamentTemplateLeague.check_pools_finish_tournament_type_specific,
       ~.check_pools_invalid_ranks_flags),
     tournaments/include/tournament_pool.php (TPOOL_LOADOPT_USER_HANDLE;
       TournamentPool.load_tournament_pools, ~.new_tournament_pool_from_cache_row):
   - optimize pools-finish consistency-checks for league-tournament by using only one db-query for 3 checks

   * include/message_functions.php (message_info_table),
     message.php (handle_send_message_selector):
   - add button to delete single message moving it to trashcan with one-click

   * include/message_functions.php (empty_trashcan_folder_messages),
     include/classlib_profile.php (SearchProfile.save_profile),
     include/quick_common.php (set_sysmessage),
     list_messages.php:
   - add button on trashcan-folder message-list-page to empty-trashcan completely
   - refactor SearchProfile.set_sysmessage() into global function-scope

2016-11-07 jug

   * tournaments/include/tournament_template_league.php (TournamentTemplateLeague.check_pools_finish_tournament_type_specific,
       ~.check_pools_invalid_ranks_flags),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPoolsFinish,
       ~.check_pools_finish_tournament_type_specific):
   - add consistency-checks for invalid rank/flags-combination of pool-users for league-tournaments
   - extend rank-summary-check with consistency-check to prevent invalid TournamentPool.Rank/Flags combinations,
     which shouldn't happen, but would mess up pool-finishing if occuring (which would be a bug)
     - ensure filled Rank is >0 and <= allowed pool-size
     - ensure withdrawal Rank is not mixed with set relegation flags
     - ensure only one relegation-flag is set from amongst promote or demote
   - refactored tournament-type-specific pools-finish checks for round-robin-tournaments into method
     to overload for league-tournament

   * include/register_functions.php (UserRegistration.register_user):
   - write last-access with time of registration for admin-info in case of problems

   * tournaments/roundrobin/edit_ranks.php:
   - restrict target-ranks to only valid TournamentPool.Rank for single user edit on edit-ranks-page

2016-11-06 jug

   * tournaments/roundrobin/edit_ranks.php:
   - fix bug: do not show rank-summary after writing-operations as it overwrites action-results
   - show number of pools for league-tournament

   * tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_users_by_id,
       ~.update_tournament_pool_ranks),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.fill_ranks_tournament_pool),
     tournaments/roundrobin/edit_ranks.php:
   - prevent setting invalid TournamentPool.Rank
     - verify target-rank with round-poolsize and actual number of pool-users in target-pool

   * tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_pool_notes),
     tournaments/roundrobin/view_pools.php, tournaments/view_tournament.php:
   - adjust tournament-pool-notes on view-pools-page to reflect round-robin- or league-tournament
     specific rank-images

   * tournaments/include/tournament_pool.php (TournamentPool.update_tournament_pool_set_relegations,
       ~.execute_rank_action),
     tournaments/include/tournament_round.php (class TournamentRound, ~.build_notes_props,
       ~.build_relegation_ranks_note),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.fill_relegations_tournament_pool),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_fill_tournament_relegations),
     tournaments/include/tournament_globals.php (TPOOL_FLAG_TD_MANUAL),
     specs/db/table-Tournaments.txt,
     tournaments/roundrobin/edit_ranks.php, tournaments/roundrobin/edit_round_props.php,
     tournaments/roundrobin/view_pools.php, tournaments/view_tournament.php:
   - add auto-fill to set relegations on edit-ranks-page for league-tournaments
     - add button to auto-fill relegations on edit-ranks-page
       - control relegations by const-properties: PromoteRanks, DemoteStartRank
       - promote pool-users with rank 1 - PromoteRanks, demote pool-users with rank >= DemoteStartRank,
         pool-users with rank inbetween stays in same league in next cycle
       - auto-filled relegations do not overwrite relegations set by T-director
       - always show rank-summary after write operation
     - add relegation notes in property-notes for view-tournament-, view-pools- & edit-ranks-page

   * tournaments/include/tournament_pool.php (class TournamentPool, ~.__construct, ~.build_result_info,
       ~.formatRank, ~.echoRankImage, ~.fillEntityData, ~.new_from_row,
       ~.count_tournament_pool_relegations, ~.execute_rank_action, ~.build_qpart_rank),
     tournaments/include/tournament_pool_classes.php (PoolViewer.make_single_pool_table;
       PoolParser.is_valid_tier_pool_key, ~.build_valid_tier_pools_selection;
       class RankSummary, ~.__construct, ~.build_notes_rank_summary, ~.make_table_rank_summary),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.add_new_tournament_round,
       ~.remove_tournament_round, ~.set_tournament_round, ~.start_next_tournament_round;
       ~.fill_ranks_tournament_pool),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPoolWinners,
       ~.check_unset_pool_ranks, ~.check_unfinished_rounds),
     tournaments/include/tournament_globals.php (TPOOL_FLAG_PROMOTE|DEMOTE|RELEGATIONS,
       RKACT_PROMOTE|DEMOTE|CLEAR_RELEGATION),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_execute_tournament_pool_rank_action),
     include/gui_functions.php (empty_if0, echo_image_tourney_relegation),
     include/globals.php (CSS_VERSION),
     images/demote.gif, images/promote.gif,
     scripts/updates/1.20/database_changes.mysql, scripts/updates/1.20/other_changes.txt,
     specs/db/table-Tournaments.txt, skins/dragon/screen.css,
     tournaments/roundrobin/edit_ranks.php (main; build_rank_actions_selection),
     tournaments/roundrobin/edit_rounds.php,
     tournaments/manage_tournament.php, tournaments/view_tournament.php:
   - add relegations of pool-user for league-tournaments
     - pool-user can be promoted or demoted or stay in same league in the next cycle
       - add TournamentPool.Flags to store league-tournament relegation of pool-user
       - adjust filling-ranks to set Rank>0 for league-tournament
       - protect round-robin-tournament specific methods from being executed for league-tournament
       - adjust formatting of rank-image with new icons for relegations
       - adjust consistency-checks on round-status-changes
     - adjust edit-ranks-page
       - show rank-summary with relegations & appropriate notes
       - add execution of new rank-actions to promote / demote / clear relegations
       - hide pool-winners for league-tournaments
     - minor changes (texts, docs to differ from round-robin-tournaments)
-----------
-- add flags to track tier-relegation for league-tournament
ALTER TABLE TournamentPool
   ADD Flags tinyint unsigned NOT NULL default '0' ;
-----------

2016-11-03 jug

   * scripts/updates/1.20/database_changes.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt:
   - optimize handling of tournament-pool-rank by combining index of TournamentPool.Rank with tid
-----------
-- index-optimization on handling tournament-pool-rank
ALTER TABLE TournamentPool
   DROP KEY Rank ;
ALTER TABLE TournamentPool
   ADD KEY tidRank (tid,Rank) ;
-----------

   * tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_pairing.php, tournaments/roundrobin/edit_pools.php,
     tournaments/roundrobin/edit_round_props.php:
   - hide const tournament-round in top info-section & pool-winner-ranks for league-tournaments

2016-11-02 jug

   * tournaments/include/tournament_pool.php (TournamentPool.check_pools):
   - fix bug with pool-checking on round-status-change:
     show error if invalid tier/pool found for league-tournament

   * tournaments/include/tournament_pool_classes.php (class TierSlicer, ~.init, ~.next_tier_pool),
     scripts/tests/TierSlicerTest.php:
   - fix TierSlicer for seeding tiered pools of league-tournament with TierFactor > 2
     - next tier has only twice as much pools as previous tier, not by factor TierFactor times

   * tournaments/include/tournament_pool_classes.php (class PoolTables, ~.__construct,
         ~.get_tier_pool_keys, ~.get_pools, ~.get_pool_users, ~.count_unassigned_pool_users,
         ~.get_user_col_map, ~.fill_pools, ~.reorder_pool_users_by_tp_id, ~.fill_games,
         ~.count_pools_max_user, ~.calc_pool_summary, ~.calc_pool_games_count;
       class PoolSummary, ~.__construct, ~.make_table_pool_summary, ~.get_counts;
       class PoolSummaryEntry, ~.__construct;
       class PoolViewer.__construct, ~.make_pool_table, ~.make_single_pool_table,
         ~.format_pool_label, ~.format_tier_pool;
       class PoolNameFormatter, ~.format, ~.format_with_default;
       class PoolParser, ~.__construct, ~.build_valid_tier_pools, ~.get_valid_tier_pools,
         ~.parse_tier_pool, ~.is_valid_tier_pool, ~.add_error),
     tournaments/include/tournament_pool.php (TournamentPool.build_result_info, ~.build_query_sql,
       ~.count_tournament_tiered_pools, ~.count_tournament_tiered_pool_users, ~.load_tournament_pool_user,
       ~.load_tournament_pools, ~.assign_pool, ~.check_pools, ~.check_pools_game_integrity),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.start_tournament_round_games,
       ~.start_games_for_specific_pools, ~.create_pairing_games, ~.fill_ranks_tournament_pool,
       ~.fill_pool_winners_tournament_pool),
     tournaments/include/tournament_games.php (class TournamentGames, ~.__construct, ~.fillEntityData,
       ~.new_from_row, ~.load_tournament_games, ~.count_tournament_games),
     tournaments/include/tournament_utils.php (TournamentUtils.encode_tier_pool_key,
       ~.decode_tier_pool_key, ~.add_qpart_with_tier_pools),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPooling,
       ~.checkClosingTournament),
     tournaments/include/tournament_result_control.php (TournamentResultControl.create_tournament_result_pool_winners),
     tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_games),
     tournaments/include/tournament_globals.php (TROUND_MAX_TIERCOUNT),
     scripts/tests/AllTests.php, scripts/tests/TierSlicerTest.php,
     scripts/tests/PoolNameFormatterTest.php, scripts/tests/PoolParserTest.php,
     scripts/updates/1.20/database_changes.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
     tournaments/ladder/view.php,
     tournaments/roundrobin/edit_pools.php (main; get_assigned_user_pools, load_and_fill_pool_unassigned,
       pools_edit_col_actions, pools_unassigned_extend_table_form, echo_pool_summary),
     tournaments/roundrobin/create_pools.php, tournaments/roundrobin/edit_pairing.php,
     tournaments/roundrobin/edit_ranks.php, tournaments/roundrobin/edit_round_props.php,
     tournaments/roundrobin/view_pools.php, tournaments/edit_results.php (load_tournament_info),
     tournaments/game_admin.php, tournaments/view_tournament.php, gameinfo.php:
   - add handling of tiered pools for league-tournament
     - adjust view-pools- & edit-pools-page for league-tournament with tiered pools
     - adjust checking pools & seeding pools & starting tournament-games & filling ranks for tiered pools
     - assign too-few players for bottom-tier into unassigned-pool for manual resolution by T-director
     - add db-field TournamentGames.Tier
     - replace simple round-robin pool handling with tier-pool-key handling to support
       round-robin & league-tournaments
     - add PoolParser to parse & validate various pool-formats
     - adjust pool-label to support tiered pools
     - add special handling for pool-name formatting & parsing for pool0 with unassigned pool-users
     - add pool-count in pool-summary-table on edit-pools-page
     - cleanup / minor changes (rename vars):
       - change tier/pool-argument order of PoolNameFormatter->format()
       - refactor pool-summary sub-array-items into PoolSummaryEntry-class
       - refactor fill_pools()-method into PoolTables-constructor
-----------
-- add tier for league-tournament games
ALTER TABLE TournamentGames
   ADD Tier tinyint unsigned NOT NULL default '1' AFTER Round_ID ;
-----------

   * tournaments/include/tournament_pool_classes.php (PoolTables.init_pool_table),
     include/globals.php (CSS_VERSION),
     skins/dragon/screen.css:
   - align cell-width on view-pools-page for round-robin-tournament for pool-matrix
     with more than 9 players

2016-10-29 jug

   * tournaments/include/tournament_pool_classes.php (class TierSlicer, ~.__construct, ~.init,
         ~.reset_pool_slicer, ~.next_tier_pool, ~.visit_tier_pool, ~.get_slicer_counts;
       PoolSlicer.__construct, ~.init, ~.next_pool),
     tournaments/include/tournament_round.php (class TournamentRound, ~.build_notes_props),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_seed_pools),
     tournaments/include/tournament_pool.php (TournamentPool.seed_pools),
     scripts/tests/AllTests.php, scripts/tests/PoolSlicerTest.php, scripts/tests/TierSlicerTest.php,
     tournaments/roundrobin/create_pools.php:
   - add seeding-pools for league-tournament with handling of tiers
     - add TierSlicer on top of PoolSlicer to handle round-robin & league tournaments alike
     - add constant league-specific fields in TournamentRound-class: TierFactor
     - assign too-few remaining players in bottom-tier into unassigned-pool

2016-10-28 jug

   * tournaments/include/tournament_pool.php (class TournamentPool, ~.__construct, ~.build_result_info,
       ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.exists_tournament_tier_pool,
       ~.count_tournament_tiered_pool, ~.count_tournament_tiered_pool_users,
       ~.count_tournament_tiered_pool_games, ~.load_tournament_pool_user, ~.load_tournament_pools,
       ~.load_tournament_participants_with_pools, ~.seed_pools, ~.add_missing_registered_users,
       ~.assign_pool, ~.check_pools, ~.check_pools_game_integrity, ~.execute_rank_action),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.start_tournament_round_games,
       ~.remove_tournament_round, ~.fill_ranks_tournament_pool),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_assign_tournament_pool,
       ~.log_execute_tournament_pool_rank_action),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkGamesStarted,
       ~.checkClosingTournament),
     tournaments/include/tournament_result_control.php (TournamentResultControl.create_tournament_result_pool_winners),
     tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_pools),
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
     scripts/updates/1.20/database_changes.mysql,
     tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_pools.php, tournaments/roundrobin/edit_ranks.php:
   - add db-field TournamentPool.Tier to support league-tournament
-----------
-- add tier for league-tournament
ALTER TABLE TournamentPool
   ADD Tier tinyint unsigned NOT NULL default '1' AFTER Round ;
-----------

2016-10-09 jug

   * tournaments/roundrobin/define_pools.php (parse_edit_form),
     tournaments/manage_tournament.php (make_links_ttype_specific):
   - adjust round-robin define-pools-page for league-tournament
     - allow no pool-winner-ranks
     - disabled input & changes of league-tournament-defaults for round-properties
     - disabled pool-suggestions

   * tournaments/include/tournament_round.php (TournamentRound.build_notes_props),
     tournaments/roundrobin/edit_round_props.php:
   - add reduced tournament-round-info on edit-round-props-page for league-tournaments

   * tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkProperties),
     tournaments/include/tournament_round.php (TournamentRound.check_round_properties),
     tournaments/roundrobin/edit_round_props.php (parse_edit_form),
     tournaments/roundrobin/define_pools.php,
     tournaments/manage_tournament.php (make_links_ttype_specific):
   - adjust round-robin edit-rounds-props-page for league-tournament
     - allow no pool-winner-ranks for league-tournament
     - extend pool-name-format for league-formats
     - use fix rounds for league-tournament to represent one cycle
     - disabled input & changes of league-tournament-defaults for round-properties
     - removed link to edit-rounds for league-tournament

   * tournaments/include/tournament_globals.php (TOURNEY_TYPE_LEAGUE, CHECK_TOURNEY_TYPE,
       TOURNEY_WIZTYPE_DGS_LEAGUE, MAX_TOURNEY_WIZARD_TYPE, TWIZT_LEAGUE),
     tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules,
       ~.prepare_create_game_row, ~.getHandicaptypeText),
     tournaments/include/tournament_pool_classes.php (PoolNameFormatter.__construct, ~.format,
       ~.is_valid_format, ~.format_with_default),
     tournaments/include/tournament_template_league.php (class TournamentTemplateLeague,
       ~.__construct, ~.getDefaultPoolNamesFormat),
     tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_game_end,
       ~.check_tournament_result),
     tournaments/include/tournament.php (Tournament.formatRound, ~.build_data_link, ~.getTypeText,
       ~.getWizardTypeText),
     tournaments/include/tournament_factory.php (TournamentFactory.getTournament, ~.getTournamentTypes),
     tournaments/include/tournament_pool.php (TournamentPool.update_tournament_pool_set_pool_winners),
     tournaments/include/tournament_utils.php (TournamentUtils.getWizardTournamentType),
     tournaments/include/tournament_round.php (TournamentRound.build_notes_props),
     tournaments/include/types/dgs_league.php (class DgsLeagueTournament, ~.__construct,
       ~.createTournament),
     include/config.php (ALLOW_TOURNAMENTS),
     scripts/updates/1.20/database_changes.mysql, scripts/updates/1.20/other_changes.txt,
     scripts/tests/PoolNameFormatterTest.php, scripts/tests/AllTests.php,
     specs/db/table-Tournaments.txt, specs/db/dragon-ddl.sql,
     tournaments/roundrobin/view_pools.php,
     tournaments/manage_tournament.php (make_links_ttype_specific),
     tournaments/cron_tournaments.php, tournaments/edit_properties.php,
     tournaments/edit_results.php, tournaments/view_tournament.php:
   - start new league-tournament-type
     - add dragon-scope league-tournament
     - adjust links on tournament-manager-page to some new league-specific pages
     - restrict tournament-properties to match one cycle = one round
     - extend & re-use basic features from round-robin-tournaments
     - disable pool-winners for league-tournaments for now
     - edit-properties: forbid editing of custom-round for admins
     - extended default pool-names-format to include tier/league with %L, %t(num), %t(uc)
-----------
-- add League-tournament
ALTER TABLE Tournament
   MODIFY Type enum('LADDER','ROUNDROBIN','LEAGUE') NOT NULL ;
-----------

2016-10-08 jug

   * gameinfo.php:
   - added link for round-robin-tournaments on game-info-page in tournament-info-section
     to round & pool of tournament-game

   * tournaments/roundrobin/edit_pools.php:
   - show default pool-names-format on edit-pools-page to assist tournament-director
     in selecting correct pool

   * tournaments/include/tournament_round.php (TournamentRound.build_notes_props),
     include/gui_functions.php (echo_notes),
     tournaments/roundrobin/view_pools.php:
   - show pool-winner-ranks & max. simul-games per user on view-pools-page too

   * tournaments/include/tournament_pool_classes.php (class PoolSlicer, ~.__construct, ~.init,
       ~.next_pool, ~.visit_pool, ~.count_visited_pools),
     tournaments/include/tournament_pool.php (TournamentPool.seed_pools, ~.get_slice_modes),
     tournaments/include/tournament_globals.php  (TROUND_SLICE_SNAKE),
     scripts/tests/PoolSlicerTest.php, scripts/tests/AllTests.php:
   - added snake-seeding slice-mode for seeding pools of round-robin-tournaments
     - refactored slicing-modes into PoolSlicer-class

2016-10-06 jug

   * tournaments/include/tournament_pool_classes.php (class PoolViewer, ~.__construct, ~.make_single_pool_table;
       class PoolNameFormatter, ~.__construct, ~.format, ~.is_valid_format, ~.format_with_default),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin._createTournament,
       ~.getDefaultPoolNamesFormat),
     tournaments/include/tournament_round_helper.php (TournamentRoundHelper.add_new_tournament_round,
       ~.start_next_tournament_round),
     tournaments/include/tournament_round.php (class TournamentRound, ~.__construct, ~.fillEntityData,
       ~.new_from_row),
     tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.getDefaultPoolNamesFormat),
     tournaments/include/tournament_template.php (TournamentTemplate.getDefaultPoolNamesFormat),
     tournaments/roundrobin/edit_round_props.php (parse_edit_form),
     scripts/updates/1.20/database_changes.mysql,
     specs/db/table-Tournaments.txt, specs/db/dragon-ddl.sql,
     tournaments/game_admin.php, tournaments/roundrobin/edit_pools.php,
     tournaments/roundrobin/edit_rounds.php, tournaments/roundrobin/view_pools.php,
     tournaments/view_tournament.php:
   - add formatting for pool-names of round-robin-tournaments
-----------
-- add formatting for round-robin pool-names
ALTER TABLE TournamentRound
   ADD PoolNamesFormat varchar(64) NOT NULL default '' AFTER PoolSize ;
-----------

2016-09-10 jug

   * ratinggraph.php, ratingpng.php:
   - removed LSQ regression-line from rating-graph

   * include/message_functions.php (message_info_table; MessageListBuilder.message_list_body),
     message_thread.php:
   - jumping to "current" message on opening message-thread-view
     - expand all messages on message-thread-view

2016-09-06 jug

   * tournaments/include/types/private_round_robin.php (class PrivateRoundRobinTournament._construct),
     tournaments/include/types/public_round_robin.php (PublicRoundRobinTournament.__construct):
   - sync changes & fix from stable-branch DGS-stable-20141029:
     - bugfix: restricting max-rounds for private & public round-robin-tournaments was missing min-value
     - increased max-rounds for private & public round-robin-tournaments from 3 to 16

2016-08-23 jug

   * include/config.php (FORUM_POST_FORBIDDEN_TERMS),
     forum/post.php (post_message, check_forum_post_violations),
     forum/read.php:
   - added server-configuration to prevent forum-post with offensive terms
     - added global config 'FORUM_POST_FORBIDDEN_TERMS' with regex preventing forum-post
       with offensive terms
     - check for offensive terms on forum-post & preview of it

2016-08-21 jug

   * specs/FAQ-jug:
   - copied over release-info from local TODO for release & sub-releases of 1.0.16, 1.0.17, 1.0.18, 1.19.x
     - needs cleanup for FAQ-processing

2016-08-20 jug

   * snapshot.php:
   - on snapshot-page updated links, added link to clone latest stable version, sorted archive-files

//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer