DIR : /home/kozerus/public_html/go/dgs0/scripts/updates/ChangeLog_1_0_16

/home/kozerus/public_html/go/dgs0/scripts/updates

==================================================================
Release [2013-08-11] - DGS 1.0.16 - tag [release-1_0_16-20130811] on (later) branch [DGS-stable-20130811]

# History:
2013-08-11: release 1.0.16 (from DGS-MAIN master)
2013-12-12: various updates with bug-fixes and smaller improvements (by JUG) as DGS 1.0.16

==================================================================

### ----- release-1_0_16-20130811 -----

2013-12-12 jug

   * scripts/updates/ChangeLog_1_0_16:
   - created change-log for final release 1.0.16

   * snapshot.php:
   - added stable release 1.0.16

2013-12-11 jug

   * include/gui_functions.php (echo_image_gameinfo, echo_image_shapeinfo),
     include/std_functions.php ($cookie_pref_rows),
     include/globals.php (JS_VERSION),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/table-Players.txt, specs/db/dragon-ddl.sql,
     images/tbnd-7.gif, images/tbne-7.gif, images/tbnd-11.gif, images/tbne-11.gif,
     js/common.js (DGS.data.ARR_THUMBNAIL; showGameThumbnail),
     edit_profile.php (parse_edit_form, handle_save_profile):
   - added customization for stone-size for game-thumbnails
     - added thumbnail stone-size 11 pixels, made 7 default
     - cleanup: removed double images used for game-thumbnail
     - REF: http://www.dragongoserver.net/features/vote_feature.php?fid=24
-----------
-- add customized size for game-thumbnails
ALTER TABLE Players
   ADD ThumbnailSize tinyint unsigned NOT NULL default '7' ;
-----------

   * include/std_functions.php (start_html),
     include/globals.php (JS_VERSION):
   - use JS_VERSION to auto-reload updated js-file on LIVE-server while reloading everytime
     on local server

   * include/gui_functions.php (echo_image_gameinfo),
     js/common.js (DGS.data.ARR_THUMBNAIL; showGameThumbnail),
     images/tbmb.gif, images/tbmw.gif,
     specs/db/table-Games.txt,
     status.php (load_games_to_move),
     manage_sgf.php:
   - added last-move marker on game-thumbnail if available
     - last-move not available for shapes, pass-move, scoring-step, finished-games

2013-12-09 jug

   * features/lib_votes.php (FeatureVote.build_query_featurevote_list):
   - bugfix: show features-votes also if there are only other neutral votes

   * include/board.php (Board.is_scoring_step),
     game.php:
   - bugfix: show scoring-info box also for scoring-step in move-history

   * game.php (draw_game_info):
   - layout-fix: for JS-game-editor show prisoners on 2nd-line instead of 1st-line
     - cleanup of some var-usage, use clearer separation of data and layout

2013-12-08 jug

   * js/game-editor.js  (DGS.game.loadPage, ~.initPage, ~.markCurrentMove),
     skins/dragon/screen.css,
     game.php (build_comment_tools):
   - mark current-move in game-move-message-box and scroll to current move
     - added message-box-tool to scroll to current move message
     - show backward-icon right to move-info in message-box to indicate current move
     - bugfix CSS: used inline-block to avoid floating-clear-fix

   * game.php (draw_game_info):
   - added testing-link under board to switch JS-game-editor ON and OFF

   * game.php (draw_game_tools, build_comment_tools, build_move_comments),
     js/game-editor.js (DGS.game.initPage, ~.handle_action_toggle_comment),
     include/globals.php (CSS_VERSION),
     skins/dragon/screen.css,
     images/comment_hide.png, images/comment_show.png:
   - added tool with toggling icons & tooltip to hide/show game-move-comments in message-box
     for JS-game-editor

   * include/board.php (Board.load_from_db),
     game.php (build_move_comments):
   - added links on move-positions on all game-move-messages in message-box for all messages
     including shape-setup
     - do not draw select-box to view selected moves if all game-move-messages is present
       with links to moves for JS-game-editor
   - bugfix: handle go-to for shape-setup correctly in loading last-move-message and last-move-marker
   - bugfix: always load all game move-messages with board-option BOARDOPT_LOAD_ALL_MSG
     for JS-game-editor to have all messages even for jumping to earlier moves

   * include/game_comments.php (class GameCommentHelper, ~.__construct, ~.get_mpg_user,
       ~.get_mpg_move_color, ~.filter_comment),
     include/board.php (BOARDOPT_LOAD_ALL_MSG; Board.load_from_db, ~.draw_board, ~.draw_ascii_board,
       ~.make_js_game_tree),
     include/sgf_builder.php (SgfBuilder.find_mpg_active_user, ~.build_sgf_moves),
     include/game_functions.php (GamePlayer.find_mpg_user),
     include/std_functions.php,
     skins/dragon/screen.css,
     game.php (draw_game_tools, build_move_comments),
     game_comments.php, sgf.php:
   - cleanup: refactored redundant code to determine visibility of game-move-messages
     for game-/game-comments-page/SGF-download into GameCommentHelper-class
     - on game-page load and display all game move messages for JS-game-editor filtered
       according to visibility of player & move
     - removed game-move-messages from JS-gametree, because all texts are already present
       on game-page's message-box
   - bugfix: on game-page show bottom-link 'download sgf with all comments' for ALL players
     of multi-player-game

   * include/std_functions.php (start_html),
     js/jquery.scrollTo-1.4.3.1-min.js,
     js/game-editor.js (DGS.game.initPage):
   - added scrollTo-JS-plugin for scrolling to certain position within <div> on game-page

   * halfhourly_cron.php:
   - bugfix in email-notification: only remove hidden-comments in game-move-message
     keeping text-block of public comments instead of removing it

2013-12-07 jug

   * translation_stats.php (show_translation_stats, count_translation_texts, count_translations),
     docs.php, site_map.php, translate.php, NEWS:
   - added translation-statistics with count of translated texts for each language

2013-12-06 jug

   * js/game-editor.js (DGS.game.initPage),
     images/ui-icons_222222_256x240.png,
     skins/dragon/screen.css,
     game.php:
   - prepared resizable game-message for JS-game-editor using jQuery UI Resizable

2013-12-03 jug

   * include/std_functions.php (start_html),
     js/game-editor.js (DGS.game_editor.initPage, DGS.game.initPage, DGS.GameEditor.current_tab,
       ~.action_handle_show_tab),
     js/jquery-ui-1.10.3.custom.min.js,
     js/jquery-1.9.1.min.js,
     skins/dragon/screen.css:
   - updated jquery 1.6.1 to 1.9.1 and jquery-ui 1.8.13 to 1.10.3, added jquery-resizable CSS
     - migrated game-editor to work with changed jquery-ui tabs API

2013-12-01 jug

   * js/game-editor.js, game.php, game_editor.php:
   - optimization of JS-game-editor: replaced inner board-format matrix[y][x]
     to use faster 1-dimensional matrix[y*size+x]
     - replaced interal handling of starting-point of x/y-board-coord from 1 to 0

2013-12-01 jug

   * include/board.php (Board.load_cache_game_move_message, ~.make_js_game_tree;
       class JS_GameNode, ~.add_new_child)
     include/std_functions.php (start_html)
     js/game-editor.js (DGS.GameEditor.parseGameTree)
     game.php (draw_game_tools):
   - encode game-tree in JSON-like format for JS-game-editor
   - started 'Analyze'-tab in game-tools
   - commented in old draw_moves-code with "ugly" green moves-history-table
   - bugfix: return false instead of full message-array if there is no move-message
     in loaded & cached move-message-array

   * include/gui_functions.php (format_translated_date, quote_dateformat),
     include/game_functions.php (echo_accept_same_opponent),
     include/std_functions.php (end_page),
     scripts/tests/GuiFunctionsTest.php, scripts/tests/AllTests.php,
     tournaments/view_tournament.php, rss/status.php,
     ratingpng.php (interpolate), statisticspng.php, userinfo.php:
   - format date with translated month & weekday names if date-format contains 'D' or 'M'

2013-11-30 jug

   * js/gametree.js, js/lang-ext.js:
   - initial commit of copied EidoGo-Code to suit the environment and needs of DGS
     - Source: git://github.com/jkk/eidogo.git
     - File:   player/js/gametree.js   08-Sep-2008 16:33:12   29cd15cf3ddb8f540d466dead2191e2fdc0295c6
     - File:   player/js/lang.js   19-Mar-2008 23:09:15   817449a6f592403cb39c4d58429f12e0908c6eb6
   - initial adjustments to DGS:
     added DGS preamble, reformatted to DGS code-layout, renamed eidogo to DGS namespace

   * include/board.php (Board.draw_board, ~.draw_move_message),
     include/gui_functions.php (echo_image_shapeinfo),
     include/globals (CSS_VERSION),
     js/game-editor.js (DGS.game.initPage),
     skins/dragon/screen.css,
     game.php (draw_game_tools, draw_moves, draw_game_info, draw_notes):
   - added game-tools area on game-page in preparation for game-editor browsing game
     - added tabbed game-tools controlled with JavaScript
     - change game-user-interface if config ENABLE_GAME_VIEWER is enabled
     - if game-viewer enabled
       - show game-information box and private game notes in game-tools to right of board
       - reformat game-information box to allow smaller width by moving and highlighting
         prisoner-info into 2nd-line, by splitting rule-line into two lines,
         and by formatting time-limit in short-format
       - game notes need no 'hide notes'-button if shown as game-tools
       - use fixed size for private game notes ignoring user-prefs
       - move message-box with last game-message below game-tools
   - cleanup:
     - removed normally hidden start-rating in game-info box
     - avoid redundant code by using black/white-loop to draw user-specific game-info
     - simplified and corrected CSS of game-info by replacing normally unique id-attr
       by using class-attr instead
     - put other-ruleset for dev into comments

2013-11-24 jug

   * include/std_functions.php (end_page):
   - added time-zone on page-time and quota-expire-time in bottom-bar

2013-11-20 jug

   * images/flags/ve.gif:
   - updated flag of Venezuela: replaced 7 with 8 stars

2013-11-17 jug

   * images/flags/ve.gif:
   - updated flag of Venezuela: changed colors and iconic top-left part

2013-11-13 jug

   * include/board.php (class Board, ~/load_from_db),
     game.php (draw_game_info):
   - bugfix: on game-page show black/white-prisoners only up to selected move

2013-11-06 jug

   * userinfo.php:
   - show night-time of other user-info on user-info-page in my time-zone,
     adding users local night-time in tooltip if different from my time-zone

2013-10-22 jug

   * include/countries.php (getCountryFlagImage),
     gameinfo.php:
   - added players country on game-info-page

2013-10-13 jug

   * tournaments/view_tournament.php:
   - added tournament start- & end-time on view-tournament-page

   * tournaments/show_tournament_log.php (format_tlog_message):
   - added search-filter on tournament-log message

2013-10-10 jug

   * tournaments/ladder/view.php:
   - added bottom-links to running & finished tournament-games and tournament-participants
     on ladder-view

   * tournaments/ladder/retreat.php:
   - bugfix: do not allow ladder-retreat on tournament-CLOSED-status

   * include/globals.php, skins/dragon/screen.css,
     rating_changes.php  (fill_user_rating_changes):
   - merged rating-min/max field-rows on rating-changes-page into one field

   * include/gui_functions.php (echo_image_table),
     opponents.php, userinfo.php:
   - added table-image links on userinfo-page of other user to running & finished games with opponent

2013-10-06 jug

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.getUserJoinOrderText):
   - clarified text for ladder-tournament rating-join-order

2013-10-05 jug

   * include/cache_globals.php (CACHE_GRP_USER_HANDLE, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
     include/classlib_user.php (User.load_cache_user_by_handle, ~.delete_cache_user_handle),
     include/game_functions.php (GameFinalizer.finish_game; GameNotify.get_user_handle),
     include/config.php ($DGS_CACHE_GROUPS),
     include/rating.php (update_rating2),
     include/globals.php (CSS_VERSION),
     scripts/updates/other_changes_1_0_15_to_1_0_16.txt,
     skins/dragon/screen.css, specs/caching.txt,
     rating_changes.php (load_data_rating_changes, fill_user_rating_changes,
       calculate_rating_change_prediction, rdiff),
     game_calc.php (print_rating_update),
     admin_rating.php, edit_rating.php, gameinfo.php, site_map.php, userinfo.php, NEWS:
   - added page to preview rating-changes between two players
     - cached user-data with rating-info with new cache-group CACHE_GRP_USER_HANDLE
     - invalidated user-handle cache on changing user-rating
     - added bottom-links to 'show rating changes' on userinfo- and gameinfo-page

2013-09-26 jug

   * tournaments/include/tournament.php (Tournament.build_data_link):
   - bugfix: show link to tournament-data only if link allowed

2013-09-21 jug

   * include/board.php (Board.load_from_db):
   - bugfix: re-enable last-move-mark, which has vanished within last bugfix for shape-games

   * include/board.php (Board.load_from_db):
   - bugfix: fixed handling $move=0 defaulting to last-move for shape-game,
     which was introduced by last two bug-fixes

2013-09-18 jug

   * include/game_actions.php (GameActionHelper.set_game_move_message),
     include/std_functions.php (replace_move_tag),
     game.php, NEWS:
   - added tag "<move num|S>" on game-page to be replaced with "<game GID,num|S>" as input-help
     for game-move-links

   * include/board.php (Board.load_from_db):
   - bugfix: showing only shape-setup for shape-games was also showing 1st move

   * scripts/tournament_consistency.php (fix_tournament_participant_game_count),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt:
   - bugfixes for tournament-consistency-script
     - correct count of finished tournament-games in left-join
     - only count undetached finished tournament-games fixing count TournamentParticipant.Finished
-----------
-- added keys on TournamentGames-table for tournament-consistency-check
ALTER TABLE TournamentGames
   ADD KEY Challenger_rid (Challenger_rid),
   ADD KEY Defender_rid (Defender_rid) ;
-----------

2013-09-17 jug

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.build_notes_props):
   - used clearer descriptions for challenge-range of tournament-ladder-properties

2013-09-16 jug

   * gameinfo.php:
   - added last-access and last-move date for black- & white player on game-info-page

   * scripts/tournament_consistency.php (tid_clause, fix_tournament_participant_game_count):
   - bugfix: fix query to fix all tournament-participants with correct counts of finished/won/lost-games

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_challenge_range),
     tournaments/include/tournament_ladder.php (class TournamentLadder):
   - show ladder-rank for theoretical rating-pos on ladder-view in tooltip on my-info in Actions-column

   * tournaments/ladder/view.php (build_action_row_str):
   - bugfix: show finished-games table-icon also in Actions-column if games-icon-column hidden

   * include/timezones.php (get_timezone_array),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql:
   - use alias 'Asia/Shanghai' for removed tzdata of 'China/Beijing' & 'China/Shanghai'-timezone
     as live-system does not know it anymore
-----------
-- use alias for removed tzdata of 'China/Beijing' & 'China/Shanghai'-timezone
UPDATE Players
   SET Timezone='Asia/Shanghai' WHERE Timezone IN ('China/Beijing', 'China/Shanghai') ;
-----------

   * tournaments/ladder/challenge.php:
   - add current tournament-ladder-rank of challenger & defender in challenge-notification

   * tournaments/include/tournament_ladder.php (TournamentLadder.load_tournament_ladder_by_uids),
     gameinfo.php:
   - show current tournament-ladder-rank of players on game-info page for running tournament-game

   * include/error_functions.php (DgsErrors.err_log, ~.skip_db_connect),
     error.php:
   - write log to allow monitoring of db-errors like 'too-many-connections'
     - write entry in web-error-log on errors mysql_connect_failed & mysql_select_db_failed
     - bugfix: fix check on correct error-code instead of log-message if db-Errorlog needs to be written

2013-09-15 jug

   * tournaments/include/tournament_utils.php (TournamentUtils.build_num_range_sql_clause),
     tournaments/include/tournament_ladder.php (TournamentLadder._process_game_end):
   - bugfixes for ladder-tournament game-end-actions:
     - fix TGEND_CHALLENGER_BELOW by not moving challenger if already directly below defender
     - fix TGEND_DEFENDER_BELOW by moving all neighbours of defender

   * scripts/tournament_consistency.php (check_tournament_ladder_unique_rank):
   - added check in tournament-consistency-script for unique ladder-rank

   * tournaments/include/tournament_games.php (TournamentGames.load_tournament_game_by_pair_uid,
       ~.load_tournament_game_by_challenger_uid),
     tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_running_games,
       ~.verify_challenge):
   - bugfix: forbid re-challenge of same user in ladder-tournament even if challenger & defender role
     are reversed

2013-09-12 jug

   * tournaments/include/tournament_ladder_helper.php (TournamentLadderHelper.process_tournament_ladder_game_end),
     tournaments/include/tournament_games.php (TournamentGames.end_rematch_waiting_finished_games),
     tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder):
   - bugfix: set DONE-status for finished yet rematch-waiting tournament-ladder-game on
     ladder-user-removal, because no need to wait for removed user
   - always load tournament-ladder-rank on processing-game-end for tournament-log
   - cleanup: re-wrote SQL-queries without sprintf to make constant-placement clearer

2013-09-11 jug

   * include/game_functions.php (GameSetupChecker.get_class_error_field;
       append_form_add_waiting_room_game),
     include/message_functions.php (game_settings_form):
   - enabled dependent checkboxes & radio-buttons for two-phase choices in new-game and invite-forms
     using JavaScript
     - enabled checkbox on clicking selectboxes with required rating-range
     - selected radio-button with manual-handicap-type
       on clicking my-color selectbox & handicap or komi input-box
     - selected radio-button with fair-komi-handicap-type in invite-game-settings-form
       on clicking fair-komi-type selectbox
     - selected radio-button with japanese/canadian/Fischer time in game-settings-form
       on clicking time-type specific input-box or unit-selectbox

2013-09-10 jug

   * include/std_functions.php (safe_setcookie, set_login_cookie):
   - security-fix: use HttpOnly on setting cookie with session-code to prevent malicious
     XSS JavaScript reading it

2013-09-09 jug

   * tournaments/include/tournament.php (Tournament.build_data_link),
     tournaments/list_tournaments.php, tournaments/view_tournament.php, gameinfo.php:
   - added link to specific tournament-data-page (view-ladder or view-pools) on tournament-list page

2013-09-08 jug

   * include/sgf_builder.php (class SgfBuilder, ~.load_game_info, ~.build_sgf_start),
     specs/quick_suite.txt:
   - extend game-info properties for tournament-game
     - added EV-property with scope, type, id and title of tournament
     - added RO-property with current round and total number of rounds
     - added tournament-title-info with number of registered participants in game-comment

   * tournaments/include/tournament_ladder.php (TournamentLadder.load_cache_tournament_ladder),
     tournaments/ladder/view.php, tournaments/view_tournament.php:
   - on ladder-view show table-icon linked to finished tournament-games for each user
     if there are finished games

   * tournaments/ladder/view.php:
   - free db-connection as early as possible when before sending HTML for the full ladder
     in hope to reduce observed too-many-connections errors on live-server

   * include/error_codes.php (ErrorCode.echo_error_text, ~.get_error_text),
     do_registration_blocked.php,
     error.php (handle_error):
   - security-fix: avoid XSS on error-page passing in malicious JavaScript via URL-arguments
     error-code or error-log-id

   * scripts/player_consistency.php (cnt_diff):
   - bugfix: count MPGs for player-consistency script calculating Players.Running/Finished

2013-09-03 jug

   * include/std_functions.php (send_email):
   - error_log() error on sending mail

2013-08-29 jug

   * include/game_functions.php (class GameSetupChecker, ~.check_game_rated, ~.check_komi,
       ~.check_adjust_komi, ~.check_min_rated_games),
     tournaments/edit_rules.php (parse_edit_form):
   - bugfix: no user-rating-check for editing tournament-rules as tournament-director/owner/admin
     could have no rating

   * tournaments/include/tournament_participant.php (TournamentParticipant.check_rated_tournament_participants):
   - bugfix: add no-participant-check in safety-check for editing tournament-rules

2013-08-26 jug

   * admin_rating.php (notify_fix_running_games):
   - bugfix: adjusted parametrized text missing %s-argument to notify players about user-rating-change

2013-08-25 jug

   * tournaments/include/types/private_ladder.php (PrivateLadderTournament.__construct,
       ~.createTournament),
     tournaments/include/types/public_ladder.php (PublicLadderTournament.__construct,
       ~.createTournament):
   - reduced max-defenses/challenges & defaults for public and private ladder-tournaments
     - reduced max-defenses/challenges from 8 to 5
     - reduced default max-challenges for new ladder from 5 to 3

   * tournaments/include/tournament_ladder.php (TournamentLadder.build_linked_incoming_games),
     include/globals.php (CSS_VERSION),
     skins/dragon/screen.css, tournaments/ladder/view.php:
   - mark own challenges on ladder-view for ladder-tournament

2013-08-24 jug

   * include/register_functions.php (UserRegistration.check_email),
     include/error_functions.php (DgsErrors.need_db_errorlog),
     include/error_codes.php (ErrorCode.init):
   - bugfix: check for missing email on user-registration

2013-08-20 jug

   * goodies/DgsSgfDownloadWithoutDate.user.js:
   - added GreaseMonkey-script from admiralnlson to download sgf without date in filename

   * goodies/index.php:
   - bugfix: link to scripts included double goodies/-path

2013-08-19 axd

   * forum/forum_functions.php (DisplayForum.draw_post):
   - merged in changes from axd about forum-bugfix:
     - see https://sourceforge.net/p/dragongoserver/dgs-main/merge-requests/5/
     - bugfix: enable navigation-panel even when replying on forum-topic

2013-08-19 juga

   * gameinfo.php:
   - bugfix: adjust ladder-tournament game-role for observer and adding color for my-game

   * include/sgf_builder.php (class SgfBuilder, ~.set_file_format, ~.build_filename_sgf),
     specs/quick_suite.txt, sgf.php, NEWS:
   - added URL-arg 'filefmt' to specify different download-filenames

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.calc_ticks_due_rematch_wait,
       ~.calc_rematch_wait_remaining_hours),
     include/globals.php (CLOCK_TOURNEY_GAME_WAIT),
     scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/table-Tournaments.txt:
   - bugfix: corrected wrong clock-usage to track ladder-tournament rematch-waiting on tournament-games
-----------
-- fix rematch-wait due-time for ladder-tournament-games using 5min-ticks TIMELEFT-clock
-- reduced by 5min-ticks already passed since game ended
-- IMPORTANT NOTE: only run this once!
UPDATE TournamentGames AS TG
   INNER JOIN TournamentLadderProps AS TLP ON TLP.tid=TG.tid
   INNER JOIN Clock
   SET TG.TicksDue=Clock.Ticks + TLP.ChallengeRematchWait*12 - FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(TG.EndTime))/300)
   WHERE TG.Status='WAIT' AND TLP.ChallengeRematchWait > 0 AND TG.TicksDue>0 AND Clock.ID=204 ;

-- fix potential tournament-games with negative due-time
UPDATE TournamentGames
   SET TicksDue=0 WHERE TicksDue < 0 ;
-----------

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_running_games):
   - bugfix: set & show rematch-wait for ladder-view only for players that challenged the defender-user

   * tournaments/include/tournament_ladder.php (class TournamentLadder, ~.add_incoming_game,
       ~.get_incoming_games, ~.build_linked_incoming_games),
     tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_running_games),
     tournaments/ladder/view.php:
   - cleanup: renamed TournamentLadder.RunningTourneyGames -> .IncomingTourneyGames
     including all related functions

2013-08-18 juga

   * include/game_functions.php (GameNotify._build_text_players, ~.get_text_game_deleted),
     include/std_functions.php (send_reference, user_reference):
   - bugfix: undo rename of send_user_reference() back to send_reference() as it's required in regex
     in $html_safe_reg (which would be difficult to adjust to new name)

2013-08-17 juga

   * tournaments/ladder/view.php (build_action_row_str):
   - do not show ladder-rematch-wait action for only observing users like non-admins/tournament-directors

   * tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder._createTournament),
     tournaments/include/tournament_utils.php,
     tournaments/ladder/view.php (build_rank_change),
     tournaments/cron_tournaments.php:
   - bugfix: showing actual rank-change before first rank-archiving
     - setup rank-archiving-period with next-month instead of current month to use StartRank
       to compare with CurrentRank as long as rank is not archived, i.e. PeriodRank or HistoryRank == 0
     - run rank-archiving (daily-job) before game-end-processing to preserve rank-changes
       from former day

   * tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.joinTournament),
     tournaments/include/tournament_template.php (TournamentTemplate.joinTournament),
     tournaments/ladder/admin.php, tournaments/edit_participant.php, tournaments/register.php:
   - bugfix: need TLOG_TYPE_.. passed on adding user to ladder for tournament-log

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.calc_game_end_action):
   - bugfix: need public function-modifier to process ladders game-end-handling

   * tournaments/show_tournament_log.php:
   - bugfix: forward tid-URL-argument on paging tournament-log

2013-08-16 juga

   * include/shape_control.php (ShapeControl.getFlagsText):
   - bugfix: wrong initialization for defining flags-array after cleanup

   * tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_running_games),
     tournaments/ladder/view.php:
   - added ladder-summary on ladder-view with count of running games and games on TG-SCORE-status
     waiting to be processed

   * tournaments/list_participants.php:
   - bugfix: fix sorting of tournament-rating dependent on tournament-properties RatingUseMode

   * include/register_functions.php (UserRegistration.check_userid, ~.check_userid_spam),
     include/error_functions.php (DgsErrors.need_db_errorlog),
     include/error_codes.php (ErrorCode.init):
   - prevent spam-accounts on user-registration with user-id of consecutive letters like 'defgh384'

   * tournaments/include/tournament_pool_classes.php (PoolViewer.init_pool_table,
       ~.make_single_pool_table),
     tournaments/include/tournament_ladder.php (TournamentLadder.load_cache_tournament_ladder)
     tournaments/include/tournament_pool.php (TournamentPool.load_tournament_pools)
     tournaments/ladder/view.php:
   - add user-online-column with user-is-online & user-on-vacation info
     for view-ladder & view-pools tournaments pages

   * include/game_functions.php (NextGameOrder.build_status_games_query),
     include/gui_functions.php (echo_user_online_vacation),
     include/contacts.php (Contact.build_querysql_contact),
     status.php (load_games_to_move),
     list_contacts.php, opponents.php, users.php, NEWS:
   - extended user-online-columns with user-on-vacation for status, users, opponents & contacts pages

2013-08-15 juga

   * tournaments/show_tournament_log.php:
   - added bottom-links on tournament-log-page back to specific tournament-info/-manage pages

   * include/game_functions.php (GamePlayer.delete_joined_player):
   - bugfix: used unknown var skipping updating Players.MPGCount on deleting joined player

2013-08-13 juga

   * include/sgf_builder.php (SgfBuilder.build_sgf_result):
   - bugfix after PHP-cleanup: use public modifier to access private GameScore->scoring_info

2013-08-11 juga

   * include/globals.php (CSS_VERSION),
     skins/dragon/screen.css:
   - bugfix: no wrap for dgs-name & version in bottom-bar

   * include/game_actions.php (GameActionHelper.update_game),
     include/std_functions.php (is_logged_in):
   - fix bug: update Players.Lastaccess for both web-site AND quick-suite access
     with greatest datetime of both
-----------
-- fix last-access of all existing players
UPDATE Players
   SET Lastaccess=GREATEST(Lastaccess, LastQuickAccess, LastMove) ;
-----------

   * scripts/updates/roadmap_1_0_15_to_1_0_16.txt, NEWS:
   - prepared live-release 1.0.16

2013-08-09 juga

   * userinfo.php:
   - re-arranged some user-info-fields on user-info-page
     - moved register-date to left side to other dates
     - moved reject-time-out to right side to other game-related stuff

2013-08-06 juga

   * admin_bulletin.php:
   - fix "double"-case translation: Publish Time -> Publish time
-----------
-- fix translations
UPDATE TranslationTexts SET Text='Publish time' WHERE Text='Publish time' ;
-----------

2013-08-05 juga

   * include/register_functions.php (UserRegistration.build_email_verification),
     edit_email.php (handle_save_mail):
   - send mail-verification also for unverified unchanged email

   * include/register_functions.php (UserRegistration.register_user),
     include/config.php (SEND_ACTIVATION_MAIL),
     scripts/updates/other_changes_1_0_15_to_1_0_16.txt,
     register.php, INSTALL, NEWS:
   - added server-config SEND_ACTIVATION_MAIL to allow user-registration without mail-verification
     - jump directly to introduction-page after user-registration with disabled SEND_ACTIVATION_MAIL
     - needed to allow user-registration on SourceForge-server without mail-support

   * include/register_functions.php (UserRegistration.register_user, ~.process_verification,
       ~.build_email_verification, ~.remove_verification, ~.build_common_verify_texts),
     include/db/verification.php (class Verification, ~.__construct, ~.setVType, ~.delete,
       ~.fillEntityData, ~.new_from_row, ~.get_type_text),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/table-Verification.txt, specs/db/dragon-ddl.sql,
     edit_email.php (parse_edit_form, handle_save_mail, handle_delete_verification, handle_resend_mail),
     register.php, verify_email.php, NEWS:
   - extended edit-mail-page with:
     - email now mandatory, and changing email requires a mail-verification
     - changing email creates Verification-entry and sends mail with validation-code
     - added Verification.VType to enable fixing of Players.UserFlags
     - show if email is missing, invalid, unverified or verified
     - show open verifications
     - added removal of open verifications for account-activation and email-change
       with fixing of Players.UserFlags according to remaining verifications
     - added re-sending of open verifications
     - added email-change-notes with similar information like registration-page
-----------
-- added verification-type
ALTER TABLE Verification
   ADD VType tinyint unsigned NOT NULL AFTER Created ;
UPDATE Verification
   SET VType=1 WHERE VType=0 ;
-----------

   * include/register_functions.php (UserRegistration.register_user):
   - enabled JavaScript per default for new user on registration

   * include/register_functions.php (UserRegistration.process_verification),
     include/std_functions.php (USERFLAG_EMAIL_VERIFIED),
     specs/db/table-Players.txt, admin_users.php:
   - mark email as verified after email-verification and account-activation

   * edit_email.php (parse_edit_form, handle_save_mail),
     edit_profile.php (parse_edit_form, handle_save_mail),
     edit_password.php, site_map.php, userinfo.php:
   - moved changing email & nofications to separate 'edit_email.php'-page
     in preparation for email-verification

   * include/game_functions.php (DefaultMaxHandicap.build_default_max_handicap_javascript_map;
       build_game_settings_javascript),
     include/message_functions.php (game_settings_form),
     js/common.js (updateDefaultMaxHandicap):
   - changed info about default-max-handicap in game-settings-form on changing board-size using JavaScript
     - update default-max-handicap info for invitations AND standard new-game
     - minor cleanup also using span()-function to set id-attribute

2013-08-04 juga

   * tournaments/include/tournament_ladder_helper.php (TournamentLadderHelper.load_ladder_absent_users),
     include/game_actions.php (GameActionHelper.update_game)
     include/std_functions.php (is_logged_in)
     specs/db/table-Players.txt, NEWS:
   - update Players.Lastaccess for both web-site AND quick-suite access

   * include/wroom_control.php (WaitingroomControl.build_waiting_room_query,
       ~.extend_query_waitingroom_suitable, ~.get_waitingroom_restrictions),
     include/message_functions.php (game_info_table, build_game_restriction_notes,
       echo_game_restrictions),
     include/quick/quick_wroom.php (QuickHandlerWaitingroom.prepare),
     waiting_room.php:
   - bugfix: waiting-room-list with game-offers was not restricted on unrated games for unrated users
   - improved restrictions-text for showing info of single waiting-room-offer: adding reasons
   - added more detail notes & comments about waiting-room restrictions
   - cleanup: refactored extending waitingroom-query for suitable games into function to avoid redundancy
   - cleanup: minor improvements on expressions

   * waiting_room.php:
   - always show Settings-column in waiting-room

   * include/game_functions.php (GameSetupChecker.add_default_values_info, ~.check_game_rated,
       ~.check_opponent_rating, ~.check_fields; is_htype_calculated),
     include/message_functions.php (game_info_table),
     tournaments/edit_rules.php, message.php, new_game.php, waiting_room.php:
   - show errors if game-settings of invitation/dispute combines calculated handicap-type or
     rated-game with user without a rating
   - show preview and dispute-difference only if user-without-rating raised no conflict prohibiting
     calculating diffs
   - detailed warning: No initial rating -> User has no rating
   - cleanup: call GameSetupChecker->add_default_values_info() adding error-note internally

   * include/message_functions.php (game_settings_form):
   - hide checkbox for rated-game for shape-games as that state can never be changed

2013-08-03 juga

   * include/message_functions.php (game_settings_form),
     waiting_room.php, NEWS:
   - show disabled form-inputs for calculated handicap-type and rated-game for users without rating
     in new-game and invitation dialogs for players without initial rating with text describing reason:
     shape-game or user-rating-needed.
     - removed 'impossible'-text for invitation-disputes

   * include/std_functions.php (make_html_safe),
     scripts/convert_from_old_forum.php, scripts/data_export.php,
     ratingpng.php, sgf.php, statisticspng.php, statratingspng.php:
   - cleanup: replaced deprecated eregi/eregi_replace-functions with preg_match/preg_replace-funcs

   * goodies/index.php, docs.php, error.php, faq.php, install.php, introduction.php,
     licence.php, links.php, news.php, people.php, policy.php, rank_converter.php,
     snapshot.php, statistics.php, statisticspng.php, statratingspng.php:
   - skip account-activation-check on login for pages, that are accessible without login

   * include/db/verification.php (class Verification, ~.__construct, ~.to_string, ~.persist,
       ~.insert, ~.update, ~.fillEntityData, ~.increase_verification_counter, ~.build_query_sql,
       ~.new_from_row, ~.load_verification, ~.load_verifications, ~.build_code),
     include/std_functions.php (USERFLAG_VERIFY_EMAIL, USERFLAG_ACTIVATE_REGISTRATION;
       LOGIN_SKIP_VFY_CHK, is_logged_in),
     include/register_functions.php (UserRegistration.check_userid, ~.register_user,
       ~.process_verification),
     include/error_functions.php (DgsErrors.need_db_errorlog),
     include/error_codes.php (ErrorCode.init),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     scripts/data_export.php, skins/dragon/screen.css,
     specs/db/dragon-ddl.sql, specs/db/table-Verification.txt, specs/quick_suite.txt,
     verify_email.php (load_user_info),
     register.php, site_map.php, INSTALL, NEWS:
   - added account-activation with mandatory verification of email-address on user-registration
     - send activation-mail with verification-code to provided email-address on user-registration
     - added Verification-table to verify email-address for user-registration and later email-change
     - added check of user-flags on login showing error if account not activated yet
   - added check on user-registration for max-length of user-id
-----------
-- added table for email-verification
CREATE TABLE Verification (
  ID int NOT NULL auto_increment,
  uid int NOT NULL,
  Verified datetime NOT NULL default '0000-00-00 00:00:00',
  Created datetime NOT NULL default '0000-00-00 00:00:00',
  Email varchar(80) NOT NULL,
  Code varbinary(40) NOT NULL,
  Counter tinyint unsigned NOT NULL default '0',
  IP varchar(16) NOT NULL default '',
  PRIMARY KEY (ID),
  KEY uid_Verified (uid,Verified)
) ENGINE=MyISAM ;
-----------

   * include/register_functions.php (UserRegistration.check_existing_user):
   - cleanup: replaced deprecated PHP-function eregi_replace() with preg_replace()

   * include/std_functions.php (verify_invalid_email, get_request_user):
   - bugfix: parsing user-handle from URL checking on non-empty string as handle
     can be '000' for which check would be incorrect evaluating to false

   * include/error_codes.php (ErrorCode.is_shown_error_log_id, ~.init),
     include/error_functions.php (DgsErrors.need_db_errorlog):
   - overhauled special-handling settings for error-codes
   - bugfix: do not show Errorlog-id for regular error-codes if not explicitly specified

2013-07-31 juga

   * game_players.php (build_game_settings, load_game):
   - show move-number and last-move-date on game-players-page for MP-game in playing-mode

2013-07-29 juga

   * game_players.php:
   - bugfix: correct link to existing waiting-room-offer for game-master,
     show also independent from free-slots taken

2013-07-26 juga

   * status.php:
   - added game-master in list with multi-player-games in setup-mode on status-page

2013-07-25 juga

   * tournaments/edit_participant.php:
   - fix bug: don't show 'unknown user'-error if no user has been entered yet

2013-07-24 juga

   * include/message_functions.php (MessageListBuilder.message_list_query):
   - optimized query for standard message-query which was reported 3000 times in the
     last 6 months in the mysql-slow-log,
     instructing mysql-optimizer to use MessageCorrespondents.uid index on corresponding
     join as uid is a constant in most of the cases

   * include/register_functions.php (class UserRegistration, ~.__construct, ~.parse_args,
       ~.build_key_suffix, ~.build_key, ~.check_registration_normal,
       ~.check_registration_blocked),
     do_registration_blocked.php, register.php:
   - added registration-bot prevention by using dynamic form-keys

   * include/register_functions.php (UserRegistration.register_user):
   - write IP & Browser info on player-registration

2013-07-22 juga

   * tournaments/edit_director.php:
   - fix bug: adding new tournament-director without enabling flags was not saving director

2013-07-21 juga

   * features/lib_votes.php (VOTE_MIN_FINISHED_GAMES; Feature.allow_vote_check),
     NEWS:
   - allow voting on features also if user finished unrated games

   * include/message_functions.php (game_settings_form):
   - cleanup: replaced multi-typed $gid-function-argument $gid with $arr_url_or_gid
     seperating $gid from parsing URL-array

   * include/deprecated_functions.php:
   - cleanup: removed unused obsolete functions after re-design of game-invitation:
     DeprecatedGameSetup.parse_jigo_mode_from_game_setup, ~.get_invite_handicaptype)

   * include/game_functions.php (GameHelper.delete_running_game, ~.delete_invitation_game;
       FairKomiNegotiation.save_komi;
       GameFinalizer.finish_game;
       class GameSetup, ~.set_defaults, ~.encode_game_setup, ~.encode_profile_template,
         ~.build_game_invitation, ~.to_string, ~.get_user_view_handicaptype, ~.new_from_game_setup,
         ~.new_from_waitingroom_game_row, ~.build_game_setup_from_game_invitations,
         ~.new_from_game_invitation, ~.build_invitation_diffs;
       GameSetupBuilder.build_url_adjustments;
       class GameSettingsCalculator, ~.__construct, ~.calculate_settings;
       class GameSettings, ~.__construct, ~.to_string, ~.suggest_proper, ~.suggest_conventional,
         ~.get_game_settings_from_gamesetup, ~.get_game_settings_from_gamerow;
       ProfileTemplate.encode_template, ~.build_profile;
       NextGameOrder.build_status_games_query;
       is_htype_calculated),
     include/deprecated_functions.php (INVITE_HANDI_CONV, GS_SEP_INVITATION;
       class DeprecatedGameSetup, ~.build_invitation_game_setup, ~.parse_invitation_game_setup,
         ~.read_game_setup_from_gamerow, ~.parse_jigo_mode_from_game_setup, ~.determine_handicaptype,
         ~.get_invite_handicaptype, ~.get_handicaptype_for_invite),
     include/db/game_invitation.php (class GameInvitation, ~.__construct, ~.setRuleset, ~.to_string,
       ~.persist, ~.insert, ~.update, ~.fillEntityData, ~.build_query_sql, ~.new_from_row,
       ~.load_game_invitation, ~.load_game_invitations, ~.insert_game_invitations,
       ~.delete_game_invitations),
     include/make_game.php (make_invite_game, build_invitation_game_update,
       make_invite_game_setup_from_url, make_invite_template_game_setup,
       accept_invite_game, create_game),
     include/message_functions.php (game_settings_form, game_info_table;
       DgsMessage.get_recipients;
       MessageControl.handle_send_message),
     include/wroom_control.php (WaitingroomControl.join_waitingroom_game, ~.calculate_offer_settings),
     include/quick/quick_message.php (QuickHandlerMessage.fill_message_info),
     tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_GameSetup),
     scripts/tests/DeprecatedGameSetupTest.php, scripts/tests/GameSetupTest.php,
     scripts/tests/AllTests.php,
     scripts/updates/fix_default_max_handi-1_0_16.php (fix_game_invite_dispute,
       fix_game_finished_running, fix_profile),
     scripts/updates/fix_game_invitations-1_0_16.php (migrate_game_invitations, fix_game_invitation),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     scripts/updates/fix_new_game_expert_view-1_0_16.php, scripts/data_export.php,
     scripts/game_consistency.php, scripts/index.php,
     specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
     specs/db/table-Waitingroom.txt,
     specs/quick_suite.txt,
     tournaments/ladder/challenge.php (show_game_info),
     game_players.php (build_form_change_group_with_handicap),
     message.php (handle_save_template),
     new_game.php (handle_add_game),
     waiting_room.php (add_old_game_form),
     daily_cron.php:
   - re-designed game-invitations
     - re-design with clearer structures was necessary to support bug-fixes for game-invitations
       messing up state of invitation: who sent it?, who views it?, what's the handicap-type
       for black/white-fix-color and fair-komi-divide&choose for current user?
       Determination of this variables sucked big with string-encoded game-setup and storing
       of users for game on INVITED-status.
     - added GameInvitation-table to store changeable game-settings for invitations
       replacing old GameSetup-invitation-handling parsing a one-string text-field for both users
     - replaced Games.ToMove_ID holding handicap-type-encoding with players-id
       that last sent game-invitation- or game-dispute-message
     - stored initially inviting user in Games.Black_ID and invited user in Games.White_ID
     - GameInvitation-entries are kept till game is finished, then they are deleted
     - moved deprecated functions and constants into separate file 'include/deprecated_functions.php'
       to be used for migration-scripts and potential later disposal
     - added migration-script 'scripts/updates/fix_game_invitations-1_0_16.php'
       to migrate old 1.0.15-style game-invitations
     - fixed bug: showing correct state of invitation and dispute-difference for all combinations
       of inviting- & invited-user, disputed or original invitation with reversed handicap-type
       dependent on current-user
     - added cleanup of GameInvitation-table for deleted or cleaned up invitations
     - additional refactoring for re-designed game-invitations:
       - adjusted and simplified GameSetup-encoding for invitations to only store game-settings
         of last sent invitation/dispute from one user in preparation for accepting and starting
         invitation-game
       - moved deprecated functions and constants into 'include/deprecated_functions.php'
         to be used for migration-scripts and potential later disposal:
         GameSetup.build_invitation_game_setup, ~.parse_invitation_game_setup,
         ~.parse_jigo_mode_from_game_setup, ~.determine_handicaptype, get_invite_handicaptype,
         get_handicaptype_for_invite
       - refactored and simplified GameSettingsCalculator to use GameSetup instead of
         game-row to calculate probable game-settings for pivot-user
       - renamed GameSetup- and GameSettings-fields: AdjustHandicap/Komi -> AdjHandicap/Komi
       - avoid clashes with other encode()-functions:
         - renamed GameSetup.encode() -> GameSetup.encode_game_setup()
         - renamed ProfileTemplate.encode() -> ProfileTemplate.encode_template()
       - renamed GameSetup.new_from_game_row() -> GameSetup.new_from_waitingroom_game_row()
       - cleanup: added safety-checks on vars (status) for some use-cases
   - added my-rating in game-info-table on viewing own or opponents game-settings
   - added docu about Moves-table in 'specs/db/table-Games.txt'
-----------
-- added table to store changeable game-settings for invitations
--    replacing old GameSetup-invitation-handling parsing a text-field
CREATE TABLE GameInvitation (
  gid int NOT NULL,
  uid int NOT NULL,
  Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
  Ruleset enum('JAPANESE','CHINESE') NOT NULL default 'JAPANESE',
  Size tinyint unsigned NOT NULL default '19',
  Komi decimal(4,1) NOT NULL default '6.5',
  Handicap tinyint unsigned NOT NULL default '0',
  Handicaptype enum('conv','proper','nigiri','double','black','white','auko_sec','auko_opn','div_ykic','div_ikyc') NOT NULL default 'conv',
  AdjKomi decimal(4,1) NOT NULL default '0.0',
  JigoMode enum('KEEP_KOMI','ALLOW_JIGO','NO_JIGO') NOT NULL default 'KEEP_KOMI',
  AdjHandicap tinyint NOT NULL default '0',
  MinHandicap tinyint unsigned NOT NULL default '0',
  MaxHandicap tinyint NOT NULL default '-1',
  Maintime smallint NOT NULL default '0',
  Byotype enum('JAP','CAN','FIS') NOT NULL default 'JAP',
  Byotime smallint NOT NULL default '0',
  Byoperiods tinyint NOT NULL default '0',
  Rated enum('N','Y') NOT NULL default 'N',
  StdHandicap enum('N','Y') NOT NULL default 'N',
  WeekendClock enum('N','Y') NOT NULL default 'Y',
  PRIMARY KEY (gid,uid)
) ENGINE=MyISAM;

-- execute migration-script (with do_it=1) to merge all old-style game-invitations:
--    'scripts/updates/fix_game_invitations-1_0_16.php?limit=1000'
--    repeat it till all game-invitations are fixed by migrating them.
-----------

   * game.php:
   - bugfix: don't show link to Eidogo-game-player for games in fair-komi-negotiation,
     that have no board yet

   * include/db/waitingroom.php (class Waitingroom, ~.fillEntityData, ~.load_waitingroom_entries):
   - bugfix: wrong declaraction of float-typed db-table-fields Komi/AdjKomi for Waitingroom-entity
   - bugfix: wrong handling of writing boolean-fields into database expecting Y|N values
   - cleanup: minor var-rename

2013-07-13 juga

   * scripts/README.developers, .gitignore, README:
   - reviewed and adjusted axd's changes from branch dgs-work/axd-sfdev/review,
     see pull-request http://www.dragongoserver.net/forum/read.php?forum=10&thread=36610#36610
   - cleaned up .gitignore (remove double entries, less and clearer groups)

2013-07-13 axd

   * .gitignore:
   - grouped and cleaned up ignore-files

   * scripts/updates/dgs-cvs2git-migration.txt, scripts/README.developers, scripts/ChangeLog,
     INSTALL, README, docs.php, snapshot.php:
   - adjusted text-usage of 'git' -> Git
   - added minor clarifications and fixed typos

2013-07-12 juga

   * include/game_functions.php (MultiPlayerGame.load_game_players),
     include/utilities.php (build_text_block),
     include/rating.php (change_user_rating),
     admin_rating.php (find_running_normal_games, find_running_multi_player_games,
       find_running_tournaments, find_open_invitations, build_user_activities,
       build_user_activities_list, notify_fix_running_games),
     game_players.php (load_game_players_with_info),
     userinfo.php:
   - added better handling for players rating-change by admin
     - find and show running normal games to fix start-rating for respective color of player
       with changed rating, and make game unrated to prevent too big rating-change at game-end
     - find and show running multi-player-games to fix start-rating of group of player with changed rating
     - find and show opponents from open invitations
     - find and show active tournaments where player with changed rating is participating
     - create admin-bulletins for all opponents of player with changed rating
     - create a bulletin for respective tournament-directors which have to handle the rating-change
       accordingly where player with changed rating participates
     - perform fixes of start-rating and creation of bulletins only on rank-changes,
       not on reset of confidence interval
     - refactored load_game_players()-function into load_game_players_with_info() and
       MultiPlayerGame::load_game_players() to be used by admin-rating-script as well
     - allow rating-change on user-info-page only for players with an existing rating
     - minor bugfixes

   * include/game_functions.php (MultiPlayerGame.determine_groups_player_count, ~.count_player_groups;
       class GameSettingsCalculator, ~.__construct;
       GameSettings.get_game_settings_from_gamesetup, ~.get_game_settings_from_gamerow),
     include/wroom_control.php (WaitingroomControl.join_waitingroom_game, ~.calculate_offer_settings),
     include/quick/quick_message.php (QuickHandlerMessage.fill_message_info),
     include/make_game.php (accept_invite_game, create_game),
     include/message_functions.php (game_info_table),
     game_players.php (build_table_game_players, check_game_setup, build_form_change_group_with_handicap):
   - bugfix: restrict selectbox to maximal number of players of respective group
     to change order of players for multi-player-game
   - bugfix: calculating game-setting from adjust/min/max-handicap & adjust-komi/jigomode
     need additional data-source of GameSetup
   - bugfix: removed too much code on previous adjust-handicap/komi change setting handicap/komi-vars
     for creating-game

2013-07-09 juga

   * include/message_functions.php (message_info_table, change_folders_for_marked_messages),
     list_messages.php:
   - fix bug: no selection of folder to move message in does not lead to error, but redirects
     to message-list with message marked

2013-07-08 juga

   * game.php:
   - show that score is preliminary below game-board as long as game is in scoring-mode

   * include/game_functions.php (GameSetup.build_invitation_diffs;
       class GameSettingsCalculator, ~.calculate_settings;
       GameSettings.to_string, ~.suggest_proper, ~.suggest_conventional, ~.get_handicap_limits,
         ~.adjust_handicap, ~.adjust_komi, ~.build_adjust_handicap, ~.build_adjust_komi),
     include/wroom_control.php (WaitingroomOffer.calculate_offer_settings),
     include/message_functions.php (game_settings_form, game_info_table),
     include/make_game.php (create_game),
     scripts/tests/AllTests.php, scripts/tests/GameSettingsTest.php,
     game_players.php (update_handicap_komi, use_handicap_suggestion),
     waiting_room.php:
   - apply handicap/komi-adjustment only for conventional/proper handicap-type
     - refactored handicap & komi adjustments into GameSettings-class for methods:
       adjust_handicap, adjust_komi, build_adjust_handicap, build_adjust_komi
     - removed showing adjustment-info with old and adjusted handicap/komi as calculation
       not longer possible
     - moved handicap-standard-placement in game-settings-form above adjustments
       for clearer grouping of adjustments on handicap & komi with note about scope
     - always show probable/calculated game-settings-info for invitations and waitingroom-info
     - renamed unit-tests for game-settings: Game_SettingsHelperTest -> GameSettingsTest
     - added tests for GameSettings::suggest_proper & suggest_conventional

2013-07-01 juga

   * include/game_functions.php (class GameSettingsCalculator, ~.calculate_settings;
       class GameSettings, ~.suggest_proper, ~.suggest_conventional, ~.get_game_settings),
     include/wroom_control.php (WaitingroomControl.join_waitingroom_game, ~.calculate_offer_settings),
     include/message_functions.php (game_settings_form),
     include/make_game.php (accept_invite_game),
     include/rating.php,
     tournaments/include/tournament_rules.php (TournamentRules.prepare_create_game_row),
     game_players.php (build_form_change_group_with_handicap):
   - refactored calculation of conventional and proper handicap game settings into class GameSettings
     in preparation to apply handicap/komi-adjustment only for conventional/proper handicap-type

2013-06-30 juga

   * include/message_functions.php (game_settings_form):
   - bugfix: for disputes use initial default-komi for non-manual handicap-type

2013-06-29 juga

   * game.php:
   - bugfix: show game-score-info-box only if game-score calculated for different stages of game
   - bugfix: on test-server show game-score-info also for other ruleset if allowed

   * include/game_functions.php (GameSetup.set_defaults, ~.build_invitation_diffs;
       GameSettingsCalculator.calculate_settings;
       GameScore.calculate_score;
       build_image_double_game),
     include/rulesets.php (class Ruleset, ~.getRulesetText, ~.build_ruleset_filter_array,
       ~.getRulesetScoring, ~.getRulesetHandicapCompensation, ~.get_default_ruleset),
     include/wroom_control.php (WaitingroomControl.join_waitingroom_game, ~.calculate_offer_settings),
     include/rating.php (suggest_proper, suggest_conventional),
     include/make_game.php (accept_invite_game, create_game),
     include/message_functions.php (game_settings_form),
     include/utilities.php (add_js_var),
     tournaments/include/tournament_rules.php (TournamentRules.prepare_create_game_row),
     js/common.js (updateRulesetDefaulKomi),
     tournaments/edit_rules.php, tournaments/list_tournaments.php, tournaments/view_tournament.php,
     game_players.php (build_form_change_group_with_handicap),
     new_game.php (handle_add_game),
     game.php, gameinfo.php, message.php show_games.php, status.php, waiting_room.php:
   - used default komi 7.5 for chinese-ruleset on conventional and proper handicap-type
   - changed used komi in game-settings-form on changing ruleset using JavaScript
   - refactored ruleset-related functions into Ruleset-class

2013-06-28 juga

   * include/game_functions.php (class GameScore, ~.__construct, ~.calculate_score, ~.recalculate_score,
       ~.to_string, ~.check_ruleset, ~.draw_score_box;
       getRulesetHandicapCompensation),
     include/game_actions.php (GameActionHelper.prepare_game_action_score, ~.calculate_game_score),
     include/quick/quick_game.php (QuickHandlerGame.process_cmd_status_score),
     include/sgf_builder.php (SgfBuilder.build_sgf_result),
     include/move.php (GameCheckScore.check_remove),
     game.php:
   - changed game score-calculation
     - changed handicap-compensation for area-scoring from H-1 to full handicap compensation
     - refactored handicap-compensation for scoring-mode to depend on ruleset
     - determine area or territory scoring-mode from ruleset
     - add used ruleset in scoring-info-box on game-page

   * include/game_actions.php (GameActionHelper.calculate_game_score),
     game.php:
   - bugfix: re-add showing of calculated game-score after code-cleanup removed too much code

   * scripts/README.developers, INSTALL, README, docs.php:
   - merged in and modified changes from axd about installing DGS, working with Git
     - see https://sourceforge.net/p/dragongoserver/dgs-main/merge-requests/1/

   * include/std_functions.php (make_dragon_main_menu_logged_out, make_dragon_main_menu,
       make_menu_horizontal, make_menu_vertical):
   - added tooltips for main-menu entries for clarification of the used short-terms

2013-06-24 juga

   * include/classlib_userconfig.php (ConfigBoard.load_config_board_or_default),
     include/error_codes.php (ErrorCode.init),
     include/quick/quick_folder.php,
     tournaments/include/tournament_gui_helper.php, tournaments/include/tournament_pool_classes.php,
     tournaments/include/tournament_round_helper.php,
     scripts/README.developers,
     features/list_features.php,
     forum/post.php, forum/index.php, forum/list.php, forum/read.php,
     tournaments/ladder/challenge.php, tournaments/ladder/view.php,
     tournaments/roundrobin/edit_rounds.php,
     tournaments/game_admin.php, tournaments/list_participants.php,
     tournaments/list_tournaments.php, tournaments/manage_tournament.php,
     edit_folders.php, edit_profile.php, edit_shape.php, game.php, game_comments.php,
     game_editor.php, goban_editor.php, list_bulletins.php, list_contacts.php, message.php,
     message_thread.php, old_goban_editor.php, opponents.php, show_games.php, status.php,
     users.php, view_shape.php, waiting_room.php:
   - added error-check preventing access on an uninitialized object regarding user-related tables
     - added new error-code 'user_init_error' on all pages preventing access on an uninitialized object
       of ConfigPages/ConfigTableColumns, which expects consistent user-data in the database
       Players-entry <-> ConfigPages-entry
     - used default ConfigBoard on pages, if user-data in db is inconsistent:
       normal is Players-entry <-> ConfigBoard-entry.
       But only use default if particular page does not allow to change the state of ConfigBoard.
     - added check for uninitialized objects like loading forum, user, game, tournament, tournament-round
     - cleanup: used (int)-cast instead of '+0' for URL-arg safety-checks
     - cleanup: minor layout changes

2013-06-17 juga

   * tournaments/include/tournament_participant.php (TournamentParticipant.count_tournament_participants,
       ~.count_all_tournament_participants, ~.delete_cache_tournament_participant_counts),
     tournaments/include/tournament_cache.php (TournamentCache.count_cache_tournament_participants,
       ~.count_cache_all_tournament_participants),
     tournaments/include/tournament_properties.php (class TournamentProperties),
     tournaments/include/tournament_template_round_robin.php,
     tournaments/include/tournament_round_helper.php,
     tournaments/include/tournament_status.php,
     include/cache_globals.php (CACHE_GRP_TP_COUNT_ALL),
     include/config.php,
     tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_ranks.php, tournaments/ladder/admin.php,
     tournaments/view_tournament.php:
   - added caching for counting tournament-participants at required places
     - added caching for counting selected and all tournament-participants
     - renamed TournamentParticipant::count_[all_]TPs() to TP::count_[all_]tournament_participants()
     - renamed TournamentParticipant::delete_cache_tournament_participant_count()
       to TP::delete_cache_tournament_participant_counts()
     - changed expire-time for tournament-participant counts from 1h to 1d

   * forum/forum_functions.php (DisplayForum.draw_post),
     forum/read.php (show_revision_history):
   - bugfix: don't show "No. X" on forum-posts revision-history

   * tournaments/include/tournament_ladder_helper.php (class TournamentLadderHelper),
     tournaments/include/tournament_round_helper.php (class TournamentRoundHelper),
     tournaments/include/tournament_helper.php (class TournamentHelper),
     tournaments/include/tournament_pool.php (class TournamentPool),
     tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_pairing.php,
     tournaments/roundrobin/edit_pools.php,
     tournaments/roundrobin/edit_ranks.php,
     tournaments/roundrobin/edit_rounds.php,
     tournaments/roundrobin/view_pools.php,
     tournaments/ladder/admin.php,
     tournaments/cron_tournaments.php:
   - refactored ladder and round-robin helper-functions from TournamentHelper into
     separate helper-classes TournamentLadderHelper & TournamentRoundHelper

   * tournaments/include/tournament_helper.php (class TournamentHelper,
       ~.process_tournament_game_end, ~.process_tournament_ladder_game_end,
       ~.process_tournament_round_robin_game_end, ~.process_ladder_rank_period),
     tournaments/cron_tournaments.php (run_once_daily, run_hourly),
     tournaments/roundrobin/edit_pairing.php:
   - refactored TournamentHelper in a solely static helper-class

2013-06-16 juga

   * include/std_functions.php (echo_dragon_top_bar, end_page),
     skins/dragon/screen.css:
   - replace tooltip with DGS-version in top-bar with version-text in bottom-bar

   * tournaments/include/tournament_globals.php (TRESULTTYPE_RR_WINNERS),
     specs/db/table-Tournaments.txt:
   - added tournament-result-type for round-robin in preparation to fill tournament-winners

   * tournaments/include/tournament_helper.php,
     tournaments/roundrobin/edit_ranks.php,
     tournaments/roundrobin/edit_rounds.php,
     tournaments/manage_tournament.php (make_links_ttype_specific),
     skins/dragon/screen.css:
   - started to finalizing tournament-round to prepare for next round or setting tournament winners
   - formatting form on tournament-edit-round-page

   * tournaments/view_tournament.php:
   - moved refresh-link to page-bottom
   - copied registration-link to top important links as convenience

   * show_games.php:
   - don't restrict games-list with default last-moved-date for tournament-games-list

2013-06-13 juga

   * tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPoolWinners,
       ~.check_unset_pool_ranks, ~.check_auto_poolwinners, ~.check_minimum_poolwinners),
     tournaments/include/tournament_round_status.php (class TournamentRoundStatus; ~.has_warning,
       ~.get_warnings, ~.check_conditions_round_status_DONE),
     tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.checkPoolWinners),
     tournaments/include/tournament_template.php (TournamentTemplateRoundRobin.checkPoolWinners),
     include/std_functions.php (buildErrorListString, buildWarnListString),
     tournaments/roundrobin/edit_round_status.php:
   - added error-checks and additional warning-check for tournament-round status-change PLAY->DONE
     - check that all games are processed
     - check that there's no unset pool rank
     - check that all automatic pool-winner-ranks are set
     - warn if there are pool-winners above the automatic pool-winner-ranks
     - check that there's at least one pool-winner for each pool

2013-06-05 juga

   * include/quick/quick_bulletin.php (class QuickHandlerBulletin, ~.parseURL, ~.prepare,
       ~.process, ~.process_cmd_list, ~.fill_bulletin_info),
     include/db/bulletin.php (Bulletin.load_bulletin),
     specs/quick_suite.txt:
   - implemented quick-do-handler info-command for bulletin-object.

2013-06-01 juga

   * scripts/README.developers, specs/tournaments.txt, skins/dragon/screen.css,
     docs.php, index.php, snapshot.php, INSTALL, .gitignore:
   - adjustments to reflect changes caused by CVS-to-Git migration
      - adjusted comments on snapshot-page to export Dragon-snapshots from Git
      - added code-browsing link for Git, adjusted text for old CVS code-browsing
      - replaced texts about CVS with the more general term of SCM (source control management)
      - replaced CVS-HEAD with (Git-)master terminology

   * images/, images/flags/, 5/, 7/, 9/, 11/, 13/, 17/, 21/, 25/, 29/, 35/, 42/, 50/:
   - put all images under version-control

   * all files:
   - migrated CVS-repository to GIT-repository:
     - see http://sourceforge.net/p/dragongoserver/dgs-main
     - git clone ssh://USERNAME@git.code.sf.net/p/dragongoserver/dgs-main LOCAL-DIR
     - replaced .cvsignore files with single .gitignore file

2013-05-26 juga

   * all files,
     scripts/README.developers:
   - adjusted code-style:
     - for 'require/require_once/include/include_once': use without braces and '..' if const-string
     - for 'return/if/elseif/for/foreach/while/do/switch': with space after keyword

   * game_comments.php:
   - bugfix: show hidden game-comments in multi-player-games only for comment-author

2013-05-21 juga

   * tournaments/include/tournament_round_status.php (TournamentRoundStatus.check_round_status_change,
       ~.check_conditions_round_status_POOL, ~.check_conditions_round_status_PAIR,
       ~.check_conditions_round_status_PLAY, ~.check_conditions_round_status_DONE,
       ~.check_expected_round_round_status, ~.check_action_round_status, ~.check_edit_round_status),
     tournaments/include/tournament_status.php (TournamentStatus.check_status_change,
       ~.check_conditions_status_REG, ~.check_conditions_status_PAIR, ~.check_conditions_status_PLAY,
       ~.check_conditions_status_CLOSED, ~.check_expected_status, ~.check_action_status),
     tournaments/include/tournament_participant.php (TournamentParticipant.count_TPs, ~.count_all_TPs,
       ~.load_tournament_participants_registered, ~.load_registered_users_in_seedorder),
     tournaments/include/tournament_pool.php (TournamentPool.load_tournament_participants_with_pools,
       ~.seed_pools, ~.add_missing_registered_users),
     tournaments/include/tournament_helper.php (TournamentHelper.start_tournament_round_games,
       ~.remove_tournament_round, ~.set_tournament_round),
     tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkProperties,
       ~.calcTournamentMinParticipants),
     tournaments/include/tournament_properties.php (TournamentProperties.getMaxParticipants,
       ~.checkUserRegistration),
     tournaments/include/tournament_round.php (class TournamentRound, ~.check_properties,
       ~.authorise_set_tround),
     tournaments/include/tournament_ladder.php (TournamentLadder.seed_ladder),
     tournaments/include/tournament.php (class Tournament, ~.formatRound),
     tournaments/include/tournament_template_ladder.php, tournaments/include/tournament_template.php,
     tournaments/include/tournament_globals.php, tournaments/include/tournament_cache.php,
     include/gui_functions.php (echo_image_tourney_pool_winner),
     include/utilities.php (build_text_list),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/table-Tournaments.txt, specs/db/dragon-ddl.sql,
     specs/tournaments.txt, skins/dragon/screen.css,
     tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
     tournaments/roundrobin/edit_pairing.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/view_tournament.php (make_table_tournament_participant_counts),
     tournaments/edit_participant.php, tournaments/register.php,
     tournaments/ladder/admin.php:
   - round-robin-tournament:
     - added handling of tournament-participants start-round,
       differ between handling of StartRound from registration and NextRound from pool-win
     - check on change of tournament-status:
       generalized check for all tournament-types done in TournamentStatus-class,
       specialized check for done in specific tournament-type TournamentTemplate-implementation
     - added checks on max-participants for higher start-rounds
     - added checks to allow change of current tournament-round
     - allow editing of round-stuff only for specific tournament-status
     - started handling of pool-winners to advance to next round or mark for final result
     - added consistency-checks and fixed displaying-bug on pairing to start tournament-games
     - added checks of current tournament-status on changes of tournament-round-status
     - view-tournament-page: show count of tournament-participant for all rounds and all TP-stati
   - various bug-fixes & code cleanup:
     - refactored building of text-list calling function on list-items
     - renamed some function into more meaningful names
     - removed unused code, refactored redundant code
     - added comments
-----------
-- added index for checking tournament-participant-registrations
ALTER TABLE TournamentParticipant
   ADD INDEX tidStartRound (tid,StartRound) ;
-----------

   * INSTALL:
   - clarified how to get help and how to create admin-user

2013-05-09 juga

   * include/game_actions.php (GameActionHelper.prepare_game_action_score):
   - bugfix for quick-game-handler: added check for agree=1 on 1st players scoring

2013-05-04 juga

   * tournaments/include/tournament_round.php (class TournamentRound, ~.fillEntityData,
       ~.check_properties, ~.build_notes_props, ~.new_from_row),
     tournaments/include/tournament_pool.php (TournamentPool.update_tournament_pool_set_pool_winners),
     tournaments/include/tournament_helper.php (TournamentHelper.fill_pool_winners_tournament_pool),
     tournaments/include/types/dgs_round_robin.php (DgsRoundRobinTournament.createTournament),
     tournaments/include/tournament_globals.php (RKACT_SET_POOL_WIN, RKACT_CLEAR_POOL_WIN),
     tournaments/include/tournament_pool_classes.php (RankSummary.build_notes),
     include/gui_functions.php (echo_image_tourney_pool_winner),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
     tournaments/manage_tournament.php (make_links_ttype_specific),
     tournaments/roundrobin/edit_ranks.php (parse_edit_form),
     tournaments/roundrobin/edit_round_props.php (parse_edit_form),
     tournaments/roundrobin/edit_rounds.php, tournaments/roundrobin/view_pools.php:
   - added tournament-round-property PoolWinnerRanks to configure number of top ranks
     making pool-winners to either advance to next round or win the tournament
     - added action in edit-ranks-page to set-pool-winners for finished pools
     - clarified "next-round" term replacing it with "pool-winner",
       which can mean advancing to next-round as well as marking for final result
-----------
-- added number of top ranks for pool winners
ALTER TABLE TournamentRound
   ADD PoolWinnerRanks tinyint unsigned NOT NULL DEFAULT '0' AFTER MaxPoolCount ;
-----------

2013-04-29 juga

   * include/page_functions.php (PAGEFLAG_IMPLICIT_FLUSH, PAGEFLAG_NO_BUFFERING;
       class HTMLPage; class Page),
     tournaments/include/tournament_helper.php (TournamentHelper.start_tournament_round_games),
     include/error_functions.php (DgsErrors.dump_exit),
     include/std_functions.php (start_html, end_html),
     scripts/experiments/flush_test.php, scripts/experiments/activity_players.php,
     scripts/updates/fix_default_max_handi-1_0_16.php,
     scripts/updates/fix_game_comments-1_0_15.php,
     scripts/updates/fix_message_thread-1_0_15.php,
     scripts/updates/fix_new_game_expert_view-1_0_16.php,
     scripts/check_players_email.php, scripts/fix_game_snapshot.php,
     scripts/fix_games_timeleft.php, scripts/player_consistency.php,
     tournaments/roundrobin/edit_pairing.php,
     goodies/index.php, docs.php, faq.php, index.php, introduction.php, news.php,
     policy.php, rank_converter.php:
   - fix flushing of output using implicit-flush without output-buffering

2013-04-28 juga

   * tournaments/include/tournament_factory.php (TournamentFactory.getTournamentTypes),
     include/config.php (ALLOW_TOURNAMENTS):
   - changed server-config ALLOW_TOURNAMENTS from boolean to regex listing allowed tournament-types

   * tournaments/view_tournament.php:
   - bugfix: don't show user-result-state for user in unassigned-pool

   * tournaments/include/tournament_pool.php (TournamentPool.formatRank):
   - bugfix: allow to show other value for empty pool-rank

   * tournaments/include/tournament_template.php (class TournamentTemplate,
       ~.build_tournament_template_title),
     tournaments/include/tournament_template_round_robin.php (class TournamentTemplateRoundRobin),
     tournaments/include/tournament_template_ladder.php (class TournamentTemplateLadder),
     tournaments/include/types/dgs_round_robin.php (class DgsRoundRobinTournament),
     tournaments/include/types/private_ladder.php (class PrivateLadderTournament),
     tournaments/include/types/public_ladder.php (class PublicLadderTournament),
     tournaments/include/types/dgs_ladder.php (class DgsLadderTournament):
   - cleanup: refactored building of template-title into base-class
   - reduced max ladder-challenges/defenses from 10 -> 8 for private/public ladders

   * scripts/tournament_consistency.php (tid_clause, fix_tournament_RegisteredTP):
   - overworked and extended consistency-checks
   - allow to check specific or all tournaments
   - added checks for TournamentParticipant.Finished/Won/Lost
   - added checks for TournamentLadder.ChallengesIn/Out for ladder-tourneys

2013-04-26 juga

   * scripts/player_consistency.php (echo_query, explain_query, cnt_diff),
     scripts/updates/other_changes_1_0_15_to_1_0_16.txt:
   - added consistency-checks/fixes on Players-table for multi-player-games

2013-04-23 juga

   * include/game_actions.php (class GameActionHelper),
     game.php:
   - bugfix for previous refactoring: missed $score_mode argument on calculating game-score

2013-04-22 juga

   * include/game_actions.php (class GameActionHelper, ~.init_query, ~.set_game_move_message,
       ~.prepare_game_action_set_handicap, ~.prepare_game_action_do_move,
       ~.prepare_game_action_pass, ~.prepare_game_action_resign, ~.prepare_game_action_score,
       ~.prepare_game_action_generic, ~.update_game):
   - cleanup: refactored using UpdateQuery-class for building SQL-updates/inserts

2013-04-19 juga

   * include/game_actions.php (class GameActionHelper, ~.set_game_action, ~.load_game,
       ~.init_globals, ~.load_game_board, ~.init_query, ~.increase_moves, ~.get_moves,
       ~.calculate_game_score),
     include/quick/quick_game.php (class QuickHandlerGame, ~.prepare, ~.process_cmd_play),
     confirm.php, game.php, quick_play.php:
   - cleanup: refactored redundant code from confirm-page/quick_play-page/quick-do-game-handler
     - step #7: refactored handling for loading-game, loading-board, setting to-move/next-to-move,
       handling GameFlags
     - step #8: removed globals in functions replacing by access to class-attributes/funcs
     - step #9: refactored handling of score-calculation for game-page
   - bugfix for quick-game-handler: corrected to_move on resign-if-not-your-turn,
     it was possible to win by own resignation

2013-04-18 juga

   * include/game_actions.php (class GameActionHelper, ~.set_game_finished, ~.init_query,
       ~.init_mp_query, ~.set_game_move_message),
     include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
     confirm.php, quick_play.php:
   - cleanup: refactored redundant code from confirm-page/quick_play-page/quick-do-game-handler
     - step #6: refactored handling for MPG, time, message, game-finish, score

2013-04-17 juga

   * include/game_actions.php (class GameActionHelper, ~.init_query,
       ~.prepare_game_action_set_handicap, ~.prepare_game_action_do_move,
       ~.prepare_game_action_pass, ~.prepare_game_action_resign,
       ~.prepare_game_action_generic, ~.prepare_game_action_score, ~.update_game)
     include/quick/quick_game.php (QuickHandlerGame.prepare, ~.process_cmd_play,
       ~.convert_game_cmd_to_action),
     include/board.php (Board.draw_board),
     include/globals.php (GAMEACT_...),
     confirm.php, game.php, quick_play.php:
   - cleanup: refactored redundant code from game-page/confirm-page/quick_play-page/quick-do-game-handler
     for moving and other game-actions into new class GameActionHelper
     - step #1: refactored update-game query-code
     - step #2: refactored "pass"-move-code + generically handled MPG/time/message-query-part
     - step #3: refactored "set_handicap"-move-code
     - step #4: refactored "domove"-move-code
     - step #5: refactored "done"-scoring-code
   - bugfix: check for empty move-id for quick-game-handler

   * include/game_functions.php (class DefaultMaxHandicap, ~.calc_def_max_handicap,
       ~.limit_max_handicap, ~.limit_min_max_with_def_handicap, ~.build_text_handicap_limits;
       adjust_handicap),
     tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_GameRow,
       ~.convertTournamentRules_to_EditForm, ~.convertEditForm_to_TournamentRules),
     include/message_functions.php (game_settings_form, build_adjust_handicap),
     include/make_game.php (make_invite_game_setup),
     scripts/tests/DefaultMaxHandicapTest.php, scripts/tests/Game_SettingsHelperTest.php,
     scripts/tests/AllTests.php, scripts/updates/fix_default_max_handi-1_0_16.php,
     tournaments/view_tournament.php, new_game.php:
   - cleanup: refactored redundant code to handle default-max-handicap
     into new class DefaultMaxHandicap

2013-04-16 juga

   * ALL php-files,
     include/db/*.php, include/quick/*.php, include/*.php,
     code_examples/*.php, features/*.php, forum/*.php, scripts/*.php,
     tournaments/include/types/*.php, tournaments/include/*.php,
     tournaments/ladder/*.php, tournaments/roundrobin/*.php, tournaments/*.php,
     rss/status.php, wap/status.php, *.php:
   - cleanup:
      - fix wrong PHP-statements
      - replace PHP4-constructors with PHP5-__constructor()-function
      - added public/protected/private + static modifiers for class-functions,
        tried to identify private attributes as such, used public only if attribute is already public
      - replaced class-own-static reference to self::func
      - moved default-value for class-attributes from constructor into attribute-declaration
      - used abstract-modifier for classes and functions instead of throwing error()
      - moved some global vars related to class as static declaration to class or function
      - avoid public class-attributes if used sparsely
      - moved some global funcs into classes
      - adjusted some error-labels
      - removed unused or double code
      - clarified some function/var-names
      - clarified some comments/docs
      - layouting
   - fixed some smaller bugfixes during cleanup (SQL, misspelling, minor bad code-smells)

2013-04-14 juga

   * forum/forum_functions.php, include/classlib_user.php, include/classlib_userconfig.php,
     include/filter.php, include/game_functions.php, include/goban_handler_dgsgame.php,
     include/std_classes.php, include/std_functions.php, include/table_columns.php,
     include/db/bulletin.php, include/db/ratingchangeadmin.php, include/db/ratinglog.php,
     include/db/shape.php, include/db/survey.php, include/db/waitingroom.php,
     scripts/tests/EntityTest.php, tournaments/include/tournament_director.php,
     tournaments/include/tournament_ladder.php, tournaments/include/tournament_news.php,
     tournaments/include/tournament_participant.php, tournaments/include/tournament_pool.php,
     tournaments/include/tournament_properties.php, tournaments/include/tournament_round_status.php,
     tournaments/include/tournament_status.php, tournaments/include/tournament_template_ladder.php,
     tournaments/include/tournament_template_round_robin.php:
   - cleanup: replaced is_a() -> instanceof

2013-04-13 juga

   * include/game_functions.php (GameSetup.set_defaults;
       GameSetupBuilder.build_url_game_basics;
       GameScore.calculate_score;
       getRulesetText, get_default_ruleset),
     tournaments/include/tournament_rules.php (TournamentRules.setRuleset,
       ~.convertEditForm_to_TournamentRules),
     include/make_game.php (make_invite_game_setup, create_game),
     include/message_functions.php (game_settings_form),
     include/config.php (WROOM_MAX_ENTRIES, ALLOWED_RULESETS),
     include/db/waitingroom.php (Waitingroom.setRuleset),
     include/db/games.php (Games.setRuleset),
     game.php, new_game.php:
   - enabled DGS-Chinese ruleset using area-scoring:
     - allow to configure available rulesets in server-config
     - extracting default ruleset from server-config
     - game-page: detailed text about area-scoring on passing
   - moved max. number of waiting-room-entries to server-config-file

   * site_map.php, waiting_room.php:
   - re-added new-game-link in waiting-room

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_create_tournament_director,
       ~.log_tp_registration_by_director, ~.log_tp_registration_by_user, ~.log_delete_tournament_ladder,
       ~.log_seed_tournament_ladder, ~.log_delete_user_from_tournament_ladder,
       ~.log_crown_king_tournament_ladder, ~.log_change_rank_tournament_ladder,
       ~.log_add_user_tournament_ladder),
     tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder,
       ~.change_user_rank, ~.add_user_to_ladder, ~._process_game_end, ~.process_user_absence),
     tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_crown_king),
     tournaments/include/tournament_log.php (TLOG_ACT_ADD, TLOG_ACT_SEED, TLOG_ACT_SET),
     tournaments/ladder/admin.php, tournaments/ladder/retreat.php, tournaments/ladder/view.php,
     tournaments/cron_tournaments.php (run_hourly),
     tournaments/edit_participant.php, tournaments/register.php:
   - added tournament-log for
     - adding existing tournament-participant to ladder on joining or after incomplete removal
     - removing user from ladder by retreat / director-removal / user-absence-handling
     - seeding or deleting ladder on tournament PAIR-status
     - changing ladder user-rank
     - crowning-king for ladder-tournament by director or CRON
   - removed double tournament-log for retreating from ladder, already covered by user-removal

   * tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_ladder_standings):
   - bugfix: check for presence of optional table-column for tournament-rating

2013-04-12 juga

   * tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_tournament_ladder_game_end),
     tournaments/include/tournament_log.php (class Tournamentlog, ~.new_from_row),
     tournaments/cron_tournaments.php,
     tournaments/show_tournament_log.php:
   - added tournament-log for processing game-end for ladder-tournament
   - added filter on Tournamentlog.Type showing tournament-log

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_change_tournament_ladder_props),
     tournaments/ladder/edit_props.php:
   - added tournament-log for editing tournament-ladder-properties

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_tournament_ladder_challenge_user),
     tournaments/include/tournament_ladder.php (TournamentLadder.build_log_string),
     tournaments/include/tournament_log.php (TLOG_ACT_START),
     tournaments/ladder/challenge.php:
   - added tournament-log for tournament-ladder user-challenge

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_retreat_from_tournament_ladder),
     tournaments/include/tournament_ladder.php (TournamentLadder.build_log_string),
     tournaments/ladder/retreat.php,
     tournaments/show_tournament_log.php:
   - added tournament-log for user retreating from ladder

   * game.php (draw_add_time):
   - show arrow-image on player to move

2013-04-11 juga

   * include/game_functions.php (GameSetupChecker. add_default_values_info, ~.check_time,
       ~.check_adjust_komi):
   - bugfix: check for invalid japanese-byo-yomi extra-periods and canadian-byo-yomi stones
   - bugfix: check adjust-komi value also for invitation

   * include/message_functions.php (interpret_time_limit_forms):
   - bugfix: use defaults for invalid japanese-byo-yomi extra-periods and canadian-byo-yomi stones

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_change_tournament_rules),
     tournaments/edit_rules.php:
   - added tournament-log for changing tournament-rules
   - bugfix: check for invalid japanese-byo-yomi extra-periods and canadian-byo-yomi stones

   * tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_EditForm,
       ~.convertEditForm_to_TournamentRules):
   - bugfix: always init time-values for all byo-yomi-types to parse all fields
     in parsing-section of 'edit_rules.php'
   - bugfix: remove shape-snapshot if shape-id is 0

2013-04-10 juga

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_change_tournament,
       ~.log_change_tournament_news, ~.log_change_tournament_props),
     tournaments/edit_properties.php:
   - added tournament-log for changing tournament-registration-properties
   - bugfix: for tournament-log check for an unset date

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_change_tournament_news),
     tournaments/edit_news.php:
   - added tournament-log for creating and changing tournament-news

   * tournaments/include/tournament_log_helper.php (class TournamentLogHelper,
       ~.log_change_tournament_director, ~.build_diff_tournament_participant,
       ~.log_change_tournament),
     tournaments/edit_tournament.php:
   - added tournament-log for editing tournament

   * include/table_columns.php (Table.make_sort_images):
   - bugfix: need check for unset arr-element

   * tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder):
   - bugfix: missed locking of nested read-access to db-tables TournamentParticipant & Players

   * tournaments/include/tournament_log_helper.php (TournamentLogHelper.build_diff_tournament_participant,
       ~.log_change_tp_registration_by_director, ~.log_tp_registration_by_user,
       ~.log_change_tp_registration_by_user),
     tournaments/edit_participant.php,
     tournaments/register.php:
   - added tournament-registration actions in tournament-log by user to register / apply /
     ack-invite / reject-invite / remove registration
   - changed tournament-log diff-format for change of tournament-participant by director

   * include/quick/quick_game_notes.php (QuickHandlerGameNotes.prepare),
     include/game_functions.php (GameHelper.update_game_notes):
   - bugfix: use default non-hidden for Hidden-state on saving game-notes

2013-04-08 juga

   * tournaments/include/tournament_participant.php (TournamentParticipant.assert_tournament_participant,
       ~.build_log_string, ~.delete_tournament_participant),
     tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_tp_registration_by_director),
     tournaments/edit_participant.php:
   - added tournament-log for actions by T-director to register / invite / edit-registration /
     delete of user
   - bugfix: don't assert user-id on removal of registration of tourney-user

2013-04-05 juga

   * include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info):
   - bugfix for previous refactoring: missed local var that have been refactored away

2013-04-02 juga

   * tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
       ~.setDetermineChallenger, ~.fillEntityData, ~.build_notes_props, ~.calc_game_end_action,
       ~.new_from_row),
     tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
     tournaments/include/tournament_ladder.php (TournamentLadder.process_game_end),
     tournaments/include/tournament_games.php (TournamentGames.getFlagsText),
     tournaments/include/tournament_globals.php,
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
     tournaments/ladder/edit_props.php (parse_edit_form):
   - ladder-tournament: added ladder-property to determine challenger-role at game-start or game-end
-----------
-- determine challenger-role at game-start or game-end
ALTER TABLE TournamentLadderProps
   ADD DetermineChallenger enum('GAME_START','GAME_END') NOT NULL default 'GAME_END' AFTER MaxChallenges ;
-----------

   * tournaments/ladder/challenge.php:
   - bugfix: missed changed func-signature of echo_off_time() to fix: weekend-clock-icon
     was always shown on weekend independent from game-WeekendClock-setting

2013-04-01 juga

   * include/message_functions.php (MessageControl.handle_send_message),
     include/globals.php (MOVEMSG_REPLY_TO_MAIN_FOLDER),
     include/std_functions.php (send_message):
   - bugfix: move normal message on replying from Reply to Main-folder,
     if no manual target folder selected

2013-03-31 juga

   * include/quick/quick_message_list.php (class QuickHandlerMessageList, ~.canHandle,
       ~.parseURL, ~.prepare, ~.prepare_filter_answers, ~.prepare_filter_folders,
       ~.check_allow_limit_all, ~.collect_msg_users, ~.process),
     include/message_functions.php (build_folders_all_received; DgsMessage.load_message,
       ~.build_message_base_query),
     include/quick/quick_message.php (class QuickMessage, ~.process_cmd_info, ~.fill_message_info),
     include/quick/quick_suite.php (QuickSuite.getQuickHandler),
     specs/quick_suite.txt, list_messages.php:
   - quick-handler message-object: added 'list'-command with own quick-handler
   - cleanup: added function-modifiers

2013-03-26 juga

   * include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info),
     include/quick/quick_wroom.php (QuickHandlerWaitingroom.fill_wroom_object),
     specs/quick_suite.txt:
   - quick-message info-handler: added handicap- and komi-adjustments
   - quick-waiting-room info-handler: re-arranged handicap- and komi-adjustments
     to match with invitation-info

   * include/board.php (Board.mark_territory):
   - bugfix: wrong count of visited points for seki-mark-check to find non-toggable-points

2013-03-25 juga

   * include/game_functions.php (FairKomiNegotiation.echo_fairkomi_table;
       GameSetup.set_defaults, ~.encode, ~.to_string, ~.format_handicap_type,
         ~.new_from_game_setup, ~.parse_invitation_game_setup, ~.build_invitation_diffs;
       GameSetupChecker.check_komi, ~.check_time, ~.check_adjust_komi, ~.check_min_rated_games,
         ~.check_wroom_count;
       GameSetupBuilder.fill_invite_from_game_setup, ~.fill_new_game_from_game,
         ~.fill_new_game_from_game_setup, ~.build_url_adjustments;
       class GameSettingsCalculator, ~.calculate_settings;
       adjust_handicap, calc_def_max_handicap, get_gamesettings_viewmode,
       append_form_add_waiting_room_game, build_arr_handicap_stones),
     include/message_functions.php (game_settings_form, game_info_table, build_adjust_komi,
       build_adjust_handicap),
     include/wroom_control.php (WaitingroomOffer.calculate_offer_settings),
     include/make_game.php (make_invite_game_setup, create_game),
     include/game_texts.php (GameTexts.get_jigo_modes),
     include/std_functions.php (DEFAULT_MAX_HANDICAP),
     include/globals.php (GSETVIEW_STANDARD),
     tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_GameRow,
       ~.convertTournamentRules_to_EditForm, ~.convertEditForm_to_TournamentRules),
     tournaments/edit_rules.php (parse_edit_form),
     tournaments/view_tournament.php (echo_tournament_rules),
     scripts/updates/fix_default_max_handi-1_0_16.php (_echo, load_games_gamesetup,
       load_profiles_gamesetup, handle_games_gamesetup, fix_game_invite_dispute,
       fix_game_finished_running, handle_profiles_gamesetup, fix_profile,
       handle_waiting_room_gamesetup, handle_tournament_rules_gamesetup),
     scripts/updates/fix_new_game_expert_view-1_0_16.php (_echo,
       load_profile_templates_new_game_expert_view),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     scripts/tests/Game_SettingsHelperTest.php,
     specs/db/dragon-ddl.sql,
     specs/db/table-Games.txt, specs/db/table-Tournaments.txt, specs/db/table-Waitingroom.txt,
     specs/quick_suite.txt, scripts/index.php,
     game_players.php (build_form_change_group, build_tableinfo_handicap_suggestion,
       use_handicap_suggestion),
     new_game.php (handle_add_game),
     gameinfo.php, message.php, site_map.php, waiting_room.php:
   - replaced default for max-handicap from former 21 to board-size-dependent max-handicap
     - selecting "default" for max-handicap will limit the handicap-stones used to start-games
       to a calculated max-default
     - formula used to calculate default max-handicap discussed in DGS-forums:
       round( 7.5 * ( handicapfactor($size) + 0.2 ) )
     - added handicap- and komi-adjustments to invitation and tournament-rules as well
     - merged jigo-check setting for fair-komi with and into jigo-mode setting of adjust-komi section
     - adjust GameSetup-encoding to store handicap- and komi-adjustments
       for all new-game views, invitations including their profiles
     - added migration-script to fix MaxHandicap from old max-handicap-value to default-max-handicap
       for running & finished games, invitation and new-game profiles, waiting-room and
       tournament-rules entries
     - merged simple and expert new-game view into one standard-view shown as default-view
       - previous release 1.0.15 introduced splitted views because of MPG/fair-komi views
       - reverting simple/expert-view split from previous release for easier support of handicap-
         and komi-adjustments, and also to encourage users to use new expert-settings
       - added migration-script to fix merge new-game expert-view with former simple-view
         into merged standard-view for new-game profiles
     - cleanup (minor changes, finer checks)
   - bugfix for game-info-table: show shape-game info for tournament-ladders
   - bugfix: open fair-komi invitation-template in fair-komi-new-game view
-----------
-- added default max-handicap
ALTER TABLE Waitingroom
   MODIFY MaxHandicap tinyint signed NOT NULL default -1 ;
ALTER TABLE TournamentRules
   MODIFY MaxHandicap tinyint signed NOT NULL default -1 ;

-- execute fix-script (with do_it=1) to merge new-game expert-view with standard-view:
-- IMPORTANT NOTE: run only ONCE!
--    'scripts/updates/fix_default_max_handi-1_0_16.php'

-- execute fix-script (with do_it=1) to merge new-game expert-view with standard-view:
-- IMPORTANT NOTE: execute script 'fix_default_max_handi-1_0_16.php' before this one!!
--    'scripts/updates/fix_new_game_expert_view-1_0_16.php'
-----------

2013-03-15 juga

   * include/make_translationfiles.php (translation_query),
     translate.php:
   - added selectbox to allow to search for translated-texts only,
     changed 'untranslated'-checkbox to select-box including Untranslated/Translated/All-texts

   * translate.php:
   - added full page-navigation with jump to first/last-page and info with current/max-page

   * include/std_functions.php (echo_dragon_top_bar):
   - added server-version as tooltip in top-bar on DGS-link

   * include/game_functions.php (GameNotify.get_text_game_deleted),
     game_players.php (build_form_delete_game, delete_game_setup),
     specs/multi-player-game.txt:
   - added deletion of MP-game on SETUP-status, but only by game-master,
     notify other players about deletion

   * include/time_functions.php (is_weekend_clock_stopped),
     include/gui_functions.php (echo_off_time),
     game.php, gameinfo.php:
   - bugfix: weekend-clock-icon was always shown on weekend independent from
     game-WeekendClock-setting

   * new_game.php:
   - bugfix: jump to my-waiting-room-games after creation of new game-offer

   * include/classlib_profile.php (class SearchProfile, ~.get_arg, ~.handle_action, ~.to_string),
     include/globals.php (SP_ARG_NO_DEF, SPURL_NO_DEF),
     include/std_functions.php (make_dragon_main_menu),
     features/edit_feature.php, features/list_features.php,
     features/list_votes.php, features/vote_feature.php,
     waiting_room.php (load_waitingroom_info),
     list_shapes.php, site_map.php:
   - bugfixes:
     - fixed profile-handling to not use default-profile on showing "Info" or
       normal "Search" preserving current filter-values
     - fixed showing multi-player-game wroom-entry for correct my|all-view
     - reverted change to add arg-overwriting with additional URL-arg SPURI_ARGS
     - added option for profile-handling to forbid loading default-profile

2013-03-08 juga

   * ratingpng.php (get_rating_data):
   - rating-graph: use 1st rated game as start-time instead of register-date (fallback)

   * translate.php:
   - translating: sort languages for selectbox

   * scripts/sql_game_export.php (export_game):
   - bugfix: handle empty GamePlayers-list

   * tournaments/roundrobin/view_pools.php (build_pool_notes):
   - typo translation-text

2013-01-30 juga

   * include/game_functions.php ($MAP_ACTBY_SUBJECT;
       GameFinalizer.finish_game, ~.get_text_game_deleted, ~.get_text_game_result;
       NextGameOrder.build_status_games_query),
     specs/quick_suite.txt,
     admin_game.php:
   - add user-id and name of author of message in game-deletion and game-finalization message
   - bugfix for quick-status: convert integer next-game-order into enum for loading
     and sorting by manual given order

   * include/game_functions.php (NextGameOrder.build_status_games_query):
   - bugfix for quick-status: convert integer next-game-order into enum
     for loading and sorting by manual given order

   * robots.txt:
   - added Crawl-delay 5s

2013-01-13 juga

   * game.php, manage_sgf.php:
   - added notes with warning about SGF-download
   - fix download-URL

2013-01-12 juga

   * manage_sgf.php:
   - added bottom-link to download SGF WITHOUT any comments

   * waiting_room.php:
   - bugfix: wrong call-args to WaitingroomControl::build_waiting_room_query()

   * include/quick/quick_wroom.php (QuickHandlerWaitingroom.prepare),
     specs/quick_suite.txt:
   - bugfix: added correct default order for waiting-room
   - sync'ed suitable-filter with waiting-room behavior by adding my-waiting-games
     with filter_suitable=2, and by filtering out own waiting-games for all and suitable filter

2013-01-11 juga

   * manage_sgf.php:
   - added "normal" SGF-download bottom-links to ease reviewing

   * include/game_sgf_control.php (GameSgfControl.prepare_verify_game_sgf):
   - bugfix: verify of SGFs with handicap-setup failed, so treat handicap-stones like shape-setup

   * include/game_sgf_control.php (GameSgfControl. delete_game_sgf, ~.save_game_sgf,
       ~.verify_game_sgf, ~.count_cache_game_sgfs, ~.delete_cache_game_sgfs_count),
     include/cache_globals.php (CACHE_GRP_GAMESGF_COUNT, $ARR_CACHE_GROUP_NAMES,
       $ARR_CACHE_GROUP_CLEANUP),
     include/config.php ($DGS_CACHE_GROUPS),
     specs/caching.txt, game.php:
   - use caching to count attached-SGFs on game-page
     - invalidate cache on changing 'AttachedSgf'-game-flags indicator,
       that is on saving or deleting SGF

   * include/game_sgf_control.php (GameSgfControl.delete_game_sgf, ~.save_game_sgf),
     include/db/games.php (Games.parseFlags, ~.buildFlags, ~.update_game_flags),
     include/quick/quick_game_info.php (QuickHandlerGameInfo.convertGameFlags),
     include/gui_functions.php (echo_image_game_sgf),
     include/globals.php (GAMEFLAGS_ATTACHED_SGF),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     specs/db/dragon-ddl.sql, specs/db/table-Games.txt, specs/quick_suite.txt,
     game.php, show_games.php, site_map.php:
   - added new column and search-filter for all game-lists for games with attached-SGFs
     - maintain Games.Flags 'AttachedSgf' as indicator if game has attached SGF
     - optimize game-page checking for attached-SGFs only if according game-flag set
     - added special link in site-map to search for all finished games
       with attached SGFs without game-list end-date-restriction
     - refactored printing SGF-icon into echo_image_game_sgf()-function
-----------
-- added 'AttachedSgf'-flag as indicator for the presence of SGFs for game
ALTER TABLE Games
   MODIFY Flags set('Ko','HiddenMsg','AdmResult','TGDetached','AttachedSgf') NOT NULL default '' ;
-----------

2013-01-10 juga

   * include/game_sgf_control.php,
     game.php, manage_sgf.php:
   - allow attaching SGFs also to running game

   * include/game_functions.php (GameHelper._delete_base_game_tables):
   - delete GameSgf-table-entries on game-deletion

   * include/sgf_parser.php (sgf_parser, sgf_parse_node, sgf_parse_args, get_handicap_pattern;
       class SgfParser, ~.might_be_sgf),
     include/game_sgf_control.php (GameSgfControl, ~.save_game_sgf, ~.verify_game_sgf,
       ~.prepare_verify_game_sgf),
     include/board.php (class Board, ~.init_board, ~.load_from_db),
     manage_sgf.php:
   - parses, checks SGF and verifies that game from parsed SGF matches game in database
     - parses and check for correct SGF-format
     - verify for same board-size, handicap, komi, shape-setup and first 25 moves
   - added translatable texts for parsing SGF

   * include/quick/quick_game_notes.php (class QuickHandlerGameNotes, ~.canHandle,
       ~.parseURL, ~.prepare, ~.process),
     include/quick/quick_game_info.php (class QuickHandlerGameInfo, ~.prepare,
       ~.process, ~.fill_game_info),
     include/quick/quick_suite.php (QuickSuite.getQuickHandler),
     specs/quick_suite.txt:
   - added quick-commands for game-object: save_notes, hide_notes, show_notes
   - refactored game-notes 'get_notes'-commands into separate class QuickHandlerGameNotes
   - quick-game-info: return full game-notes instead of length-stripped notes

   * include/game_sgf_control.php (GameSgfControl.delete_game_sgf, ~.save_game_sgf),
     include/globals.php (CSS_VERSION),
     skins/dragon/screen.css,
     manage_sgf.php:
   - ask for confirmation on removing own SGF
   - added 'Refresh'-bottom-link to refresh page
   - bugfix: check if file-read was successful for saving SGF

   * include/db/game_sgf.php (class GameSgf, ~.to_string, ~.persist, ~.insert, ~.update, ~.delete,
       ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_game_sgf, ~.load_game_sgfs,
       ~.count_game_sgfs),
     include/game_sgf_control.php (class GameSgfControl, ~.delete_game_sgf, ~.save_game_sgf,
       ~.download_game_sgf),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     scripts/updates/other_changes_1_0_15_to_1_0_16.txt,
     specs/db/table-Games.txt, specs/db/dragon-ddl.sql,
     game.php, manage_sgf.php, people.php, site_map.php:
   - allow to upload SGFs for finished games
     - added manage-sgf page to add, update, delete and download SGFs
     - allow one SGF per game and user
     - max. upload file-size 100KB
     - game-page shows new sgf-icon if there are attached SGFs to download
     - show 'Attach SGF' bottom-link on game-page for finished games
-----------
-- added table to store attached SGFs for games
CREATE TABLE GameSgf (
  gid int NOT NULL,
  uid int NOT NULL,
  Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
  SgfData blob NOT NULL,
  PRIMARY KEY (gid,uid)
) ENGINE=MyISAM ;
-----------

   * include/game_functions.php (MultiPlayerGame.update_players_end_mpgame;
       GameHelper.delete_running_game, ~.update_players_end_game):
   - bugfix: deleting a multi-player-game changed wrongly Players.Running/Finished-fields

2013-01-07 juga

   * include/message_functions.php (game_info_table),
     include/utilities.php (append_unique),
     scripts/updates/database_changes_1_0_15_to_1_0_16.mysql,
     site_map.php, waiting_room.php:
   - changed waiting-room view:
     - added view 'My waiting games' only showing own waiting games
     - replaced boolean-filter for suitable with selectbox with All/Suitable/Mine
     - All and Suitable waiting games do not show own games
     - removed 'New Game' bottom-link
     - adjusted tooltip-text 'Out of range' to the more general 'Restricted'
     - changed existing bottom-link translation-texts without losing translations
-----------
-- change existing translation-text for waiting-room without losing translations
UPDATE TranslationTexts
   SET Text='All waiting games', Translatable='Y', Updated=NOW()
   WHERE Text='Show all waiting games' LIMIT 1 ;
UPDATE TranslationTexts
   SET Text='Suitable waiting games', Translatable='Y', Updated=NOW()
   WHERE Text='Show suitable games only' LIMIT 1 ;
-----------

   * include/classlib_profile.php (class SearchProfile):
   - bugfix: initializing overwrite-args ignoring leading and trailing separators

2013-01-05 juga

   * include/std_functions.php (check_for_observers):
   - bugfix: add 'show observers'-link if game is observed by myself

   * snapshot.php:
   - added notes how to create tarballs of code-snapshot, translation-data, images

   * admin_faq.php:
   - bugfixes:
     - keep expand-all-view on editing entry and coming back to list,
       and on all other list-actions
     - expand all categories on moving entry into new category up or down

   * include/quick_common.php (DATE_FMT_TZ),
     rss/status.php (rss_open),
     wap/status.php:
   - RSS-status: added RSS-channel-tag 'lastBuildDate'
   - RSS-status: added human-readable built-date in channel-text
   - WAP-status: added human-readable built-date in card-item

   * include/message_functions.php (message_info_table),
     game.php, game_comments.php, message.php,
     message_thread.php (echo_message_row):
   - show game-board for <igoban>-tag for
     - private messages on send message, preview message, view message,
       view message-thread
     - game-move messages on preview move-message for submitting move,
       view game, view game-comments

   * include/std_functions.php (LOGIN_NO_QUOTA_HIT, is_logged_in),
     admin_faq.php, translate.php:
   - don't decrease quota on FAQ-editing & translating

   * list_bulletins.php:
   - bugfix bulletin-list: view-bulletin may only be allowed to specific user

   * people.php:
   - comment out older developers
   - cleanup: avoid translations for unimportant texts describing origin of icons

   * translate.php:
   - bugfix for previous removed const TRANSL_ALLOW_FILTER:
     interpreted if-expression with TRANSL_ALLOW_FILTER in wrong way

   * include/sgf_builder.php (SgfBuilder.formatPlayerName):
   - changed node-text for multi-player-game: added current rating of moving
     player as well besides user-id to know who has moved

2012-12-18 juga

   * scripts/translation_consistency.php (check_consistency_faq_refs, fix_faq_reference,
       replace_faq_ref_text_callback):
   - added check to correct references to FAQ correcting category of moved entries
     to new categories

2012-12-17 juga

   * include/table_columns.php (Table.set_default_sort):
   - bugfix: sort-order reverse was not possible any more

   * scripts/translation_consistency.php:
   - bugfix: correct check on missing TranslationFoundInGroup reporting wrong-text-id

2012-12-16 juga

   * users.php:
   - bugfix: enforce NO_HIDE for table-column Rating for show user-rating-pos

   * game_players.php (build_form_start_game),
     game.php:
   - corrected wrong msg-icon for 'Send message' for MPG-message

   * include/table_columns.php (Table.set_default_sort, ~.set_sort, ~.make_sort_images,
       ~.current_order_string):
   - bugfix: ensure, that used db-fields/aliases for sorting are only used for visible table-column

//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer