DIR : /home/kozerus/public_html/go/dgs0/scripts/updates/ChangeLog_1_0_15
/home/kozerus/public_html/go/dgs0/scripts/updates
==================================================================
Release [2012-06-08] - DGS 1.0.15 - CVS-tag [release-1_0_15-20120608] on branch [DGS-stable-20120610]
# CVS-tag branch started on [start-branch-1_0_15]
# History:
2012-06-10: release 1.0.15 (from CVS-HEAD)
2012-12-06: final bugfixes for release DGS 1.0.15 (from CVS-HEAD)
2012-12-06: started branch [DGS-stable-20120610]
2012-12-16: bug fix update (by JUG) as DGS 1.0.15.a
2012-12-17: bug fix update (by JUG) as DGS 1.0.15.b
2012-12-18: bug fix update (by JUG) as DGS 1.0.15.c
2013-01-06: bug fix update (by JUG) as DGS 1.0.15.d
2013-01-11: changes + bug fixes update (by JUG) as DGS 1.0.15.e
2013-03-08: changes + bug fixes update (by JUG) as DGS 1.0.15.f
2013-04-10: bug fixes update (by JUG) as DGS 1.0.15.g
2013-04-16: changes update (by JUG) as DGS 1.0.15.h
2013-04-19: bug fix update (by JUG) as DGS 1.0.15.i
2013-05-26: bug fix (by JUG) as DGS 1.0.15.j
2013-06-12: bug fix (by JUG) as DGS 1.0.15.k
==================================================================
### ----- release-1_0_15-20120608 -----
2013-06-12 juga
* include/quick/quick_game.php (QuickHandlerGame.process):
- bugfix for quick-game-handler: agree-parameter check on 1st players scoring
2013-05-26 juga
* game_comments.php:
- bugfix: show hidden game-comments in multi-player-games only for comment-author
2013-04-19 juga
* include/quick/quick_game.php (QuickHandlerGame.prepare):
- bugfix: correct to_move on resign-if-not-your-turn, was possible to resign for opponent
2013-04-16 juga
* site_map.php, waiting_room.php:
- re-added 'New Game' bottom-link in waiting-room
2013-04-10 juga
* include/quick/quick_game_notes.php (QuickHandlerGameNotes.prepare):
- bugfix: use default non-hidden for Hidden-state on saving game-notes
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-20 juga
* 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
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
* sync'ed in changes from CVS-HEAD since release 1.0.15.d (06-Jan-2013 .. 11-Jan-2013):
- allow to attach SGFs with game-reviews for running and finished games
- added save/delete/download of attached SGF, one SGF per game and user allowed
- check uploaded SGF to match DGS-game record and attributes on:
board-size, handicap, komi, shape-/handicap-setup and first 25 moves
- extended game-lists with search for games with attached SGF
- 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
- added quick-commands for game-object: save_notes, hide_notes, show_notes
- bugfix: deleting a multi-player-game changed wrongly Players.Running/Finished-fields
- bugfix: add 'show observers'-link if game is observed by myself
- bugfix: initializing overwrite-args of search-profile ignoring leading and trailing separators
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
2013-01-05 juga
* 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
2012-12-06 juga
* include/std_functions.php (echo_dragon_top_bar),
bookmark.php:
- added my-running-multi-player-games in topbars bookmark-selectbox
* include/filter.php (SearchFilter.add_filter;
Filter.get_url_parts, ~.build_generic_input_text_elem, ~.build_generic_selectbox_elem,
~.build_generic_checkbox_elem),
include/filterlib_gametype.php (FilterGameType.get_input_element):
- bugfix:
- prefix-using SearchFilter did not work for GameType-filter checkbox
with unprefixed form-field-name
- check if filters form-field-name needs a prefix
* include/db/bulletin.php (Bulletin.allow_bulletin_user_edit),
include/globals.php (CSS_VERSION),
list_bulletins.php, skins/dragon/screen.css:
- bugfix: always allow bulletin-edit for own bulletins
- bulletin: add Fresh-status-view (NEW+PENDING) in status-filter for admin
* admin_faq.php (show_preview):
- bugfixes for FAQ-editor:
- enforce expand-all on term-search
- mark search-term in preview of entry-edit
* halfhourly_cron.php:
- increase wordwrap for email-notification message: 47 -> 70
2012-12-03 juga
* statistics.php (show_stats_default):
- bugfix: pass all URL-args from parent statistics-page to image-generating page (size, no_cache)
* specs/caching.txt, INSTALL:
- documented full specs for all kind of caching in use for DGS
2012-11-25 juga
* features/lib_votes.php (Feature.allow_edit),
features/edit_feature.php:
- bugfix: keep old-status to check on preview
- bugfix: features on LIVE-status can not be edited anymore
- bugfix: show feature-points-added also if not super-admin
* include/game_functions.php (GameHelper.extend_query_with_game_prio),
scripts/game_consistency.php,
confirm.php (jump_to_next_game):
- bugfix: use table-alias GPRIO for GamesPriority-table to avoid ambiguity
with GamePlayers-table-alias GP
* show_games.php:
- bugfix: add column for GamesPriority for MY-running-games
2012-11-24 juga
* include/std_functions.php (send_email):
- bugfix: replace CRLF in message-body with LF only
2012-11-19 juga
* include/game_functions.php (GameSetupChecker.check_wroom_count):
- limiting waiting-room entries a user can offer also for starting MPGs
even if wanting to invite-only-MPG
- skip count-check if WROOM_MAX_ENTRIES <= 0
2012-11-16 juga
* include/game_functions.php (WROOM_MAX_ENTRIES, GameSetupChecker.check_wroom_count),
new_game.php (handle_add_game):
- limiting waiting-room entries a user can offer, max. 4 entries, not restricted for MPGs
- see http://www.dragongoserver.net/features/vote_feature.php?fid=2
2012-11-12 juga
* include/gamelist_control.php (GameListControl.build_games_query),
include/quick/quick_game_info.php (QuickHandlerGameInfo.prepare),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
show_games.php:
- added GamesPriority for my running games, disabled table-column per default
- quick-suite: add GamesPriority for running game only if specified in WITH-option
-----------
-- disable added GamesPriority for my running games per default
UPDATE ConfigPages
SET ColumnsGamesRunningUser2 = ColumnsGamesRunningUser2 & ~0x8000 ;
-----------
2012-10-26 juga
* forum/class_forum_read.php (ForumRead.load_global_new),
forum/post.php (recalc_thread_lastpost),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/forums.txt:
- bugfix:
- Posts.Lastchanged must not be updated if all thread-posts are hidden,
which happened in moderated forums editing shown-posts of single-post-threads
- recalculate forum-NEW-marks if Players.ForumReadNew < 0, used for data-fix
-----------
-- fix Posts.Lastchanged for single-post threads that once were hidden due to rejecting or re-editing
UPDATE Posts
SET Lastchanged=Time WHERE ID=Thread_ID AND PostsInThread=1 AND PosIndex >'' AND Time <> Lastchanged ;
-- trigger recalc of NEW forum-entries
UPDATE Players
SET ForumReadNew=-1 WHERE ForumReadNew > 0 ;
-----------
* include/game_functions.php (GameHelper.load_cache_game_row):
- do not refresh cache with Games-row if read from cache, but let it expire first instead
2012-10-23 juga
* tournaments/include/tournament_pool_classes.php (PoolViewer.make_single_pool_table),
include/table_columns.php (Table.make_add_column_form):
- bugfix: call_user_func_array() requires calling vars-by-ref notation for PHP5.3
* include/connect2mysql.php:
- bugfix: replaced getmicrotime() with direct call microtime() to avoid include
* include/graph.php (TTF_PATH):
- cleared default font-path for TTFs
* include/std_functions.php (send_email, split_url),
halfhourly_cron.php:
- disable error-log of sending-mail
- cleanup: replaced deprecated PHP-function split() by preg_split()
* scripts/data_export.php:
- cleanup: replaced deprecated PHP-function ereg_replace() by preg_replace()
* scripts/experiments/analyze-slow_log.php:
- cleanup: replaced deprecated PHP-function mysql_escape_string() by mysql_real_escape_string()
2012-10-21 juga
* edit_profile.php (parse_edit_form):
- bugfix: change of night-time was not possible
* include/dgs_cache.php (ApcCache.cache_info),
scripts/dgs_cache_admin.php (build_list_cache_config):
- bugfix: don't count global misses for APC-cache
* include/gamelist_control.php (GameListControl.build_games_query):
- bugfix: score for multi-player-game was wrongly shown
2012-10-18 juga
* include/board.php (Board.load_from_db):
- bugfix: fix checking of moves on loading shape-game; was from optimize-attempt
2012-10-16 juga
* include/game_functions.php (GameHelper.load_cache_game_notes):
- no cache-refresh on loading game-notes
2012-10-15 juga
* scripts/dgs_cache_admin.php (build_list_cache_config):
- bugfix: no cache-info for NONE-cache-type
- bugfix: show APC-cache-misses only for SUM
2012-10-14 juga
* include/dgs_cache.php (AbstractCache.cache_info; ApcCache.cache_info, ~.getHitInfo; FileCache.cache_info),
scripts/dgs_cache_admin.php (build_list_cache_config):
- dgs-cache-admin: added hits & misses in cache-group-overview for each cache-group if available
- FileCache: hits & misses are stored in array as APC-cache-entry 'CacheGroups'
- ApcCache: hits & misses can be retrieved in apc_cache_info('user'), but only with global misses-count
* include/db/bulletin.php (Bulletin.load_cache_bulletins):
- store only Bulletin-original-row-data in cache instead of full Bulletin including row
in sub-User-object
* include/dgs_cache.php (ApcCache.cache_cleanup, ~.cache_info, ~.saveHit, ~.get_cache_entries;
FileCache.cache_fetch),
scripts/dgs_cache_admin.php:
- dgs-cache-admin:
- always use full-list for cache-group-overview
- added cache-group-specific cache-cleanup and cache-clear for APC-cache
- retrieved size and count of cache-entries for APC-cache
- store 'CacheGroups'-entry in APC-cache saving cache-hits & cache-misses for FileCache
* scripts/dgs_cache_admin.php (build_list_cache_config):
- dgs-cache-admin: added cache-count/size for cache-types and totals
* include/cache_globals.php ($ARR_CACHE_GROUP_CLEANUP),
include/classlib_userconfig.php,
include/message_functions.php,
tournaments/include/tournament_cache.php:
- adjusted cache-expire-time and cleanup-expire-time for various cache-groups:
config-pages 1h -> 1d, folders 30min -> 1d,
tourney-director/tladder-props/properties/rules/round 1h -> 1d
* include/dgs_cache.php (AbstractCache.cache_info; ApcCache.cache_info; FileCache.cache_info),
scripts/dgs_cache_admin.php (build_list_cache_config):
- dgs-cache-admin: added total size and entry-count for cache-group overview
* include/dgs_cache.php (FileCache.cache_cleanup; DgsCache.cleanup_cache):
- bugfix: calculate group-expire for cache-cleanup is absolute not relative
- optimize: check filemtime() on file only if needed
* scripts/dgs_cache_admin.php (build_file_list_cache_group, _compare_cache_files_mtime):
- sort cache-file-entries by last-changed-time
* daily_cron.php:
- bugfix: fix bad name of include-file
* include/std_functions.php (send_message, delete_cache_message_list),
include/message_functions.php (update_count_message_new),
edit_folders.php:
- bugfix: refactored MessageListBuilder::delete_cache_message_list()
into 'include/std_functions.php' to avoid circular dependency in send_message()
* scripts/dgs_cache_admin.php (build_file_list_cache_group):
- show table-row for listing cache-group-content
* include/table_columns.php (class Table, ~.build_cell_rownum):
- added RowNumDiff to control ROW_NUM-column start-value for Table
2012-10-13 juga
* features/list_features.php:
- bugfix: reduce new-feature-count for main-menu by amount of changed neutral-votes
* forum/forum_functions.php (ForumPost.copy_post):
- bugfix: edit existing post showed empty forum-messagebox
* tournaments/show_tournament_log.php:
- bugfix: FOUND-ROWS() is not configured
* include/cache_globals.php (CACHE_GRP_TLADDER, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
include/config.php ($DGS_CACHE_GROUPS),
tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder, ~.change_user_rank,
~.add_user_to_ladder, ~.delete_ladder, ~.seed_ladder, ~.check_participant_registrations,
~.load_cache_tournament_ladder, ~.determine_ladder_rank, ~.delete_cache_tournament_ladder),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_ladder_standings),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_game_end),
tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php, tournaments/ladder/view.php,
tournaments/cron_tournaments.php, tournaments/view_tournament.php:
- use caching to load tournament-ladder
- invalidate cache on user-joining-tournament, adding-user, removing-user, ladder-challenge,
processing-game-end, delete-ladder, seed-ladder, edit-ladder-props, change-user-rank by T-director
- cache with expire of 1 hour not invalidated on processing-rank-period, crowning-ladder-king
- optimizing cache-clearing for processing tournament-game-end per tournament instead of per T-game
- optimizing db-queries loading tournament-ladder-rank using ladder-iterator for tournament-standings
by refactoring loading ladder-iterator
* tournaments/include/tournament_ladder.php (TournamentLadder.check_participant_registrations):
- uncommented/fixed auto-removing of user without fixing TLadder.Rank for remaining ladder-entries
* tournaments/include/tournament_utils.php (TournamentUtils.get_tournament_ladder_notes_user_removed),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.build_notes_props),
tournaments/include/tournament_ladder.php (TournamentLadder.notify_user_removal),
tournaments/ladder/admin.php, tournaments/ladder/retreat.php:
- cleanup: refactored TournamentLadder::get_notes_user_removed() into
TournamentUtils::get_tournament_ladder_notes_user_removed() to avoid dependency of TournamentLadder
in TournamentLadderProps-class
* include/dgs_cache.php (AbstractCache.cache_store_group):
- keeping cache-group-entries unique
* include/std_classes.php (ListIterator.hasIndex, ~.rescanIndex):
- bugfix for rescanning index for ListIterator
* tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_challenge_range,
~.determine_ladder_rating_pos),
tournaments/include/tournament_ladder.php (TournamentLadder.find_ladder_rating_pos)
tournaments/ladder/challenge.php:
- cleanup: optimized db-queries to determine theoretical position of user in ladder sorted by rating,
refactored TournamentLadderProps.find_ladder_rating_pos() into TLP.determine_ladder_rating_pos()
and TournamentLadder::find_ladder_rating_pos()
2012-10-12 juga
* quick_do.php, quick_status.php:
- added HTTP-header Access-Control-Allow-Origin to allow cross-site-scripting
* tournaments/list_tournaments.php:
- show tournament-notes only on demand
2012-10-09 juga
* include/cache_globals.php (CACHE_GRP_TGAMES, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
include/std_classes.php (ListIterator.to_string, ~.getItemRows, ~.rescanIndex),
include/config.php ($DGS_CACHE_GROUPS),
tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_wait,
~.delete_cache_tournament_games),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_game_end,
~.start_tournament_round_games),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_games),
tournaments/ladder/challenge.php, tournaments/ladder/view.php,
tournaments/roundrobin/view_pools.php, tournaments/game_admin.php:
- use caching to load tournament-games
- invalidate cache on setting tourney-game-end by admin, processing game-end by cron,
starting tourney-game for round-robin-tourney, starting ladder-challenge
* include/wroom_control.php (WaitingroomOffer.calculate_offer_settings),
include/gui_functions.php (echo_image_game_players):
- add more info about free-slots in waiting-room on MPG-icon tooltip
* include/message_functions.php (update_count_message_new; MessageListBuilder.message_list_body,
~.message_list_query, ~.load_cache_message_list, ~.delete_cache_message_list),
include/cache_globals.php (CACHE_GRP_MSGLIST, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
include/config.php ($DGS_CACHE_GROUPS),
include/std_functions.php (send_message),
edit_folders.php, list_messages.php, search_messages.php, status.php:
- use caching to load message-list for status-page
- invalidate cache on sending-message, change-msg-folder, change-status-folders
- refactored message_list_query() into MessageListBuilder-class
- added link to show all messages if there are more than 20 messages shown on status-page
2012-10-08 juga
* include/db/bulletin.php (class Bulletin, ~.new_from_row, ~.mark_bulletin_as_read,
~.update_count_bulletin_new, ~.update_bulletin_count_players, ~.load_cache_bulletins,
~.delete_cache_bulletins, ~.update_cache_bulletins_global),
include/cache_globals.php (CACHE_GRP_BULLETINS),
include/config.php ($DGS_CACHE_GROUPS),
rss/status.php, quick_status.php, status.php:
- use caching to load bulletins
- invalidate cache on changed global-bulletin/changed-bulletin-count for user
- check if global bulletin changed-time needs refresh of user-specific loading of bulletins
* include/quick/quick_bulletin.php (QuickHandlerBulletin.prepare):
- bugfix: only return bulletins on SHOW-status
2012-10-07 juga
* include/std_functions.php, features/list_features.php, features/list_votes.php,
forum/admin_show_forumlog.php, forum/read.php, forum/search.php,
tournaments/list_directors.php, tournaments/list_news.php,
tournaments/list_participants.php, tournaments/list_tournaments.php,
admin_show_errorlog.php, game_players.php, gameinfo.php, list_bulletins.php,
list_contacts.php, list_shapes.php, list_surveys.php, message_thread.php, opponents.php,
search_messages.php, show_games.php, status.php, users.php, waiting_room.php:
- cleanup: remove old debugging-code with $DEBUG/$DEBUG_SQL
* include/game_functions.php (GameAddTime.add_time_opponent;
GameHelper.delete_running_game, ~.load_cache_status_games, ~.delete_cache_status_games;
FairKomiNegotiation.save_komi;
GameFinalizer.finish_game;
NextGameOrder.persist_game_priority),
include/cache_globals.php (CACHE_GRP_GAMELIST_STATUS, $ARR_CACHE_GROUP_NAMES, $ARR_CACHE_GROUP_CLEANUP),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
include/config.php ($DGS_CACHE_GROUPS),
include/make_game.php (create_game),
status.php (load_games_to_move),
confirm.php, quick_play.php:
- use caching to load games-list for status-page,
- invalidate cache on game-move, game-end, add-time, game-prio-change, create-game, start-FK-game,
delete-game, change-next-game-order
- no cache-invalidation on start/end-vacation, clock-tick, timeleft-fix-script, opp-name-change,
opp-rating-change, user nighttime-change, opp-last-access-change
as 1 minute is a short enough expire-period to bear not showing the latest updates
- caching for 1 min if players last-access-time was within one minute thereby saving cache-space
- check if db-query changed by comparing stored checksum stored in cache-value
- re-arranged clearing QST-cache
2012-10-05 juga
* include/dgs_cache.php (class FileCache, ~.set_unlink_expired, ~.set_read_expired, ~.cache_fetch,
~.cache_cleanup, ~.cache_clear, ~.get_cache_files, ~.get_cache_file;
AbstractCache.cache_clear;
ApcCache.cache_clear;
DgsCache.get_cache, ~.cleanup_cache)
scripts/dgs_cache_admin.php (build_list_cache_config, build_cleanup_cycle, build_timeunit,
build_file_list_cache_group, build_view_cache_entry),
include/cache_globals.php ($ARR_CACHE_GROUP_NAMES),
skins/dragon/screen.css, scripts/index.php, scripts/apc_cache_info.php:
- added DGS-Cache Manager to administrate dgs-caching for APC- and File-cache
- list all cache-groups with group-name, cache-type and cleanup cycle
- clear APC-cache and File-cache
- cleanup expired entries of File-Cache
- list of single cache-group with all its cache-file-entries
- view single cache-file-entry with extra-info like size, last-change and last-access time
- delete single cache-file-entry
- allow to fetch entry from file-cache without deleting file on error or if expired for admin-mode
- allow to bypass maintenance-mode for admin-mode
* scripts/apc.php:
- added APC-manager script (not live-version)
2012-10-04 juga
* forum/forum_functions.php (display_posts_pending_approval;
DisplayForum.forum_message_box, ~.draw_post;
ForumThread.load_posts, ~.load_revision_history;
class ForumPost, ~.copy_post, ~.allow_post_reply, ~.format_flags, ~.to_string, ~.new_from_row,
~.allow_post_read_only),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
include/error_codes.php (ErrorCode.init),
forum/post.php (post_message),
specs/db/dragon-ddl.sql, specs/db/table-Posts.txt, specs/forums.txt,
forum/list.php, forum/read.php:
- forum: added read-only thread
- only admin executives can create read-only on starting a new thread
- reply only allowed by admin executives
- show '[Read-Only]' behind subject for thread-posts-view on thread-post and for thread-list
-----------
-- add read-only flag for threads
ALTER TABLE Posts
ADD Flags tinyint unsigned NOT NULL default '0' AFTER Thread_ID ;
-----------
* include/cache_globals.php (CACHE_GRP_FORUM, CACHE_GRP_FORUM_NAMES),
include/config.php ($DGS_CACHE_GROUPS),
forum/forum_functions.php (Forum.fix_forum, ~.load_cache_forum, ~.delete_cache_forum,
~.load_cache_forum_names, ~.delete_cache_forum_names),
forum/post.php (post_message, approve_post, hide_post, show_post, recalc_forum_lastpost),
forum/admin.php, forum/list.php, forum/read.php, forum/search.php,
scripts/forum_consistency.php:
- use caching to load single forum and forum-names, invalidate cache on Forums-table-changes
- cleanup: don't load thread/forum-reads for writing new-topic
2012-10-03 juga
* include/game_functions.php (GameAddTime.add_time_opponent;
GameHelper._delete_base_game_tables; ~.load_cache_game_row, ~.delete_cache_game_row,
~.load_cache_game_notes;
FairKomiNegotiation.save_komi;
GameFinalizer.finish_game),
include/cache_globals.php (CACHE_GRP_GAMES, $ARR_CACHE_GROUP_CLEANUP),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
include/quick/quick_game_info.php (QuickHandlerGameInfo.prepare),
include/sgf_builder.php (SgfBuilder.load_player_game_notes)
include/config.php ($DGS_CACHE_GROUPS),
include/make_game.php (create_game),
tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder),
scripts/fix_games_timeleft.php (update_games_timeoutdate),
admin_game.php, confirm.php, game.php, quick_play.php:
- use caching to load Games-row for viewing game-page, invalidate cache on Games-table update;
except for starting/ending-vacation and Players-update (name, rating, vacation) the delay of 10mins
is accepted as cache-delete would require additional queries to find affected game-IDs
- renamed GameHelper::load_game_notes() -> ::load_cache_game_notes()
2012-09-30 juga
* include/cache_globals.php, include/connect2mysql.php, include/gui_functions.php,
include/quick_common.php, include/std_functions.php, scripts/data_export.php,
scripts/translation_consistency.php, tournaments/cron_tournaments.php,
rss/status.php, wap/status.php, admin_faq.php, clock_tick.php, daily_cron.php,
halfhourly_cron.php, list_contacts.php, opponents.php, quick_status.php,
ratinggraph.php, ratingpng.php, sgf.php, statisticspng.php, status.php, users.php:
- use consts SECS_PER_MIN/HOUR/DAY instead of numbers where possible
* include/dgs_cache.php (AbstractCache.cache_cleanup; ApcCache.cache_cleanup; FileCache.cache_cleanup;
DgsCache.get_cache, ~.cleanup_cache),
include/cache_globals.php (SECS_PER_MIN, SECS_PER_HOUR, SECS_PER_DAY, $ARR_CACHE_GROUP_CLEANUP),
include/globals.php (CLOCK_CRON_HOUR),
include/quick_common.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/dragon-data.sql,
cron_chained.php,
hourly_cron.php,
INSTALL:
- added hourly-cron to cleanup expired cache-entries
- configure cleanup for expired cache-entries;
cache-groups not listed uses expire-time of CACHE_GRP_DEFAULT
- moved consts SECS_PER_MIN/HOUR/DAY from 'include/quick_common.php' into 'include/cache_globals.php'
-----------
-- added hourly-cron to cleanup expired cache-entries
INSERT INTO Clock SET ID=208,Lastchanged=0 ;
-----------
* tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_news),
include/game_functions.php (GameHelper.load_game_notes, ~.update_game_notes),
include/classlib_userconfig.php (ConfigBoard.load_config_board),
include/classlib_profile.php (Profile.load_profiles),
include/message_functions.php (load_cache_folders),
include/std_functions.php (check_for_observers),
include/cache_globals.php:
- added cache-size-estimations for cache-groups
- changed cache-expire-times for cache-groups:
- TournamentNews: 1h -> 1d
- GameNotes: 10min -> 30min
- ConfigBoard: 1h -> 1d
- Profile: 1h -> 1d
- Folders: 30min -> 1h
- Observers: 10min -> 30min
* include/dgs_cache.php (class DgsCache, ~.get_cache_type, ~.get_cache_impl, ~.get_cache),
include/config.php (DGS_CACHE, DBG_CACHE, $DGS_CACHE_GROUPS):
- extended server-config:
- added mapping for all cache-groups to specific cache-type (NONE, APC, FILE)
with fallback to default cache-type (DGS_CACHE) if not set
- added DBG_CACHE for cache-debugging
* tournaments/include/tournament_result.php (TournamentResult.insert, ~.update, ~.delete,
~.delete_cache_tournament_result),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_results),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_results),
include/cache_globals.php (CACHE_GRP_TRESULT):
- use caching to load TournamentResult, invalidate cache on tournament-result-insert/update/delete
- show default-sort for tournament-result-table
* include/dgs_cache.php (AbstractCache.cache_fetch, ~.cache_store, ~.cache_store_array,
~.cache_delete, ~.cache_store_group, ~.cache_delete_group;
class ApcCache;
class FileCache.build_cache_filename, ~.cache_fetch, ~.cache_store, ~.cache_delete;
class DgsCache.get_cache, ~.fetch, ~.store, ~.delete, ~.delete_group),
include/cache_globals.php (MAX_CACHE_GRP):
- use subdirs for FileCache to prevent too many files in one dir
- create all potential subdirs for caching in FileCache-constructor
- changed signature of cache-methods to allow passing cache-group to file-cache
- disable caching on server maintenance mode
2012-09-29 juga
* include/dgs_cache.php (AbstractCache.is_persistent_cache;
ApcCache.is_persistent_cache;
class FileCache, ~.build_cache_filename, ~.is_persistent_cache, ~.cache_fetch, ~.cache_store,
~.cache_delete;
class DgsCache, ~.is_persistent_cache),
include/cache_globals.php (CACHE_TYPE_FILE):
- added FileCache-implementation as alternative to shared-mem-cache and for very large data-blocks
by adapting Sabre_Cache_Filesystem taken from http://www.rooftopsolutions.nl/blog/107
- added is_persistent_cache()-func for cache-specific-implementation
* include/make_translationfiles.php (generate_translation_texts),
include/std_functions.php (write_to_file, read_from_file),
include/connect2mysql.php (mysql_addslashes),
include/utilities.php (REMOVED array_combine/dir_slashe/filepat2preg),
scripts/update_translation_pages.php (REMOVED glob):
- cleanup: removed alternative but now dead code because functions had been added in PHP 5
as DGS requires PHP 5 anwyay
* include/dgs_cache.php (class DgsCache, ~.allow_group_caching, ~.is_persistent, ~.get_cache,
~.fetch, ~.store, ~.delete, ~.delete_group),
include/cache_globals.php (CACHE_TYPE_APC, CACHE_GRP_...),
include/config.php (DBG_QUERY, $DGS_CACHE_ENABLE_GROUPS)
include/board.php, include/cache_clock.php, include/classlib_profile.php,
include/classlib_userconfig.php, include/game_functions.php,
include/message_functions.php, include/std_functions.php,
tournaments/include/tournament.php, tournaments/include/tournament_cache.php,
tournaments/include/tournament_director.php, tournaments/include/tournament_ladder_props.php,
tournaments/include/tournament_news.php, tournaments/include/tournament_participant.php,
tournaments/include/tournament_properties.php, tournaments/include/tournament_round.php,
tournaments/include/tournament_rules.php,
daily_cron.php, edit_folders.php, statistics.php:
- enabled caching only for selected elements defined by CACHE_GRP_... configured
by global-config $DGS_CACHE_ENABLE_GROUPS to control what items are allowed to cache
- use collective-group for caching games-statistics
- config: formally added DBG_QUERY to global-config to write db-queries to error-log
* include/dgs_cache.php (DgsCache.is_persistent),
include/board.php, include/cache_clock.php,
include/classlib_userconfig.php, include/message_functions.php,
tournaments/include/tournament_cache.php:
- better name: renamed DgsCache::is_shared_enabled() into ::is_persistent()
* tournaments/include/tournament_helper.php (TournamentHelper.get_tournament_rating),
tournaments/include/tournament_participant.php (class TournamentParticipant),
tournaments/ladder/challenge.php:
- cleanup: combined TournamentParticipant::load_tournament_rating()
into TournamentHelper::get_tournament_rating()
* tournaments/include/tournament_participant.php (TournamentParticipant.assert_tournament_participant,
~.insert, ~.update, ~.delete, ~.build_query_sql, ~.isTournamentParticipant,
~.load_tournament_participant_by_id, ~.load_tournament_participant,
~.check_rated_tournament_participants, ~.update_game_end_stats, ~.sync_tournament_registeredTP,
~.delete_tournament_participant, ~.delete_cache_tournament_participant_count,
~.delete_cache_tournament_participant)
tournaments/include/tournament_cache.php (TournamentCache.count_cache_tournament_participants,
~.load_cache_tournament_participant, ~.is_cache_tournament_participant),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end,
~.process_tournament_round_robin_game_end, ~.get_tournament_rating),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.getLinkTextRegistration),
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration),
tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_PAIR),
tournaments/include/tournament_ladder.php (TournamentLadder.add_user_to_ladder),
tournaments/ladder/admin.php,
tournaments/roundrobin/create_pools.php, tournaments/roundrobin/define_pools.php,
tournaments/edit_participant.php, tournaments/list_news.php, tournaments/list_participants.php,
tournaments/register.php, tournaments/view_news.php, tournaments/view_tournament.php:
- added caching for TournamentParticipant-table:
- use shared-mem caching to count status of TournamentParticipants of tournament,
invalidate cache on tournament-participant-insert/update/delete
- use shared-mem caching to load TournamentParticipant,
invalidate cache on tournament-participant-insert/update/delete
- refactored TournamentParticipant::getLinkTextRegistration() into TournamentGuiHelper
to avoid cache-usage in TournamentParticipant-db-class
- splitted TournamentParticipant::load_tournament_participant() into
::load_tournament_participant_by_id() to load TP by rid for clearer semantics and
easier caching of loading TP by user-id
- use shared-mem caching to check if user is TournamentParticipant
- cleanup: renamed TournamentParticipant::update_tournament_registeredTP()
to ::sync_tournament_registeredTP() to avoid ambiguity with Tournament::~
2012-09-28 juga
* tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_running_games,
~.calc_ticks_due_rematch_wait, ~.calc_rematch_wait_remaining_hours),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
tournaments/include/tournament_cache.php (class TournamentCache),
tournaments/ladder/view.php,
tournaments/cron_tournaments.php:
- cleanup: refactor TournamentCache->load_clock_ticks() using existing cached-func get_clock_ticks()
* include/dgs_cache.php (DgsCache.store, ~.delete_group):
- use 'GROUP_'-prefix for group-ID in cache
* tournaments/include/tournament_news.php (TournamentNews.insert, ~.update, ~.delete,
~.process_tournament_news_deleted, ~.delete_cache_tournament_news),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_news),
tournaments/view_tournament.php:
- use shared-mem caching to load TournamentNews for view-tournament-page,
invalidate cache on tournament-news-insert/update/delete
* include/game_functions.php (GameScore.draw_score_box),
include/std_functions.php (start_html, end_page),
include/globals.php (CSS_VERSION),
skins/dragon/print.css,
game.php:
- added CSS NoPrint-class to hide some disturbing elements for print-view
- use CSS_VERSION to auto-reload print.css
2012-09-27 juga
* tournaments/include/tournament_round.php (TournamentRound.insert, ~.update, ~.delete,
~.delete_tournament_round, ~.delete_cache_tournament_round),
tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkProperties,
~.checkPooling, ~.checkGamesStarted),
tournaments/include/tournament_helper.php (TournamentHelper.remove_tournament_round,
~.set_tournament_round),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_round),
tournaments/include/tournament_round_status.php (class TournamentRoundStatus),
tournaments/include/tournament_status.php (TournamentStatus._load_tround),
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_rounds.php, tournaments/roundrobin/view_pools.php,
tournaments/manage_tournament.php, tournaments/view_tournament.php:
- use shared-mem caching to load TournamentRound, invalidate cache on table-insert/update/delete
- TournamentHelper: renamed delete_tournament_round() to remove_tournament_round() to avoid ambiguity
* tournaments/include/tournament_rules.php (TournamentRules.update, ~.delete,
~.delete_cache_tournament_rules),
tournaments/include/tournament_helper.php (TournamentHelper.create_games_from_tournament_rules,
~.start_tournament_round_games, ~.determine_games_per_challenge),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_rules),
tournaments/ladder/challenge.php, tournaments/edit_rules.php,
tournaments/game_admin.php, tournaments/view_tournament.php,
admin_game.php:
- use shared-mem caching to load TournamentRules, invalidate cache on table-update/delete
* tournaments/include/tournament_properties.php (TournamentProperties.update, ~.delete,
~.delete_cache_tournament_properties),
tournaments/include/tournament_helper.php (TournamentHelper.create_games_from_tournament_rules,
~.start_tournament_round_games),
tournaments/include/tournament_cache.php (TournamentCache.load_cache_tournament_properties),
tournaments/include/tournament_ladder.php (TournamentLadder.add_user_to_ladder),
tournaments/include/tournament_status.php (TournamentStatus._load_tprops),
tournaments/ladder/admin.php, tournaments/ladder/challenge.php, tournaments/ladder/view.php,
tournaments/roundrobin/create_pools.php, tournaments/roundrobin/edit_pools.php,
tournaments/roundrobin/view_pools.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/register.php, tournaments/view_tournament.php:
- use shared-mem caching to load TournamentProperties, invalidate cache on table-update/delete
* tournaments/include/tournament_ladder_props.php (TournamentLadderProps.update, ~.delete,
~.delete_cache_tournament_ladder_props),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end,
~.process_rank_period),
tournaments/include/tournament_cache.php (class TournamentCache, ~.load_cache_tournament_ladder_props),
tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.checkProperties),
tournaments/include/tournament_ladder.php (TournamentLadder.add_user_to_ladder),
tournaments/ladder/admin.php, tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php,
tournaments/ladder/view.php, tournaments/view_tournament.php:
- use shared-mem caching to load TournamentLadderProps,
invalidate cache on table-update/delete
- replaced TournamentCache->load_tournament_ladder_props() by TournamentCache::load_cache_tournament_ladder_props()
* tournaments/include/tournament_director.php (TournamentDirector.insert, ~.update, ~.delete,
~.load_tournament_directors_flags, ~.delete_cache_tournament_director),
tournaments/include/tournament_cache.php (class TournamentCache, ~.is_cache_tournament_director),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.getTournamentRoleText),
tournaments/include/tournament_helper.php (TournamentHelper.allow_edit_tournaments):
- use shared-mem caching to check if user is tournament-director with optional flags,
invalidate cache on table-changes
- replaced TournamentCache->is_tournament_director() by TournamentCache::is_cache_tournament_director()
* tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.getTournamentRoleText),
tournaments/manage_tournament.php:
- cleanup to get rid of dependencies in persistence of 'tournament/include/tournament.php':
- refactored Tournament->allow_edit_tournaments() into static TournamentHelper::allow_edit_tournaments()
- refactored Tournament->getRoleText() into static TournamentGuiHelper::getTournamentRoleText()
* tournaments/include/tournament_helper.php (TournamentHelper.allow_edit_tournaments),
tournaments/include/tournament.php (class Tournament),
tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_news.php,
tournaments/edit_participant.php, tournaments/edit_properties.php, tournaments/edit_rules.php,
tournaments/edit_status.php, tournaments/edit_tournament.php, tournaments/game_admin.php,
tournaments/list_directors.php, tournaments/list_news.php, tournaments/list_participants.php,
tournaments/show_tournament_log.php, tournaments/view_news.php, tournaments/view_tournament.php,
tournaments/ladder/admin.php, tournaments/ladder/edit_props.php, tournaments/ladder/view.php,
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/roundrobin/view_pools.php,
edit_bulletin.php, gameinfo.php:
- cleanup to get rid of dependencies in persistence of 'tournament/include/tournament.php':
- refactored Tournament->allow_edit_tournaments() into static TournamentHelper::allow_edit_tournaments()
2012-09-26 juga
* tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkGamesStarted),
tournaments/include/tournament_round_status.php (class TournamentRoundStatus),
tournaments/include/tournament_status.php (class TournamentStatus),
include/gui_bulletin.php (GuiBulletin.build_view_bulletin),
tournaments/ladder/admin.php, tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php,
tournaments/ladder/retreat.php, tournaments/ladder/view.php,
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_rounds.php, tournaments/roundrobin/view_pools.php,
tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_news.php,
tournaments/edit_participant.php, tournaments/edit_properties.php, tournaments/edit_rules.php,
tournaments/edit_tournament.php, tournaments/game_admin.php, tournaments/list_directors.php,
tournaments/list_news.php, tournaments/list_participants.php, tournaments/manage_tournament.php,
tournaments/register.php, tournaments/show_tournament_log.php, tournaments/view_news.php,
tournaments/view_tournament.php,
admin_bulletin.php (parse_edit_form),
admin_game.php, edit_bulletin.php, game.php, gameinfo.php:
- use shared-mem caching to load tournament
* tournaments/include/tournament_ladder.php (TournamentLadder.update_incoming_challenges,
~.update_outgoing_challenges, ~.remove_user_from_ladder, ~.change_user_rank,
~.add_participant_to_ladder_bottom, ~.add_participant_to_ladder_by_rating,
~.add_participant_to_ladder_by_random, ~.fix_tournament_games_for_rejoin, ~.seed_ladder,
~.check_participant_registrations, ~.process_game_end),
tournaments/include/tournament_participant.php (TournamentParticipant.load_tournament_participants_registered,
~.load_registered_users_in_seedorder, ~.load_tournament_rating),
tournaments/include/tournament_pool.php (TournamentPool.delete_pools, ~.seed_pools,
~.add_missing_registered_users, ~.assign_pool),
tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_end,
~.update_tournament_game_wait),
tournaments/include/tournament_director.php (TournamentDirector.count_tournament_directors),
tournaments/include/tournament_round.php (TournamentRound.add_tournament_round),
include/db/survey_option.php (SurveyOption.update_aggregates_survey_options),
include/db/survey.php (Survey.update_user_count):
- cleanup: use table-name directly instead of reading it from global Entity-object
* tournaments/include/tournament.php (Tournament.update, ~.delete, ~.update_flags, ~.update_rounds,
~.update_tournament_registeredTP, ~.delete_cache_tournament):
- invalidate Tournament-cache-entry for update/delete on Tournament-table
* tournaments/include/tournament.php (Tournament.getRoleText, ~.allow_edit_tournaments):
- bugfix: TournamentCache-include is required, replaced global var with using TournamentCache::get_instance()
* tournaments/include/tournament_cache.php (TournamentCache.release_tournament_cron_lock,
~.set_tournament_cron_lock, ~.load_cache_tournament, ~.delete_cache_tournament),
tournaments/cron_tournaments.php:
- use shared-mem caching to load tournament, set and release tournament-lock for tournament-cron,
invalidate cache on release-lock
- replaced TournamentCache->load_tournament() with TournamentCache::load_cache_tournament()
using shared-mem-cache if available or else falling back to local run-cache for tournament-cron
* include/dgs_cache.php (DgsCache.fetch, ~.debug_result):
- bugfix: fix printing object-results
* tournaments/include/tournament.php (class Tournament, ~.build_query_sql, ~.new_from_row,
~.load_tournament, ~.load_tournaments),
tournaments/edit_tournament.php, tournaments/list_directors.php,
tournaments/manage_tournament.php:
- cleanup: refactor loading tournament-owner separately and not combined with loading tournament,
relying on user_reference()-caching to load owner-info
- bugfix: missed class-arg for user_reference()-call
* include/sgf_builder.php (SgfBuilder.load_trimmed_moves, ~.build_sgf_moves),
game_comments.php (load_game_comments_data):
- load game-moves and game-move-messages from shared-mem-cache without storing cache-data
* include/board.php (Board.load_from_db, ~.load_cache_game_moves, ~.load_cache_game_move_message,
~.delete_cache_game_move_messages, ~.fix_corrupted_move_table),
include/game_functions.php (GameHelper._delete_base_game_tables),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
confirm.php, quick_play.php:
- use shared-mem caching to load game-move-messages on game-page,
invalidate cache on adding or deleting MoveMessages-entries to save cache-space:
one move-list cache-entry can take up to 250KB for a game with many comments
- bugfix: don't cache game-moves without shared-mem-cache
* game.php:
- reverted bugfix: so do NOT download move-messages for eidogo-game-link
as eidogo has no login-cookies for downloading SGF from DGS
* include/game_functions.php ( GameAddTime.add_time_opponent;
GameHelper._delete_base_game_tables, ~.game_need_mark_dead),
include/board.php (Board.load_from_db, ~.load_cache_game_moves, ~.delete_cache_game_moves),
include/quick/quick_game.php (QuickHandlerGame.prepare, ~.process_cmd_play),
include/goban_handler_dgsgame.php (GobanHandlerDgsGame.load_board),
include/make_game.php (create_game),
scripts/fix_game_snapshot.php (fix_single_game, bulk_fix_missing_game_snapshots),
confirm.php, game.php, halfhourly_cron.php, quick_play.php:
- use shared-mem caching to load game-moves on game-page,
invalidate cache on adding or deleting Moves-entries to save cache-space:
one move-list cache-entry can take up to 250KB for a big finished game
- use different cache-TTL of 5min (instead of 10min default) for game-moves of finished game
- optimize-cleanup:
- don't load game-last-move-message on confirm-page and quick-game-handler
- refactored Board.load_from_db() using board-options with flags instead of bool-args
- game-page: change order on loading Moves-table (ID -> MoveNr)
because that uses index-sort instead of file-sort
- game-page: removed some unneccessary checks (shape/moves-count)
2012-09-25 juga
* include/classlib_profile.php (SearchProfile.handle_action;
Profile.save_profile, ~.delete_profile, ~.load_profile_by_id, ~.load_profiles,
~.delete_profile_cache, ~.delete_all_profiles),
templates.php (save_template, check_delete_template),
message.php, new_game.php:
- use shared-mem caching to load single non-template search-profile,
invalidate cache on saving/deleting profile
- cleanup: renamed Profile::load_profile() -> Profile::load_profile_by_id()
- cleanup: refactored object-method Profile::delete_all_profiles() to static-method
* include/message_functions.php (get_folders, load_cache_folders),
edit_folders.php:
- use shared-mem caching to load message-folders, invalidate cache on editing folders
2012-09-24 juga
* statistics.php (show_stats_default, load_cache_games_stats),
daily_cron.php:
- use shared-mem caching to load main game-/moves-statistics,
invalidate cache on updating statistics by daily-cron
- replaced sum-total-query by merging with main-query using "group-by WITH ROLLUP"
* donation_success.php, ratingpng.php, statisticspng.php, statratingspng.php:
- skip login-update of Players-table on follow-up-pages:
- donation-success-page
- sub-picture-pages: ratingpng.php, statisticspng.php, statratingspng.php
* include/std_functions.php (user_reference, load_cache_user_reference, delete_cache_user_reference),
edit_profile.php (handle_save_profile),
admin_users.php:
- use shared-mem caching to load user_reference,
invalidate cache on updating users Name or Handle by user or admin
* include/game_functions.php (GameHelper.load_game_notes, ~.update_game_notes),
include/quick/quick_game_info.php (QuickHandlerGameInfo.prepare),
include/sgf_builder.php (SgfBuilder.load_player_game_notes),
game.php:
- use shared-mem caching to load private-game-notes for players,
invalidate cache on updating game-notes
* include/std_functions.php (check_for_observers, toggle_observe_list, delete_all_observers),
include/game_functions.php (GameHelper._delete_base_game_tables):
- use shared-mem caching to load game-observers,
invalidate cache on toggling/deleting Observers for game
* include/dgs_cache.php (class AbstractCache, ~.cache_store_array, ~.cache_store_group, ~.cache_delete_group;
class ApcCache, ~.cache_store_array;
DgsCache.store, ~.delete, ~.delete_group):
- added handling for grouping of cache-entries
- added support for cache-bulk-store
- refactored CacheInterface-interface into AbstractCache-abstract class
with some basic implementations to handle cache-entry-groups
* include/std_functions.php (check_for_observers),
game.php:
- optimize: avoid double-checking for observers if logged-in-user or someone other is observing
- bugfix: don't check for observers for finished game
* include/cache_clock.php (CacheClock.load_clock_ticks, ~.load_cache_clocks, ~.delete_cache_clocks),
include/quick_common.php (SECS_PER_MIN),
clock_tick.php:
- use shared-mem caching to load Clocks-table,
invalidate cache on updating Clock-ticks in clock-tick-cron
2012-09-23 juga
* include/classlib_userconfig.php (ConfigBoard.update_all, ~.load_config_board, ~.delete_cache_config_board;
ConfigPages.load_cache_config_pages, ~.delete_cache_config_pages, ~.load_config),
edit_profile.php:
- use shared-mem caching to load ConfigBoard-table for user-id,
invalidate cache on updating ConfigBoard-table
- reduced cache-TTL for loading ConfigPages: 1d -> 1h
* include/classlib_userconfig.php (ConfigPages.load_config_pages, ~.load_cache_config_pages,
~.delete_cache_config_pages, ~._update_query, ~.toggle_forum_flags, ~.set_clear_forum_flags):
- use shared-mem caching to load ConfigPages-table for user-id,
invalidate cache on updating ConfigPages-table
* include/dgs_cache.php (DGS_CACHE, DBG_CACHE;
class ApcCache, ~.cache_fetch, ~.cache_store, ~.cache_delete;
interface CacheInterface, ~.cache_fetch, ~.cache_store, ~.cache_delete;
class DgsCache, ~.is_shared_enabled, ~.fetch, ~.store, ~.delete):
- added DGS-cache wrapper-class to support shared-memory cache
- added support to enable and disable DGS-cache allowing different implementations
- added cache-debugging with DBG_CACHE
- added support to use APC-based-cache
* scripts/index.php, scripts/apc_clear_cache.php:
- consolidated cache-admin scripts into cache-section, added APC-manager script
- apc_clear_cache-script: clear both cache-parts: op-code-cache & user-cache
* robots.txt:
- replaced "Disallow: /" blocking everything with Disallowing single directories and files,
tested with Google
* features/lib_votes.php (Feature.update_vote; FeatureVote.build_query_featurevote_list),
features/edit_feature.php:
- bugfix: fixed string-based order on feature-list myPoints to using numeric-based-order
- bugfix: jump to edit-feature of newly added new feature
2012-09-22 juga
* include/db/bulletin.php (Bulletin.allow_bulletin_user_view),
skins/dragon/screen.css, list_bulletins.php:
- bulletin-list: add ID-column with button to view single bulletin
if status allows to view (SHOW|ARCHIVE-status) or else show status without a link
* features/lib_votes.php (FeatureVote.insert_feature_neutral_votes),
include/table_columns.php (Table.make_table_form),
features/list_features.php (features_vote_neutral_extend_table_form, handle_vote_neutral):
- feature-list: added neutral bulk-vote on unvoted features
- added toggle-marks button to toggle selection
- allow neutral bulk-vote only if voting allowed and not restricted
- show neutral bulk-vote only on view for UNVOTED features on VOTE-status
* scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
images/wood1.png:
- removed unused image
2012-09-21 juga
* specs/caching.txt:
- started analysis for candidates for caching + requirements
* robots.txt:
- forgot to allow index.php
* include/connect2mysql.php (db_query):
- added debug-code to log execution-time of db-query in ms and user-id/handle if available,
enabled with DBG_QUERY>2
* include/time_functions.php (getmicrotime):
- fixed getmicrotime(): splitting microtime() and adding sec+ms is 2-3 times slower
than using microtime(true) directly returning the same
2012-09-20 juga
* include/globals.php (CSS_VERSION), skins/dragon/screen.css:
- use darker colors for feature-points
* include/page_functions.php (class HTMLPage, ~.set_meta_robots, ~.set_meta_keywords; class Page),
include/std_functions.php (DGS_DESCRIPTION, start_html),
robots.txt, sitemap.xml,
docs.php, faq.php, index.php, introduction.php, news.php, policy.php, rank_converter.php,
goodies/index.php:
- allow <meta>-tags with page-specific description, robots, keywords
- add sitemap and adjusted robots.txt with indexable pages for web-crawlers
- added meaningful content for meta-description/robots/keywords-directives for static pages:
index.php, introduction.php, rank_converter.php, faq.php, news.php,
policy.php, docs.php, goodies/index.php
* goodies/index.php, scripts/update_translation_pages.php,
skins/dragon/screen.css, docs.php:
- added link to goodies-page
- re-structured goodies-page to use standard DGS-layout
2012-09-19 juga
* include/game_functions.php (GameNotify.get_text_game_result):
- adjusted text for reject-win-by-timeout: making it clearer that it is an automatic action
* tournaments/edit_director.php:
- bugfix: remove double textarea_safe()
* include/std_functions.php (textarea_safe):
- bugfix: PHP-function htmlspecialchars-func in textarea_safe() performs a double-encoding
of already encoded HTML-entities, e.g. for UTF-8 chars, so we fix it by reverting the
double-encode of &#xx; to &#xx;
* include/message_functions.php (game_settings_form):
- bugfix: double-game must only be forbidden for ladder-tournament
* forum/forum_functions.php (class DisplayForum, ~.forum_start_table, ~.forum_end_table,
~.echo_links, ~.get_new_string; ForumThread.load_posts),
forum/read.php:
- forum thread-post-view: show 'first new' also in top-bar if there are some
* include/faq_functions.php (faq_item_html),
skins/dragon/screen.css, faq.php:
- allow view of single FAQ-question/answer with section-title
- show FAQ-question on detail-view with link to copy (but as normal text)
* include/message_functions.php (message_info_table):
- bugfix: on preview keep select-box-choice to move message into folder
* forum/forum_functions.php (DisplayForum.draw_post):
- bugfix: do not show post-number in forum-search
* include/error_functions.php (DgsErrors.add_error),
include/error_codes.php (ErrorCode.init),
include/std_functions.php (is_logged_in),
error.php (handle_error),
scripts/check_block_ip.php, scripts/check_players_email.php, scripts/clear_datastore.php,
scripts/convert_from_old_forum.php, scripts/convert_posindex.php, scripts/data_export.php,
scripts/data_report.php, scripts/fix_game_snapshot.php, scripts/fix_games_timeleft.php,
scripts/forum_consistency.php, scripts/game_consistency.php, scripts/generate_translation_texts.php,
scripts/index.php, scripts/mailtest.php, scripts/message_consistency.php, scripts/player_consistency.php,
scripts/server-info.php, scripts/start_frozen_clocks.php, scripts/tournament_consistency.php,
scripts/translation_consistency.php, scripts/update_translation_pages.php, scripts/voting_consistency.php,
scripts/updates/fix_game_comments-1_0_15.php, scripts/updates/fix_message_thread-1_0_15.php,
features/edit_feature.php, features/list_features.php, features/list_votes.php, features/vote_feature.php,
forum/admin.php, forum/admin_show_forumlog.php, forum/index.php, forum/list.php, forum/read.php,
forum/search.php,
tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_news.php,
tournaments/edit_participant.php, tournaments/edit_properties.php, tournaments/edit_rules.php,
tournaments/edit_status.php, tournaments/edit_tournament.php, tournaments/game_admin.php,
tournaments/list_directors.php, tournaments/list_news.php, tournaments/list_participants.php,
tournaments/list_tournaments.php, tournaments/manage_tournament.php, tournaments/register.php,
tournaments/show_tournament_log.php, tournaments/view_news.php, tournaments/view_tournament.php,
tournaments/wizard.php, tournaments/ladder/admin.php, tournaments/ladder/challenge.php,
tournaments/ladder/edit_props.php, tournaments/ladder/retreat.php, tournaments/ladder/view.php,
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/roundrobin/view_pools.php,
admin.php, admin_admins.php, admin_bulletin.php, admin_faq.php, admin_game.php, admin_password.php,
admin_rating.php, admin_show_adminlog.php, admin_show_errorlog.php, admin_show_faqlog.php,
admin_show_users.php, admin_survey.php, admin_translators.php, admin_users.php, bookmark.php,
edit_bio.php, edit_bulletin.php, edit_contact.php, edit_folders.php, edit_password.php, edit_picture.php,
edit_profile.php, edit_rating.php, edit_shape.php, edit_vacation.php, game_calc.php, game_editor.php,
game_players.php, gameinfo.php, goban_editor.php, index.php, list_bulletins.php, list_contacts.php,
list_messages.php, list_shapes.php, list_surveys.php, login.php, message.php, message_thread.php,
new_game.php, old_goban_editor.php, opponents.php, ratinggraph.php, search_messages.php, show_games.php,
status.php, templates.php, translate.php, userinfo.php, users.php, view_bulletin.php, view_shape.php,
view_survey.php, waiting_room.php:
- jump to login-page if not logged-in for web-site pages
- redirecting and passing on "current" page through error()-call with special handling
for new error-code 'login_if_not_logged_in'
- show error-code on login-page indicating problem to user
- not done for
- pages that users can not directly view like follow-up-pages on form-actions,
game-comments or game-rematch-handling-page
- not done for pages that generate images
- not done for quick-suite or similar pages like quick-status, quick-play
- on fever-vault (user-web-access quota exceeded) log out and jump to login-page
with fever_vault-error
* include/std_functions.php (echo_dragon_top_bar):
- added Players.ID of logged-in user as tooltip on Handle top-bar at right-side
* features/lib_votes.php (Feature.build_query_featurevote_list, ~.formatPointsText),
features/vote_feature.php:
- overworked feature-voting:
- bugfix: fixed SQL-query for my-points value in feature-vote-result-list
- bugfix: allow to change or revoke points if remaining points-quota is 0
- always show current vote, put lastvoted-date directly above current-vote and vote-select-box
- minor changes
2012-09-18 juga
* features/vote_feature.php:
- bugfix: correct var $is_numeric() to func-call without '$'
* include/quick/quick_game.php (QuickHandlerGame.process_cmd_play):
- bugfix: wrong reference to $my_id -> $this->my_id
* features/lib_votes.php (Feature.update_vote; FeatureVote.update_feature_vote, ~.getFeaturePointsText),
include/classlib_userquota.php (UserQuota.set_feature_points),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
features/vote_feature.php:
- bugfix: don't add negative voted points to available user-quota feature-points
- show positive/negative points in blue/red-color on feature-voting-view
- show last-voted only if voting allowed, which is not when user has no remaining feature-points
- cleanup: renamed FeatureVote.update_vote() -> update_feature_vote() to avoid name-clash
-----------
-- IMPORTANT NOTE: run this FIX ONLY if you have used the features-feature before on your server!!
-- [FIX] fix negative voted points on UserQuota
CREATE TEMPORARY TABLE fix_uq (
uid int NOT NULL,
sumP smallint NOT NULL
) SELECT Voter_ID AS uid, SUM(ABS(Points)) AS sumP FROM FeatureVote GROUP BY Voter_ID ;
SELECT * FROM fix_uq AS FIX WHERE FIX.sumP > 0 ;
SELECT UQ.uid, UQ.FeaturePoints FROM UserQuota AS UQ INNER JOIN fix_uq AS FIX ON FIX.uid=UQ.uid WHERE FIX.sumP > 0 ;
-- [FIX] NOTE: 29 is the initial start quota of 25 + 98 (=4*20 +x) days since live-server upgrade on 10-Jun-2012
UPDATE UserQuota AS UQ INNER JOIN fix_uq AS FIX ON FIX.uid=UQ.uid
SET UQ.FeaturePoints= 29 - FIX.sumP WHERE FIX.sumP > 0;
-----------
* features/lib_votes.php (FeatureVote.build_query_featurevote_list),
features/list_votes.php:
- add "my points" to feature-vote-results list
* features/vote_feature.php:
- feature-voting: show 0 (neutral) as default for voting points, only in edit-mode
- show "--- (no vote)" for Lastvoted-date for features on VOTE-status as voted-indicator
2012-09-17 juga
* features/lib_votes.php (Feature.build_feature_notes_size),
specs/db/table-Voting.txt:
- increase wordwrap for feature-description: 80 -> 100
- adjusted feature-size: S (1->3d), M (3->7d), L (7->14d)
* features/lib_votes.php (Feature.build_feature_notes, ~.build_feature_notes_size),
features/edit_feature.php, features/list_features.php, features/list_votes.php:
- added notes about feature-size
- use wordwrap for feature-description: 80 chars
* features/edit_feature.php:
- bugfix: increase/decrease new-feature-count only for feature-status VOTE
* tournaments/include/tournament_ladder.php (TournamentLadder.load_tournament_ladder_by_user_rating,
~.add_user_to_ladder, ~.add_participant_to_ladder_bottom, ~.add_participant_to_ladder_by_rating,
~.add_participant_to_ladder_by_random, ~._add_participant_to_ladder_with_new_rank, ~.seed_ladder,
~.build_tournament_ladder_iterator),
tournaments/include/tournament_ladder_props.php (class TournamentLadderProps, ~.setUserJoinOrder,
~.fillEntityData, ~.build_notes_props, ~.new_from_row, ~.getUserJoinOrderText),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_ladder_standings),
tournaments/include/tournament_properties.php (TournamentProperties.build_seed_order),
tournaments/include/tournament_globals.php (TLP_JOINORDER_...),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/admin.php, tournaments/ladder/view.php,
tournaments/manage_tournament.php, tournaments/view_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, specs/db/dragon-ddl.sql:
- added option user-join-order to control position where user is entering ladder-tournament
- REGTIME = add new user at ladder-bottom
- RATING = add new user at ladder-position below user with same rating (current rating or
tournament-rating according to RatingUseMode)
- RANDOM = add new user at random ladder-position
- add column in tournament-ladder-view with tournament-rating
- show if no change on seed-ladder
-----------
-- determine ladder-position for new user
ALTER TABLE TournamentLadderProps
ADD UserJoinOrder enum('REGTIME','RATING','RANDOM') NOT NULL default 'REGTIME' AFTER GameEndTimeoutLoss ;
-----------
* tournaments/include/tournament_cache.php (TournamentCache.get_instance),
tournaments/include/tournament_helper.php (class TournamentHelper):
- use TournamentCache::get_instance() to get cache-singleton
2012-09-16 juga
* tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_create_tournament_director,
~.log_change_tournament_director, ~.log_remove_tournament_director),
tournaments/include/tournament_director.php (TournamentDirector.formatFlags),
tournaments/include/tournament.php (Tournament.allow_edit_directors),
tournaments/include/tournament_log.php (TLOG_ACT_REMOVE),
tournaments/edit_director.php:
- write tournament-log for adding, updating, removing tournament-director
* include/make_translationfiles.php (translations_query), translate.php:
- added search for min. length on original translation-text
- cleanup: removed const TRANSL_ALLOW_FILTER
* tournaments/include/tournament_helper.php (TournamentHelper.build_tournament_join_restrictions),
tournaments/list_tournaments.php (build_restrictions),
skins/dragon/screen.css:
- tournament-list:
- add "Restrictions" to show suitable tournaments for joining.
check T-status, max-games-check, user-rating, T-rating-use-mode, T-rating-range,
T-max-participants, T-register-end-time, user min. finished/rated games, T-scope
- show tournament-registration-status column also for all tournaments view
2012-09-15 juga
* tournaments/include/tournament_log_helper.php (TournamentLogHelper.log_tournament_game_end,
~.log_tournament_game_add_time),
tournaments/include/tournament_globals.php (TLOG_TYPE_CRON, CHECK_TLOG_TYPES),
tournaments/include/tournament_games.php (TournamentGames.formatFlags),
tournaments/include/tournament_log.php (TLOG_ACT_ADDTIME),
skins/dragon/screen.css, specs/db/table-Tournaments.txt,
tournaments/game_admin.php:
- write tournament-log for tournament-game-admin actions:
- set tournament-game-score
- add time for tournament-game
* tournaments/show_tournament_log.php (format_tlog_message):
- replace special references in message with links to:
TG#id (tournament-game-admin), GID#id (game-page), UID#id (user-info-page)
- use short-form + rank for user + action-user, show tid after user, add tournament-link on tid
* tournaments/include/tournament_log_helper.php (class TournamentLogHelper, ~.log_create_tournament,
~.log_change_tournament_status, ~.log_change_tournament_round_status, ~.log_tournament_lock),
tournaments/include/tournament_log.php (class Tournamentlog, ~.setType),
tournaments/include/tournament.php (Tournament.formatFlags, ~.allow_edit_tournaments),
tournaments/include/tournament_globals.php (TLOG_TYPE_...),
tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder._createTournament),
tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin._createTournament),
skins/dragon/screen.css, specs/db/table-Tournaments.txt,
tournaments/edit_lock.php (parse_edit_form), tournaments/edit_status.php,
tournaments/roundrobin/edit_round_status.php:
- write tournament-log for actions:
- create tournament
- change tournament-lock-flags/note
- change tournament-status
- change tournament-round-status
* tournaments/include/tournament_round_status.php (class TournamentRoundStatus):
- bugfix: wrong declared object-attribute
* tournaments/include/tournament_log.php (class TournamentLog, ~.to_string, ~.persist, ~.insert,
~.update, ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_tournament_logs),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, scripts/data_export.php,
specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
tournaments/manage_tournament.php, tournaments/show_tournament_log.php,
admin.php:
- added tournament-log and log-viewer to log actions on tournaments
- allow admins to view log of all tournaments
- allow directors and owners to view log only of their tournaments
- introduced for more transparency on who did what
-----------
-- added tournament-log to log actions on tournaments
CREATE TABLE Tournamentlog (
ID int NOT NULL auto_increment,
tid int NOT NULL,
uid int NOT NULL,
Date datetime NOT NULL default '0000-00-00 00:00:00',
Type char(2) NOT NULL,
Object varchar(16) NOT NULL default 'T',
Action varchar(16) NOT NULL,
actuid int NOT NULL default '0',
Message text NOT NULL,
PRIMARY KEY (ID),
KEY tid (tid)
) ENGINE=MyISAM ;
-----------
2012-09-13 juga
* tournaments/include/tournament_ladder.php (TournamentLadder.add_participant_to_ladder,
~.seed_ladder, ~.build_rank_diff),
js/common.js (buildRankDiff),
specs/db/table-Tournaments.txt:
- init TournamentLadder.PeriodRank/HistoryRank with 0 instead of StartRank,
show them as empty '---'
2012-09-12 juga
* tournaments/include/tournament_games.php (TournamentGames.isScoreStatus, ~.getScoreForUser),
tournaments/include/tournament_pool_classes.php (PoolTables.fill_games),
tournaments/include/tournament_rules.php (TournamentRules.getJigoBehaviourText),
tournaments/game_admin.php (parse_edit_form, draw_game_end),
admin_game.php, gameinfo.php:
- tournament-game-admin:
- added warning about jigo-restrictions on setting game-score
- added checkbox to allow setting game-score violating jigo-restrictions
- show error if jigo-restrictions are violated by score
- show game and tournament-game score and if they differ
- bugfix: check detached-flag as TournamentGames.Score has only meaning if not "detached"
* tournaments/view_tournament.php:
- extend tournament-status for user in tournament-info:
- show user-result-state for round-robin-tournament (rank + pool + next-round icon)
- show tournament-participants game-count (finished, won, lost)
* rss/status.php (MONITOR_RSS_HANDLES):
- add monitoring-code to write RSS-cache-info to Apache error-log
* tournaments/game_admin.php (draw_game_end):
- show more defailed and condensed tournament-game-info and game-info
- show if user is authorised to end-game or add-time
* forum/forum_functions.php (class DisplayForum, ~.set_threadpost_view, ~.draw_post, ~.draw_overview,
~.build_threadpostview_headlines, ~.create_navigation_tree;
class ForumPost, ~.to_string),
include/classlib_userconfig.php (class ConfigPages, ~.set_clear_forum_flags),
specs/forums.txt, forum/read.php:
- forum thread-post-view:
- added post-number in order of post-creation behind post-date to tree-overview and post-list
- added view-toggle to switch between: tree-view, flat-new-first, flat-old-first
- omit next/prev-answer navigation-icons in flat-view
- flatten post-view for flat-view omitting indent shown for tree-view
- added ConfigPages.ForumFlags to store view-mode
2012-09-11 juga
* tournaments/list_tournaments.php:
- tournament-list: do not show tournaments with ADM|DEL-status for non-admins at start,
but allow to filter on these status
* edit_profile.php (handle_save_profile):
- bugfix: save user-profile in browser-settings stored in cookie
* include/faq_functions.php, include/game_functions.php, include/gui_functions.php,
include/message_functions.php, include/shape_control.php,
tournaments/include/tournament.php, tournaments/include/tournament_gui_helper.php,
tournaments/include/tournament_helper.php, tournaments/include/tournament_ladder.php,
tournaments/include/tournament_ladder_props.php, tournaments/include/tournament_limits.php,
tournaments/include/tournament_participant.php, tournaments/include/tournament_pool.php,
tournaments/include/tournament_pool_classes.php, tournaments/include/tournament_properties.php,
tournaments/include/tournament_round.php, tournaments/include/tournament_round_status.php,
tournaments/include/tournament_rules.php, tournaments/include/tournament_status.php,
tournaments/include/tournament_utils.php, tournaments/include/types/private_ladder.php,
tournaments/include/types/public_ladder.php,
features/edit_feature.php, features/list_features.php, features/list_votes.php,
forum/admin.php,
tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_news.php,
tournaments/edit_participant.php, tournaments/edit_properties.php, tournaments/edit_rules.php,
tournaments/edit_status.php, tournaments/edit_tournament.php, tournaments/game_admin.php,
tournaments/ladder/admin.php, tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php,
tournaments/ladder/retreat.php, tournaments/ladder/view.php, tournaments/list_directors.php,
tournaments/list_news.php, tournaments/list_participants.php, tournaments/list_tournaments.php,
tournaments/manage_tournament.php, tournaments/register.php, 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/roundrobin/view_pools.php,
tournaments/view_news.php, tournaments/view_tournament.php,
admin_bulletin.php, admin_game.php, admin_rating.php, admin_survey.php, edit_bulletin.php,
edit_shape.php, faq.php, game.php, game_players.php, gameinfo.php, goban_editor.php,
list_bulletins.php, list_shapes.php, list_surveys.php, message.php, message_thread.php,
new_game.php, people.php, show_games.php, site_map.php, templates.php, userinfo.php,
view_shape.php, waiting_room.php, translate.php:
- cleanup:
- consolidated T_()-translation-texts using less alternate texts with '#label'-suffix,
reduced by ca. 650 translations
- removed the '#label'-context when the context is clear by reading the text to translate
- added '#label'-context were unclear
2012-09-10 juga
* tournaments/include/tournament_news.php (TournamentNews.build_tournament_news),
include/globals.php (CSS_VERSION),
tournaments/edit_news.php (parse_edit_form),
skins/dragon/screen.css:
- show flags of tournament-news, show flag-comment for editing T-news
* tournaments/include/tournament_pool_classes.php (class PoolGame, ~.get_user_col_map, ~.fill_games,
~.calc_pool_summary, ~.calc_pool_games_count;
class PoolViewer, ~.init_pool_table, ~.make_pool_table, ~.make_single_pool_table, ~.echo_pool_table),
tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules,
~.determineJigoBehaviour, ~.create_tournament_games, ~.prepare_create_game_row,
~.getHandicaptypeText, ~.convert_trule_handicaptype_to_stdhtype),
tournaments/include/tournament_helper.php (TournamentHelper.create_games_from_tournament_rules,
~.determine_games_per_challenge, ~.start_tournament_round_games),
tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_games,
~.load_tournament_pools, ~.check_pools),
tournaments/include/tournament_games.php (TournamentGames.get_ordered_uids),
tournaments/include/tournament_utils.php (TournamentUtils.calc_pool_games),
include/message_functions.php (game_settings_form),
specs/db/table-Tournaments.txt,
tournaments/edit_rules.php (parse_edit_form),
tournaments/ladder/challenge.php,
tournaments/roundrobin/create_pools.php,
tournaments/roundrobin/define_pools.php (calc_suggestion, make_suggestions_table),
tournaments/roundrobin/edit_pairing.php,
tournaments/roundrobin/edit_pools.php,
tournaments/roundrobin/view_pools.php:
- added support for tournament DOUBLE-handicap-types with two games per user-pair
- allow DOUBLE-games for round-robin-tournaments, forbid for ladder-tournament
- extended view-pool game-result-matrix for DOUBLE-games
- PAIR: create DOUBLE-game for DOUBLE-handicap-type
- PAIR: check restart and continuation of stopped pairing
- bugfix: set TournamentGames.Challenger/Defender_rid on starting games
- refactorings, renaming methods, bugfixes and smaller changes
* include/std_classes.php (class ListIterator, ~.sortListIteratorCustom, ~.sortListIterator,
~._compare_items_numeric, ~._compare_items_string, ~._compare_items_string_nocase):
- added sorting for ListIterator on known row-fields with sort-flags to support numerical,
case-sensitive and case-insensitive string sort
* include/gamelist_control.php (GameListControl.build_games_query),
show_games.php:
- bugfix: show TG-challenge-role only for USER-finished/running, not for ALL-view
2012-09-09 juga
* tournaments/edit_rules.php (parse_edit_form):
- to edit tournament-rules use GameSetupChecker to verify and highlight errorneous
fields of game-settings-form
* tournaments/include/tournament_participant.php (TournamentParticipant.load_tournament_rating),
tournaments/ladder/challenge.php (add_form_user_info):
- show tournament-rating on ladder-challenge-page if RatingUseMode is configured to copy-rating
- show text for ladder-rank as description in users-table of ladder-challenge
* tournaments/roundrobin/edit_pools.php (pools_edit_col_actions, pools_unassigned_extend_table_form):
- added tooltips for pool-form to mark-user (checkbox) and assign pool (input-box)
2012-09-08 juga
* tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_GameSetup,
~.create_tournament_game, ~.prepare_create_game_row),
tournaments/include/tournament_helper.php (TournamentHelper.create_game_from_tournament_rules,
~.start_tournament_round_games, ~.create_pairing_game),
include/message_functions.php (game_info_table),
tournaments/ladder/challenge.php (show_game_info):
- bugfixes and cleanup for setup of tournament-game:
- fix wrong color for challenger-WHITE-handicap-type by set TournamentRules.TourneyType
for preparing game-row for game-info
- set correct GameSetup.uid for BLACK/WHITE-handicaptype fixing correct rematch from game-info
- use Handicaptype for subtype instead of Color in tournament-game-info on ladder-challenge
- use correct casting on TournamentRules.AdjKomi: int -> float
* tournaments/include/tournament.php (Tournament.build_query_sql, ~.load_tournament, ~.load_tournaments),
tournaments/include/tournament_cache.php,
tournaments/edit_tournament.php, tournaments/list_directors.php,
tournaments/list_tournaments.php, tournaments/manage_tournament.php:
- removed owner from tournament-list as T-director and not owner should be main-contact
- cleanup: don't force owner-data-load if owner-Handle already available
* tournaments/include/tournament_pool_classes.php (PoolViewer.make_pool_table),
tournaments/roundrobin/view_pools.php:
- round-robin-tournament: added link to my-pool-table
* admin_survey.php:
- add default <opt>-tag if survey-options-field empty to know format
* tournaments/include/tournament_ladder.php (TournamentLadder.build_linked_running_games,
~.remove_user_from_ladder, ~.add_user_to_ladder, ~.fix_tournament_games_for_rejoin,
~._process_game_end, ~.notify_user_removal, ~.process_user_absence, ~.get_notes_user_removed),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.check_properties,
~.build_notes_props, ~.fill_ladder_running_games, ~.calc_game_end_action),
tournaments/include/tournament_games.php (TournamentGames.formatFlags,
~.find_undetached_running_games, ~.getFlagsText, ~.buildStatusFilterArray),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
tournaments/include/tournament_globals.php (TG_FLAG_GAME_DETACHED),
include/quick/quick_game_info.php (QuickHandlerGameInfo.convertGameFlags),
include/gamelist_control.php (GameListControl.build_games_query),
include/db/games.php (Games.parseFlags, ~.buildFlags),
include/globals.php (GAMEFLAGS_TG_DETACHED),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/dragon-ddl.sql,
specs/db/table-Games.txt, specs/db/table-Tournaments.txt, skins/dragon/screen.css,
tournaments/ladder/admin.php (add_form_edit_user),
tournaments/ladder/retreat.php (build_retreat_notes),
tournaments/game_admin.php,
admin_game.php, game.php, gameinfo.php, show_games.php:
- overwork user-removal from ladder-tournament:
- always fully remove user from ladder including tourney-user-registration
- "detach" running games from tournament: set detach-flag, make game unrated, set SCORE-status
- no ladder-change on detached tournament-games on game-end-processing
- fix re-joining user with unprocessed detached tournament-games
- put more details in notification and notes about user-removal
- notify opponents in active running tournament-games with removed-user
- show detached-tournament-game flag on game-/game-info-/tourney-game-admin-page
- show detached games in ladder-view in red-color and without rank: [#x] -> [#]
- added link to running/finished tournament-games
- show tournament-game-role for ladder-tournament: Challenger or Defender
- tourney games-list: show only active non-finished tournament-games as default
- adjusted texts
-----------
-- added flag to store detached-tournament-game
ALTER TABLE Games
MODIFY Flags SET('Ko','HiddenMsg','AdmResult','TGDetached') NOT NULL default '' ;
-----------
* tournaments/include/tournament_globals.php (TLADDER_MAX_CHALLENGES):
- reduced max ladder challenges-out: 200 -> 50
* include/gamelist_control.php (GameListControl.build_games_query),
include/config.php, opponents.php:
- removed server-config ALLOW_SQL_UNION assuming UNION is allowed
with requirement of at least mysql 5.0
* tournaments/ladder/view.php:
- show last-access within one hour as '0h' instead of ''
* tournaments/register.php:
- bugfix: used wrong var for bulletin-new-reset after TP-update
* game.php:
- bugfix: download move-messages as well for eidogo-game-link
* specs/tournaments.txt:
- started docs/specs for tournament (specs from 2009)
2012-09-07 juga
* show_games.php:
- bugfix: SEARCHing on ALL-finished/running games switched to MY-view, corrected 'uid'-parameter
2012-09-06 juga
* include/gui_functions.php (echo_off_time),
tournaments/ladder/challenge.php:
- show vacation-icon for users on tournament-ladder-challenge
* tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_absent_users),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
admin_users.php, edit_vacation.php:
- cleanup: removed not-needed Players.UseVacation for tournament-ladder user-absence-tracking
- bugfix: check Players.LastQuickAccess for tournament-ladder user-absence-checking
-----------
-- cleanup: removed not needed field for tournament-ladder user-absence-tracking
ALTER TABLE Players
DROP COLUMN UseVacation ;
-----------
2012-09-03 juga
* game.php:
- added magnifying-glass-icon with link to EidoGo.com loading SGF from DGS
to browse game with JavaScript
-----------
# added icon for eidogo (magnifying glass)
copy /images/eidogo.gif
-----------
* include/std_functions.php (echo_dragon_top_bar):
- removed link on user-id
* include/std_functions.php (start_html),
include/globals.php (CSS_VERSION):
- use timestamp on screen.css to force autoload on changes
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/dragon-ddl.sql, admin_faq.php:
- simplified FAQ-editor:
- added view: Show only categories, Expand all categories, Expand only one category
- added way to expand and collapse all categories to prevent loading all FAQ-entries
- added some keys for FAQ/Intro/Links for editing
-----------
-- added some keys for FAQ/Intro/Links for editing
ALTER TABLE FAQ
ADD KEY Parent (Parent),
ADD KEY Level (Level) ;
ALTER TABLE Links
ADD KEY Parent (Parent),
ADD KEY Level (Level) ;
ALTER TABLE Intro
ADD KEY Parent (Parent),
ADD KEY Level (Level) ;
# added view to expand/collapse tree-overview
copy /images/expand.gif
copy /images/collapse.gif
-----------
2012-09-02 juga
* include/std_functions.php ($html_code, $html_safe_preg):
- added markup <_http://...> to allow link opening in extra window,
same for <_(news|ftp)://...>
* game.php:
- allow toggle-observe also for players
* include/std_functions.php (make_menu):
- allow bottom-links with absolute (<0) or balanced (>0) number of links per line
* waiting_room.php:
- bugfix: waiting-room info for joining was broken
2012-09-01 juga
* include/make_translationfiles.php (translations_query), translate.php:
- bugfix: show next/prev-page again for paginating, handled show_rows in the wrong way
- added found-rows in table-head with entries to translate
* include/std_functions.php (start_page):
- bugfix: show quota-hits left as VaultCnt-1 because you got booted on the last one
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql:
- replace varchars to get fixed-size tables: ConfigPages, Folders, Forums, IpStats,
TranslationGroups, TranslationLanguages, TranslationPages, TournamentExtension,
TournamentLadderProps, TournamentProperties, TournamentRound
-----------
-- replace varchars to get fixed-size tables
ALTER TABLE ConfigPages
MODIFY StatusFolders char(40) NOT NULL default '' ;
ALTER TABLE Folders
MODIFY Name char(40) NOT NULL,
MODIFY BGColor char(8) NOT NULL default 'f7f5e3FF',
MODIFY FGColor char(6) NOT NULL default '000000' ;
ALTER TABLE Forums
MODIFY Name char(40) NOT NULL default '',
MODIFY Description char(128) NOT NULL default '',
MODIFY SortOrder tinyint unsigned NOT NULL default '0' ;
ALTER TABLE IpStats
MODIFY IP char(16) NOT NULL ;
ALTER TABLE TranslationGroups
MODIFY Groupname char(32) NOT NULL ;
ALTER TABLE TranslationLanguages
MODIFY Language char(32) NOT NULL,
MODIFY Name char(32) NOT NULL ;
ALTER TABLE TranslationPages
MODIFY Page char(64) NOT NULL ;
ALTER TABLE TournamentExtension
MODIFY ChangedBy char(54) NOT NULL default '' ;
ALTER TABLE TournamentLadderProps
MODIFY ChangedBy char(54) NOT NULL default '' ;
ALTER TABLE TournamentProperties
MODIFY ChangedBy char(54) NOT NULL default '' ;
ALTER TABLE TournamentRound
MODIFY ChangedBy char(54) NOT NULL default '' ;
-----------
* labels.rdf:
- fix PHP-warnings noticed by E_STRICT:
added empty "labels.rdf", see http://www.java-samples.com/showtutorial.php?tutorialid=1584
* include/connect2mysql.php (mysql_single_fetch),
include/coords.php (get_hoshi_coords),
include/make_translationfiles.php (fnop),
daily_cron.php:
- fix PHP-warnings noticed by E_STRICT:
missing include, missing resource-check, check allowed args, define unknown func 'fnop'
* include/db_classes.php (Entity),
include/filter_functions.php (sql_replace_wildcards),
include/form_functions.php (Form, ~.create_form_string),
include/game_functions.php (GameSnapshot.parse_stones_snapshot),
include/std_classes.php (QuerySQL, ~.add_part, ~.addIndex),
include/table_columns.php (Table.set_default_sort, ~.set_sort),
include/utilities.php (array_intersect_key_values),
include/quick/quick_game.php (QuickHandlerGame.convert_coords):
- cleanup: refactor static calculated loop-expression out of loop
- use defined consts
* include/timezones.php (get_timezone_array),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- use alias 'Asia/Shanghai' for removed tzdata of 'China/Shanghai'-timezone as live-system
does not know it anymore
-----------
-- use alias for removed tzdata of 'China/Shanghai'-timezone
UPDATE Players
SET Timezone='Asia/Shanghai' WHERE Timezone ='China/Shanghai' ;
-----------
* include/contacts.php (Contact.load_quick_contacts, ~.getContactUserFlags, ~.getContactSystemFlags),
include/game_functions.php (NextGameOrder.get_next_game_order),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
include/quick/quick_handler.php (class QuickHandler, ~.add_list),
include/quick/quick_game_info.php (QuickHandlerGameInfo.fill_game_info),
include/quick/quick_contact.php (QuickHandlerContact.build_obj_contact_user),
specs/quick_suite.txt:
- quick-handler:
- game-list: set list_order for all views
- game-info/list: added 'my_id'-field
- set 'list_order' for all object-list commands,
'list_order'-field can contain fieldnames that are not returned in result
- contact-list:
- used std-func to build user-info
- removed contact-user-fields ratingstatus, picture
- renamed system-flag for quick-suite: WAITINGROOM -> WR_PROTECT_GAMES
- bugfix: correct contact-user/system-flags for quick-suite
* include/quick/quick_bulletin.php (QuickHandlerBulletin.prepare):
- bugfix: fix order-query for bulletin-list quick-handler
* include/gamelist_control.php (GameListControl.build_games_query),
include/quick/quick_game_info.php (QuickHandlerGameInfo.fill_game_info),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
specs/quick_suite.txt:
- game-list quick-handler: implemented 'finished'-view to show my or other-users finished games
* include/gamelist_control.php (class GameListControl, ~.build_games_query),
include/quick/quick_game_info.php (QuickHandlerGameInfo.prepare, ~.fill_game_info),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
specs/quick_suite.txt, show_games.php:
- game-list quick-handler: implemented 'running'-view to show my or other-users running games
- bugfix: load X_Ticks to calculate remaining-time only for my games
* include/quick/quick_game_info.php (class QuickHandlerGameInfo, ~.prepare, ~.process,
~.fill_game_info),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare, ~.process),
include/quick/quick_handler.php (QuickHandler.clear_with_options),
specs/quick_suite.txt, show_games.php:
- game-list quick-handler:
- implemented 'observe'-view to show "all observed games" and "games i'm observing"
- bugfix: show time-remaining only for own games
- bugfix: cast game-priority to integer
- implemented 'status'-view
- allow LIMIT-option 'all' for game-status-view
- USER_ID restricted to logged-in user
- added available WITH-option: user_id, prio, notes
- added available FILTER-options
- cleanup: use Games-fields instead of extra-fields: -> Black|White_Start_Rating
- cleanup: unified SQL field-naming: black|whiteRating -> ..Rating2
2012-08-31 juga
* include/gamelist_control.php (class GameListControl, ~.setView, ~.is_observe, ~.is_running,
~.is_finished, ~.is_all, ~.is_observe_all, ~.is_status, ~.is_info, ~.build_games_query,
~.build_game_list_query_status_view, ~.extend_game_list_query_with_user_info),
include/game_functions.php (GameHelper.extend_query_with_game_notes,
~.extend_query_with_game_prio;
NextGameOrder.build_status_games_query),
include/quick/quick_game_list.php (class QuickHandlerGameList, ~.canHandle, ~.parseURL,
~.prepare, ~.process),
include/quick/quick_game_info.php (class QuickHandlerGameInfo, ~.prepare, ~.process,
~.fill_game_info),
specs/quick_suite.txt, quick_status.php, show_games.php, status.php:
- game-info quick-handler:
- completed implementation of "info"-command for game-quick-handler
- added WITH-option to control adding fields: user_id, prio, notes, ratingdiff
- added fields for game-info: jigo_mode, notes, prio, game_action
- refactored building for game-info and game-list queries into GameListControl-class
- refactored building game-info-result to be used for all views
- game-list quick-handler:
- refactored to merge with game-info, started to clean up list-views
- added FILTER-options for MPG, tournaments
- added LIMIT-handling
- bugfix show_games: URL-argument finished must be set (<>0) to activate finished-view
- cleanup:
- refactored all classes from 'include/classlib_game.php' into 'include/game_functions.php'
- refactored specific status-query-parts into NextGameOrder::build_status_games_query()
- merged QuickHandler.build_obj_user2() into QuickHandler.build_obj_user()
* include/game_functions.php (class GameScore; class BoardStatus; class NextGameOrder;
class GameSnapshot),
include/classlib_game.php [REMOVED],
include/board.php, include/make_game.php, include/message_functions.php,
include/move.php, include/sgf_builder.php, include/shape_control.php,
tournaments/include/tournament_rules.php, scripts/check_players_email.php,
scripts/fix_games_timeleft.php, scripts/game_consistency.php,
clock_tick.php, confirm.php, game.php, gameinfo.php, new_game.php, wap/status.php:
- cleanup: refactored all classes from 'include/classlib_game.php' into 'include/game_functions.php'
* include/quick/quick_handler.php (class QuickHandler, ~.build_obj_user),
include/quick/quick_bulletin.php, include/quick/quick_contact.php,
include/quick/quick_message.php, include/quick/quick_wroom.php:
- cleanup: merged QuickHandler.build_obj_user2() into QuickHandler.build_obj_user()
* include/db/games.php (class Games, ~.new_from_row):
- store original game-row in container
2012-08-30 juga
* include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.parseURL, ~.process,
~.process_cmd_list, ~.fill_wroom_object),
include/quick/quick_handler.php (class QuickHandler, ~.parseFilters),
include/wroom_control.php (WaitingroomControl.get_waitingroom_restrictions,
~.check_joining_waitingroom),
include/game_functions.php (MaxGamesCheck.get_error_text, ~.get_warn_text),
specs/quick_suite.txt,
waiting_room.php (add_old_game_form):
- quick-suite:
- specified and implemented standard-way to parse and handle filter-values for quick-suite
- waitingroom quick-handler:
- added suitable-filter with default ON for 'list'-command
- refactor additional checks from 'add_old_game_form()' into WaitingroomOffer-class
also to be used for quick-suite waitingroom-info quick-handler
- changed and added fields for 'info'-command:
- 'can_join' renamed to 'join' to have prefix on join-fields,
- added 'join_warn' & 'join_err'-fields
- 'opp_started_games'-fields only for 'info'
2012-08-29 juga
* include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.prepare, ~.process,
~.process_cmd_list, ~.fill_wroom_object),
include/db/waitingroom.php (Waitingroom.load_waitingroom_entries),
specs/quick_suite.txt:
- waitingroom-list quick-handler:
- implemented 'list'-command returning all waiting-room-entries
- fields calc_handicap & calc_komi now empty instead of omitted;
this is needed to have complete list of fields for all list-entries
* include/quick/quick_handler.php (class QuickHandler, ~._parse_options, ~.is_with_option,
~.check_list_style, ~.add_query_limits, ~.read_found_rows, ~.add_list),
include/quick/quick_bulletin.php (QuickHandlerBulletin.prepare, ~.process_cmd_list),
include/quick/quick_contact.php (QuickHandlerContact.prepare),
include/quick/quick_folder.php (QuickHandlerFolder.prepare, ~.process_cmd_list),
include/globals.php (QUICK_VERSION), specs/quick_suite.txt:
- added standard-option to specify LIMIT and OFFSET with defaults
- added 'list_totals' as standard-field in list-response with total count of rows
- set std-field 'list_has_next' in list-repsonse to 1 if there are is a next-page
to retrieve for list-command
- added missing order-by-fields for existing lists: bulletin, folder
- minor changes (renamed vars, cleaned up time-format-specs)
* include/quick/quick_contact.php (QuickHandlerContact.build_obj_contact_user),
specs/quick_suite.txt:
- contact-list quick-handler: add additional user-data only if WITH-option='user_id'
* include/quick/quick_handler.php (class QuickHandler, ~.getProcessedResult, ~.add_list,
~.clear_unexpected_fields, ~.buildObjectArray),
specs/quick_suite.txt, quick_do.php:
- added standard-option 'fields' to restrict the output of fields in the quick-response
- always include standard-fields: version,error*,quota_*,list_*,id
- include all fields if fields-option omitted or empty
- match on 1st-level of field-keys in response
- check syntax of fields-option: plain fieldname or *-suffix-pattern
2012-08-28 juga
* include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.prepare, ~.process_cmd_info),
include/wroom_control.php (WaitingroomControl.build_waiting_room_query, ~.get_waitingroom_restrictions;
class WaitingroomOffer, ~.is_fairkomi, ~.is_my_game, ~.calculate_offer_settings, ~.determine_color),
include/db/waitingroom.php (class Waitingroom, ~.build_query_sql, ~.new_from_row,
~.load_waitingroom_by_query),
include/message_functions.php (echo_game_restrictions),
include/rating.php (user_has_rating),
specs/quick_suite.txt,
waiting_room.php (add_old_game_form):
- implemented game-settings calculations for waiting-room quick-handler for "info"-command
- refactored building of query for waiting-room into WaitingroomControl-class
- refactored game-settings calculations of color/handicap/komi/settings into WaitingroomOffer-class
- bugfix: overwrite default-profile also for "info"-link
* include/std_functions.php (who_is_logged, is_logged_in),
error.php, quick_do.php, quick_play.php:
- quick-play: check for quota-exceeded, set timezone
- replaced login-check, login-denied-check, ip-stats by using standard login who_is_logged()
* quick_status.php:
- check for login-denied
* include/error_functions.php (class DgsErrors, ~.set_mode, ~.add_error):
- bugfix: added configuration of DgsErrors for setting HTTP-Header
- use 'application/json' HTTP-HEADER also for errors for ERROR_MODE_QUICK_SUITE
2012-08-26 juga
* game.php, message.php, new_game.php, site_map.php, waiting_room.php,
forum/forum_functions.php, forum/index.php, include/table_columns.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
tournaments/edit_participant.php, tournaments/edit_status.php,
tournaments/game_admin.php, tournaments/register.php,
tournaments/view_tournament.php:
- fix translation-texts for live-servers preventing double text-entries
- Send Message -> Send message
- New game -> New Game
- for forum: new -> new#forum, reply -> reply#forum, hide -> hide#forum, show -> show#forum
- prev page -> Prev Page, next page -> Next Page
- Tournament Status -> Tournament Status#tourney
-----------
-- fix translation-adjustments in code
-- 1. following selects must results in not more than one entry per select
SELECT * FROM TranslationTexts WHERE Text='Send Message';
SELECT * FROM TranslationTexts WHERE Text='prev page';
SELECT * FROM TranslationTexts WHERE Text='next page';
SELECT * FROM TranslationTexts WHERE Text='Tournament Status';
-- 2. only if criteria in (1) is met, update the following:
UPDATE TranslationTexts SET Text='Send message' WHERE Text='Send Message' LIMIT 1;
UPDATE TranslationTexts SET Text='Prev Page' WHERE Text='prev page' LIMIT 1;
UPDATE TranslationTexts SET Text='Next Page' WHERE Text='next page' LIMIT 1;
UPDATE TranslationTexts SET Text='Tournament Status#tourney' WHERE Text='Tournament Status' LIMIT 1;
-----------
* include/translation_functions.php (strip_translation_label),
include/make_translationfiles.php (TRANS_ROW_PER_PAGE),
translate.php (update_translation),
update_translation.php [REMOVED]:
- added preview for translations
- refactored saving translations from 'update_translation.php'
into 'translate.php' for preview-support
- strip translation-label
- reduced row-number for translating: 30 -> 10
2012-08-25 juga
* scripts/obsolete/alter_moves_table.php, scripts/obsolete/calculate_no_games.php,
scripts/obsolete/convert_move_tables.php, scripts/obsolete/delete_move_tables.php,
scripts/obsolete/fix_frombackuptable.php, scripts/obsolete/fix_frombackuptable2.php,
scripts/obsolete/fix_rated_status.php, scripts/obsolete/game_test.php,
scripts/obsolete/index_old.php, scripts/obsolete/make_gmdate.php,
scripts/obsolete/mlrate.php:
- removed old scripts, that are no longer useful due to changed tables
* translate.php, skins/dragon/screen.css:
- show preview of translated text under translation-text currently stored
- added admin-info about new TranslationTexts-fields: Type, Status
- added last-change date of original and translated text
* include/admin_faq_functions.php (AdminFAQ.save_new_faq_entry, ~.update_faq_entry),
include/make_translationfiles.php (translations_query, add_text_to_translate,
generate_translation_texts),
include/translation_functions.php (get_translation_group),
scripts/translation_consistency.php (commit_query, check_consistency_faq,
check_consistency_tfig, check_consistency_transl, check_consistency_texts),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/dragon-ddl.sql,
scripts/data_export.php, scripts/README.developers, scripts/README.translations,
admin_show_faqlog.php:
- re-worked translation-handling for better consistency-checks and automatic fixes
- re-worked translation-consistency-script adding more checks and automatic fixes
- added checks for all translation-tables and all the fields
- FAQ/Links/Intro: check Parent-FK, SortOrder, Level, Question/Answer-FK, Reference
- TranslationFoundInGroup: check FK
- Translations: check Language_ID-FK, Original_ID-FK, check/fix Updated
- TranslationTexts: check missing/unused TFIG, identify orphan texts, Type,
case-insensitive double-texts, check/fix Updated
- added indexes for faster consistency-checks
- added TranslationTexts/FAQlog.Type to mark the source of the text,
- prevent double-texts of same type: FAQ, Links, Intro, source-code, unknown (NONE)
- keep separate realms for FAQ/Links/Intro-texts and source-code
- bugfix: fix FAQ-admin on edit-link dependent on Type to edit FAQ/Links/Intro
- added TranslationTexts/Translations.Updated as last-change-date
- dropped unused translation-columns: TranslationTexts.Ref_ID, FAQlog.CString
- updated documentation about translation-handling
-----------
-- add Type to check for double-text of same type
ALTER TABLE TranslationTexts
ADD Type enum('NONE','FAQ','LINKS','INTRO','SRC') NOT NULL default 'NONE' AFTER Text ;
ALTER TABLE FAQlog
ADD Type enum('FAQ','Links','Intro') NOT NULL default 'FAQ' AFTER FAQID ;
ALTER TABLE FAQlog
CHANGE FAQID Ref_ID int(11) NOT NULL default '0' ;
-- add index for faster consistency-checks, add Type to check for double-text of same type
ALTER TABLE TranslationTexts
ADD KEY Text (Text(4)) ;
ALTER TABLE Translations
ADD KEY Original_ID (Original_ID) ;
ANALYZE TABLE TranslationTexts;
ANALYZE TABLE Translations;
-- drop unused columns
ALTER TABLE Translationlog
DROP COLUMN CString ;
ALTER TABLE TranslationTexts
DROP COLUMN Ref_ID ;
-----------
* admin_faq.php, links.php (save_link_section, save_link_entry):
- changed translation-group for links-page (Docs -> Links) and intro-page (Start -> Intro)
2012-08-20 juga
* include/admin_faq_functions.php (AdminFAQ.get_faq_entry_row, ~.save_new_faq_entry,
~.update_faq_entry),
include/make_translationfiles.php (add_text_to_translate, generate_translation_texts,
find_translation_texts, eat_comments, eat_whitespace, eat_translation_text),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/generate_translation_texts.php,
scripts/data_export.php, specs/db/dragon-ddl.sql,
admin_faq.php, update_translation.php:
- handle case-INsensitive checking of existing translation-texts
- re-use case-different text if marked as ORPHAN
- forcing to manually resolve to unique translation-texts by reporting as error
- Admin-FAQ: show added last-change-date TranslationTexts.Updated for FAQ/Intro/Links
question- & answer-text, disable checkbox if no translation-check needed
- update TranslationTexts.Updated on translating
- added TranslationTexts.Status to support translation-consistency-checking for orphan texts
- fix bug: write TranslationTexts.Ref_ID only for FAQ-texts, not for Intro/Links-references
- moved generate_translation_texts() and related funcs
from 'scripts/generate_translation_texts.php' into 'include/make_translationfiles.php'
-----------
-- added last-change and status for translations for easier cleanup
ALTER TABLE TranslationTexts
ADD Status enum('USED','CHECK','ORPHAN') NOT NULL default 'USED',
ADD Updated datetime NOT NULL default '0000-00-00 00:00:00' ;
ALTER TABLE Translations
ADD Updated datetime NOT NULL default '0000-00-00 00:00:00' ;
-----------
* introduction.php, links.php:
- used own translation-group
* include/connect2mysql.php (writeIpStats):
- disable writing ip-stats for now
* scripts/obsolete/fix_faq.php:
- removed obsolete
2012-08-14 juga
* include/message_functions.php (fix_invitations_replied), daily_cron.php:
- fix bug: on invitation-cleanup the referenced game for an invitation is deleted
leaving the message with Replied='M' indicating a reply is needed, which is not
possible without the game. Therefore fix those messages by setting Replied='N'
to allow changing folders and no further reply being needed.
2012-08-13 juga
* include/std_functions.php (make_dragon_main_menu), site_map.php:
- corrected links to feature-list and tournament-list
* list_shapes.php, waiting_room.php:
- fix bug: missed named-filters 'user/pub' for profile-saving for shape-list
- fix bug: allow overwriting filter-values otherwise loaded from existing default-profile
* features/edit_feature.php, features/list_votes.php, features/vote_feature.php:
- fix bug: allow overwriting filter-values otherwise loaded from existing default-profile
- removed 'Feature Vote Results'-link being available in main-menu with 'Features'
- added 'All features'-link
* features/list_features.php, skins/dragon/screen.css:
- fix bug: allow overwriting filter-values otherwise loaded from existing default-profile
- fix bug: missed named-filters 'status' for profile-saving for feature-list
- change title according to filter-selection on my-vote & status
- show missing feature-vote with blue-background and '?'
- added 'All features'-link
* tournaments/list_tournaments.php:
- fix bug: removed named-filters 'uid/tdir' for profile-saving,
removed search-profile for hidden static filters 'uid/tdir'
- adjusted link-text: Show all tournaments -> All tournaments
* list_surveys.php:
- fix bug: missed named-filters 'handle' for profile-saving for survey-list
* list_bulletins.php:
- forbid using default-search-profile to preserve showing of important bulletins
* include/classlib_profile.php (class SearchProfile, ~.set_forbid_default, ~.get_arg,
~.handle_action, ~.get_form_elements),
include/globals.php (SP_OVERWRITE_ARGS, SPURI_ARGS):
- fix bug: allow overwriting filter-values otherwise loaded from existing default-profile
- forbid using default-search-profile
* include/filter.php (SearchFilter.get_saved_arg; Filter.to_string):
- minor changes: added debugging, fix bug in Filter.to_string() printing dbfield if object
2012-08-12 juga
* include/sgf_parser.php (class SgfParser, ~.parse_sgf),
goban_editor.php (load_igoban_from_sgf, create_igoban_from_parsed_sgf):
- fix bug in goban-editor: captures were not removed on loading and parsing SGF
- parse SGF into object SgfParser, parse also handicap and komi
- placed errors below section-header
* site_map.php:
- fix bug: show link for my-shape-list only for valid user-handle
2012-08-10 juga
* include/quick/quick_message.php (QuickHandlerMessage.prepare, ~.process_cmd_info),
include/message_functions.php (DgsMessage.update_message_folder),
specs/quick_suite.txt:
- quick-message-handler: move message into target-folder on "info"-command if specified
* message.php:
- removed initial warning of missing subject/receiver, show only on preview and submit
* edit_shape.php, view_shape.php:
- word-wrap shape-notes on view/edit-shape to 60 chars
* list_shapes.php:
- show shape-notes on tool-tip for shape-lists
* include/time_functions.php (build_time_remaining; TimeFormat.echo_time_remaining),
include/quick/quick_game_info.php (QuickHandlerGameInfo.process_cmd_info),
include/quick/quick_game_list.php (QuickHandlerGameList.build_game_info),
scripts/tests/TimeFormatTest.php, specs/time.txt,
tournaments/game_admin.php (draw_add_time),
tournaments/list_tournaments.php,
game.php, gameinfo.php, quick_status.php, status.php,
code_examples/check_times.php:
- cleanup time-formats for remaining-time:
- always show extra-time information by removing TIMEFMT_ADDEXTRA,
except new TIMEFMT_NO_EXTRA-flag used for old quick-status
- removed abbreviated time-formats by removing TIMEFMT_ABBEXTRA
- for japanese-byo-yomi replaced "(-)" to indicate last byo-yomi-period
with "X * 0" to avoid ambiguity with "(-)" also representing "absolute time"
2012-08-08 juga
* include/game_functions.php (increaseMoveStats):
- disabled writing move-statistics
* waiting_room.php:
- added game-type-filter to show games without shape
- added handicap-type-filter to show games without fair-komi
* include/make_game.php (create_game):
- fix bug: Column 'Snapshot' specified twice
* clock_tick.php, daily_cron.php, halfhourly_cron.php,
tournaments/cron_tournaments.php, specs/db/dragon-ddl.sql,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- store end-time of cron-run
-----------
-- store end-time of cron-run
ALTER TABLE Clock
ADD Finished datetime NOT NULL default '0000-00-00 00:00:00' ;
-----------
2012-07-17 juga
* include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info):
- bugfix: 'created_at'-field took data from wrong var
2012-07-16 juga
* status.php:
- show time-remaining of games in short but non-abbreviated form
2012-07-15 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/dragon-ddl.sql:
- speed-up cleanup of MoveStats by adding key required to remove old entries
-----------
-- speed-up cleanup of MoveStats
ALTER TABLE MoveStats
ADD KEY SlotWeek (SlotWeek) ;
-----------
* include/quick/quick_message.php (QuickHandlerMessage.prepare):
- bugfix: option 'mid' is optional for send-message (or 0 for new msg),
or if present it must be numeric and >0 for reply-msg
2012-07-14 juga
* halfhourly_cron.php:
- fix bug: resetting game-clock for player leaving vacation used wrong clock
for LastTicks-calculation for games with weekend-clock stopped
* include/quick/quick_message.php (class QuickHandlerMessage, ~.process_cmd_send_msg):
- fix bug: add options 'subj|msg' to allowed options
2012-07-12 juga
* halfhourly_cron.php:
- added time-measure for processing one user for mail-notifications
- disabled db-query debugging
* edit_profile.php:
- bugfix: adjusted check to email being optional if email-notification is disabled
- bugfix: allow disabling email-notification regardless of given email
2012-07-11 juga
* include/config.php (SENDMAIL_PARAMETERS),
include/std_functions.php (send_email):
- added local sendmail-parameters SENDMAIL_PARAMETERS for local MTA
used for sending mail in send_email()-function
* halfhourly_cron.php:
- change order for mail-notifications: handle oldest-access users first
as newer-access-users can see new games/messages anyway
* include/std_functions.php (delete_all_observers), admin_game.php:
- notify users for new-message in mail-notifications on game-deletion and game-end for observers
* include/std_functions.php (send_email):
- log time to send mail
* include/std_functions.php (USERFLAG_NFY_BUT_NO_OR_INVALID_EMAIL, notify),
admin_users.php,
edit_profile.php,
halfhourly_cron.php:
- introduced user-flag USERFLAG_NFY_BUT_NO_OR_INVALID_EMAIL to mark user-account
with missing or having an invalid email-address
- halfhourly-cron: send user a message to correct the email in user-profile
on missing or invalid email for mail-notifications in halfhourly-cron,
- edit-profile: reset flag when editing user-profile after providing a valid email
- edit-profile: show error if mail-notifications enabled by email is missing
* include/std_functions.php (send_message, notify),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Players.txt, specs/db/dragon-ddl.sql,
halfhourly_cron.php:
- mail-notifications: for Players.Notify=NEXT always both, games-to-move and
new-messages are checked. Checking for new messages almost always is a slow
query (7-12 on average).
Therefore introducing notify-flags that indicate if new-messages must be checked or not
on collecting data for mail-notifications.
- added Players.NotifyFlags for bitmask indicating new data for mail-notifications
- used mask 0x01 to indicate to check for new-messages
-----------
-- mark notify-types for mail-notifications
ALTER TABLE Players
ADD NotifyFlags tinyint unsigned NOT NULL default '0' AFTER Notify ;
UPDATE Players
SET NotifyFlags=1 WHERE Notify IN ('NOW','NEXT') ;
-----------
2012-07-10 juga
* include/error_functions.php (need_db_errorlog):
- disable logging of error-codes: not_logged_in, unknown_user
* halfhourly_cron.php:
- order messages by Messages.ID in hope to speed up message-query
* include/std_functions.php (verify_invalid_email):
- adjusted email-regex allowing '+' character
* scripts/check_players_email.php, scripts/index.php:
- added script to verify email of all players
* INSTALL:
- adjusted crontab for halfhourly-cron extending read-timeout (900s wget-default to 1800s)
* halfhourly_cron.php:
- fix bug: undo check for found-entries, Notify='NEXT' is indicator that there is something
new (move or message), SendEmail='ON' needs notify even if NOT checked for new games/messages
- increased max-run-time from 25min -> 28min
2012-07-09 juga
* include/std_functions.php (start_page):
- disabled logging of HTTP-headers (Accept-Language & Accept-Charset) to prep for UTF-8 migration
* .cvsignore:
- ignore timeadjust.php, apple-touch-icon*.png
* halfhourly_cron.php:
- fix bug: select fast-queries first, then order randomly on SendEmail-"categories"
if one-run is not enough
- fix bug: skip mail-notification if nothing to send, but set Players.Notify to 'DONE'
to avoid re-doing on next run
- fix bug: removed after-loop setting of Players.Notify='DONE' if loop hadn't handled
ALL open notifications in one run, so they can be continued on next run
* daily_cron.php:
- disable debugging
* scripts/start_frozen_clocks.php, scripts/tournament_consistency.php,
scripts/translation_consistency.php, scripts/updates/fix_message_thread-1_0_15.php:
- set larger max_execution_time instead of relying on 30s timeout-default
* halfhourly_cron.php, clock_tick.php (handle_game_timeouts):
- set max_execution_time=0 (no timeout instead of 30s timeout-default)
- to avoid timeout on large datasets
- to avoid breaking transactions with multi-table-changes
- added soft-check on running-time to avoid script running for too long
- re-ordered task executing send-mail-notifications as last task because
that takes longest and has greatest "risk" of taking more time
than the script should run with
* scripts/message_consistency.php, scripts/recalculate_ratings2.php:
- added ta_begin/end() to surround multi-table-updates with "transaction"
* scripts/updates/fix_game_comments-1_0_15.php, scripts/fix_game_snapshot.php,
scripts/fix_games_timeleft.php, scripts/forum_consistency.php,
scripts/game_consistency.php, scripts/message_consistency.php,
scripts/player_consistency.php, scripts/recalculate_ratings2.php,
scripts/voting_consistency.php, tournaments/cron_tournaments.php:
- set max_execution_time=0 (no timeout instead of 30s timeout-default)
- to avoid timeout on large datasets
- to avoid breaking transactions with multi-table-changes
* scripts/updates/other_changes_1_0_14_to_1_0_15.txt, INSTALL:
- added PNG-icons for Apple "favicons" in various size to avoid
'page_not_found'-errors (ca. 14000/month currently)
-----------
# added image for Apple "favicons", must be copied to root-dir
copy /images/apple-touch-icon-57x57-precomposed.png
copy /images/apple-touch-icon-57x57.png
copy /images/apple-touch-icon-72x72-precomposed.png
copy /images/apple-touch-icon-72x72.png
copy /images/apple-touch-icon-114x114-precomposed.png
copy /images/apple-touch-icon-114x114.png
copy /images/apple-touch-icon-144x144-precomposed.png
copy /images/apple-touch-icon-144x144.png
copy /images/apple-touch-icon-precomposed.png
copy /images/apple-touch-icon.png
-----------
* include/std_functions.php (is_logged_in):
- changed fever-vault block-message
2012-07-08 juga
* include/std_functions.php (LOGIN_SKIP_UPDATE, who_is_logged, is_logged_in),
error.php:
- error-page skips update of Players-table on login-check to avoid decreasing quota twice:
once by main-page + follow-up with error on error-page:
- do NOT decrease web-access-quota
- do NOT write IpStats-table
- do NOT reset mail-notify to 'NONE'
- do NOT update Players-table or $player_row, e.g. with ip, browser, last-access,
activity, hits, clock-change
- do NOT update main-menu indicators for new-messages, new-features, new-bulletins
- but DO load Players-data with browser-specific prefs, set timezone, load translation-tables,
check for maintenance-user, handle admin-status
* include/std_functions.php (is_logged_in):
- cleanup: refactored query-building for Players-update with UpdateQuery-class
* admin_users.php (update_user):
- fix bug: remove editing of Players.OnVacation/UseVacation as special handling
for the Players.TimeOutDate would be required, also user can change then length
of OnVacation already so no admin-intervention is needed
- re-ordered and added some shown-fields: LastQuickAccess, UserFlags, Hits
* include/std_functions.php (end_page, is_logged_in),
include/quick_common.php (quick_suite_add_quota):
- added separate field for Players.VaultTime as $player_row['X_VaultTime']
preserving original VaultTime-value
* include/gui_functions.php (is_valid_button, button_style),
include/std_functions.php (BUTTON_MAX),
edit_profile.php (parse_edit_form, handle_save_profile),
change_profile.php [removed]:
- merged 'edit_profile.php' and 'change_profile.php' into one page:
- added checks on all input-fields showing errors to user instead of throwing error,
also in preparation for mandatory email
- correct some invalid values to defaults if "injected" via URL and not via regular
form-submit only allowing form-supported field-values restricted by select-boxes
- save is only done if there are no check-errors any more
- fix bug: show correct last-capture-marker if ENA_MOVENUMBERS disabled
* scripts/mailtest.php:
- fix bug: trim email when checking for valid email
2012-07-07 juga
* crossdomain.xml:
- added policy-file for Flash with least-permissive policy
to prevent 'page_not_found'-errors (ca. 21000/month),
see also http://www.dragongoserver.net/forum/read.php?forum=2&thread=33297#33464
* include/std_functions.php (verify_invalid_email, send_email, is_logged_in),
include/register_functions.php (UserRegistration.check_email),
scripts/mailtest.php, change_profile.php, halfhourly_cron.php,
send_new_password.php:
- fix bugs for handling invalid email:
- changed name and return-value of verify-method for easier checking:
verify_email -> verify_invalid_email
- fixed regex for emails allowing longer TLD of domain to prepare for new-TLDs released by ICANN
- return 'bad_mail_address'-error also if errors only collected and error()-call is not exiting
- send-new-password: die-on-error before writing adminlog and saving new password into database
- fix bugs for halfhourly-cron-script:
- skip mail notification for user with invalid email,
script was stopped when mail was sent to invalid email
- mark user as notified after successful mail-sending
to avoid being notified again on script-restart
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- clearing invalid emails for users if email has no '@' or does contain spaces
-----------
-- cleanup invalid emails (no '@' found or containing space)
SELECT Handle, Lastaccess, Email
FROM Players WHERE Email>'' AND (Email LIKE '% %' OR NOT Email LIKE '%@%') ;
UPDATE Players
SET Email='' WHERE Email>'' AND (Email LIKE '% %' OR NOT Email LIKE '%@%') ;
-----------
* statistics.php (show_stats_user_countries):
- text-change to allow for easier future changes without re-translating
* daily_cron.php, halfhourly_cron.php:
- enable debugging
2012-07-06 juga
* include/quick_common.php ($clocks_stopped):
- re-enabled stopped clocks
* include/game_functions.php (class GameAddTime, ~.add_time_opponent;
GameHelper.update_clock, ~.load_game_row),
include/time_functions.php (get_clock_ticks, time_left_ticksdate, timeleft_days_to_ticks),
include/cache_clock.php (ClockCache.load_clock_ticks, ~.get_clock_cache),
tournaments/include/tournament_cache.php (class TournamentCache, ~.load_clock_ticks),
include/classlib_game.php (NextGameOrder.make_timeout_date),
include/make_game.php (create_game),
scripts/fix_games_timeleft.php (dbg_query, update_games_timeoutdate),
scripts/obsolete/game_test.php,
specs/db/table-Games.txt,
tournaments/game_admin.php (draw_add_time),
edit_vacation.php:
- fix bugs: overworked handling of Games.TimeOutDate for sorting status-games by time-remaining
- TimeOutDate is changed if player starts or changes the length of vacation:
- if player is on vacation, the remaining-time changes as well,
because the TimeOutDate is an absolute date.
- if user starts vacation, the TimeOutDate of all games-to-move for that user is extended
by the number of ticks representing the length of vacation-days.
- if user changes the length of vacation, the TimeOutDate of all the games-to-move
for that user is adjusted by the respective number of ticks.
- if the vacation of a user ends, the TimeOutDate is not changed,
because the additional time (gained by vacation) is consumed.
- TimeOutDate is not changed if player changes night-time or timezone, because current game-clocks
- stopped weekend-clocks are not handled for TimeOutDate, see field-doc in 'specs/db/table-Games.txt'
- fixed adjusting TimeOutDate on adding-time to game by opponent
- fixed handling of Games.ClockUsed < 0 (vacation) and relative Games.LastTicks for that case
- fix-games-timeleft-script: show value-diff for changed Games.TimeOutDate-field
- fix bug: needed ref-args in constructor of GameAddTime for access on passed-in var-ref $game_row
- cleanup: simplified and sync'ed code to determine game-clock/last-ticks/time-out-date
- cleanup: replaced game-row vars (Black/White)onvacation -> Black|White_OnVacation
- optimized clock-tick-loading
- changing default to USE cache now to avoid same clock is loaded multiple-times within same session
- added method to get singleton of clock-cache
* include/table_columns.php (Table.register_filter):
- fix bug: needed ref-args
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql:
- optimization: speed up forum-search on specific user
-----------
-- speed up forum-search on specific user
ALTER TABLE Posts
ADD KEY User_ID (User_ID);
-----------
* list_contacts.php, NEWS:
- added table-navigation for contact-list
2012-07-05 juga
* tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_users,
~.count_tournament_pool_games),
tournaments/include/tournament_participant.php (TournamentParticipant.count_tournament_participants),
statistics.php (show_stats_default, show_stats_user_countries),
statratingspng.php (get_ratings_data),
scripts/browser_stats.php:
- optimized GROUP-BY select-queries by using SQL_SMALL_RESULT indicating small resultset
* include/mail_functions.php (html_entity_decode, mail_link, mail_strip_html),
include/config.php (EMAIL_ADMINS),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, halfhourly_cron.php, NEWS:
- fix bug: avoid concurrent start of halfhourly-cron-script alerting admin per mail
with new EMAIL_ADMINS-config to check problem
- optimized mail-notifications:
- speed up sending mail-notifications by adding index on Players.Notify-field
- directly send notifications for users with Players.Notify='NEXT'
- pre-load users to notify and their games to release db-resultset as soon as possible
because loop can take quite some time
- load game-board only if needed and not for any move-notify, that is only if user actually
wants BOARD-notifications including last game-message
- minor: avoid board-move-fix when board is loaded
- added LF after game-board in message
- refactored mail-funcs from 'halfhourly_cron.php' into 'include/mail_functions.php'
- minor change (used consts, detailed error-labels, strpos-checks, if-to-ternary-op, string-formatting)
-----------
-- speed up sending mail-notifications in halfhourly-cron-script
ALTER TABLE Players
ADD KEY Notify (Notify) ;
-----------
2012-07-04 juga
* include/message_functions.php (game_settings_form, game_info_table),
include/make_game.php (accept_invite_game),
message.php:
- fix bug: use opponents jigo-mode for view/dispute of invitation with fair-komi sent to me,
but using my jigo-mode viewing invitation sent by me
* game_rematch.php:
- fix bug: Correct handicap-type if stored GameSetup is not from logged-in user
for player or non-player, in which case the fix-color and divide&choose fair-komi
needed compensation
* include/game_functions.php (GameSetup.get_htype_swapped, ~.determine_handicaptype;
get_handicaptype_for_invite),
include/message_functions.php (game_settings_form, game_info_table),
include/make_game.php (make_invite_game, accept_invite_game),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- fix bug: wrong color chosen on accepting game-invitation and shown for viewing-invitation
and on dispute, had to take swapped handicap-type of opponennts choice
- fix bug: handle non-migrated old game-invitations with fix-color-setting stored with Games.ToMove_ID>0,
then determine color from Games.Black/White_ID
- write Games.Starttime to indicate start of invitation
-----------
-- fix Starttime for invitations
UPDATE Games
SET Starttime=Lastchanged WHERE Status='INVITED' AND Starttime=0 ;
-----------
2012-07-03 juga
* include/classlib_game.php (GameSnapshot.init_game_snapshot),
include/make_game.php (create_game):
- set Games.SnapShot also for empty boards
2012-07-02 juga
* send_new_password.phpA:
- fix bug: must allow sending-password for not-logged-in users
* include/make_game.php (accept_invite_game),
include/message_functions.php (game_info_table),
include/wroom_control.php (WaitingroomControl.join_waitingroom_game),
tournaments/include/tournament_rules.php (TournamentRules.prepare_create_game_row),
waiting_room.php (determine_color):
- fix bug: show nigiri-color-icon for even-game with conventional-handicap-setting
* include/game_functions.php (GameNotify.get_text_game_result;
build_suggestion_shortinfo, get_colortext_probable):
- fix bug: do not send players final private message in game-end-message to observers,
but include if there are hidden comments
- fix bug: show nigiri-color-icon for even-game with conventional-handicap-setting
* include/rating.php (suggest_conventional):
- fix bug: revert handicap and komi calculations for conventional-handicap game-setting
by using nigiri on even game with rating-diff < 0.5 instead of only on exactly same rating
and correcting handicap-stone from 1 to 0 only for handicap-games
* include/connect2mysql.php (writeIpStats),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql:
- added creation-date for cleanup of IpStats-table
-----------
-- add creation-date for cleanup
ALTER TABLE IpStats
ADD Created datetime NOT NULL default '0000-00-00 00:00:00' AFTER Counter,
ADD KEY Created (Created) ;
-----------
2012-06-23 juga
* message.php:
- added Shapes-link on SendMsg-page for invitation-related messages
* forum/forum_functions.php (DisplayForum.draw_overview, ~.to_string),
include/utilities.php (cut_str):
- fix bug: do not cut HTML-entities in two
* include/globals.php (DASH_SPACING),
forum/forum_functions.php (ForumThread.get_thread_hits),
forum/read.php:
- show thread-hits on thread-posts-view
* include/game_functions.php (adjust_handicap):
- fix bug for adjusting handicap: replace handicap of 1 stone with 0 stones
* templates.php (check_save_template):
- when replacing existing template the name is taken from the existing template
if not given to rename
* include/game_functions.php (parse_waiting_room_rating_range, append_form_add_waiting_room_game),
new_game.php (handle_add_game):
- fix bug saving new-game-template with required rating-range:
- restricting min/max-rating when saving as and reading from template
- don't adjust min/max-rating by half a rank when saving as template
-----------
# fix existing Profiles (Type=29) by rounding to 100-value for min/max-rating limits
-----------
* include/sgf_builder.php (class SgfBuilder, ~.echo_sgf, ~.sgf_echo_prop, ~.sgf_echo_comment,
~.build_sgf_start, ~.build_sgf_moves, ~.build_sgf_result, ~.build_sgf_end):
- fix bug: omit double empty comment-property C[]
* include/gui_bulletin.php (GuiBulletin.check_expiretime),
include/db/bulletin.php (Bulletin.is_user_bulletin),
admin_bulletin.php (parse_edit_form),
edit_bulletin.php (parse_edit_form),
specs/db/table-Bulletins.txt:
- fix bug: expire-time for admin-bulletin is optional, but mandatory for user-bulletin
- reduced min. subject-length: 8 -> 4
* show_games.php:
- fix bug for user's finished games:
opponent- and user-rating-diff were switched using the wrong SQL
* game.php (draw_game_info):
- fix bug for MP-game:
- show hidden-comments to player of a particular move with move-message
- hide hidden-comments to others
* game_players.php (check_invite):
- fix bug for MP-game: handle as error when empty user-handle is used for invitation
* include/game_functions.php (MultiPlayerGame.init_multi_player_game,
~.join_waitingroom_game, ~.load_master_uid):
- clear QST-cache (quick-status) for MP-games on writing-operations:
start MP-game, join MP-game
* show_games.php:
- typo in bottom-links: Users -> User's
-----------
# recreate translations with translation-scripts
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
-----------
-- rename users with spaces in Handle: 1. find them, 2. contact them, 3. rename Handle via user-admin-page
SELECT ID, Handle, Email, Lastaccess, Running, LastMove
FROM Players WHERE Handle LIKE '% %' ORDER BY Lastaccess ;
-----------
2012-06-17 juga
* admin.php, admin_admins.php, admin_faq.php, admin_game.php, admin_password.php,
admin_rating.php, admin_show_adminlog.php, admin_show_errorlog.php, admin_show_faqlog.php,
admin_show_users.php, admin_translators.php, admin_users.php, translate.php,
forum/admin.php, forum/admin_show_forumlog.php,
scripts/fix_game_snapshot.php, scripts/README.developers:
- reverted translations for admin-pages to strip-off '#'-suffix in texts
* include/classlib_game.php (NextGameOrder.persist_game_priority),
include/game_functions.php (GameHelper.delete_running_game; GameFinalizer.finish_game),
include/message_functions.php (update_count_message_new),
include/std_functions.php (send_message, clear_cache_quick_status),
include/db/bulletin.php (Bulletin.mark_bulletin_as_read),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
include/globals.php (QST_CACHE_...),
include/make_game.php (create_game),
game_players.php (accept_invite, reject_invite, start_multi_player_game),
clock_tick.php (handle_game_timeouts),
confirm.php (do_komi_save),
admin_game.php, quick_play.php:
- clear QST-cache (quick-status) on some writing-operations for:
- operations are covered by all interfaces: web-site, quick-play and quick-do-suite
- appending "CLEAR block" (block = B/M/G/MPG) to existing QST-cache-file will invalidate
block-specific cache-portion and reload the specific block when quick-status is used
- "CLEAR G" for status-games on:
- start a game by joining waiting-room-game or accepting invitation or started MP-game
- finish a running game by user or timeout
- delete a running game by user or admin
- move in a running game (play, resign, delete, pass, score)
- save change during fair-komi negotation
- changing the game-priority for ordering status-games
- "CLEAR M" for private-messages on:
- new message of single and bulk type for sender and receivers
- read message (moving it away from NEW-folder)
- move message into different folder
- "CLEAR B" for bulletins on:
- mark bulletin as read
- "CLEAR MPG" for multi-player-games on:
- accept or reject invitation
- start MP-game
* quick_status.php (append_data, print_bulletins, print_messages, print_status_games,
print_mpg, parse_cache_content),
specs/quick_suite.txt:
- clear QST-cache (quick-status) on some writing-operations:
- changed cache-filename for quick-status using Players.ID instead of Handle for easier clearing of cache,
- execute authentication & authorisation before accessing cache-file to ensure correct user-id for script
- invalidate block-specific cache if "CLEAR block"-instruction found in user-specific QST-cache-file
- appending "CLEAR block" (block = B/M/G/MPG) to existing QST-cache-file will invalidate block-specific
cache-portion and reload the specific block when quick-status is used
- 'excessive_usage'-warning is only given if cache-portions are not invalidated and quick-status called
again before 1 minute passed since last usage, in which case the full cache-data is returned
- writing IpStats-table with page-key 'QSTC' for request that returns only cached data,
'QST' if data is loaded
- clear datablocks before loading new block-specific data
- minor cleanup: renamed CACHE_* const to QST_CACHE_* for global-use, moved local funcs to bottom
-----------
# delete existing QST-cache-files: execute 'scripts/clear_datastore.php?subdir=qst&del=1'
-----------
* game_players.php (build_game_settings):
- overlooked texts for translation
-----------
# recreate translations with translation-scripts
-----------
* forum/forum_functions.php (ForumPost.build_query_sql), forum/search.php:
- fix bug: fixed forum-posts ordered by modification-date using MAX(Posts.Time,Posts.Lastedited),
former order by Posts.Lastchanged was only date of threads
2012-06-16 juga
* quick_play.php, scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- set Players.LastQuickAccess if submitting move with quick-play-page
-----------
-- fix Players.LastQuickAccess if LastMove > Lastaccess
SELECT ID, Handle, LastQuickAccess, Lastaccess, LastMove, TIMEDIFF(Lastaccess,LastMove) AS TDiff, TIME_TO_SEC(timediff(Lastaccess,LastMove)) AS TSec
FROM Players WHERE LastMove >0 AND LastQuickAccess < LastMove HAVING TSec < 0 ;
UPDATE Players
SET LastQuickAccess = LastMove WHERE LastMove >0 AND LastQuickAccess < LastMove AND TIME_TO_SEC(TIMEDIFF(Lastaccess,LastMove)) < 0 ;
-----------
* game.php (draw_message_box), confirm.php, NEWS:
- restored old way for game-submit-move to next-game / to status-page, removed stay-on-board option
- widened game move-message-box: 60 -> 70
* features/vote_feature.php:
- show reason for user if and why voting is not possible
* admin_admins.php, admin_do_translators.php, admin_faq.php, admin_game.php, admin_password.php,
admin_rating.php, admin_show_adminlog.php, admin_show_errorlog.php, admin_show_faqlog.php,
admin_show_users.php, admin_translators.php, admin_users.php, translate.php, update_translation.php,
forum/admin.php, forum/admin_show_forumlog.php, scripts/check_block_ip.php,
scripts/clear_datastore.php, scripts/convert_from_old_forum.php, scripts/convert_posindex.php,
scripts/data_export.php, scripts/data_report.php, scripts/fix_game_snapshot.php,
scripts/fix_games_timeleft.php, scripts/forum_consistency.php, scripts/game_consistency.php,
scripts/generate_translation_texts.php, scripts/index.php, scripts/mailtest.php,
scripts/make_handicap_pattern.php, scripts/message_consistency.php, scripts/player_consistency.php,
scripts/recalculate_ratings2.php, scripts/server-info.php, scripts/start_frozen_clocks.php,
scripts/tournament_consistency.php, scripts/translation_consistency.php, scripts/update_translation_pages.php,
scripts/voting_consistency.php, scripts/obsolete/lang_edit.php,
scripts/updates/fix_game_comments-1_0_15.php, scripts/updates/fix_message_thread-1_0_15.php:
- forbid guest-user to use admin-pages by adding additional guest-check
* include/error_functions.php (need_db_errorlog), specs/quick_suite.txt,
confirm.php, edit_folders.php, edit_rating.php, edit_vacation.php, game.php, game_players.php,
join_waitingroom_game.php, new_game.php, old_goban_editor.php, quick_do.php, quick_play.php,
send_new_password.php, templates.php, tournaments/wizard.php, scripts/README.developers:
- don't create ErrorLog-entry if guest-user is not allowed to execute operation
- forbid write-operations by guest-user with 'not_allowed_for_guest'-error
- forbid usage of some quick-suite-pages by guest-user
* admin.php, admin_game.php, admin_password.php, admin_rating.php, admin_show_adminlog.php,
admin_show_errorlog.php, admin_show_faqlog.php, admin_show_users.php, admin_users.php,
forum/admin.php, forum/admin_show_forumlog.php,
include/db/ratingchangeadmin.php,
scripts/fix_game_snapshot.php:
- removed/commented-out translations for admin-pages
-----------
# recreate translations with translation-scripts
-----------
2012-06-10 juga
* NEWS:
- comment out some (disabled) tournament-related features
- correct game-invitation cleanup: 3 -> 6 months
* edit_picture.php:
- added copyright-note for uploading user-picture
* game.php:
- fix bug: showed correct user-rating for MP-game on game-page who last-moved
in players-info-table, was showing rating of logged-in user
* include/game_functions.php (get_color_titles),
status.php (load_games_to_move),
show_games.php:
- added hover-text on color-images for status-games
- use nigiri-image for status-games in fair-komi-negotiation
- fix bug: hover-text about player-to-move of colors-image on my running-games was wrong
- fix bug: use nigiri-image for games in fair-komi-negotiation
* include/std_functions.php (user_reference):
- user-ref: escape user-id/handle in sql
* include/table_columns.php (Table.make_table_filter):
- fix bug: removed "Button"-class on <td>-element with table-filter,
showed button-image-part in some browsers
* include/time_functions.php (echo_onvacation):
- fix bug: corrected original text to allow repositioning of words
in translation of "%s left"-text, e.g. required in Russian language
* include/utilities.php (basic_safe):
- fix bug: some browsers (IE) follow the HTML-standard,
so it doesn't show "'" as apostroph, so replaced with "'"
2012-06-10 juga
* include/quick_common.php ($clocks_stopped),
clock_tick.php (clkrng, handle_game_timeouts):
- added switch $clocks_stopped to stop clocks in 'include/quick_common.php'
to have a safety-net after some major upgrade
* include/time_functions.php (get_clock_ticks, time_left_ticksdate),
include/classlib_game.php (NextGameOrder.make_timeout_date),
include/game_functions.php (GameHelper.update_clock;
FairKomiNegotiation.save_komi, ~.start_fairkomi_game),
include/make_game.php (accept_invite_game, create_game),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
tournaments/game_admin.php (draw_add_time),
confirm.php, game.php, gameinfo.php, quick_play.php:
- added debug-location for reading clock-ticks
* game.php:
- show "other scoring" on devel-server only if game in SCORE-/FINISHED-phase
* gameinfo.php:
- removed extra-space for double-game
* quick_play.php:
- fix bug: missed X_Black/WhiteClock, so replaced loading with GameHelper::load_game_row()
- fix bug: missed declaration of $message_query
* include/make_game.php (accept_invite_game, create_game):
- fix bug: missed GameSetup on creating double-game when accepting game-invitation
* scripts/game_consistency.php:
- fix bug: corrected table-alias usage for unknown column
* include/db/games.php (Games, ~.insert, ~.update, ~.new_from_row):
- fix bug: Games.Starttime/Lastchanged are not the typical db-entity
Created/Lastchanged fields, but start-time after setup & last-moved-date respectively,
therefore remove auto-setting of Starttime & Lastchanged field in insert() & update()
- fix bug: used db-entity standard datetime-field prefix -> X_Starttime/X_Lastchanged
* include/db/waitingroom.php (Waitingroom.insert, update):
- fix bug: removed non-existing Lastchanged-field
* scripts/game_consistency.php:
- commented out & added TODO for wrong datetime-handling for consistency-check
of Starttime>Lastchanged
* snapshot.php:
- updated snapshot-page for release 1.0.15
- commented out current CVS-version as that version is often not stable
* scripts/updates/roadmap_1_0_14_to_1_0_15.txt:
- added mysqldump-command to export translation-data
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
scripts/updates/ChangeLog_1_0_15,
specs/db/dragon-ddl.sql:
- sync'ed changes from LIVE-update from 10-Jun-2012
- sync'ed DDL from LIVE-database
- fix missing db-update: TournamentLadderProps.ChallengeRangeAbsolute signed
* include/quick_common.php:
- disabled server-down with $is_down=false for LIVE-update
* scripts/fix_game_snapshot.php (fix_single_game, bulk_fix_missing_game_snapshots):
- fix bug: Games-obj-update() destroyed Starttime/LastChanged-field
- fix bug: allow single fix also if snapshot not set
- fix bug: declare global-var for processing ALL games
- collect game-ids, that coulnd't be processed
2012-06-08 juga
* scripts/obsolete/*.php, scripts/obsolete/README.txt:
- found some old scripts on live-server, probably obsolete
* include/std_functions.php (send_message):
- bugfix: increase CountMsgNew only if >=0
* NEWS:
- prepare release-notes for DGS 1.0.15
- extended & corrected texts
- commented out most references to disabled tournaments-features & chinese-ruleset
* links.php:
- fix broken links: IGF, IGS
* include/quick/quick_wroom.php (QuickHandlerWaitingroom.process_cmd_info):
- comment out TODO-fields: restrictions, calc_type/color/handicap/komi
* include/config.php (ALLOW_RULESET_CHINESE),
include/game_functions.php (GameSetupBuilder.build_url_game_basics),
include/make_game.php (make_invite_game_setup, create_game),
include/message_functions.php (game_settings_form),
include/db/games.php (Games.setRuleset),
tournaments/include/tournament_rules.php (TournamentRules.setRuleset,
~.convertEditForm_to_TournamentRules),
new_game.php, NEWS:
- disable chinese-ruleset till implementation clarified,
error or enforce japanese-ruleset as default
2012-06-07 juga
* include/quick_common.php ($is_down, $is_down_message):
- sync is_down=true & is_down_message with stable-branch to prepare server-upgrade
* include/std_functions.php (start_page, show_maintenance_page, is_logged_in),
include/connect2mysql.php (admin_log, writeIpStats, db_query),
include/error_functions.php (err_log),
error.php, game.php, login.php, sgf.php:
- improve handling if server is down to prevent db-updates and useless db-connections:
- don't count quota
- allow login for admins
- prevent writing AdminLog & ErrorLog
- db_query: allow only SELECTs, no writing-operations allowed
- game-page: show maintenance page to prevent useless db-connections
- sgf: return server_down-error
- added logging of HTTP-headers for users: Accept-Language & Accept-Charset to support UTF-8 migration
* scripts/server-info.php:
- added login-check to allow calling if server-down
* quick_do.php, quick_play.php, quick_status.php:
- replace LFs in server-down-message
* scripts/updates/roadmap_1_0_14_to_1_0_15.txt:
- roadmap for upgrading to DGS 1.0.15
2012-06-06 juga
* include/message_functions.php (game_settings_form), NEWS:
- changed default time-settings: Fischer time 14d+1 -> 30d + 1d
2012-05-28 juga
* include/classlib_game.php (GameScore.draw_score_box), game.php:
- show area & territory scoring when on test-server
* include/config.php (DATASTORE_FOLDER),
include/std_functions.php (enforce_min_timeinterval),
include/utilities.php (build_path_dir),
scripts/clear_datastore.php:
- allow an absolute path for DATASTORE_FOLDER as relative to DOCUMENT_ROOT may lead to the wrong place
* include/message_functions.php (game_settings_form, game_info_table),
include/game_functions.php (get_handicaptype_for_invite),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info):
- bugfix: add fallback for games without GameSetup-field to determine handicap-type
* include/config.php (GAME_INVITATIONS_EXPIRE_MONTHS),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
daily_cron.php:
- delete old game-invitations after X months configured with server-specific setting
- prepared for live-update to 6 months, defaults to 0 in server-config
-----------
-- delete invitations older than 6 months
SELECT COUNT(*) FROM Games
WHERE Status='INVITED' AND Lastchanged <= NOW() - INTERVAL 6 MONTH ;
DELETE FROM Games
WHERE Status='INVITED' AND Lastchanged <= NOW() - INTERVAL 6 MONTH ;
-----------
2012-05-27 juga
* include/timezones.php (get_timezone_array),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- use alias 'Asia/Shanghai' for removed tzdata of 'China/Beijing'-timezone
as live-database does not know it anymore
-----------
-- use alias for removed tzdata of 'China/Beijing'-timezone
UPDATE Players
SET Timezone='Asia/Shanghai' WHERE Timezone ='China/Beijing' ;
-----------
* include/quick_common.php (quick_suite_add_quota),
include/error_functions.php (DgsErrors.add_error),
include/quick/quick_handler.php (QuickHandler.initResult),
specs/quick_suite.txt:
- added quota_count and quota_expire fields in every quick-suite response
* scripts/fix_game_snapshot.php, scripts/fix_games_timeleft.php,
scripts/updates/fix_game_comments-1_0_15.php:
- restricted authorization to use script to developer/game/database-admin
* scripts/clear_datastore.php, scripts/index.php:
- added script to show & clear sub-dirs of DATASTORE-folder
* quick_status.php (append_data, print_datablock, print_bulletins, print_messages,
print_status_games, print_mpg, write_quick_status_datastore, parse_cache_content),
specs/quick_suite.txt:
- added progressive block-specific caching for quick-status page
- see also "Important Notes" for 4.QST in 'specs/quick_suite.txt'
- enforce login to be able to store user-specific caching,
login possible by userid/passwd or session-cookies,
removed non-login mode
- use data-block-specific cache-expire for blocks bulletins, messages, status-games, MPGs
- added restriction on quick-status by enforcing minimum request interval of 1 min
- minimum request interval for status-games 1 min, for other blocks 15 min
- added progressive caching for status-games doubling waiting-time
up to max. 15 min if data has not changed
- returning block-cached data if asked more often and prepend data
with 'excessive_usage'-warning
- returning block-cached data if corresponding data-block not expired yet
- extended option no_cache=2 to disable progressive-caching for testing-purposes,
usage on live-server results in error
- show 'deprecated_version'-warning for version != 2
* rss/status.php (error, rss_safe, rss_tag, rss_close, rss_item),
wap/status.php (wap_item):
- adjusted quota-system for alternative interfaces (sync from stable-branch):
- added restriction on RSS- and WAP-status by enforcing minimum request interval of 5 min,
error-message returned if asked more often
- return error on excessive usage linking to live-DGS-FAQ about resonsible-use of DGS
- writing cache-files based on user-id-handle for RSS/WAP/Quick-Status, convert handle
to lower-case to avoid getting more quota by using different writings of user-handle case
- do not log invalid_user-error to Errorlog if user-handle is missing
- added argument to skip writing of error-log into the database
- bugfix: convert handle to lower-case to avoid getting more quota by using different
case-writing of user-handle
- add RSS <guid>-tag only if used
- fix LF-handling for RSS-/WAP-texts
- minor refactorings (comments, notes, layout)
* include/std_functions.php (start_html, start_page, sysmsg, is_legal_handle, VAULT_CNT,
is_logged_in, enforce_min_timeinterval),
skins/dragon/print.css:
- undo deletion as some users still want to print diagrams or other pages
- use separate skin-default for main and print CSS
- adjusted quota-system:
- show warning at page top if user-access-quota runs low (below 10 points)
- bugfix: do not show quota-line in bottom bar if not logged in
- reduced user-access-quota for web-pages from 1000 -> 400 -> 500
- refactored user-access-quota setting quota-expire if quota left and expire-date
has passed for more transparent remaining quota
- adjusted quota-system for alternative interfaces using cache-file in datastore-folder
to enforce minimum request intervals
* include/config.php (DATASTORE_FOLDER),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt, INSTALL:
- added datastore-folder outside of document-root (if possible) for caching sensitive data:
- keep track of last RSS/WAP-status request to avoid too-many database-connections/queries
- progressive block-specific caching for quick-status page
-----------
# see also DATASTORE_FOLDER in config.php (for your webserver you may have to use a different setup)
cd DOCROOT/..
mkdir data-store
mkdir data-store/rss data-store/qst data-store/wap
chmod -R 775 data-store
-----------
* include/error_functions.php (DgsErrors.add_error; error, warning):
- added argument to skip writing of error-log into the database
- added debug-message for warnings
* scripts/analyze-weblogs/Calculate.java, scripts/analyze-weblogs/CountUrls.java,
scripts/analyze-weblogs/analyze-time.pl, scripts/analyze-weblogs/filter-rtime.pl,
scripts/analyze-weblogs/filter.pl, scripts/analyze-weblogs/parse-apache-logs.pl,
scripts/analyze-weblogs/README-analyze-weblogs.txt:
- added scripts to analyse webserver-logs, see README-file on how to use
2012-05-05 juga
* include/game_functions.php (increaseMoveStats),
include/quick_common.php (get_utc_timeinfo),
include/quick/quick_game.php (QuickGameHandler.process_cmd_play),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
confirm.php, daily_cron.php, quick_play.php:
- write MoveStats to build move-profile of users
- counting moves in time-slots of 30mins
- cleanup move-count older than 4 weeks
-----------
-- create day/week-profile for moving
CREATE TABLE MoveStats (
uid int NOT NULL default 0,
SlotTime smallint unsigned NOT NULL default 0,
SlotWDay tinyint NOT NULL default 0,
SlotWeek tinyint NOT NULL default 0,
Counter mediumint unsigned NOT NULL default 0,
PRIMARY KEY (uid,SlotTime,SlotWDay,SlotWeek)
) ENGINE=MyISAM ;
-----------
* statisticspng.php, statratingspng.php:
- rename cache-statistics graphics file adding extension
2012-05-02 juga
* include/std_functions.php (end_page),
skins/dragon/screen.css:
- show current user-quota in bottom-bar
* include/std_functions.php (VAULT_CNT):
- decreased user-access-quota 1000 -> 400
* include/connect2mysql.php (writeIpStats),
include/std_functions.php (is_logged_in),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
rss/status.php, wap/status.php, quick_play.php, quick_status.php:
- added IpStats-table with used user-id, IP and page-type to track too-much-requests,
- motivation: there are >20Mio RSS-requests/month for March-2012
- add entry for page-types: RSS, QST (quick-status), QPL (quick-play), QDO (quick-do),
WEB (unused as it's protected with user-quota)
-----------
-- added table for used IP and user-id to track too-much-requests
CREATE TABLE IpStats (
uid int NOT NULL default 0,
Page char(4) NOT NULL default '',
IP varchar(16) NOT NULL,
Counter int unsigned NOT NULL default 0,
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (uid,Page,IP)
) ENGINE=MyISAM ;
-----------
2012-04-30 juga
* message.php:
- bugfix: open send-message-template using loaded template-type
instead of assuming INVITE-template
* statistics.php:
- used thousand-group on big numbers
- switched columns moves/games in game-count per game-state
* include/admin_faq_functions.php, include/make_translationfiles.php,
include/rating.php, scripts/convert_from_old_forum.php,
scripts/game_consistency.php, scripts/message_consistency.php,
scripts/recalculate_ratings2.php, scripts/start_frozen_clocks.php,
scripts/translation_consistency.php, rss/status.php,
wap/status.php, code_examples/test_clock_tick.php,
admin_faq.php, faq.php, game_comments.php, halfhourly_cron.php,
people.php, quick_play.php, quick_status.php:
- cleanup: replace (A,B,C)-join with INNER-JOIN
- cleanup: some sql-reformatting
* include/classlib_game.php (NextGameOrder.build_status_games_query),
quick_status.php, status.php, rss/status.php, wap/status.php:
- bugfix: use same next-game-order for all status-games pages
status, rss-status, wap-status, quick-status
- bugfix: handle next-game-order using game-priority
- bugfix: free mysql-result as early as possible
* code_examples/test_clock_tick.php:
- fix: reverted latest replacing of usage of IS_RUNNING_GAME as NOT-query was under test
* include/quick_common.php:
- added trailing space on SQL-query-parts to avoid obvious missing space
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql:
- optimize: speed-up translators-query on people-page
-----------
-- speed-up translators-query on people-page
ALTER TABLE Translationlog
ADD KEY PlayerLang (Player_ID,Language_ID) ;
-----------
* halfhourly_cron.php, quick_status.php, show_games.php, include/admin_faq_functions.php,
include/make_translationfiles.php, include/db/bulletin.php, rss/status.php,
scripts/convert_from_old_forum.php, scripts/message_consistency.php,
scripts/tournament_consistency.php, scripts/translation_consistency.php,
scripts/experiments/analyze-slow_log.php, wap/status.php:
- cleanup/layout: checked for mysql5-changes:
- precendence of JOIN now higher than A,B,C-join
- checked ON-clause, which can only work on own operands and operands of left
* all *.php files (#140):
- added debug-message where missing on all error()-calls
2012-04-28 juga
* include/quick/quick_handler.php (QuickHandler.checkArgsUnknown),
include/quick/quick_bulletin.php (QuickHandlerBulletin.parseURL),
include/quick/quick_contact.php (QuickHandlerContact.parseURL),
include/quick/quick_folder.php (QuickHandlerFolder.parseURL),
include/quick/quick_game.php (QuickHandlerGame.parseURL, ~.prepare, ~.process_cmd_play),
include/quick/quick_game_info.php (QuickHandlerGameInfo.parseURL),
include/quick/quick_game_list.php (QuickHandlerGameList.parseURL),
include/quick/quick_message.php (QuickHandlerMessage.parseURL),
include/quick/quick_user.php (QuickHandlerUser.parseURL),
include/quick/quick_wroom.php (QuickHandlerWaitingroom.parseURL):
- check for unknown args
* forum/forum_functions.php (Forum.load_forum_names),
forum/search.php:
- optimize / bugfix: reverse key/value in map to get rid of join with Forums again
as names and options are already loaded
* include/error_codes.php (ErrorCode.init):
- use left-aligned format for multi-line error-text for not_logged_in-error
2012-04-03 juga
* include/quick/quick_game.php (QuickHandlerGame.process_cmd_play):
- bugfix game-quick-handler: fix score-command calling (unknown) method on wrong object
2012-04-01 juga
* include/quick/quick_game.php (QuickHandlerGame.prepare):
- bugfix for game-quick-handler: fix check on allowing empty agree-argument for scoring
* admin_admins.php, admin_do_translators.php, change_password.php, confirm.php, edit_password.php,
login.php, message.php, message_thread.php, ratinggraph.php, ratingpng.php, show_games.php,
statisticspng.php, update_translation.php, features/lib_votes.php, features/vote_feature.php,
forum/list.php, forum/post.php, forum/read.php, forum/search.php, include/board.php,
include/cache_clock.php, include/classlib_userconfig.php, include/classlib_userquota.php,
include/message_functions.php, include/move.php, include/sgf_parser.php,
rss/status.php, scripts/make_handicap_pattern.php, wap/status.php:
- replace unknown error-codes with known ones:
- bad_data/confirm_add_time/invalid_status/invalid_feature/unknown_object/mysql_clock_ticks -> invalid_args
- mysql_data_corruption -> database_corrupted
- mysql_message_info -> mysql_update_message
- cleanup: use single-quotes for all error-codes; error("code") -> error('code')
- sql-layout
* include/error_codes.php (ErrorCode.init):
- added note about undefined error-codes
- removed unused error-codes: not_empty
* quick_status.php, specs/quick_suite.txt:
- changed header-line for messages in quick-status: message_type/message_date -> type/date
* include/quick/quick_game.php:
- enable "score"-command for game-quick-handler
2012-03-24 juga
* include/quick/quick_game.php (QuickHandlerGame.process_cmd_play, ~.parse_coords):
- bugfixes for game-quick-handler:
- bugfix for setting-handicap of game-quick-handler:
nasty double-semicolon skipping required instructions for db-update
- fixed parsing of single board-coordinate
- missed some global-var declarations
- missed some instance-ref to TheBoard -> $this->TheBoard
- used wrong ref to gchkmove for "move"-command: this.. -> gchkmove..
* include/table_columns.php (Table.make_next_prev_links):
- bugfixes on page-navi-info in table-headers:
- correct current-page and max-page for arbitrary From_Row (start-offset)
- correct offset for navigating to last-page
- changed page-text if found-rows is not used: X -> "Page X"
* include/rating.php (update_rating, update_rating_glicko),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/data_export.php,
specs/db/dragon-ddl.sql:
- removed unused and obsolete funcs:
- update_rating(): old rating-change, not longer used,
dropped corresponding RatingChange-table
- update_rating_glicko(): glicko-rating removed as current DGS-ratings works very well
and there's no proof that glicko works better.
Former code still available in source-repository with rev1.100
-----------
-- remove old unused table for rating-changes
DROP TABLE IF EXISTS RatingChange ;
-----------
* include/board.php (class Board):
- removed OLD replaced now unused methods:
_old_has_liberty_check, _old_mark_territory, _old_toggle_marked_area
* include/message_functions.php (DgsMessage.load_message_receivers):
- bugfix: fix error-handling if message/invitation is rejected because of contact-flags
2012-03-23 juga
* include/config.php (ALLOW_QUICK_DO), NEWS:
- enabled quick-do-suite
* include/quick/quick_game.php (class QuickHandlerGame, ~.parseURL, ~.prepare, ~.process_cmd_play,
~.process_cmd_status_score, ~.build_arr_coords, ~.parse_coords),
include/board.php (class Board, ~.build_from_shape_snapshot, ~.toggle_marked_area, ~.toggle_xy),
include/move.php (class GameCheckScore, ~.set_toggle_unique, ~.check_remove),
specs/quick_suite.txt:
- game-quick-handler:
- implemented "status_score"-command with toggle-modes all/uniq
- implemented "score"-command with agree-argument and supporting toggle-mode
- implemented unique-toggle-mode to avoid re-toggling of already visited stone on scoring
- removed stonestring-check that GUI uses for "score"-command
- bugfix on parsing coordinates
* include/move.php (GameCheckMove.check_move):
- bugfix of last refactoring: take board-reference
* include/quick/quick_game.php (QuickGameHandler.process_cmd_play, ~.process_cmd_status_score),
confirm.php, game.php:
- bugfix of last change with GameCheckScore:
correct var-typo Black/White_prisoners -> Black/White_Prisoners
* include/game_functions.php (GameFinalizer.finish_game),
specs/db/table-Games.txt, clock_tick.php:
- bugfix after testing reject-win-by-timeout
- minor cleanup (use const, remove old-code for timeout-handling, clearer SQL)
2012-03-22 juga
* include/board.php (class Board, ~.init_board, load_from_db, ~.build_from_shape_snapshot,
~.has_liberty_check),
include/classlib_game.php (GameSnapshot.check_illegal_positions),
edit_shape.php (parse_edit_form):
- check for impossible positions like empty-/full-board and suicide when saving shape-game
* goban_editor.php:
- bugfix: fix width + height after goban-flattening to take max-size
* include/move.php (GameCheckMove.update_prisoners;
class GameCheckScore, ~.check_remove, ~.update_stonestring),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play, ~.process_cmd_status_score),
scripts/game_consistency.php, confirm.php, game.php, quick_play.php:
- refactored check_remove() into GameCheckScore-class to remove implicit adjusting of GLOBALs
- bugfix: avoiding globals for check_move() using pass-by-reference to set former globals
* include/board.php (Board.toggle_marked_area):
- bugfix: toggle_marked_area() used unknown func, bug from former refactoring
* include/move.php (class GameCheckMove, ~.check_move, ~.update_prisoners),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
scripts/game_consistency.php (check_consistency),
confirm.php, game.php, quick_play.php:
- refactored check_move() into GameCheckMove-class to remove implicit adjusting of GLOBALs
- bugfix for game-quick-handler "move"-command: wrote wrong main-Moves-entry of move
2012-03-21 juga
* include/move.php (check_handicap),
confirm.php, game.php:
- refactored check_handicap() to remove adjusting GLOBAL $stonestring
* scripts/updates/ChangeLog_1_0_13,
scripts/updates/ChangeLog_1_0_14,
scripts/updates/ChangeLog_1_0_15,
ChangeLog:
- splitted ChangeLog into different files on major releases
- splitted away part of future 1.0.15 release for shorter CVS-diffs
* include/game_functions.php (class GameSettingsCalculator, ~.calculate_settings),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info),
include/message_functions.php (game_info_table),
specs/quick_suite.txt:
- calculate probable game-settings for "info"-command of message-quick-handler
- refactored calculation of probable game-settings from 'include/message_functions.php'
into new GameSettingsCalculator-class in 'include/game_functions.php'
* quick_status.php, specs/quick_suite.txt:
- extended quick-status games-list with number of handicap-stones,
so bot would know how many stones to set
2012-03-20 juga
* include/make_game.php (make_invite_game):
- bugfix: wrong check on tournament-feature, need to check if given tid >0
* include/std_functions.php (start_html),
skins/dragon/print.css (removed):
- removed default print.css file, because it's not maintained anyway
* include/quick/quick_message.php (class QuickHandlerMessage, ~.parseURL, ~.prepare, ~.process,
~.process_cmd_info, ~.process_cmd_move_msg, ~.process_cmd_delete_msg, ~.process_cmd_send_msg),
include/message_functions.php (change_folders; DgsMessage.load_message),
specs/db/table-Messages.txt,
specs/quick_suite.txt:
- extended message-quick-handler:
- implemented "move_msg"-command to change folder of messages
- implemented "delete_msg"-command to destroy messages without going via trashcan-folder
- implemented "accept_inv" and "decline_inv"-command to accept & decline invitation
- added "game_status"-field for deleted/accepted invitations and not showing game-data anymore
2012-03-19 juga
* include/game_functions.php (GameHelper.get_quick_game_action;
FairKomiNegotiation.get_quick_fair_komi_game_action),
include/quick/quick_game_info.php (QuickHandlerGameInfo.process_cmd_info),
specs/quick_suite.txt,
quick_status.php:
- implement 'game_action' for fair-komi-negotiation
* include/quick/quick_message.php (QuickHandlerMessage.prepare, ~.process_cmd_info,
~.process_cmd_send_msg, ~.convertMessageReplyStatus),
include/quick/quick_game_info.php (QuickHandlerGameInfo.process_cmd_info),
include/message_functions.php (MessageControl.handle_send_message),
include/game_functions.php (GameHelper.get_quick_game_action),
include/classlib_user.php (User.load_quick_userinfo),
include/error_codes.php (ErrorCode.init),
specs/quick_suite.txt,
message.php (handle_send_message_selector),
quick_status.php:
- adjusted message-quick-handler:
- added checks for "send_msg"-command on folder-id and reply-message-id,
- extended "info"-command with 'can_reply' & 'need_reply',
fill in count of started games for invitations
- added rating in user-info-blocks for "info"-command on message-object
- bugfix: forbid reply to message from myself
- adjusted game-info-quick-handler adding 'game_action'-field for "info"-command
- extended quick-status for version 2:
- showing bulletin-headers even if there are no bulletins
- included messages from REPLY-folder
- extended message-entry with folder-id & message-type
- extended game-entry with game-action
- adding warning if lists of bulletins & MPG-games not shown
- change signature of map in MessageControl.handle_send_message(,,map)
combining URL-arguments send_accept/send_decline into one field 'action'
* include/quick/quick_bulletin.php (QuickHandlerBulletin.process_cmd_list):
- bugfix: showing bulletin authors user-info
* include/quick/quick_handler.php (QuickHandler.build_obj_user),
include/quick/quick_contact.php (QuickHandlerContact.build_obj_contact_user),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info),
include/quick/quick_wroom.php (QuickHandlerWaitingroom.process_cmd_info):
- added include-key-filter for adding rating/country-fields in user-info-blocks
2012-03-17 juga
* login.php:
- localized recent problem, so disabling cache on login
* login.php:
- bugfix?: after setting new session-code after password has been verified,
user is authenticated. Therefore removed reload of login-page with cookie-check
and just continue as user then IS logged-in already (no need to re-check).
SourceForge-server showed strange behaviour not longer returning cookies after login.
- check login-denied before password/cookie-check
2012-03-13 juga
* include/game_functions.php (class GameFinalizer, ~.finish_game, ~.should_reject_win_by_timeout;
class GameNotify, ~.get_text_game_result),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
include/std_functions.php (MAX_REJECT_TIMEOUT),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
admin_game.php, change_profile.php, clock_tick.php, confirm.php,
edit_profile.php, userinfo.php:
- reject game-win by timeout by making the game unrated
- loser may be inactive for some time, or left the server;
so for a more stable rating, added profile-option to allow winner
to not boost his rating "undeserved"
- added permanent (non-browser-dependent) profile-option to control number of days
the loser has not moved to accept a "reject" of a timed-out game
- stored in Players.RejectTimeoutWin as -1 (disabled), 0..120 (days)
- added info-note in end-game-message if win "rejected"
- show current setting of RejectTimeoutWin on user-info-page
to myself or admin/game-admin
-----------
-- added field to control if win-by-timeout should be rejected for winner
ALTER TABLE Players
ADD RejectTimeoutWin tinyint signed NOT NULL default -1 ;
-----------
* userinfo.php:
- show last-quick-access to everyone
- show MPG-games info also to game-admin
2012-03-12 juga
* userinfo.php, skins/dragon/screen.css:
- added link to games-list with "games lost by timeout"
* include/filter.php (SearchFilter.init, ~.add_or_del_filter, ~.parse_requested_filters):
- bugfix: activating requested filters if hidden
* include/quick/quick_message.php (class QuickHandlerMessage, ~.parseURL, ~.prepare,
~.process, ~.process_cmd_send_msg, ~.init_folders, ~.load_user_handle),
include/quick/quick_handler.php (QuickHanlder.setError),
include/message_functions.php (class MessageControl, ~.read_message_receivers,
~.handle_send_message, ~.check_max_games, ~.is_bulk_admin),
message.php (handle_send_message_selector),
specs/quick_suite.txt:
- started implementation of "send_msg"-command
- for quick-suite: added check if bulk-message allowed
- refactored sending-message (msg/invite/dispute) from 'message.php'
into MessageControl-class in 'include/message_functions.php'
2012-03-11 juga
* include/quick/quick_game_info.php (QuickHandlerGameInfo.process_cmd_info),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info):
- added field 'shape_snapshot'
* include/quick/quick_handler.php (class QuickHandler, ~.build_obj_user):
- return standard repsonse with fields: version, error (empty)
- bugfix: also set user-fields 'country/rating/rating_elo' if value is empty
to avoid table-list-format-error on skipped fields
* include/wroom_control.php (class WaitingroomControl, ~.join_waitingroom_game, ~.delete_waitingroom_game),
include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.prepare, ~.process),
specs/quick_suite.txt,
join_waitingroom_game.php:
- refactored join/delete-waiting-room game from 'join_waitingroom_game.php' into 'include/wroom_control.php'
- extended waitingroom-handler:
- implemented "delete" and "join" of waiting-room-game
* include/quick/quick_wroom.php (QuickHandlerWaitingroom.process_cmd_info),
include/message_functions.php (game_info_table),
waiting_room.php (add_old_game_form):
- show count of already-started-games on waiting-room-info (just like for invitation)
* include/db/waitingroom.php (Waitingroom.build_query_sql):
- bugfix: filter on waitingroom-id if given
* include/db/waitingroom.php (class Waitingroom, ~.to_string, ~.persist, ~.insert,
~.update, ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_waitingroom),
include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.parseURL, ~.prepare,
~.process, ~.process_cmd_info),
include/quick/quick_message.php (QuickHandlerMessage.process_cmd_info),
include/quick/quick_handler.php (QuickHandler.build_obj_user):
- implemented waitingroom-handler with command:
- "info" to retrieve info about single waitingroom-entry (unfinished)
- added default-values for fields: game_type, game_players
- changed field-pos of 'opp_started_games'
* include/error_codes.php (ErrorCode.init):
- added error 'unknown_entry' as general-error for quick-suite
* specs/quick_suite.txt:
- extended specs for:
- (3a) user-object "info"-command: check for logged-in user as fallback
- (3b) game-object "info"-command: added jigo-mode
- (3c) message-object: added specs for invitations, send-message, folder-commands, list-messages
- (3f) wroom-object: added specs for waiting-room: list, info, join, new_game
- (3g) bulletin-object: added specs for bulletins: list, mark_read
- extend user-data with rating/rating_elo-fields
- added TODOs
2012-03-10 juga
* include/db/bulletin.php (Bulletin.mark_bulletin_as_read):
- bugfix: allow bulletin read-marking also on archived bulletins
* include/quick/quick_bulletin.php (class QuickHandlerBulletin, ~.parseURL, ~.prepare,
~.process, ~.process_cmd_list, ~.process_cmd_mark_read, ~.convertBulletinFlags):
- implemented bulletin-handler with commands:
- "list" to get list of unread bulletins
- "mark_read" to mark bulletins as read
* include/quick/quick_handler.php (QuickHandler.build_obj_user):
- quick-suite: add userinfo rating/rating_elo-fields if Rating2-field available in data-source
* opponents.php, users.php:
- from wishlist: added register-date to users- and opponents-list with filter
* users.php (users_show_pos_extend_table_form),
site_map.php, skins/dragon/screen.css:
- from wishlist: show players absolute position in the user-list ordered by rating
* include/table_columns.php (Table.set_from_row, ~.set_sort):
- added set-methods for from-row and explicit table-sort
* include/std_functions.php (who_is_logged):
- bugfix: passing quick-suite-arg as login-options to is_logged_in()-func
* include/quick/quick_bulletin.php (class QuickHandlerBulletin, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.process_cmd_list),
include/quick/quick_wroom.php (class QuickHandlerWaitingroom, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.process_cmd_list),
include/quick/quick_handler.php (QuickHandler.build_obj_user),
include/quick/quick_suite.php (QuickSuite.getQuickHandler):
- added skeleton for bulletin and waitingroom quick-handler
* include/quick/quick_message.php (QuickHandlerMessage.prepare, ~.process_cmd_info):
- message quick-handler: added game-settings of invitational message for "info"-command
* include/quick/quick_user.php (QuickHandlerUser.prepare):
- user quick-handler: use logged-in user if no user specified
* site_map.php:
- added new-FK-game, templates
2012-03-07 juga
* include/quick/quick_game.php (class QuickHandlerGame, ~.parseURL, ~.prepare,
~.process_cmd_play, ~.process_cmd_status_score, ~.prepareMoves, ~.convert_coords, ~.parse_coords),
include/quick/quick_game_info.php (QuickHandlerGameInfo.process_cmd_info, ~.convertGameFlags),
include/quick/quick_user.php (QuickHandlerUser.process),
include/classlib_game.php (class GameScore, ~.set_board_status, ~.get_board_status;
class BoardStatus, ~.add_coord, ~.get_coords),
include/board.php (Board.fill_game_score),
include/coords.php (sgf2board_coords),
include/move.php (check_remove),
specs/quick_suite.txt:
- quick-suite game-obj: added status_score-command
- in game-scoring phase returning: resultset, game-score, board-status
with coordinates-list of black/white stones/territory/dead-stones, dame and neutral points
- allow status_score-command only on game-status SCORE|SCORE2
- allow status_score-command also if not-your-turn and without move-id
- added output-format for coordinates of status_score-command
- parse also SGF-coordinate-list without comma-separators
- flatten board-status-structure in main-result
- quick-suite game-obj info-command:
added shape_id, ADMRESULT-flag, added last_quick_access, games_mpg
2012-03-04 juga
* include/goban_handler_sl.php (class GobanHandlerSL1, ~.parse_line, ~.parse_SL_text, ~.write_goban),
goban_editor.php:
- <igoban>-tag: replaced '* ~ ?' with 'A V ~'
- use SL-syntax 'A' (black-territory), 'V' (white-territory) instead of '*' (in use on SL) and '~'
- use SL-unused '~' (neutral-territory), '=' (dame)
- SL-syntax '*' and '?' are not supported
* include/game_functions.php (GameHelper.load_game_row;
class FairKomiNegotiation, ~.read_from_game_row, ~.get_komibid, ~.is_choose_color,
~.get_view_komibid, ~.echo_fairkomi_table, ~.get_htype_user_handles,
~.build_form_actions, ~.build_notes, ~.check_komibid, ~.allow_start_game,
~.check_komibid, ~.start_fairkomi_game;
GameSetup.format_handicap_type, ~.parse_jigo_mode_from_game_setup, ~.build_invitation_diffs,
~.swap_htype_black_white;
is_htype_divide_choose, get_category_handicaptype, get_invite_handicaptype,
get_handicaptype_for_invite),
include/make_game.php (make_invite_game, make_invite_game_setup, accept_invite_game, create_game),
tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules),
include/message_functions.php (game_settings_form, game_info_table),
include/game_texts.php (GameTexts.get_fair_komi_types),
include/error_codes.php (ErrorCode.init),
specs/db/table-Games.txt, skins/dragon/screen.css,
confirm.php (do_komi_save),
game.php (draw_game_info),
gameinfo.php, join_waitingroom_game.php,
message.php (echo_dispute_diffs),
waiting_room.php (determine_color):
- added fair-komi handling for divide&choose for invite & new-game
- one player chooses komi, the other chooses color;
order of komi-first can be specified by handicap-type
- adjusted game-settings-form, game-info, fair-komi-negotiation dialog,
invite/dispute form, dispute-diff-info
- accept one komi-bid, then color-choice which is starting the game
- use special formatting of fair-komi divide&choose handicap-type
including player-handle which choose komi/color respectively
- added check on fair-komi-negotiation divide&choose type to check
if komi-saving or color-choosing is correct
- refactored loading game-row into GameHelper::load_game_row()
* include/std_functions.php (send_message):
- bugfix for send_message(): set bulk-message-flag not for system-messages
* scripts/data_export.php:
- added new tables: Shape, TournamentNews, TournamentResult; corrected table-typo
2012-02-18 juga
* include/classlib_userconfig.php (class ConfigBoard, ~.get_board_flags,
~.set_board_flags, ~.update_all, ~.fill_player_row, ~.load_config_board),
include/board.php (class Board, ~.load_from_db, ~.mark_last_captures,
~.draw_last_captures_box, ~.set_style, ~.draw_board),
include/std_functions.php ($cookie_pref_rows),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
change_profile.php, edit_profile.php, game.php:
- added board-config to mark and print last-move-captures
- also useful as ko-indicator
- stored in ConfigBoard.BoardFlags
- on game-page added last-move-capture info-box below capture-box
- enabling with option "Mark Last Move Capture" in user-profile
-----------
-- added board-flags for marking last-capture
ALTER TABLE ConfigBoard
ADD BoardFlags tinyint unsigned NOT NULL default 0 AFTER Woodcolor ;
-----------
* include/message_functions.php (message_info_table),
message.php (handle_change_folder):
- added following of message-folder-move also for single-message-view
- if follow-checkbox enabled, moving to target-folder
- default is to stay in same folder
* include/game_functions.php (GameRematch.add_rematch_links), site_map.php:
- adjusted bottom-link for rematch: copy new game -> copy as new game
2012-02-13 juga
* scripts/browser_stats.php:
- added ipod-family
* edit_rating.php:
- bugfix: var-typo, used wrong var
2012-02-05 juga
* include/game_functions.php (append_form_add_waiting_room_game;
class GameSetupChecker, ~.is_error_field, ~.get_class_error_field, ~.check_komi,
~.check_time, ~.check_adjust_komi, ~.check_min_rated_games, ~.check_game_players),
include/message_functions.php (game_settings_form),
skins/dragon/screen.css,
new_game.php (add_new_game_form, handle_add_game),
message.php:
- highlight input-text-fields for invite & new-game if value contains error,
checked by GameSetupChecker for fields: komi_m, adj_komi, game_players,
min_rated_games, time-fields (timevalue, byotimevalue_jap/can/fis, byoperiods_jap/can)
* include/game_functions.php (get_category_handicaptype, get_invite_handicaptype,
get_handicaptype_for_invite;
FairKomiNegotiation.get_komibid, ~.echo_fairkomi_table, ~.build_form_actions,
~.build_notes, ~.check_komibid, ~.allow_start_game, ~.save_komi, ~.start_fairkomi_game;
GameSetupChecker.check_min_rated_games;
GameSetupBuilder.fill_invite_from_game_setup, ~.fill_new_game_from_game_setup),
include/make_game.php (make_invite_game, make_invite_game_setup, accept_invite_game),
include/message_functions.php (game_settings_form, game_info_table),
include/game_texts.php (GameTexts.get_fair_komi_types, ~.get_fair_komi_color_note),
tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules),
confirm.php (do_komi_save), game.php (draw_fairkomi_negotiation),
join_waitingroom_game.php, waiting_room.php:
- added fair-komi handling for open-auction-komi for invite & new-game
- added submit-button for fair-komi dialog game-page to accept last komi-bid starting the game
- for open-auction-komi ask players in turn for komi-bids till one accepts by starting the game
- defined default fair-komi handicap-type
- bugfix: wrong var for game-setup-checker on min-rated-games, check only if non-empty
- bugfix: corrected URL-var for viewmode of new-game page -> 'view'
* include/message_functions.php (game_settings_form),
message.php:
- bugfix: check game-setup form-fields only if form with game-settings submitted;
added hidden-field 'gsc' to indicate that
- bugfix: derive already accepted/declined message also if msg-type is NORMAL
* new_game.php (handle_add_game):
- bugfix: preserve former input-fields by using redraw-mode if errors found
- bugfix of previous refactoring: missed global var $NOW
* include/error_codes.php (ErrorCode.init),
skins/dragon/screen.css:
- format forgotten-password error-note as left-aligned block
2012-02-03 juga
* include/game_functions.php (GameSetupChecker.add_error,
~.add_default_values_info, ~.check_time),
new_game.php (add_new_game_form, handle_add_game),
add_to_waitingroom.php [REMOVED],
message.php:
- new-game: perform checks on input-text-fields
- show errors instead of throwing error-code with all form-values gone
- refactored 'add_to_waitingroom.php' into 'new_game.php'
to allow "preview" to show errors
- bugfix: for simple new-game-view only check Fischer-time fields
- invite/new-game: on form-check-error add info, that invalid values
have been replaced with default-values
2012-02-02 juga
* include/game_functions.php (class GameSetupChecker, ~.has_error, ~.get_errors,
~.check_komi, ~.check_time, ~.check_adjust_komi, ~.check_min_rated_games,
~.check_game_players, ~.check_fields),
message.php:
- invite/dispute: perform checks on input-text-fields,
show errors instead of throwing error-code with all form-values gone
2012-01-31 juga
* include/game_functions.php (ProfileTemplate.fill_invite_with_new_game,
~.is_valid_new_game_template_for_invite, ~.is_valid_template_raw_check),
templates.php (echo_list_templates), message.php:
- templates: load new-game-templates also for invite, except for MP-game
* include/game_functions.php (ProfileTemplate.fill, ~.fill_new_game_with_invite),
new_game.php, templates.php:
- templates: load invite-templates also for new-game views
* templates.php (check_save_template, echo_save_template):
- save-template: if name is missing, auto-fill name-field
with name of entry to be replaced
* include/game_functions.php (MAX_PROFILE_TEMPLATES):
- increased limit of max-profile-templates: 20 -> 30
* include/game_functions.php (ProfileTemplate.decode):
- profile-template decoding: parse syntax-unspecific: eat next group and
parse it independently of type; shape must be last b/c snapshot can contain spaces
* include/game_functions.php (class GameSetup, ~.set_defaults, ~.encode, ~.to_string,
~.encode_profile_template, ~.new_from_game_setup, ~.fill_new_game_from_game_setup;
ProfileTemplate.encode, ~.fill, ~.new_template_game_setup_newgame, ~.decode;
parse_waiting_room_rating_range, append_form_add_waiting_room_game),
include/message_functions.php (game_settings_form),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/table-Profiles.txt,
add_to_waitingroom.php, new_game.php (add_new_game_form),
people.php, templates.php:
- added save-template for new-game views redirecting to templates-page to save
- added save-template button
- added template-encoding and decoding for new-game form-settings,
using game-setup-encoding + extra-encoding for new-game-related data + message-encoding
- new-game: allow loading new-game template on all views even
if saved from different view using bottom-links to other new-game views
- new-game: re-organized bottom-links, added link to template-list
- templates: added icon (plus-sign) for adding new-game
- bugfix: decoding game-setup with negative value for ratings<0
- bugfix: filling new-game ratings with echo_rating() for correct rating-formatting
- bugfix: reading numGames for new-game page from URL
-----------
# added image for new-game
copy /images/newgame.gif
-----------
2012-01-30 juga
* include/game_functions.php (GameSetup.encode_profile_template;
class GameSetupBuilder, ~.fill_invite_from_game, ~.fill_invite_from_game_setup,
~.fill_new_game_from_game, ~.fill_new_game_from_game_setup, ~.build_url_game_basics,
~.build_url_time, ~.build_url_cat_htype_manual, ~.build_url_handi_komi_rated,
~.build_url_invite_to;
class ProfileTemplate, ~.encode, ~.fill, ~.fill_message, ~.to_string,
~.new_template_game_setup_invite, ~.decode, ~.eat_line, ~.get_template_type_text,
~.new_default_profile, ~.is_valid_type, ~.known_template_types),
include/classlib_profile.php (PROFTYPE_TMPL_INVITE, PROFTYPE_TMPL_NEWGAME),
include/make_game.php (make_invite_template_game_setup),
specs/db/table-Profiles.txt, skins/dragon/screen.css,
templates.php (echo_list_templates, check_save_template, check_delete_template),
message.php (handle_save_template),
game_rematch.php:
- added save-template for invite-message redirecting to templates-page to save
- merged different templates-types into one template-list
- added checks on saving template: max. payload of 10kB
- added template-encoding and decoding for invite-message
using game-setup-encoding + extra-encoding for shape-id & shape-snapshot + message-encoding
- refactored build-url-funcs from 'game_rematch.php' into class GameSetupBuilder
in 'include/game_functions.php' to be used for template-loading as well
- refactored: game-setup-templates splitted into profile-types PROFTYPE_TMPL_INVITE/NEWGAME
2012-01-29 juga
* include/classlib_profile.php (class Profile.*, ~.load_profiles;
SearchProfile.has_profile, ~.save_profile),
include/game_functions.php (class ProfileTemplate, ~.encode, ~.build_profile,
~.build_url_message, ~.new_template_send_message, ~.decode, ~.add_menu_link,
~.get_template_type_text, ~.new_default_profile),
include/error_codes.php (ErrorCode.init),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Profiles.txt,
specs/db/dragon-ddl.sql,
skins/dragon/screen.css,
templates.php (echo_list_templates, echo_save_template, check_save_template,
save_template, check_delete_template, echo_delete_template),
message.php (handle_save_template),
site_map.php:
- added feature to save templates for send-message & game-setup:
- added page to manage templates
- show list of templates for send-message & game-setup
- templates stored as profile-types PROFTYPE_TMPL_SENDMSG & PROFTYPE_TMPL_GAMESETUP
- forward user-id for loading template to be used in combination after selecting recipient user
- added checks on saving template: mandatory unique name, max. entries of templates (20)
- added deletion of templates
- extended Profiles.Name: 40 -> 60 chars
- message-page:
- added save-template button for sending-message,
redirecting to templates-page via form-GET-method,
which also restricts length of template (browser-specific)
- load template for send-message given via 'tmpl'-arg in URL
- added bottom-link to templates-list
- refactored Profile-stuff:
- refactored Profile-class: renamed attributes into camel-case names
- renamed func: Profile.update_profile() -> Profile.save_profile()
- refactored SQL for save-profile using UpdateQuery-class
- auto-update Lastchanged-field on save-profile
- adjusted load_profiles() to accept array-type and return templates in different order than profile-std-order
-----------
-- extended Profiles.Name
ALTER TABLE Profiles
MODIFY Name varchar(60) NOT NULL default '' ;
-----------
* include/gui_functions.php (span):
- added empty-default on span-value
2012-01-25 juga
* include/shape_control.php (ShapeControl.getFlagsText),
include/db/shape.php (SHAPE_FLAG_PUBLIC),
specs/db/table-Games.txt,
edit_shape.php (parse_edit_form), list_shapes.php, site_map.php:
- added public-flag for shape, default OFF on new shape
- shape-list:
- default view shows only public shapes
- added bottom-link showing all-shapes including public
- added bottom-link showing only my shapes (public and private)
* include/error_codes.php (ErrorCode.init):
- sync'ed changes from stable-branch by adding more text for error-code 'wrong_password'
explaining what to do when forgotten password as many users wanted another a new one,
but didn't know how to do it (support-forum giving email and user-id)
* include/std_functions.php (send_message):
- added HOT-section within send_message() where user shouldn't interrupt
* confirm.php:
- bugfix: allow deletion of game in fair-komi-negotiation
* message.php:
- bugfix for recent cleanup: set correct message-type to decide upon for submode
2012-01-22 juga
* all files:
- adjusted Copyright on every file to: 2001-2012
* include/globals.php (MSGTYPE_...), include/quick/quick_message.php,
scripts/message_consistency.php,
tournaments/include/tournament_helper.php, tournaments/include/tournament_ladder.php,
tournaments/edit_participant.php, tournaments/ladder/challenge.php,
admin_game.php, join_waitingroom_game.php, message.php (handle_send_message),
search_messages.php:
- use consts for MSGTYPEs & GAME-status
- minor changes (rename vars, replace global, cleanup, debug-output, comments, layout)
* quick_play.php:
- better safety-checks/error-codes on checking game-status
* include/make_game.php (make_invite_game, accept_invite_game, create_game,
make_standard_placement_of_handicap_stones),
include/game_functions.php (GameHelper.update_players_start_game),
join_waitingroom_game.php:
- refactor SQL-update for updating player-stats on game-start
using UpdateQuery-class in GameHelper
- better safety-checks/error-codes for invitation-games
- minor changes (rename vars, replace global, cleanup, debug-output, comments, layout)
* include/message_functions.php (game_settings_form, game_info_table; DgsMessage.load_message):
- optimize: simplify SQL-query for dispute-check removing Players-join
- better safety-checks/error-codes for invitation-games
- use consts for MSGTYPEs
- minor fixes/changes (defaults, vars, typo, comments)
* include/std_functions.php (verify_email):
- commented on unused email-chars on verify_email-func
- use consts for MSGTYPEs
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- fix db-changes for game-invitations
* specs/db/table-Games.txt, specs/db/table-Messages.txt:
- adjusted docs for Game- and Message-related tables/fields
2012-01-16 juga
* include/rating.php (update_player_rating), edit_rating.php:
- refactor SQL-update for rating-update using UpdateQuery-class
2011-11-09 juga
* status.php (load_games_to_move):
- show number of games-to-move in page-title for browser-tabs
* links.php:
- removed broken links, replaced 'Go News'
2011-09-12 juga
* include/game_functions.php (append_form_add_waiting_room_game;
GameSetup.new_from_game_setup; class GameRematch.add_rematch_links),
include/globals.php (REMATCH_INVITE, REMATCH_NEWGAME),
include/connect2mysql.php (bool_YN),
game_rematch.php (build_url_new_game_from_game, build_url_new_game_from_game_setup,
build_url_invite_from_game, build_url_invite_from_game_setup, build_url_game_basics,
build_url_time, build_url_cat_htype_manual, build_url_handi_komi_rated, build_url_invite_to),
new_game.php (add_new_game_form),
gameinfo.php, message.php, site_map.php:
- added 'Rematch' and 'Copy new game' as bottom-links on game-info-page:
- redirect to invitation-page or new-game-page with copied original game-settings if possible
- read game-settings from GameSetup-field if present, otherwise calculate from Games-entry
- additional changes for game-info-page:
- bugfix: show jigo-check-restriction for fair-komi game
- bugfix: show better error 'invalid_game_status' for game on INVITATION-status
* include/db/games.php (class Games, ~.setRuleset, ~.fillEntityData, ~.new_from_row):
- bugfix: added missing Games.Ruleset-field
2011-09-11 juga
* include/game_functions.php (HTYPE_AUCTION_SECRET, INVITE_HANDI_FIXCOL,
INVITE_HANDI_AUCTION_SECRET, CAT_HTYPE_FAIR_KOMI, MAP_GAME_SETUP; class GameAddTime;
class FairKomiNegotiation, ~.read_from_game_row, ~.has_both_komibids, ~.get_komibid,
~.set_komibid, ~.get_uid_highest_bid, ~.get_view_komibid, ~.echo_fairkomi_table,
~.build_form_actions, ~.build_notes, ~.save_komi, ~.start_fairkomi_game, ~.check_komibid;
class GameSetup, ~.set_defaults, ~.init_opponent_handicaptype, ~.is_fairkomi, ~.encode,
~.read_waitingroom_fields, ~.to_string, ~.format_handicap_type, ~.format_time,
~.format_std_handicap, ~.new_from_game_setup, ~.build_invitation_game_setup,
~.parse_invitation_game_setup, ~.parse_jigo_mode_from_game_setup, ~.new_from_game_row,
~.build_invitation_diffs, ~.create_opponent_game_setup, ~.swap_htype_black_white;
GameHelper.update_clock; GameFinalizer.finish_game; GameNotify.get_text_game_deleted;
get_category_handicaptype, get_invite_handicaptype, get_handicaptype_for_invite,
get_gamesettings_viewmode, append_form_add_waiting_room_game),
include/message_functions.php (game_settings_form, game_info_table, echo_game_restrictions;
DgsMessage.load_message),
include/make_game.php (make_invite_game, make_invite_game_setup, accept_invite_game, create_game),
include/game_texts.php (GameTexts.get_manual_handicap_types, ~.build_fairkomi_gametype,
~.get_fair_komi_types, ~.get_fair_komi_color_note, ~.get_jigo_modes),
include/db/games.php (class Games, ~.fillEntityData, ~.new_from_row, ~.getStatusText),
tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules,
~.convertTournamentRules_to_GameSetup, ~.create_game, ~.prepare_create_game_row),
include/error_codes.php (ErrorCode.init),
include/globals.php (GAME_STATUS_KOMI, GSETVIEW_FAIRKOMI),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
include/quick_common.php (IS_STARTED_GAME, isStartedGame),
include/std_functions.php ($ENUM_GAMES_STATUS),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt, specs/db/table-Waitingroom.txt, specs/quick_suite.txt,
scripts/fix_game_snapshot.php, scripts/fix_games_timeleft.php, scripts/game_consistency.php,
scripts/player_consistency.php, scripts/start_frozen_clocks.php, scripts/tests/AllTests.php,
skins/dragon/screen.css, tournaments/game_admin.php,
rss/status.php, wap/status.php,
game_players.php (load_game, add_waiting_room_mpgame, start_multi_player_game),
game.php (get_alt_arg, draw_fairkomi_negotiation, draw_game_info),
confirm.php (jump_to_next_game, do_komi_save),
message.php (echo_dispute_diffs),
waiting_room.php (determine_color),
add_to_waitingroom.php, admin_game.php, clock_tick.php, daily_cron.php, edit_vacation.php,
game_calc.php, gameinfo.php, halfhourly_cron.php, join_waitingroom_game.php, new_game.php,
opponents.php, quick_play.php, quick_status.php, show_games.php, status.php, userinfo.php):
- added handling for fair-komi negotiation, starting with secret-auction-komi
- added new game-status KOMI to negotiate fair-komi on game-page
- added GameSetup-class to handle game-settings stored in Games.GameSetup-field for:
- invitation-handling, on disputes and on accepting invitation/dispute-game
- used later as config for setting up rematch with same game-settings
- read handicap-type and jigo-mode required for fair-komi-negotiation
- tournaments: game-setup is stored on starting/creating tourney-games
- MPG: no game-setup needed/stored when starting multi-player-game,
because config for new-MPG can be created from standard Games-fields
- GUI-changes:
- new-game-page: added fair-komi-view with jigo-restriction
- waiting-room: show fair-komi-info on game-type & game-settings column
- game-settings-info: show fair-komi-info including probably game-settings
for waiting-room-offers, invitation and disputes
- invitation & disputes (incomplete yet):
- game-page adjustments for fair-komi-negotiation:
- show fair-komi-negotiation dialog if game started on new KOMI-status
- for secret-auction-komi ask players in turn for komi-bids,
player to "move" (give komi-bid) controlled by Games.ToMove_ID
- game is started for secret-auction-komi if both players saved their komi-bids
- during fair-komi-negotiation: game can be deleted, no game-observing allowed,
initially hide private-notes, hide game-comments-link, no add-time allowed,
no SGF-download as there is no game and komi/color are undecided,
added 'Refresh'-bottom-link to reload page
- game-info-page: show fair-komi handicap-type, adjusted komi and color-icons,
show whose turn it is, show players komi-bids if allowed to view
- game-list-pages: show fair-komi-info in game-type-filter/column
- RSS-Status: show special game-type for games in fair-komi-negotiation status
- invite/dispute: show diffs in game-settings between players
- changed default time-settings for new-game:
"Fischer time 30d + 1d" -> "Fischer time with 14d + 1d"
- cleanup:
- bugfix: showing probable game-settings on waiting-room-offer with color-icon for MPG,
removing double HTYPE_WHITE-handling
- refactored first approach of auction-komi into better handling of fair-komi in general
- renamed HTYPE_AUCTION_KOMI -> HTYPE_AUCTION_SECRET for secret-auction-komi
- renamed CAT_HTYPE_AUCTION_KOMI -> CAT_HTYPE_FAIR_KOMI introducing new category
- use defaults for game-settings like adjust-/min/max-handicap
- refactored handling Black/White-fix-color game-setting by replacing ToMove_ID=1
with INVITE_HANDI_FIXCOL. Still, HTYPE_BLACK/WHITE is determined by Black/White_ID
in Games-table.
- refactored clock/time-update into GameHelper::update_clock()-func
- db-consistency: renamed fields Waitingroom.Ratingmin/max -> RatingMin/Max
- SQL-optimization to avoid NOT-IN -> using JOINed-format instead
- formatting/code-cleanup
-----------
-- added handicap-types for auction-komi, divide & choose
DELETE FROM Waitingroom
WHERE Handicaptype='auko' ;
ALTER TABLE Waitingroom
MODIFY Handicaptype enum('conv','proper','nigiri','double','black','white','auko_sec','auko_opn','div_ykic','div_ikyc') NOT NULL default 'conv' ;
-- added new game-status KOMI to negotiate fair-komi
ALTER TABLE Games
MODIFY Status enum('KOMI','SETUP','INVITED','PLAY','PASS','SCORE','SCORE2','FINISHED') NOT NULL default 'INVITED' ;
-- store game-setings for rematch/komi-negotiation/invitations
ALTER TABLE Games
ADD GameSetup varchar(255) NOT NULL default '' ;
-- db-cleanup for consistency: renamed fields Waitingroom.Ratingmin/max -> RatingMin/Max
ALTER TABLE Waitingroom
CHANGE Ratingmin RatingMin smallint(6) NOT NULL default '-9999',
CHANGE Ratingmax RatingMax smallint(6) NOT NULL default '-9999' ;
-----------
* tournaments/list_tournaments.php:
- changed default-order of tournaments to highlight dragon/public/private scope-tourneys:
sort by ascending Scope, then descending tournament-ID
- cleanup: added Tournament-db-alias to table-columns to avoid ambiguity with other tables
* include/form_functions.php (class Form, FEC_BLOCK_FORM, ~.create_form_string):
- added config FEC_BLOCK_FORM to allow to print form-items in blocks,
clearing rows after printing, so that Form-instance can be used for other blocks
* include/connect2mysql.php (class UpdateQuery, ~.has_updates, ~.upd_txt, ~.upd_num,
~.upd_raw, ~.upd_time, ~.upd_bool, ~.merge, ~.get_query):
- added helper-class to build SQL-statement to insert or update entry in db-table
* login.php, sgf.php, rss/status.php:
- fix bug (sync from stable-branch):
- on login store original user-id (uhandle) in cookie as db-check is case-INsensitive
- compare user-id case-INsensitive to download SGF-comments
* game_comments.php:
- do not show comments for game on INVITED-status
2011-08-21 juga
* include/game_functions.php (GameHelper.count_started_games;
append_form_add_waiting_room_game, echo_started_games, echo_accept_same_opponent),
include/message_functions.php (game_info_table, echo_game_restrictions),
specs/db/table-Waitingroom.txt, message.php, waiting_room.php:
- added waiting-room restriction on total number of started games with same opponent
- challenger is restricted by number of started games to join game-offer
- optimized waiting-room-query for same-opponent-check
- number of already started games is shown for player on receiving invitation/dispute
- number of started games does NOT include multi-player-games
* include/make_game.php (make_invite_game, create_game):
- bugfix for auction-komi: set init-value for black/white-prisoners
- bugfix for handling White-first with and without handicap-stones
for shape-game & multi-player shape-game
2011-08-08 juga
* include/message_functions.php (game_settings_form, game_info_table; DgsMessage.load_message),
include/make_game.php (make_invite_game, accept_invite_game, create_game),
include/game_functions.php (get_auction_komi_note),
include/error_codes.php (ErrorCode.init),
tournaments/include/tournament_rules.php (TournamentRules.convertEditForm_to_TournamentRules),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Waitingroom.txt,
skins/dragon/screen.css, specs/db/table-Games.txt,
add_to_waitingroom.php, join_waitingroom_game.php, message.php (handle_send_message),
waiting_room.php (add_old_game_form, determine_color):
- added auction-komi in new-game expert-view and for invitations & disputes
- opponent needs to enter komi-bid for joining waiting-room game or invitation or dispute
- keep track of komi-bids of both users for disputes of game-invitation in Games.Black/White_Prisoners
- added more checks on komi / komi-bid
- bugfixes, smaller layout changes
-----------
-- added handicap-type for auction-komi
ALTER TABLE Waitingroom
MODIFY Handicaptype enum('conv','proper','nigiri','double','black','white','auko') NOT NULL default 'conv' ;
-----------
* include/board.php (Board.load_from_db),
include/std_functions.php (game_reference),
game.php:
- bugfix: fix moving to SETUP-move of shape-game
* goban_editor.php (load_igoban_from_sgf):
- bugfix: fix upload of missing SGF-file
* view_shape.php:
- bugfix: add shape-note title for all different view-modes
2011-08-07 juga
* include/classlib_game.php ($BASE64, GameSnapshot.make_game_snapshot, ~.parse_stones_snapshot):
- bugfix: refactoring static-var: PHP4 does not allow class-statics yet ;-(
* include/std_functions.php (make_dragon_main_menu),
include/config.php (ALLOW_OLD_GOBAN_EDITOR),
forum/index.php, goban_editor.php, old_goban_editor.php, site_map.php:
- replaced ALLOW_GOBAN_EDITOR -> ALLOW_OLD_GOBAN_EDITOR, goban-editor always enabled
2011-08-05 juga
* site_map.php, NEWS:
- added shape-game-handling
* tournaments/include/tournament_rules.php (class TournamentRules,
~.fillEntityData, ~.new_from_row, ~.convertTournamentRules_to_GameRow,
~.convertTournamentRules_to_EditForm, ~.convertEditForm_to_TournamentRules),
include/message_functions.php (game_settings_form),
include/error_codes.php (ErrorCode.init),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt,
tournaments/edit_rules.php (parse_edit_form),
tournaments/list_tournaments.php, tournaments/manage_tournament.php,
tournaments/view_tournament.php (echo_tournament_rules):
- added shape-game-handling for tournaments
- added input-field for shape-id as direct link from view-shape
not possible due to unknown tournament-id there
- added TournamentRules.ShapeID and TournamentRules.ShapeSnapshot to store shape-games-data
-----------
-- added fields to handle shape-games
ALTER TABLE TournamentRules
ADD ShapeID int unsigned NOT NULL default '0' AFTER tid,
ADD ShapeSnapshot varchar(255) NOT NULL default '' AFTER Rated ;
-----------
* show_games.php:
- added filter on games-list for shape-games on GameType-column
* include/game_functions.php (class MaxGamesCheck):
- minor optimization
* include/std_functions.php (start_html),
js/common.js (DGS.data.ARR_THUMBNAIL),
game.php, game_editor.php:
- bugfix: to fix game-snapshot-thumbnails in server sub-dirs
by refactoring setting of global JavaScript-var base_path into start_html()-func
2011-08-04 juga
* include/game_functions.php (MultiPlayerGame.get_message_defaults),
include/message_functions.php (game_info_table),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Waitingroom.txt, specs/db/dragon-ddl.sql,
add_to_waitingroom.php, new_game.php, view_shape.php, waiting_room.php,
game_players.php (build_game_settings, add_waiting_room_mpgame),
message.php (read_mpgame_request):
- added shape-game-handling for waiting-room
- added shape-game for waiting-room started from view-shape-page
for simple/expert/MPG-new-game-view
- added Waitingroom.ShapeID and Waitingroom.ShapeSnapshot to store shape-games-data
- added filter on waiting-room for shape-game on GameType-column
- added shape-game-handling for multi-player-game
- showed shape-game-info on game-players-page
-----------
-- added fields to handle shape-games
ALTER TABLE Waitingroom
ADD ShapeID int unsigned NOT NULL default '0' AFTER gid,
ADD ShapeSnapshot varchar(255) NOT NULL default '' AFTER SameOpponent ;
-----------
* include/board.php (Board.load_from_db, ~.move_marks),
include/std_functions.php (MOVE_SETUP, game_reference,,
game.php (draw_moves):
- fix bug for shape-game handling:
- using MOVE_SETUP='S' as move-number to jump to shape-game initial-setup
- move #0 or empty-move arg must be reserved for implicit jump to last-move
- changed <game gid,move> tag to allow move='S' to jump to shape-setup
* include/sgf_builder.php (SgfBuilder.build_sgf_shape_setup):
- adjusted setup-text for shape-game in SGF
* include/sgf_builder.php (class SgfBuilder, ~.sgf_echo_prop, ~.load_game_info,
~.build_sgf, ~.build_sgf_start, ~.build_sgf_shape_setup),
include/shape_control.php (ShapeControl.build_snapshot_info),
specs/quick_suite.txt:
- generate SGF-properties AB/AW for setup of shape-game in root-node
starting a separate follow-up SGF-node
- added comment with shape-info without shape-image and URL to view-shape for shape-game
- added prop-type to enforce new SGF-node
* quick_status.php, specs/quick_suite.txt:
- quick-status: added shape-id for status-games for version 2
* game.php (draw_moves):
- game-page: added move #0 with setup for shape-game
* include/make_game.php (create_game):
- fix bug: added initializing of Games.Snapshot for creating shape-game
* include/board.php (Board.load_from_db),
include/goban_handler_dgsgame.php (GobanHandlerDgsGame.load_board),
include/make_game.php (create_game),
include/std_functions.php (POSX_SETUP),
scripts/fix_game_snapshot.php:
- initializing board with stone-setup for shape-game
- allowed to jump to move #0 with setup for shape-game
2011-08-03 juga
* admin_game.php:
- forbid rated-toggle for shape-games
* game.php (draw_game_info), gameinfo.php, show_games.php, status.php:
- show shape-icon for shape-games with link to view-shape-page
* include/classlib_game.php (GameSnapshot.parse_stones_snapshot, ~.parse_extended_snapshot, ~.parse_check_extended_snapshot),
include/message_functions.php (game_settings_form, game_info_table; DgsMessage.load_message),
include/shape_control.php (ShapeControl.load_shape_name, ~.build_snapshot_info),
include/make_game.php (make_invite_game, accept_invite_game, create_game),
include/db/games.php (class Games, ~.fillEntityData, ~.new_from_row),
include/error_codes.php (ErrorCode.init),
include/gui_functions.php (echo_image_shapeinfo),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
view_shape.php:
- added Games.ShapeID and Games.ShapeSnapshot to store shape-games-data
- added shape-game for invitation started from view-shape-page
- added handling of shape-game for invitation-dispute
- added shape-info in pages showing game-info
- added checks on valid shape-snapshot for extended format
- use implicit defaults for shape-games: copy board-size, free-handicap-placement, unrated
- create invitation-game, adding B-pass-move if no handicap and W-should-start
according to shape-game
-----------
-- added fields to handle shape-games
ALTER TABLE Games
ADD ShapeID int unsigned NOT NULL default '0' AFTER tid,
ADD ShapeSnapshot varchar(255) NOT NULL default '' ;
-----------
* include/form_functions.php (class Form, ~.create_string_func_selectboxx,
~.print_insert_select_box, ~.print_insert_select_boxx):
- added extended selectbox form-element SELECTBOXX with additional attributes to allow disabling select-box
2011-08-01 juga
* include/classlib_game.php (GameSnapshot.build_extended_snapshot, ~.check_snapshot),
include/shape_control.php (ShapeControl.newShape, ~.is_shape_name_used),
include/db/shape.php (class Shape, ~.load_shape_by_name),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
edit_shape.php (parse_edit_form):
- added edit-page to create or update Shape with size, flags, notes, snapshot, unique name
- bugfixes
-----------
-- make Shape.Name unique
ALTER TABLE Shape
DROP KEY Name,
ADD UNIQUE KEY Name (Name) ;
-----------
2011-07-31 juga
* include/classlib_game.php (GameSnapshot.parse_extended_snapshot),
include/shape_control.php (ShapeControl.build_view_shape),
skins/dragon/screen.css,
view_shape.php (build_info_table, has_shape_diff):
- show comparison of shape loaded from db for shape-id with shape passed-in via URL-args,
diffs shown in red
- replaced text-only-form with Table_infos-class
- parse extended game-snapshot for shape-handling: "AAA S19 (W|B|'')"
* include/table_columns.php (class TableHead):
- added image-attributes for TableHead-class
* include/table_infos.php (Table_infos.add_cell, ~.build_cell_data):
- enhanced Table_infos to allow different cell-attributes for each column-value
* goban_editor.php, list_shapes.php:
- unified order of bottom-links for shapes
2011-07-30 juga
* include/gui_functions.php (name_anchor),
include/std_functions.php (section),
forum/admin.php, forum/forum_functions.php,
tournaments/view_tournament.php, admin_faq.php, edit_rating.php, faq.php,
game.php (draw_message_box), message_thread.php, userinfo.php:
- fixed & replaced named-anchors by adding </a>-end-tag if missing
- replaced string-concat with ',' on echo
2011-07-25 juga
* js/common.js (showGameThumbnail):
- parse extended snapshot-format stopping at first space
with additional data like size or first-play-color
* people.php:
- added note-picture from silk-collection for shape-note-info
* new_game.php, site_map.php:
- added link to list-shapes-page
- remove links to Waiting-room and Invite, they are already in main-menu
* include/db/shape.php (class Shape, ~.to_string, ~.persist, ~.insert, ~.update,
~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_shape, ~.load_shapes),
include/shape_control.php (class ShapeControl, ~.getFlagsText, ~.formatFlags, ~.build_view_shape),
include/gui_functions.php (echo_image_shapeinfo, echo_image_gamecomment, echo_image_note),
include/classlib_profile.php (PROFTYPE_FILTER_SHAPES),
include/error_codes.php (ErrorCode.init),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
skins/dragon/screen.css, list_shapes.php, view_shape.php:
- added page to list shapes
- added page to view shape
- added Shape-table to store shapes, which are used as templates for shape-games
- extended snapshot-format width additional data separated by space
-----------
# added images for shape-games
copy /images/note.gif
copy /images/shape.gif
-- added Shape-Games
CREATE TABLE Shape (
ID int NOT NULL auto_increment,
uid int NOT NULL,
Name varchar(40) NOT NULL default '',
Size tinyint unsigned NOT NULL,
Flags tinyint unsigned NOT NULL default 0,
Snapshot varchar(216) NOT NULL default '',
Notes text NOT NULL,
Created datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (ID),
KEY uid (uid),
KEY Name (Name)
) ENGINE=MyISAM ;
-----------
* include/classlib_game.php (GameSnapshot.parse_stones_snapshot),
include/classlib_goban.php (Goban.create_goban_from_stones_snapshot),
goban_editor.php (load_igoban_from_dgs_game, load_igoban_from_shape_game,
update_igoban, create_goban_from_extended_snapshot):
- added saving of shape redirecting goban-data to edit-shape-page in snapshot-format,
disabled on irregular boards
- added loading goban from shape-id
- added creating goban from extended-snapshot (with size-info), memorize shape-id for save
- added checks on URL-args, minor cleanups (globals, layout)
- added bottom-link to list-shapes-page
* include/goban_handler_gfx.php (class GobanHandlerGfxBoard):
- added arg to control board-stone-size
2011-07-23 juga
* include/config.php (ALLOW_GOBAN_EDITOR):
- enabled goban-editor to edit <igoban>-tag permanently in server-config
* site_map.php, forum/index.php:
- added bottom-link to goban-editor on forums-list
* include/sgf_parser.php (parse_sgf_for_shape_game),
goban_editor.php (load_igoban_from_dgs_game, update_igoban, load_igoban_from_sgf,
create_igoban_from_parsed_sgf):
- load Goban from SGF-file with max. size of 30KB, show potential errors
- added parser to load Goban from SGF-file
- allow flattening also for irregular boards
- cleanup: refactored commands into funcs
* include/classlib_upload.php (class ImageFileUpload, ~.cleanup;
class FileUpload, ~.checkFileUploadError, ~.has_error, ~.cleanup):
- extracted base-class FileUpload from ImageFileUpload to support file-upload for SGF-file
- changed TranslateGroup: Users -> Common because not only image for user-picture any more
* include/goban_handler_sl.php (GobanHandlerSL1.write_goban):
- bugfix: fix handling of first-move-color in title-line of SL1-format
* include/classlib_goban.php (MarkupHandlerGoban.replace_igoban_tags,
~.replace_igoban_tags_collect_goban, ~.parse_igoban, ~.switchStoneColor,
~.switch_colors, ~.flatten_for_shape_game),
goban_editor.php:
- added color-switching of stones on Goban
- added flattening of stones on Goban in preparation for Shape-game
* include/classlib_goban.php (Goban.read_stone_value):
- added creation of Games.Snapshot from Goban-object in preparation of Shape-game
* include/board.php (Board.read_stone_value),
include/classlib_game.php (class GameSnapshot, ~.make_game_snapshot),
include/goban_handler_dgsgame.php (class GobanHandlerDgsGame, ~.read_goban, ~.load_board),
include/make_game.php (create_game),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
scripts/fix_game_snapshot.php,
confirm.php,
quick_play.php:
- refactored Board.make_game_snapshot() into GameSnapshot-class to allow
to create from Board- and Goban-object
* include/goban_handler_sl.php (class GobanHandlerSL1, ~.parse_links, ~.parse_line, ~.write_goban),
goban_editor.php:
- added loading of Goban from DGS-game for last or given move-number and exporting it into igoban-SL1-format
- bugfix: fix handling of starting-move-number 10 for SL1-syntax
* include/goban_handler_gfx.php (GobanHandlerGfxBoard.write_image):
- bugfix: handle unknown mapping-type for writing GFX-board
* goban_editor.php, skins/dragon/screen.css:
- added syntax-description notes about <igoban>-tag
* include/goban_handler_sl.php:
- adjusted comments, allowed ' and \ in igoban-title
* include/gui_functions.php (echo_notes),
tournaments/edit_lock.php, tournaments/edit_properties.php,
tournaments/edit_status.php, tournaments/register.php,
tournaments/include/tournament_ladder_props.php,
tournaments/roundrobin/edit_round_status.php:
- echo_notes(): removed trailing ':' in subnotes-title
2011-07-22 juga
* goban_editor.php, skins/dragon/screen.css:
- reduced default size of new goban
- adjusted size of text-area for editing igoban-tag
- re-arranged preview-area and edit-area into horizontal table-layout
- new board remembers previous size
2011-07-20 juga
* include/std_functions.php (start_html),
include/utilities.php (build_num_range_map),
goban_editor.php (create_new_igoban):
- replaced old-go-diagram/goban-editor with editor for <igoban>-tag
- create new board of size width x height
- preview <igoban SL1>-tag
* js/goban_editor.js:
- removed, will be replaced with game-editor
* old_goban_editor.php:
- renamed from 'goban_editor.php' with complete CVS-log-history
2011-07-17 juga
* js/game-editor.js (DGS.GameChangeCalculator.calc_change_play_move, ~.determine_prisoners):
- bugfix for game-editor in play-mode: also remove markers for captured stones,
number-labeled stones remained
- bugfix for index-out-of-range-check
2011-07-04 juga
* js/game-editor.js (DGS.GameChangeCalculator.calc_change_play_move, ~.determine_prisoners;
DGS.GameEditor.action_handle_undo_tool; DGS.GobanChanges):
- bugfix JS-Game-Editor: undo/redo did not toggle next-play-color
2011-07-03 juga
* js/game-editor.js (DGS.Goban.cloneStoneMatrix;
DGS.GameEditor, ~.init, ~.action_handle_show_tab, ~.action_play_handle_board,
~.update_play_tool_next_color;
DGS.GameChangeCalculator, ~.calc_change_play_move, ~.determine_prisoners, ~.has_liberties),
skins/dragon/screen.css:
- extended JavaScript-based game-editor
- PLAY-mode: implemented capturing of stones on played-move
- PLAY-mode: check for forbidden suicide on played-move
- set default-tools for EDIT-/PLAY-tab (stone-toggle / move)
* js/game-editor.js (DGS.GameEditor, ~.init, ~.current_tab, ~.action_handle_show_tab,
~.action_handle_undo_tool, ~.update_history_tool, ~.action_handle_board,
~.action_size_updateSize, ~.action_edit_handle_tool, ~.action_edit_handle_board,
~.action_play_handle_tool, ~.action_play_handle_board, ~.update_play_tool_next_color;
DGS.Goban.makeBoard, ~.setValue, ~.cloneStoneMatrix, ~.merge_changes;
DGS.GameChangeCalculator.calc_change_play_move; DGS.game_editor.initPage;
DGS.GobanLabels, ~.reset; DGS.ChangeCalculator),
game_editor.php (build_tab_Play):
- extended JavaScript-based game-editor
- added PLAY-tab with tools to "play" a game,
update single last-move-marker
- added move-tool to play move, toggle next-color-to-play
- added undo/redo-history-tool shared between Edit- & Play-tab
- include DGS.ChangeCalculator.prototype into constructor with this-method-assignments
- added DGS.GameChangeCalculator to calculate goban-changes for "playing"
- restrict actions to execute only if corresponding tab is shown
* js/game-editor.js (DGS.GameEditor, ~.action_edit_handle_undo_tool, ~.action_handle_board,
~.save_change_history, ~.update_history_tool
DGS.GobanChanges, ~.apply_goban_changes, ~.is_equal_goban_snapshot, ~.build_goban_snapshot):
- extended JavaScript-based game-editor
- added redo-history-tool for EDIT-mode to redo goban-changes
- clear redo-history if varying from next-redo-step
* js/game-editor.js (DGS.game_editor.initPage; DGS.constants.Goban;
DGS.GameEditor, ~.action_edit_handle_undo_tool, ~.action_handle_board, ~.save_change_history,
~.update_history_tool;
DGS.GobanChanges, ~.apply_changes, ~.apply_undo_changes, ~.apply_goban_changes),
game_editor.php (build_tab_Edit),
skins/dragon/screen.css:
- extended JavaScript-based game-editor
- added undo-history-tool for EDIT-mode to undo goban-changes
* include/gui_functions.php (span):
- allow attributes for span('id=... attr=...')
* js/game-editor.js (DGS.utils.debug; DGS.Goban, ~.setValue, ~.setMarker;
DGS.GobanLabels, ~.set_label, ~.clear_label, ~.get_next_label, ~.get_hash;
DGS.GameEditor.testBoard, ~.action_size_updateSize, ~.action_handle_board, ~.update_label_tool;
DGS.GameEditor.CONFIG.edit.label_tool;
DGS.ChangeCalculator.calc_goban_change_toggle_label;
DGS.GobanChanges.apply_changes),
game_editor.php (build_tab_Edit),
skins/dragon/screen.css:
- extended JavaScript-based game-editor
- added label-tool for EDIT-mode to toggle letter and stone-numbers on board with auto-increment
- bugfix: draw board WITH action-links on new-boardsize
- added better debugging
2011-07-02 juga
* js/game-editor.js (DGS.game_editor.initPage;
DGS.utils.makeSgfCoords, ~.makeNumberCoord; DGS.Goban.getValueSgf;
DGS.GobanChanges.add_change, ~.add_change_sgf, ~.has_changes, ~.apply_changes;
DGS.constants.Board.MAP_TERRITORY_MARKERS; DGS.Board.draw_board_structure, ~.write_image;
DGS.ChangeCalculator.calc_goban_change_set_stone, ~.calc_goban_change_toggle_stone,
~.calc_goban_change_toggle_marker;
DGS.GameEditor, ~.CONFIG, ~.testBoard, ~.action_edit_handle_tool, ~.action_handle_board),
game_editor.php (build_tab_Edit),
skins/dragon/screen.css:
- extended JavaScript-based game-editor
- added Edit-tab in Edit-area with tools
- added stone-tool to set/clear/toggle black/white stone
- added marker-tool to toggle markers: circle, square, triangle, cross
- added marker-tool to toggle markers: territory black/white/neutral/dame
- implemented calculation of goban-changes for mark-markers,
though reserved as last-move-marker for later PLAY-mode
- added action-links to board-cells handling board-actions
- added ChangeCalculator to calculate goban-changes for edit-tools
- use image-size 21px for edit-tools
* include/goban_handler_gfx.php (GobanHandlerGfxBoard.init_statics):
- switched images for territory-neutral/dame using correct ones
2011-06-27 juga
* js/game-editor.js (DGS.utils.highlight, DGS.GameEditor):
- undoed renamed DGS.GameEditor.actions.size.updateSize() -> DGS.GameEditor.action_size_updateSize(),
because no access to this
- refactored highlighting into DGS.utils.highlight()
* js/game-editor.js (DGS.GamEditor):
- renamed DGS.GameEditor.execSizeUpdate() to DGS.GameEditor.actions.size.updateSize()
* js/game-editor.js (DGS.Goban, ~.setOptionsCoords, ~.getOptionsCoords, ~.makeBoard;
DGS.Board, ~.draw_board_structure, ~.make_coord_row;
DGS.GameEditor, ~.execSizeUpdate),
js/jquery-ui-1.8.13.custom.min.js,
include/std_functions.php (start_html, attb_parse),
skins/dragon/screen.css,
game_editor.php (build_tab_Size), game.php, site_map.php:
- extended JavaScript-based game-editor
- added customized jQuery-UI for Tabs, Effects
- added Size-tab in Edit-area
- added Size-tab action "New Board" using validated width/height-inputs to create new board of size width x height
- added drawing of board-base-structure with board-coordinates controlled by Goban-attributes
- use user-configured stone-size and wood-color to redraw-board, smooth-edge will not be supported
- bugfix: fix make-board by looping with y/x over correct dimensions height/width (instead of width/height)
- added debug-area
- bugfix: fix attb_parse() allowing string-attribute-value with '_'
* include/classlib_goban.php (Goban.makeBoard):
- bugfix: fix make-board by looping with y/x over correct dimensions height/width
instead of width/height
* include/form_functions.php (Form.parse_input_standard_attributes):
- bugfix: fix skipping of attribute-skipping
- bugfix: set title "after" extending it for access-key
* introduction.php:
- remove double text
2011-06-26 juga
* include/goban_handler_gfx.php (GobanHandlerGfxBoard.write_goban),
include/std_functions.php (start_html, echo_dragon_top_bar, make_dragon_main_menu),
include/config.php (ALLOW_GAME_EDITOR),
js/game-editor.js,
skins/dragon/screen.css, game_editor.php:
- started JavaScript-based game-editor using jQuery
- added server-config ALLOW_GAME_EDITOR to enable game-editor
- added Game-Editor in main-menu
* include/classlib_goban.php (Goban.getOptionsCoords, ~.setSize),
include/goban_handler_sl.php (GobanHandlerSL1.read_goban),
js/game-editor.js,
goban_editor.php:
- refactored Goban.setSizeX/Y() into Goban.setSize()
- removed needless arg
* include/board.php (class Board, ~.load_from_db, ~.draw_board, ~.make_js_game_moves),
include/config.php (ENABLE_GAME_VIEWER),
include/std_functions.php (start_html),
js/game-editor.js,
js/jquery-1.6.1.min.js,
game.php (draw_game_viewer),
skins/dragon/screen.css:
- added experimental JavaScript-based game-viewer using jQuery-1.6.1
- add game-related JavaScript for go-diagrams and game-viewer
only on game, goban-editor and forum-read-page
- added server-config ENABLE_GAME_VIEWER to enable game-viewer on game-page
- added board CSS-id for Goban-table and board-cells on game-page
- pass game-moves to game-viewer
* js/common.js (DGS, sprintf):
- added global DGS-"namespace"
- extended sprintf() by binary/hex-format-output
- fixed jslint-warnings: undeclared vars, double vars,
- changed JavaScript-formatting
* js/jslint-dgs.conf:
- added config for JavaScript-checker jslint
- check with: "jsl -conf js/jslint-dgs.conf"
* include/coords.php (number2sgf_coords):
- added check for different x/y-sizes to convert (x,y) to SGF-coords
* include/goban_handler_gfx.php (class GobanHandlerGfxBoard, ~.write_goban, ~.write_image):
- added board CSS-id for Goban-table and board-cells on game-page
- removed image-title because there are only needed for game-page "markers"-info
2011-06-23 juga
* include/board.php (Board.has_liberty_check, ~.mark_territory, ~.toggle_marked_area):
- re-implemented scanning point-groups of goban with clearer stack-based approach
for methods "has_liberty_check, mark_territory, toggle_marked_area",
renamed and commented old methods
* include/goban_handler_gfx.php (GobanHandlerGfxBoard.write_image):
- open marker-link of <igoban>-tags SL1-syntax with new window
2011-06-13 juga
* include/classlib_goban.php (GOBM_TERR_..., Goban.value_to_string),
include/goban_handler_gfx.php (class GobanHandlerGfxBoard, ~.init_statics, ~.write_image),
include/goban_handler_sl.php (class GobanHandlerSL1, ~.parse_line, ~.parse_SL_text):
- extended syntax for <igoban>-tag by territory markers:
- added board-markup: * = black-territory, ~ = white-territory, ? = neutral-territory, '=' = dame
- added marker-images in text: T* T~ T? T=
- renamed GOBM_BOX_.. -> GOBM_TERR_... for territory markers:
black, white, neutral, dame represented by black/white/green/red filled boxes
* tournaments/ladder/admin.php (add_form_edit_user):
- fix ladder-tournament-admin: adjusted admin-text & notifications of removal
of user, which is not notified
2011-06-05 juga
* game.php:
- fix: show scoring-info also for opponent on scoring game-status
* opponents.php:
- fix/optimize: don't load user-list for single-opponent-view
* tournaments/include/tournament_ladder.php (TournamentLadder.build_tournament_ladder_iterator),
tournaments/ladder/challenge.php,
tournaments/ladder/view.php:
- warn about restricted number of started/running games for new own ladder-challenges
- bugfix: show action-challenges for ladder-user
* include/form_functions.php (Form.parse_input_standard_attributes),
admin_faq.php:
- bugfix: setting form-elements disabled-attribute only if value set
* message.php:
- bugfixes on error-checking on new message
- added section-headers for message-view, dispute, invitation
- replaced <font> with CSS
* include/game_functions.php (class MaxGamesCheck, ~.allow_game_start,
~.allow_tournament_registration, ~.get_allowed_games, ~.get_error_text,
~.need_warning, ~.get_warn_text, ~.is_limited, ~._MAX_GAMESRUN_TREG),
include/message_functions.php (game_settings_form, echo_game_restrictions;
DgsMessage.load_message_receivers),
include/error_codes.php (ErrorCode.init),
include/config.php (MAX_GAMESRUN, MAX_GAMESRUN_TREG),
tournaments/edit_participant.php, tournaments/register.php,
skins/dragon/screen.css, add_to_waitingroom.php,
join_waitingroom_game.php, message.php (handle_send_message, check_max_games),
new_game.php, waiting_room.php (add_old_game_form):
- restrict number of started/running games
- added server-configuration MAX_GAMESRUN (200) restricting games-count
for starting new games
- added server-configuration MAX_GAMESRUN_TREG (250) restricting games-count
for tournament-registration
- counting players Running + MPG-games in SETUP-mode
- added checks on own/users/opponents max-games on
- adding new-game for waiting-room, restrict game-number for game-offer
- joining game-offer in waiting-room,
handle as non-suitable if max-games-limit exceeded
- sending and disputing invitation, disabling buttons with forbidden actions
- new tournament-registration forbidden for user and tournament-director,
except editing existing invitation/application/registration or for tournament-admin
* tournaments/include/types/private_ladder.php (class PrivateLadderTournament):
- decreased limits of max. ladder-challenges/defenders: 20 -> 10
* game_players.php:
- put admin-links together
2011-06-03 juga
* include/sgf_builder.php (class SgfBuilder, ~.build_sgf_result),
include/classlib_game.php (GameScore.calculate_score),
include/board.php (Board.fill_game_score):
- bugfix for calculation of area-scoring for SGF-download:
cleanup redundancy in SGF-builder to print ruleset-specific score-result
by extending game-score-calculation
* game.php:
- bugfix: don't mark empty territory for score-calculation on FINISHED-game
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- re-write some db-changes, especially on Moves-table using copy
instead of working directly on table because it's so large
- optimize db-change on Errorlog
2011-06-02 juga
* specs/survey.txt, specs/db/table-Voting.txt:
- added documentation about Surveys
* scripts/find-classes.pl:
- fix for static-classes: extended output by STATIC|OBJ-column
* include/board.php (Board.load_from_db, ~.make_game_snapshot,
include/gui_functions.php (echo_image_gameinfo),
include/make_game.php (create_game),
include/db/games.php (class Games, ~.fillEntityData, ~.new_from_row, ~.load_game),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
js/common.js (showInfo, showTLRankInfo, showGameThumbnail),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt,
scripts/fix_game_snapshot.php, scripts/index.php,
skins/dragon/screen.css, confirm.php, quick_play.php, show_games.php, status.php:
- show thumbnail from Games.Snapshot for games
- show thumbnails on gameinfo-icon hovering for status- and show-games-page
- added script to fix Games.Snapshot with thumbnail-data
- snapshot for thumbnail is stored in Games.Snapshot as special base64-encoded-string
optimized on empty-fields, see make_game_snapshot()-func in 'include/board.php'
- update Games.Snapshot on move in game
- write Games.Snapshot for new game with standard-handicap
-----------
# added game-thumbnail
copy /images/tbnb.gif
copy /images/tbnw.gif
copy /images/tbnd.gif
copy /images/tbne.gif
-- added field with snapshot of current game-position for showing thumbnail
ALTER TABLE Games
ADD Snapshot varchar(216) NOT NULL default '' ;
-- execute fix-script to add Games.Snapshot for ALL games
-- (may need to run it several times with smaller limit and start-game-id to skip faulty games):
-- 'scripts/fix_game_snapshot.php?limit=999999&sleep=1'
-----------
* include/message_functions.php (game_settings_form):
- bugfix: use defaults instead of 0 of Adjust/Min/MaxHandicap and AdjustKomi/JigoMode
for game-settings simple-view
2011-05-29 juga
* include/goban_handler_sl.php (class GobanHandlerSL1. ~.read_goban, ~.parse_border_lines,
~.clearLineBorderBit, ~.parse_line, ~.setBoardBorders, ~.setHoshiPoints),
include/goban_handler_gfx.php (class GobanHandlerGfxBoard, ~.write_goban,
~.draw_coord_row, ~.draw_edge_row, ~.build_rawtext),
include/classlib_goban.php (class Goban, ~.to_string, ~.setOptionsCoords,
~.setSizeX, ~.setSizeY),
goban_editor.php:
- bugfixes for <igoban>-tag:
- fix & cleanup x/y-size handling
- fix table-width for skipped/included side-coordinate-blocks
- include <igoban>-tag in raw-format-output
* include/classlib_goban.php (MarkupHandlerGoban.replace_igoban_tags, ~.parse_igoban;
class Goban.to_string, ~.addLink, ~.getLink, ~.setBoardLines, ~.eraseBoardPoint,
~.setHoshi, ~.setMarker, ~.value_to_string),
include/goban_handler_sl.php (GobanHandlerSL1.read_goban, ~.parse_title_line,
~.parse_text_block, ~.parse_borders, ~.parse_border_lines, ~.clearLineBorderBit,
~.parse_links, ~.parse_line, ~.parse_SL_text, ~.setBoardBorders, ~.setHoshiPoints,
~.drawHoshiPoints),
include/goban_handler_gfx.php (GobanHandlerGfxBoard.write_goban, ~.write_image,
~.getBoardLineType, ~.draw_edge_row, ~.build_rawtext),
include/coords.php (is_hoshi, get_hoshi_coords),
include/faq_functions.php (faq_item_html),
forum/forum_functions.php (DisplayForum.make_link_array),
skins/dragon/screen.css, goban_editor.php:
- implemented parsing of SL1-type (Sensei's Library goban-type) for <igoban>-tag:
- show original content with URL-arg 'raw'
- added goban-title, text-block to right or below of board
- added goban-links on markup-labels, marked with darker background-color
for marker on goban
- automatically set hoshi-points if possible
- use stone-size/wood-color/smooth-edge config for player, loaded from ConfigBoard
- use static table-width for goban-board for automatic text-wrapping of board-title
- allow usage of <igoban>-tag to display goban for FAQ
- fixed example in goban-editor with extended SL1-syntax for borders in <igoban>-tag
- bugfixes
* include/classlib_userconfig.php (ConfigBoard.fill_player_row, ~.load_config_board):
- load ConfigBoard from $player_row or from db filling $player_row
2011-05-28 juga
* scripts/generate_board_images.pl (save_image),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- create markup-images without board-lines for square/triangle/circle/cross
saved as "s|t|c|x.gif"
- fixed creation of letter-images "lX.gif" for X=a..z
- fixed new arg for file_gif_save()-call
-----------
# added markup circle/square/triangle/cross & fixed letters-markup a-z
copy /5/l[a-z].gif
copy /5/[cstx].gif
copy /7/l[a-z].gif
copy /7/[cstx].gif
copy /9/l[a-z].gif
copy /9/[cstx].gif
copy /11/l[a-z].gif
copy /11/[cstx].gif
copy /13/l[a-z].gif
copy /13/[cstx].gif
copy /17/l[a-z].gif
copy /17/[cstx].gif
copy /21/l[a-z].gif
copy /21/[cstx].gif
copy /25/l[a-z].gif
copy /25/[cstx].gif
copy /29/l[a-z].gif
copy /29/[cstx].gif
copy /35/l[a-z].gif
copy /35/[cstx].gif
copy /42/l[a-z].gif
copy /42/[cstx].gif
copy /50/l[a-z].gif
copy /50/[cstx].gif
-----------
* scripts/images_makefile:
- added cleanall-target to remove POV-generated big-images too
* scripts/find-classes.pl:
- helper-script to check for classes
2011-05-25 juga
* include/classlib_goban.php (MarkupHandlerGoban.contains_goban),
include/goban_handler_gfx.php (GobanHandlerGfxBoard.write_goban),
forum/forum_functions.php (ForumThread.contains_goban),
forum/post.php (post_message),
forum/read.php (load_revision_history, show_revision_history),
skins/dragon/screen.css:
- fix CSS for go-diagrams in forums
- load ConfigBoard with stonesize/woodcolor only if go-diagram contained
in loaded revision-history or thread-posts
2011-05-22 juga
* INSTALL:
- need PHP5
* admin_survey.php (parse_edit_form):
- bugfix: remove wrong eating of header-text for <opt>'s, adjust text, cleanup
* include/message_functions.php (DgsMessage.load_message_receivers),
include/survey_control.php (SurveyControl.is_survey_admin),
forum/forum_functions.php (Forum.is_admin, ForumThread.load_revision_history),
forum/admin_show_forumlog.php, forum/index.php,
admin.php, admin_show_faqlog.php, admin_users.php,
gameinfo.php, game_players.php, userinfo.php:
- fix admin-capabilities synchronizing admin-pages
- added developer as implicit admin for survey/faq/forum
2011-05-21 juga
* forum/forum_functions.php (DisplayForum.draw_post; ForumPost.build_query_sql, ~.new_from_row),
include/classlib_user.php (User.hasRating, ~.newForumUser):
- show user-rating for thread-posts
* include/config.php (ALLOW_TOURNAMENTS):
- allow tournaments per default
2011-05-16 juga
* admin.php:
- added link to create new features to vote on
* include/survey_control.php (SurveyControl.allow_survey_vote ~.load_survey_options, ~.build_points_array, ~.build_view_survey),
include/db/survey.php (class Survey),
include/gui_user_functions.php (check_user_list):
- view-survey:
- show survey-result only after user voted
- fix placing of '0' in points-selectbox
- deny survey-voting to user if according admin-option set
* include/gui_functions.php (button_style, button_TD_anchor),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
skins/dragon/screen.css, edit_profile.php:
- from wishlist: added no-button option to disable ID-button-graphics
-----------
-- allow pure-text ID-button
ALTER TABLE Players
MODIFY Button tinyint signed NOT NULL default '0' ;
-----------
2011-05-15 juga
* include/survey_control.php (SurveyControl.getFlagsText, ~.formatFlags,
~.allow_survey_vote, ~.build_view_survey),
include/db/survey.php (class Survey, ~.setFlag, ~.loadUserList,
~.persist_survey_userlist, ~.exists_survey_user),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, scripts/data_export.php,
specs/db/dragon-ddl.sql, specs/db/table-Voting.txt,
admin_survey.php (parse_edit_form), list_surveys.php, view_survey.php:
- added SurveyUser-table to store user-list to restrict voting for survey
- added restriction to allow survey-voting only for
- users with 2 finished games and actively played in a game within the last 30 days
- users from specified user-list
- admin always allowed except if user-list set
- list-survey: added flags showing if survey has restricted user-list
- for MULTI-survey-type handle Min/MaxPoints as number of min/max-selections
- added some checks on min/max-points for survey-types POINTS/MULTI/SUM
-----------
-- added SurveyUser-table to store user-list to restrict voting for survey
CREATE TABLE SurveyUser (
sid int NOT NULL,
uid int NOT NULL,
PRIMARY KEY (sid,uid)
) ENGINE=MyISAM ;
-----------
* features/list_features.php, skins/dragon/screen.css,
tournaments/list_directors.php, tournaments/list_news.php,
tournaments/list_participants.php, tournaments/ladder/view.php,
game_players.php, list_bulletins.php, list_contacts.php, list_survey.php, userinfo.php:
- simplify/fix CSS for icon-images used as actions with AdminLink or inline with text:
use img-class 'Action' instead of a-class 'ButIcon'
* include/gui_user_functions.php (check_user_list),
admin_bulletin.php:
- refactored check_user_list()-func from admin-bulletin into 'include/gui_user_functions.php'
to be used for admin-survey as well
* include/rating.php (echo_rating):
- from wishlist: show ELO-value of DGS-rating as hover-text for link to rating-graph
2011-05-07 juga
* include/survey_control.php (SurveyControl.buildSurveyOptionsText, ~.build_view_survey),
include/db/survey.php (class Survey, ~.fillEntityData, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Voting.txt,
admin_survey.php (check_survey_options, parse_edit_form):
- added optional header-text for a survey shown between title and survey-options
-----------
-- added survey header-text
ALTER TABLE Survey
ADD Header text NOT NULL ;
-----------
* list_surveys.php:
- changed default-sort of surveys to ID-descending
* include/std_functions.php (survey_reference):
- allowed HTML-tag <hr> for separation-line to be used in messages/games
- added DGS-tag <survey id> to reference a survey with status & title
2011-05-06 juga
* include/survey_control.php (SurveyControl.build_view_survey),
include/db/survey.php (Survey.is_point_type),
specs/db/table-Voting.txt,
admin_survey.php (check_survey_options, parse_edit_form),
view_survey.php (prepare_save_votes):
- added optional restriction on number of selected checkboxes for survey-MULTI-type
- cleanup: added is_point_type()-func to check for point-based survey-types
* include/survey_control.php (SurveyControl.getTypeText, ~.build_points_array, ~.build_view_survey),
admin_survey.php (check_survey_options, parse_edit_form),
view_survey.php (prepare_save_votes, get_new_points),
skins/dragon/screen.css:
- added survey-SUM-type using selectbox-choices with a total-points-sum,
survey min-points must be >=0, and min/max-points can be equal
- view-survey:
- show error on vote-saving if total-sum exceeds allowed min/max-range
- show header above options with hint to give votes for SUM-type
2011-05-05 juga
* include/survey_control.php (SurveyControl.getTypeText, ~.build_view_survey),
admin_survey.php (check_survey_options, parse_edit_form),
view_survey.php (get_new_points):
- added survey-SINGLE-type for single-choice using radio-buttons for survey-options
* include/db/survey_option.php (SurveyOption.update_aggregates_survey_options),
include/survey_control.php (SurveyControl.build_view_survey),
include/error_codes.php (ErrorCode.init),
admin_survey.php (check_survey_options, parse_edit_form),
view_survey.php (prepare_save_votes, get_new_points):
- added survey-MULTI-type for multiple-choice using checkboxes for survey-options
- bugfix: allow negative survey-options-min-points
* scripts/voting_consistency.php:
- bugfix: correct query using LEFT-join on SurveyVote in survey-consistency-script
to fix Survey.UserCount & SurveyOption.Score
2011-05-04 juga
* include/survey_control.php (SurveyControl.build_view_survey,
skins/dragon/screen.css:
- view-survey:
- show user-vote if survey is viewable, and not only on CLOSED-status
- reformatted survey-options in survey-view using <table> giving better
control over table-like layout and simplifying it
* include/db/survey.php (Survey.update_user_count),
view_survey.php (handle_save_votes):
- bugifx for updating Survey.UserCount
* admin_survey.php:
- bugfix: show view-survey-link on saved status
* include/db/survey.php (Survey.hasUserVotes, ~.is_status_viewable),
include/db/survey_option.php (SurveyOption.copyValues),
admin_survey.php (merge_survey_options, parse_edit_form),
list_surveys.php:
- bugfixes:
- survey-viewing only possible if on viewable-status ACTIVE|CLOSED
- survey-update not allowed if there are user-votes
- allow status-only-update in admin-survey
* include/gui_functions.php (button_TD_anchor):
- added way to draw button-image without link
* include/db/survey_vote.php (class SurveyVote, ~.persist, ~.fillEntityData, ~.build_query_sql,
~.new_from_row, ~.load_survey_vote, ~.load_survey_votes, ~.persist_survey_votes),
include/survey_control.php (SurveyControl.load_survey_options),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Voting.txt,
scripts/voting_consistency.php, view_survey.php (prepare_save_votes):
- refactoring: normalized FK SurveyVote.sid/Tag to use SurveyVote.soid = SurveyOption.ID
-----------
-- normalize FK SurveyVote.sid/Tag to use SurveyVote.soid = SurveyOption.ID
RENAME TABLE SurveyVote TO SurveyVote_old ;
CREATE TABLE SurveyVote (
soid int NOT NULL,
uid int NOT NULL default 0,
Points tinyint NOT NULL default 0,
PRIMARY KEY (soid,uid)
) ENGINE=MyISAM ;
-- migrate data into new structure
INSERT INTO SurveyVote (soid,uid,Points)
SELECT SOPT.ID, SV.uid, SV.Points
FROM SurveyVote_old AS SV INNER JOIN SurveyOption AS SOPT ON SOPT.sid=SV.sid AND SOPT.Tag=SV.Tag ;
DROP TABLE SurveyVote_old ;
-----------
* scripts/voting_consistency.php, scripts/index.php:
- started consistency-fix-script for feature- & survey data
* include/survey_control.php (SurveyControl.build_view_survey),
skins/dragon/screen.css, admin_survey.php, list_surveys.php:
- show vote-user-count on survey-list
- show vote-user-count on survey-view in extra-info if result shown
* include/survey_control.php (SurveyControl.getTypeText, ~.load_survey_options,
~.update_merged_survey_options, ~.build_view_survey),
include/db/survey_option.php (class SurveyOption, ~.fillEntityData, ~.buildLabel,
~.build_query_sql, ~.new_from_row, ~.cloneSurveyOption, ~.load_survey_option,
~.load_survey_options, ~.persist_survey_options, ~.update_aggregates_survey_options),
include/db/survey.php (class Survey, ~.updateUserCount, ~.fillEntityData, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Voting.txt, skins/dragon/screen.css,
admin_survey.php (check_survey_options, merge_survey_options, parse_edit_form),
view_survey.php (prepare_save_votes, handle_save_votes):
- refactored/added aggregated-value SurveyOption.UserCount into Survey-table
- view-survey: show all-votes-score of survey-options on closed-survey and for admins
- view-survey: added result-mode with survey-options ordered by highest score
- admin-survey: bugfix: set SurveyOption.sid on inserting new survey
- fixed error-checks & texts
-----------
-- added defaults to avoid warning on INSERT .. ON DUPLICATE KEY ...
ALTER TABLE SurveyOption
MODIFY sid int NOT NULL default 0,
MODIFY Title varchar(255) NOT NULL default '' ;
-- refactor SurveyOption.UserCount into Survey-table
ALTER TABLE SurveyOption
DROP COLUMN UserCount ;
ALTER TABLE Survey
ADD UserCount mediumint unsigned not null default '0' AFTER MaxPoints ;
-----------
2011-05-03 juga
* include/gui_functions.php (span, formatNumber),
include/survey_control.php (SurveyControl.build_view_survey),
skins/dragon/screen.css:
- view-survey: show user-votes for survey-CLOSED-status behind title,
added notes, minor survey-formatting-change
* admin_survey.php (merge_survey_options):
- disallow update of survey-option if there are user-votes also for super-admin,
would need cleanup first
* include/db/survey.php (class Survey, ~.setType, ~.fillEntityData, ~.need_option_minpoints, ~.new_from_row),
include/survey_control.php (SurveyControl.getTypeText, ~.build_view_survey),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Voting.txt,
admin_survey.php (parse_edit_form), list_surveys.php:
- renamed db-field Survey.SurveyType -> Type
-----------
-- renamed field Survey.SurveyType -> Type
ALTER TABLE Survey
CHANGE SurveyType Type enum('POINTS','SUM','SINGLE','MULTI') NOT NULL default 'POINTS' ;
-----------
* include/db/survey_option.php (class SurveyOption, ~.fillEntityData, ~.cloneSurveyOption),
include/db/survey_vote.php (class SurveyVote, ~.persist, ~.fillEntityData):
- renamed class-field Survey->SurveyID -> sid (survey-id)
* include/survey_control.php (SurveyControl.load_survey_options, ~.update_merged_survey_options, ~.build_view_query_sql),
include/db/survey_option.php (class SurveyOption, ~.persist_survey_options, ~.update_aggregates_survey_options),
include/db/survey_vote.php (SurveyVote. ~.new_from_row, ~.load_survey_votes, ~.persist_survey_votes),
include/db/survey.php (SQL_NO_POINTS),
view_survey.php (prepare_save_votes, handle_save_votes),
admin_survey.php, list_surveys.php:
- view-survey:
- added showing/saving of survey-votes of user for survey on ACTIVE-status,
- updated aggregate-fields in SurveyOption-entries on user-votes
- show only surveys on viewable status (ACTIVE|CLOSED)
- voting only possible on survey-active-status
- admin-survey: skip update of aggregation-fields in SurveyOption-entries
* include/db_classes.php (Entity.build_sql_insert_values, ~.build_sql_update):
- added way to omit some fields from bulk-duplicate-inserts & updates
2011-05-02 juga
* include/db/survey.php (MAX_SURVEY_OPTIONS),
admin_survey.php (check_survey_options):
- added check for max-allowed survey-options #26 (labels A-Z)
* include/survey_control.php (SurveyControl.build_view_query_sql, ~.build_points_array,
~.build_view_survey),
list_surveys.php, view_survey.php, skins/dragon/screen.css:
- moved non-admin survey-restriction into SurveyControl::build_view_query_sql()-func
- view-survey:
- added <form>-elements to vote on survey for POINTS-type
- show survey-status
* admin_survey.php (parse_edit_form):
- added link-title for reload on survey-id
- restricted size of textarea for survey-options
- forbid equal min-/max-points for POINTS-survey-type
* include/survey_control.php (class SurveyControl, ~.is_survey_admin,
~.load_survey_options, ~.buildSurveyOptionsText, ~.findMatchingSurveyOption,
~.update_merged_survey_options, ~.build_view_survey),
include/db/survey_option.php (class SurveyOption, ~.fillEntityData, ~.copyValues,
~.build_query_sql, ~.cloneSurveyOption, ~.load_survey_option, ~.load_survey_options,
~.persist_survey_options, ~.delete_survey_options),
include/db/survey.php (class Survey, ~.need_option_minpoints),
admin_survey.php (check_survey_options, merge_survey_options, parse_edit_form),
view_survey.php, skins/dragon/screen.css:
- added edit & viewing of survey-options using textarea-field with <opt>-tag
which is parsed into SurveyOption-entries
* include/std_classes.php (ListIterator.getItems):
- ListIterator: aded getItems()-func
2011-05-01 juga
* include/survey_control.php (SurveyControl.build_view_survey),
skins/dragon/screen.css, admin_survey.php, view_survey.php:
- added links between admin-survey and view-survey
- view-survey: show Lastchanged-date
* list_surveys.php:
- bugfix: fix table sort-fields
- bugfix: restrict list to viewable surveys for non-admins
* include/config.php (ALLOW_SURVEY_VOTE),
admin.php, admin_admins.php, list_surveys.php, people.php, site_map.php,
view_survey.php, forum/index.php:
- added server-config ALLOW_SURVEY_VOTE to disable survey-functionality
* include/survey_control.php (SurveyControl.allow_survey_edit),
include/error_codes.php (ErrorCode.init),
admin_survey.php:
- added check if survey can be edited by admin
- refactored isNumber()-func to 'include/utilities.php'
- refactored build_range_text()-func to 'include/gui_functions.php'
* include/gui_functions.php (build_range_text),
include/utilities.php (isNumber),
tournaments/include/tournament_utils.php (TournamentUtils.isNumberOrEmpty),
tournaments/edit_properties.php, tournaments/register.php,
tournaments/include/tournament_helper.php, tournaments/include/tournament_ladder_props.php,
tournaments/include/tournament_limits.php, tournaments/include/tournament_pool.php,
tournaments/include/tournament_properties.php, tournaments/include/tournament_round.php,
tournaments/ladder/edit_props.php, tournaments/ladder/view.php,
tournaments/roundrobin/define_pools.php, tournaments/roundrobin/edit_pools.php:
- refactored isNumber()-func to 'include/utilities.php'
- refactored build_range_text()-func to 'include/gui_functions.php'
* include/survey_control.php (class SurveyControl, ~.getSurveyTypeText, ~.getStatusText,
~.is_survey_admin, ~.new_survey, ~.build_view_survey),
include/db/survey.php (class Survey, ~.to_string, ~.setSurveyType, ~.setStatus, ~.persist,
~.insert, ~.update, ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_survey,
~.load_survey_by_query, ~.load_surveys),
include/db/survey_option.php (class SurveyOption, ~.to_string, ~.persist, ~.insert, ~.update,
~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_survey_option, ~.load_survey_options),
include/db/survey_vote.php (class SurveyVote, ~.to_string, ~.persist, ~.insert, ~.update,
~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_survey_vote, ~.load_survey_votes),
include/quick_common.php (ADMOPT_DENY_FEATURE_VOTE, ADMOPT_DENY_SURVEY_VOTE),
include/std_functions.php (ADMIN_FEATURE, ADMIN_SURVEY),
include/classlib_profile.php (PROFTYPE_FILTER_SURVEYS),
features/lib_votes.php (Feature.is_admin),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/dragon-ddl.sql,
specs/db/table-Voting.txt, scripts/data_export.php,
skins/dragon/screen.css, forum/index.php,
admin_survey.php (parse_edit_form, isNumber, build_range_text),
admin.php, admin_admins.php, admin_show_users.php, admin_users.php,
list_surveys.php, people.php, site_map.php, view_survey.php:
- added surveys than users can vote on
- added pages to create/edit, list, view surveys
- added survey-admin role to manage surveys
- added admin-option to deny voting on surveys
- renamed vote-admin -> feature-admin
-----------
-- added Survery-tables to store survey, survey-option, survey-vote
CREATE TABLE Survey (
ID int NOT NULL auto_increment,
uid int NOT NULL,
SurveyType enum('POINTS','SUM','SINGLE','MULTI') NOT NULL default 'POINTS',
Status enum('NEW','ACTIVE','CLOSED','DELETE') NOT NULL default 'NEW',
Flags tinyint unsigned NOT NULL default 0,
MinPoints tinyint NOT NULL default 0,
MaxPoints tinyint NOT NULL default 0,
Created datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
Title varchar(255) NOT NULL,
PRIMARY KEY (ID),
KEY uid (uid),
KEY Status (Status)
) ENGINE=MyISAM ;
CREATE TABLE SurveyOption (
ID int NOT NULL auto_increment,
sid int NOT NULL,
Tag tinyint unsigned NOT NULL default 0,
SortOrder tinyint unsigned NOT NULL default 0,
MinPoints tinyint NOT NULL default 0,
UserCount mediumint unsigned NOT NULL default 0,
Score int NOT NULL default 0,
Title varchar(255) NOT NULL,
Text text NOT NULL,
PRIMARY KEY (ID),
UNIQUE KEY sidTag (sid,Tag)
) ENGINE=MyISAM ;
CREATE TABLE SurveyVote (
sid int NOT NULL,
uid int NOT NULL default 0,
Tag tinyint unsigned NOT NULL default 0,
Points tinyint NOT NULL default 0,
PRIMARY KEY (sid,uid,Tag)
) ENGINE=MyISAM ;
-----------
* features/lib_votes.php (
class Feature, ~.set_status, ~.set_size, ~.edit_status_allowed,
~.allow_vote, ~.allow_edit, ~.update_feature, ~.delete_feature, ~.to_string,
~.build_filter_selection_status, ~.build_filter_selection_size, ~.build_feature_notes,
~.allow_vote_check, ~.build_query_feature_list, ~.get_query_fields, ~.new_from_row,
~.load_feature;
class FeatureVote, ~.update_vote, ~.to_string, ~.build_query_featurevote_list,
~.get_query_fields, ~.new_from_row),
include/std_functions.php (count_feature_new),
specs/db/dragon-ddl.sql, scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
features/edit_feature.php, features/list_features.php, features/list_votes.php,
features/vote_feature.php, site_map.php, skins/dragon/screen.css:
- added feature-size which resembles the effort required to implement a feature
- added feature-status VOTE taking place of former NEW-status,
NEW-status now represents feature in edit-mode for vote-admin
- allow vote-admin to change feature-status NEW -> VOTE
- added link to show "my feature votes"
- rename table: FeatureList -> Feature
- removed field FeatureVote.IP
- rework feature-notes
-----------
-- feature-cleanup: table-name, feature-status NEW/VOTE, drop IP for votes
RENAME TABLE FeatureList TO Feature;
ALTER TABLE Feature
MODIFY Status enum('NEW','VOTE','WORK','DONE','LIVE','NACK') NOT NULL default 'NEW',
ADD Size enum('?','EPIC','XXL','XL','L','M','S') NOT NULL default '?' AFTER Status ;
UPDATE Feature SET Status='VOTE' WHERE Status='NEW' ;
ALTER TABLE FeatureVote
DROP COLUMN IP;
-----------
* include/gui_functions.php (echo_notes):
- added way to skip make_html_safe() for single text-lines to allow <span>
2011-04-30 juga
* wap/status.php:
- use same next-game-order for games as configured on status-page
* rss/status.php:
- show all unread bulletins of user
- use same next-game-order for games as configured on status-page
- added game-type to differ multi-player-games from normal games
- use translations for used texts in RSS-message
- cleanup: CDATA-section needs much less escaping of XML-problematic chars
* quick_status.php, specs/quick_suite.txt:
- added unread-bulletins in quick-status for version=2,
recalc and update players new-bulletin-count if required
* view_bulletin.php:
- added mark-as-read handling for single bulletin
* include/gui_bulletin.php (GuiBulletin.build_view_bulletin),
status.php:
- show first three unread bulletins on status-page as "Message of the Day"
* include/db/bulletin.php (Bulletin.update_bulletin_count_players):
- bugfix: no sql-LIMIT allowed for multi-table-UPDATE
* quick_status.php, specs/quick_suite.txt:
- added URL-arg 'version' to provide smoother transition to new format with version=2
- 'version' is optional (default) using older format & field-display
- 'version=2' uses format for DGS-release 1.0.15 including new fields/formats/sections
* include/classlib_game.php (NextGameOrder.get_next_game_order),
include/quick/quick_game_list.php (QuickHandlerGameList.prepare),
specs/quick_suite.txt, quick_status.php, confirm.php, status.php:
- added game_prio and opponent-lastaccess-date for status-game
to allow client to use its own sorting on relevant fields
- added ready_to_start for multi-player-games on SETUP-game-status
- order games like configured on status-page
- added URL-arg 'order' to change order of status-games listed in quick-status
- changed (simplified) signature of NextGameOrder::get_next_game_order()
2011-04-29 juga
* include/db/bulletin.php (Bulletin.build_view_query_sql, ~.load_bulletin_by_query),
include/error_codes.php (ErrorCode.init),
view_bulletin.php:
- added single-view of bulletin, show error if bulletin not allowed to view
* include/db/bulletin.php (class Bulletin, ~.skipCategory, ~.build_view_query_sql),
include/gui_bulletin.php (GuiBulletin.getCategoryText),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
change_profile.php, edit_profile.php:
- added Bulletin-category for feature-info, e.g. "Did you know this ...?"
- allow to skip Bulletin-category feature-info to be configured in user-profile
-----------
-- added bulletin-category for Feature-news
ALTER TABLE Bulletin
MODIFY `Category` enum('MAINT','ADM_MSG','TOURNEY','TNEWS','FEATURE','PRIV_MSG','AD') NOT NULL default 'PRIV_MSG' ;
-----------
2011-04-27 juga
* include/std_functions.php (count_messages_new, count_feature_new),
include/db/bulletin.php (Bulletin.count_bulletin_new):
- bugfix: counting must return 0 instead of '' if nothing found
2011-04-26 juga
* include/db/bulletin.php (BULLETIN_STATUS_REJECTED),
include/gui_bulletin.php (GuiBulletin.getStatusText),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
admin_bulletin.php (parse_edit_form),
edit_bulletin.php (check_bulletin_input),
list_bulletins.php:
- added Bulletin.Status=REJECTED (renamed from unused HIDDEN-status),
which admin can use to indicate user-bulletin-rejection
-----------
-- renamed Bulletin.Status: HIDDEN -> REJECTED
ALTER TABLE Bulletin
MODIFY Status enum('NEW','PENDING','REJECTED','SHOW','ARCHIVE','DELETE') NOT NULL default 'NEW' ;
-----------
2011-04-25 juga
* include/db/bulletin.php (class Bulletin, ~.is_optimistic_lock_clash,
~.readLockVersion, ~.fillEntityData, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
admin_bulletin.php (parse_edit_form), edit_bulletin.php:
- admin-/edit-bulletins:
- added optimistic-locking detection on Bulletin-table using db_classes-"standard"
FTYPE_OPTLOCK + LockVersion-field to prevent race-condition on update of same
bulletin by user- and admin-edit at the same time
- added Bulletin.AdminNote for user-changeable bulletins allowing admin
to give hint to user what to change
- show error if there's nothing to update
-----------
-- added LockVersion-field for optimistic locking
ALTER TABLE Bulletin
ADD LockVersion tinyint unsigned NOT NULL default 0 AFTER uid ;
-----------
* include/db_classes.php (class Entity, ~.get_fields, ~.build_sql_update, ~.build_sql_delete),
include/quick_common.php (init_error),
include/error_codes.php (ErrorCode.init),
include/error_functions.php (need_db_errorlog):
- bugfix: replaced error()-call in globally used constructor by init_error()-exit-call
routing error to emergency error-page to avoid HTTP-redirect-loops
- added optimistic-locking detection on update/delete-table-entries using db_classes
- added "standard" FTYPE_OPTLOCK + LockVersion-field to prevent race-conditions
on writing same data-entry
- added error-code 'entity_init_error' for constructor-error without db-logging
- added special error-code 'optlock_clash' to express optimistic-locking problem
* include/classlib_userconfig.php (class ConfigPages, ~.update_all, ~._check_user_id):
- bugfix: avoid constructor-error()-calls
* include/db/bulletin.php (class Bulletin, ~.fillEntityData, ~.allow_bulletin_user_edit,
~.new_from_row, ~.new_bulletin),
include/gui_bulletin.php (GuiBulletin.getStatusText, ~.getFlagsText, ~.formatFlags),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
admin_bulletin.php (check_user_list, parse_edit_form),
edit_bulletin.php (check_bulletin_input, parse_edit_form),
list_bulletins.php, userinfo.php, skins/dragon/screen.css:
- admin-bulletin:
- create user-changeable bulletin to ALL|user-list for specific user only by admin
- added Bulletin.Flags-field to mark bulletin as user-changeable and admin-created
- enabled bulletin PENDING-status
- check user-list for single user and forbidden guest-users
- bugfix: hide tournament-id/game-id if not needed
- edit-bulletin:
- edit user-changeable bulletin created by admin
- forbid edit for bulletin on PENDING-status to avoid race-condition
with admin verifying it with approval/rejection
- check expire-time to be within range + 7-100 days
- list-bulletin:
- added filter to show user-changeable bulletins
- added filter to show SHOW|PENDING-status-bulletins for admin-view
- changed default-status-filter for admin/mine-bulletin-view
-----------
-- added bulletin admin-flags
ALTER TABLE Bulletin
ADD Flags tinyint unsigned NOT NULL default 0 AFTER TargetType ;
-----------
* include/db/bulletin.php (Bulletin.update_count_players, ~.allow_bulletin_user_edit, ~.new_bulletin),
admin_bulletin.php,
edit_bulletin.php (check_bulletin_input, parse_edit_form),
tournaments/edit_news.php,
tournaments/manage_tournament.php:
- admin-/edit-bulletin:
- allow T-Admin, T-Owner, T-Director of tournament to create bulletin
of type TP|TD with tournament-id
- added link from tournament-manage-page and tournament-news-page
- bugfixes, cleanup
* include/db/bulletin.php (Bulletin.new_bulletin, ~.is_bulletin_admin),
admin_bulletin.php (parse_edit_form),
edit_bulletin.php (check_bulletin_input, parse_edit_form),
game_players.php, list_bulletins.php:
- admin-bulletin: added admin-link to add new MPG-bulletin,
bugfix checking on unneccessary tid/gid on target-type-change
- edit-bulletin: check that MPG-bulletin can only be created by players of MPG
- cleanup:
- changed URL-arg for game-id for new-bulletin: gid -> n_gid
- refactored init of new bulletin into Bulletin::new_bulletin()-func
- use Bulletin::is_bulletin_admin()-func
* edit_bulletin.php (parse_edit_form):
- edit-bulletin: disabled free setting of publish-time of bulletin for non-admin
2011-04-24 juga
* include/db/bulletin.php (Bulletin.update_count_players, ~.allow_bulletin_user_edit,
~.skipCategory, ~.new_bulletin),
include/error_codes.php (ErrorCode.init),
specs/db/table-Bulletins.txt, skins/dragon/screen.css,
admin_bulletin.php (parse_edit_form), edit_bulletin.php (parse_edit_form),
game_players.php, list_bulletins.php, site_map.php:
- added bulletin-editor for non-admins
- edit-bulletin: allowing MPG-players to create bulletin of type MPG with game-id,
added link from game-players-page
- list-bulletin:
- added 'my bulletin'-lists showing bulletins for specific author with edit-link,
- show skipped categories with different format and info-image
- moved admin-link with edit-link in new edit-column replacing Actions-column
- admin-bulletin: added link to reload bulletin on edit
- bugfixes: wrong func-args, wrong func-call, reset tid/gid on changing target-type, fixed specs
* tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder,
~._process_game_end, ~.process_user_absence),
tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/register.php:
- reset Players.CountBulletinNew for TD/TP-target-type for added/removed TD/TPs in tournaments
- bugfix: locking Tournament-table to update aggregated tournament-registered-count
* include/db/bulletin.php (Bulletin.update_count_players, ~.process_expired_bulletins,
~.update_count_bulletin_new, ~.update_bulletin_count_players),
admin_bulletin.php:
- bugfix: change Bulletin-status to ARCHIVE of expired bulletins for all target-types
- optimized reset of new bulletin for different target-types
* include/countries.php (getCountryText),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- added user-defined ISO-3166 ccodes for DGS-languages:
XB (Basque), XC (Catalan), XN (Lingua Franca Nova)
- adjusted non-country-comments
-----------
# added flags
copy /images/flags/xb.gif
copy /images/flags/xc.gif
copy /images/flags/xn.gif
-----------
2011-04-23 juga
* include/db/bulletin.php (class Bulletin, ~.fillEntityData, ~.build_view_query_sql,
~.new_from_row, ~.load_multi_player_game),
include/gui_bulletin.php (GuiBulletin.getTargetTypeText, ~.build_view_bulletin),
tournaments/include/tournament.php (Tournament.build_info),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
skins/dragon/screen.css, admin_bulletin.php (parse_edit_form), list_bulletins.php:
- added Bulletin.TargetType=MPG and new gid-field for bulletins with MPG-reference
- admin-bulletin: added editing of game-id for MPG-target-type, some minor fixes
- list-bulletins: show MPG-target-typed bulletins
- view-bulletin: add game-player-reference for MPG-target-typed bulletin
-----------
-- added target-type for bulletin with multi-player-game
ALTER TABLE Bulletin
MODIFY TargetType enum('ALL','TD','TP','UL','MPG') NOT NULL,
ADD gid int NOT NULL default 0 AFTER tid ;
-----------
* include/game_functions.php (MultiPlayerGame.get_message_defaults;
GamePlayer.exists_game_player, ~.load_users_for_mpgame),
include/message_functions.php (DgsMessage.count_errors, ~.add_errors),
include/error_codes.php (ErrorCode.init),
message.php (read_message_receivers, read_mpgame_request):
- restrict sending bulk-message to admins and for multi-player-games
- sending MP-game message for message-type start-game/resign restricted to MPG-players
- sending MP-game message for message-type invite restricted to MPG-master
- sending normal bulk-message restricted to developer-/forum-/game-admin
- allow only players of MP-game as recipients for MP-game bulk-message
- check game-type/status for sending MP-game message
- changed title for new multi-player-game message
- defined more detailed error-codes for MPG-message and bulk-message
- cleanup: clearer var-names, minor changes
* include/error_codes.php (ErrorCode.echo_error_text, ~.get_error_text, ~.init),
include/error_functions.php (err_log, need_db_errorlog),
error.php (handle_error), do_registration_blocked.php:
- don't write error into Errorlog-table if not needed, e.g. user-GUI-errors
- show debug-msg on error only to db/dev-admin
- changed output-format of errors
- fixed class-name Errorcode -> ErrorCode
2011-04-22 juga
* include/db/bulletin.php (Bulletin.loadUserList),
include/globals.php (CSYSFLAG_...),
include/contacts.php (CSYSFLAG_...),
admin_bulletin.php (check_user_list, parse_edit_form):
- admin-bulletin:
- for user-list bulletin show warning/error that must be checked
if receiving user has reject-message contact-setting for bulletin-author
- show user-list on preview with same order as in viewing-mode
- moved consts for contact-system-flags into 'include/globals.php'
* admin_bulletin.php (parse_edit_form):
- admin-bulletin: admin can change author of bulletin
* include/db/bulletin.php (BULLETIN_SKIPCAT_...;
Bulletin.build_view_query_sql, ~.update_count_bulletin_new, ~.count_bulletin_new),
include/std_functions.php (is_logged_in),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
change_profile.php, edit_profile.php, list_bulletins.php:
- added user-config Players.SkipBulletin to ignore bulletin-categories
- skip-able Bulletin.Category: TOURNAMENT, PRIVATE_MSG, SPAM
- reset Players.CountBulletinNew to recalc new-count in main-menu if SkipBulletin-config changed
- list-bulletin:
- added viewable-status-filter for admin showing SHOW|ARCHIVE bulletin-status
- always show 'All bulletins'-link for admin
- removed 'Bulletins'-link because in main-menu
- refactored count_bulletin_new()-func from 'include/std_functions.php'
into 'include/db/bulletin.php'
-----------
-- added user-config to skip bulletin-categories
ALTER TABLE Players
ADD SkipBulletin tinyint unsigned NOT NULL default 0x4 ;
-----------
* include/std_functions.php (make_dragon_main_menu),
admin_bulletin.php, list_bulletins.php, site_map.php:
- added option for admins to view only user-viewable bulletins
* include/classlib_userconfig.php (CFGCOLS_BULLETIN_LIST;
class ConfigPages.load_config_pages;
class ConfigTableColumns, ~.load_config, ~.build_fieldset,
~.write_columns_bitset, ~.get_config_size),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
list_bulletins.php:
- added table-column-set for bulletin-list: CFGCOLS_BULLETIN_LIST
- refactored global $SIZECONFIG_CFGCOLS-var into ConfigTableColumns::get_config_size()-func
-----------
-- table-column-set for bulletin-list
ALTER TABLE ConfigPages
ADD ColumnsBulletinList int NOT NULL default -1 AFTER ColumnsGamesObservedAll2 ;
-----------
* include/db/bulletin.php (class Bulletin, ~.build_view_query_sql,
~.update_count_players),
include/gui_bulletin.php (class GuiBulletin, ~.getCategoryText,
~.getStatusText, ~.getTargetTypeText, ~.build_view_bulletin),
include/std_functions.php (make_dragon_main_menu),
tournaments/include/tournament.php (Tournament.build_info),
skins/dragon/screen.css,
admin_bulletin.php (parse_edit_form), list_bulletins.php, site_map.php:
- added TargetType=TP/TD and Category=TNEWS for bulletins with tournament-reference
- admin-bulletin: added editing of tournament-id for TP/TD-target-type
- list-bulletins: show TP/TD-target-typed bulletins, admin can view all types
- list-bulletins: minor changes:
- changed link "unread bulletins" also for admins show only MY-bulletins
- changed title for admin-view
- changed table-column-orders
- refactored GUI-methods from 'include/db/bulletin.php' into 'include/gui_bulletin.php'
* include/utilities.php (cut_str),
forum/forum_functions.php (DisplayForum.draw_overview, ForumPost.to_string):
- added cut_str()-func to cut string and optiionally append with left-out-marker '...'
* include/std_functions.php (count_bulletin_new):
- use Bulletin::build_view_query_sql() to count new bulletins for user
* include/db/bulletin.php (class Bulletin, ~.loadUserList, ~.build_view_query_sql, ~.getTargetTypeText, ~.new_bulletin, ~.persist_bulletin_userlist, ~.update_count_players),
admin_bulletin.php (check_user_list, parse_edit_form),
list_bulletins.php:
- added BulletinTarget-table to store users to which bulletin of TargetType=UL is shown
- admin-bulletin: added edit for user-list, show user-list on preview
- list-bulletins: show user-list bulletin, added view-column for admin,
show all user-list bulletins to admin, or only to addressed users otherwise
- new bulletin: added default expire-time 30 days, can be emptied
-----------
-- added BulletinTarget-table to store user-list to show specific bulletin to
CREATE TABLE BulletinTarget (
bid int NOT NULL,
uid int NOT NULL,
PRIMARY KEY (bid,uid)
) ENGINE=MyISAM ;
-----------
2011-04-20 juga
* list_bulletins.php:
- removed UNSET-target-type for bulletin-filter
* include/connect2mysql.php (disable_cache):
- disable-cache: removed "Pragma: no-cache" client-request-header
* include/game_functions.php (GameHelper.delete_running_game):
- bugfix for deleting MP-game on SETUP-status:
removed attached waiting-room entry for multi-player-game if existing
* scripts/index.php, scripts/server-info.php:
- added server-script to print /proc/cpuinfo & /proc/meminfo of server
2011-04-18 juga
* include/db/bulletin.php (class Bulletin, ~.fillEntityData, ~.new_from_row,
~.mark_bulletin_as_read, ~.reset_bulletin_read, ~.build_view_bulletin),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
skins/dragon/screen.css, admin_bulletin.php, list_bulletins.php:
- remove existing BulletinReads if admin changes bulletin to SHOW-status from other status
- added read-mark-counter Bulletin.CountReads, increased when user marks bulletin as read
- added search-filter on Bulletin-subject/text matching terms
- prettify bulletin mark-as-read-link
-----------
-- add read-counter for Bulletins
ALTER TABLE Bulletin
ADD CountReads mediumint unsigned NOT NULL default '0' AFTER tid ;
-----------
* include/db/bulletin.php (Bulletin.build_query_sql, ~.build_view_query_sql,
~.load_bulletin, ~.mark_bulletin_as_read, ~.update_count_bulletin_new,
~.update_count_players, ~.build_view_bulletin),
include/std_functions.php (make_dragon_main_menu, count_bulletin_new),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Bulletins.txt,
skins/dragon/screen.css, list_bulletins.php, site_map.php:
- added mark-as-read of unread bulletins, update bulletin-count in main-menu accordingly
- added links to show only unread bulletins and to show all "visible" bulletins
-----------
-- added BulletinRead-table to store if user has read bulletins
CREATE TABLE BulletinRead (
bid int NOT NULL,
uid int NOT NULL,
PRIMARY KEY (bid,uid)
) ENGINE=MyISAM ;
-----------
* include/message_functions.php (update_count_message_new),
features/lib_votes.php (update_count_feature_new):
- cleanup: simpler SQL for diff-update
2011-04-17 juga
* include/db/bulletin.php (Bulletin.process_expired_bulletins, ~.update_count_players),
include/game_functions.php (MultiPlayerGame.revoke_offer_game_players),
admin_bulletin.php (parse_edit_form), list_bulletins.php, daily_cron.php:
- bulletins:
- added expire-time-handling for bulletins: change bulletin to ARCHIVE-status if expired
- refactored Bulletin.update_count_players() as static-func for daily-cron
- admin-bulletin: bugfix adding check on missing publish-time, show admin-note
- list-bulletins: show bulletins on SHOW-status with filter-default
- daily-cron: bugfix for cleanup of old waiting-room entries
- fix for standard-go games
- fix for MP-games, notifying game-master about deletion
* include/std_functions.php (removed update_count_feature_new, removed update_count_message_new),
include/message_functions.php (update_count_message_new),
features/lib_votes.php (Feature.update_count_feature_new),
include/globals.php (COUNTNEW_RECALC),
features/edit_feature.php, features/vote_feature.php:
- moved update_count_feature_new()-func from 'include/std_functions.php' to 'features/lib_votes.php'
- moved update_count_message_new()-func from 'include/std_functions.php' to 'include/message_functions.php'
* include/std_functions.php (make_dragon_main_menu, is_logged_in, count_bulletin_new),
include/db/bulletin.php (Bulletin.update_count_players),
include/quick_common.php (SESSION_DURATION),
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,,
scripts/player_consistency.php, admin_bulletin.php, login.php:
- bulletins:
- added bulletin-count in main-menu stored in Players.CountBulletinNew
- update main-menu-count Players.CountBulletinNew on bulletin-update if required
- update only players with last-access within session-expire to optimize,
reset CountBulletinNew on login after session-expire
- admin-bulletin: show bulletin-lastchanged data on edit
- added fix of Players.CountBulletinNew in players-consistency-script
-----------
-- quick-read-count for NEW-bulletins for user
ALTER TABLE Players
ADD CountBulletinNew smallint NOT NULL default '-1' AFTER CountFeatNew ;
-----------
* include/db/bulletin.php (class Bulletin, ~.to_string, ~.setCategory, ~.setStatus, ~.setTargetType,
~.persist, ~.insert, ~.update, ~.fillEntityData, ~.build_query_sql, ~.build_view_query_sql,
~.new_from_row, ~.load_bulletin, ~.load_bulletins, ~.getCategoryText, ~.getStatusText,
~.getTargetTypeText, ~.new_bulletin, ~.build_view_bulletin),
include/classlib_profile.php (PROFTYPE_FILTER_BULLETINS),
include/std_functions.php (make_dragon_main_menu),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Bulletins.txt, specs/db/dragon-ddl.sql,
admin.php, admin_bulletin.php, list_bulletins.php, site_map.php,
skins/dragon/screen.css, NEWS:
- added Bulletins for global announcements more prominently than forums
- added Bulletin-table to store bulletins
- added admin-page to edit bulletin
- added bulletin-list-page to view bulletins for users and admin
- added Bulletins-link in main-menu, moved Docs-link in help-group
-----------
-- added Bulletin-table to store bulletins
CREATE TABLE Bulletin (
ID int NOT NULL auto_increment,
uid int NOT NULL,
Category enum('MAINT','ADM_MSG','TOURNEY','TNEWS','PRIV_MSG','AD') NOT NULL default 'PRIV_MSG',
Status enum('NEW','PENDING','HIDDEN','SHOW','ARCHIVE','DELETE') NOT NULL default 'NEW',
TargetType enum('ALL','TD','TP','UL') NOT NULL,
PublishTime datetime NOT NULL default '0000-00-00 00:00:00',
ExpireTime datetime NOT NULL default '0000-00-00 00:00:00',
tid int NOT NULL default 0,
AdminNote varchar(255) NOT NULL default '',
Subject varchar(255) NOT NULL,
Text text NOT NULL,
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (ID),
KEY Status (Status)
) ENGINE=MyISAM ;
-----------
* tournaments/list_news.php:
- changed viewing news-text in table independent from admin/TD-view
with additional table-columns
- removed not-needed deletion of tournament-news,
any TD can do it by changing news-status on edit-news-page
* tournaments/include/tournament_utils.php (class TournamentUtils),
tournaments/include/tournament_ladder_props.php,
tournaments/include/tournament_properties.php,
include/gui_functions.php (formatDate),
include/std_functions.php (parseDate),
include/quick_common.php,
tournaments/ladder/edit_props.php,
tournaments/ladder/retreat.php,
tournaments/roundrobin/edit_pairing.php,
tournaments/edit_news.php,
tournaments/edit_properties.php,
tournaments/edit_status.php,
tournaments/edit_tournament.php,
tournaments/view_tournament.php:
- cleanup/refactoring:
- refactored TournamentUtils::parseDate() using global DATE_FMT/FMT_PARSE_DATE
- refactored TournamentUtils::formatDate() using global DATE_FMT
- replaced TOURNEY_DATEFMT by using standard DATE_FMT
* tournaments/include/tournament_news.php (TournamentNews.build_query_sql,
~.build_view_query_sql, ~.load_tournament_news_entry_by_query, ~.load_tournament_news),
include/error_codes.php (ErrorCode.init),
tournaments/edit_news.php, tournaments/list_news.php,
tournaments/view_news.php, tournaments/view_tournament.php:
- added page to view single tournament-news linked from news-list on info-image
* include/page_functions.php:
- removed TranslateGroups, because no translations
* include/classlib_profile.php, include/classlib_upload.php,
features/lib_votes.php, features/list_features.php,
features/list_votes.php, features/vote_feature.php,
rank_converter.php:
- changed TranslateGroups: Common -> Game / Feature / Users
2011-04-16 juga
* tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_results):
- changed type-dependent order for tournament-results
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row),
tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_crown_kings),
tournaments/ladder/edit_props.php (parse_edit_form),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
specs/db/dragon-ddl.sql:
- added date TournamentLadderProps.CrownKingStart storing when first
to check for crowning of ladder-king
-----------
-- added date to first check for crowning of ladder-king
ALTER TABLE TournamentLadderProps
ADD CrownKingStart datetime NOT NULL default '0000-00-00 00:00:00' ;
UPDATE TournamentLadderProps
SET CrownKingStart=NOW() WHERE CrownKingHours > 0 ;
-----------
* tournaments/list_directors.php:
- show tournament-owner
* tournaments/include/tournament.php (Tournament.formatRound):
- changed formatting of tournament-round: only 1 for ladder or one-rounded round-robin
* tournaments/edit_status.php:
- bugfix: set Tournament.EndTime when changing tournament-status to CLOSED
* tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_crown_kings,
~.process_tournament_ladder_crown_king),
tournaments/ladder/admin.php (add_form_edit_user):
- added crowning of ladder-king by TD/owner if auto-crowning disabled in ladder-properties
* tournaments/include/tournament_news.php (TournamentNews.build_tournament_news),
tournaments/edit_news.php, tournaments/list_news.php, tournaments/view_tournament.php,
skins/dragon/screen.css, specs/db/dragon-ddl.sql, NEWS:
- prettify showing of single full tournament-news using CSS
for tournament-info, news-list and news-editor-preview
- tournament-news-list: added toggle-link to show and hide news-text
2011-04-15 juga
* tournaments/edit_news.php, tournaments/list_news.php,
tournaments/view_tournament.php:
- show tournament-news for non-TPs/non-TDs only if PRIVATE-flag is not set
* tournaments/edit_news.php (parse_edit_form),
tournaments/list_news.php,
tournaments/view_tournament.php:
- show tournament-news for non-TDs only if HIDDEN-flag is not set
* tournaments/include/tournament_news.php (TournamentNews.process_tournament_news_deleted,
~.getStatusText),
tournaments/include/tournament_globals.php,
tournaments/cron_tournaments.php (run_once_daily),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- delete tournament-news on DELETE-status that haven't been changed since 7 days
-----------
-- added DELETE-status to delete tournament-news
ALTER TABLE TournamentNews
MODIFY Status enum('NEW','SHOW','ARCHIVE','DELETE') NOT NULL default 'NEW' ;
-----------
* tournaments/include/tournament_news.php (TournamentNews.setStatus),
tournaments/edit_news.php (parse_edit_form),
tournaments/list_news.php:
- adjusted tournament-news editor for
- changing of tournament news status
- changing publish-date of tournament news
- show tournament-news lastchanged and changedby-fields and tournament-status
- show all tournament-news only to TDs, only SHOW-/ARCHIVE status for other users
* tournaments/list_directors.php, tournaments/roundrobin/edit_pools.php,
list_contacts.php, opponents.php, users.php:
- enhanced date-filters by absolute-date-mode
* tournaments/include/tournament_news.php (class TournamentNews, ~.setStatus,
~.to_string, ~.persist, ~.insert, ~.update, ~.delete, ~.checkData,
~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.load_tournament_news_entry,
~.load_tournament_news, ~.getStatusText, ~.getFlagsText),
tournaments/include/tournament_globals.php,
include/classlib_profile.php (PROFTYPE_FILTER_TOURNAMENT_NEWS),
include/error_codes.php (ErrorCode.init),
include/std_functions.php (section),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
skins/dragon/screen.css,
tournaments/edit_news.php (parse_edit_form),
tournaments/list_news.php,
tournaments/manage_tournament.php,
tournaments/view_tournament.php:
- added tournament-news
- show news (SHOW-status) on tournament-info-page
- added tournament-news-page to list tournament-news archive
- started editor for tournament-news
- added db-table TournamentNews to store tournament news
- tournament-info: added refresh-link to reload page
-----------
-- added table to store tournament news
CREATE TABLE TournamentNews (
ID int NOT NULL auto_increment,
tid int NOT NULL,
uid int NOT NULL,
Status enum('NEW','SHOW','ARCHIVE') NOT NULL default 'NEW',
Flags tinyint unsigned NOT NULL default 0,
Published datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
ChangedBy varchar(54) NOT NULL default '',
Subject varchar(255) NOT NULL,
Text text NOT NULL,
PRIMARY KEY (ID),
KEY tidPublished (tid,Published),
KEY Status (Status)
) ENGINE=MyISAM ;
-----------
2011-04-14 juga
* include/config.php (ALLOW_QUICK_DO),
quick_do.php:
- added config-switch ALLOW_QUICK_DO to disable quick-do-suite for production,
because implementation is unfinished
2011-04-13 juga
* admin_faq.php:
- commented out translation-calls T_(..) on FAQ-admin-page
* introduction.php (show_static_intro, load_intro),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/dragon-ddl.sql,
admin.php, admin_faq.php (show_preview), admin_show_faqlog.php,
admin_show_users.php, skins/dragon/screen.css:
- adjusted admin_faq-page to allow editing of Intro-table by FAQ-editors
to store/edit entries of introduction-page in database
- show entries on introduction-page if there are some entries in Intro-table,
otherwise show default introduction-text
-----------
-- added table to store introduction-entries
CREATE TABLE Intro (
ID int NOT NULL auto_increment,
Parent int NOT NULL default '0',
Level tinyint unsigned NOT NULL default '0',
SortOrder smallint NOT NULL default '0',
Question int NOT NULL default '0',
Answer int NOT NULL default '0',
Hidden enum('N','Y') NOT NULL default 'N',
Reference varchar(255) NOT NULL default '',
PRIMARY KEY (ID)
) ENGINE=MyISAM ;
-----------
* include/std_functions.php (TXTOBJTYPE_INTRO, make_dragon_main_menu),
site_map.php:
- renamed main-menu/site-map 'Help' -> 'Help / FAQ'
- added/rearranged main-menu-links into groups:
- Introduction, Help/FAQ, Site map
- Forums, Features, Goban-Editor, Docs
* include/std_functions.php (make_dragon_main_menu_logged_out, make_dragon_main_menu),
include/config.php (ACCKEY_MENU_FAQ),
docs.php, site_map.php:
- renamed/extended 'FAQ' on site to 'Help' in main-menu and on some pages
- changed access-key for FAQ from q -> h (Help)
* scripts/translation_consistency.php:
- added check for orphan translation-texts for Links-table
* links.php (make_static_links, _section, _add_link_page_link, nop,
save_link_section, save_link_entry, load_links):
- bugfix: use translations when loading Links from DB
- bugfix: hide categories and entries if marked as hidden in DB
- adjusted page to seed database with former Links-entries if no Links-table
exists, show static links instead then
- use one method for both: create Links in DB, and statically show them
* include/admin_faq_functions.php (class AdminFAQ, ~.move_faq_entry_same_level,
~.move_faq_entry_to_new_category, ~.toggle_hidden_faq_entry, ~.get_faq_entry_row,
~.transl_toggle_state, ~.toggle_translatable_faq_entry, ~.delete_faq_entry,
~.update_faq_entry, ~.save_new_faq_entry),
admin_faq.php:
- cleanup: refactored SQL-writes/related into class AdminFAQ in 'admin_faq_functions.php'
- cleanup: refactored latin1_safe() into 'include/utilities.php'
- bugfix: fix error-detection for Reference-field
- added bottom-link 'Refresh' to reload page
* include/make_translationfiles.php (add_text_to_translate),
include/utilities.php (latin1_safe),
include/faq_functions.php:
- cleanup: refactored latin1_safe() from 'admin_faq.php' into 'include/utilities.php'
2011-04-11 juga
* admin_faq.php (get_faq_group_id, get_entry_row, show_preview, check_url, check_reference),
include/std_functions.php (add_link_page_link),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
admin_show_faqlog.php, admin.php, links.php:
- adjusted admin_faq-page to allow editing of Links-table to store/edit entries
of links-page in database
- added FAQ/Links/FAQlog.Reference-field to store URL of link with error-check
preventing save-entry, but only preview allowed on error
- show links on links-page if there are some entries in Links-table
otherwise show static links
- minor changes: formatting, SQL, DocLinks-CSS
-----------
-- added Reference-field to allow edit links with FAQ-editor
ALTER TABLE FAQ
ADD Reference varchar(255) NOT NULL default '' ;
ALTER TABLE FAQlog
ADD Reference varchar(255) NOT NULL default '' AFTER Answer ;
-- added table to store links with URL, text and extra-description
CREATE TABLE Links (
ID int NOT NULL auto_increment,
Parent int NOT NULL default '0',
Level tinyint unsigned NOT NULL default '0',
SortOrder smallint NOT NULL default '0',
Question int NOT NULL default '0',
Answer int NOT NULL default '0',
Hidden enum('N','Y') NOT NULL default 'N',
Reference varchar(255) NOT NULL default '',
PRIMARY KEY (ID)
) ENGINE=MyISAM ;
-----------
2011-04-10 juga
* links.php, skins/dragon/screen.css:
- added page-title, used CSS-narrower-lines
* site_map.php:
- fix: show "my tournaments"-link only if tournaments allowed
* specs/db/dragon-ddl.sql:
- sync'ed with current DB-DDL
* admin_faq.php, admin_show_faqlog.php:
- added bottom-link to FAQ-log from FAQ-editor and vice-versa
* include/sgf_builder.php (SgfBuilder.sgf_echo_comment):
- bugfix: enforce last-node in SGF, even if trimmed empty
* game_comments.php:
- added number of moves and number of comments above table
- show full game-reference to game with link back
* include/game_functions.php (class GameFinalizer, ~.finish_game;
class GameNotify, ~.build_game_ref_array, ~.get_text_game_deleted, ~.get_text_game_result),
include/quick/quick_game.php (QuickGameHandler.process_cmd),
include/std_functions.php (game_reference),
admin_game.php, clock_tick.php, confirm.php, game_comments.php:
- bugfix: fix format of game_reference()-output for multi-player-games,
can now provide more pre-loaded game-data and will load what is missing
and better handle if some fields are not available for deleted games
* include/utilities.php (basic_safe):
- fix HTML-entity: replaced apostrophe ''' with more human-readable '''
* include/quick/quick_game.php (QuickGameHandler.prepare, ~.process_cmd),
confirm.php:
- bugfix: ending MP-game with score or by resignation
- bugfix: fix undeclared var
* game.php:
- added hint about area-scoring when passing
* show_games.php:
- bugfix: fix undeclared var $color for MP-game for which current user
is not Black/White_ID
* include/game_functions.php (MultiPlayerGame.init_multi_player_game,
~.join_waitingroom_game, ~.change_player_mpg_count, ~.update_players_end_mpgame;
GamePlayer.delete_reserved_invitation, ~.delete_joined_player),
specs/db/table-Players.txt, scripts/player_consistency.php,
game_players.php (add_invitation_mpgame, accept_invite),
join_waitingroom_game.php:
- bugfix: change Players.GamesMPG when:
- game-master creates MP-game, starts MP-game, invites user, removes invitation,
removes joined player
- user joins waiting-room-reservation, accepts invitation, rejects invitation
- game-admin deletes MP-game on setup-mode
- added TODO for player-consistency-script to fix Players.GamesMPG
2011-04-09 juga
* edit_bio.php, edit_folders.php, status.php:
- remove bottom-links that are also available in the main-menu
* news.php:
- fix: remove comments before handling '#release'-data (to allow #release in comments)
* site_map.php:
- added some missing links
* forum/post.php (hide_post_update_trigger), specs/forums.txt:
- potential optimization recalculating Forums.LastPost for use-case A06
* tournaments/include/tournament_utils.php (TournamentUtils.check_create_tournament),
tournaments/include/tournament.php (removed Tournament.allow_create),
include/config.php (ALLOW_TOURNAMENTS_CREATE_BY_USER),
include/error_codes.php (ErrorCode.init),
tournaments/list_tournaments.php, tournaments/wizard.php, site_map.php:
- added server-config ALLOW_TOURNAMENTS_CREATE_BY_USER to control
if only-admin or any user can create a new tournament
- replaced Tournament::allow_create() with TournamentUtils::check_create_tournament()
* include/std_functions.php, people.php (get_executives):
- fix showing game-admins
* admin_show_users.php, skins/dragon/screen.css:
- CSS-cleanup: vertical align of table-rows for showing admin-info
* tournaments/include/tournament_helper.php, tournaments/include/tournament_ladder.php,
tournaments/include/tournament_rules.php, include/connect2mysql.php (db_lock, db_unlock),
include/board.php, include/classlib_profile.php, include/game_functions.php,
include/GoDiagram.php, include/make_game.php, include/make_translationfiles.php,
include/message_functions.php, include/rating.php, include/register_functions.php,
features/lib_votes.php, forum/class_forum_read.php, forum/post.php,
tournaments/edit_participant.php, tournaments/ladder/admin.php, tournaments/register.php,
forum/admin.php, forum/index.php, forum/list.php, forum/read.php,
features/edit_feature.php, features/vote_feature.php, scripts/recalculate_ratings2.php,
admin_admins.php, admin_do_translators.php, admin_faq.php, admin_game.php,
admin_rating.php, admin_users.php, change_bio.php, change_password.php,
change_profile.php, edit_folders.php, edit_rating.php, edit_vacation.php,
join_waitingroom_game.php, message.php, people.php, quick_play.php, ratingpng.php,
register.php, send_new_password.php, statistics.php, update_translation.php:
- added HOT-sections where it made sense using enclosure of ta_begin/ta_end()
- added HOT-sections for db_lock/db_unlock() using enclosure of ta_begin/ta_end(),
removed enclosure ta_begin/ta_end() for db_lock-enclosure
- write admin-log before admin-action if possible
- cleanup: added note if TA-enclosure needed, clearer error-labels,
commenting, minor formatting
* include/game_functions.php:
- removed unused methods: GamePlayer::reset_flags()
* confirm.php:
- fix: no move-notify on game-deletion
- notify message on finish-game independently from game-moving
* include/game_functions.php (GameFinalizer.finish_game),
include/quick/quick_game.php (QuickGameHandler.process_cmd):
- notify message on finish-game independently from game-moving
* include/std_functions.php (send_message, notify, delete_all_observers):
- cleanup: refactor redundant code -> call notify() in send_message()
- optimize db-result cleanup
* news.php:
- allow comments that are removed with format: "## comment-line"
- added doc with NEWS-format
2011-04-08 juga
* tournaments/include/tournament_result.php (class TournamentResult, ~.to_string,
~.persist, ~.insert, ~.update, ~.delete, ~.fillEntityData, ~.build_query_sql,
~.new_from_row, ~.load_tournament_results, ~.show_tournament_result),
tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row),
tournaments/include/tournament_ladder.php (TournamentLadder.build_rank_kept,
~.process_crown_king_reset_rank),
tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_crown_kings,
~.process_tournament_ladder_crown_king),
tournaments/include/tournament_director.php (TournamentDirector.load_tournament_directors_uid),
tournaments/include/tournament_gui_helper.php (TournamentGuiHelper.build_tournament_results),
tournaments/include/tournament_globals.php,
include/time_functions.php (TimeFormat.parse_time_days_hours),
include/globals.php (CLOCK_CRON_TOURNEY_HOURLY),
include/classlib_userconfig.php (ConfigPages-const),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-data.sql, specs/db/table-Players.txt, specs/db/table-Tournaments.txt,
tournaments/cron_tournaments.php (run_hourly),
tournaments/manage_tournament.php (make_links_ttype_specific),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/view_tournament.php, NEWS:
- added TournamentResult-table to store tournament-results
- showing tournament-results on tournament-info-page if there are some
in column-configurable table stored in ConfigPages-table
- added "King of the Hill" for ladder-tournament crowning a user to King
when he keeps the top-rank for a configurable amount of time,
resetting TournamentLadder.RankChanged and notifying T-owner and tournament-directors
about the crowning, check every hour for king-crowning in tournament-cron-script
- bugfix: wrong hour-per-day basis for formatting "rank-kept" for ladder-tournament
-----------
-- added table for tournament-results
CREATE TABLE TournamentResult (
ID int NOT NULL auto_increment,
tid int NOT NULL,
uid int NOT NULL,
rid int NOT NULL default 0,
Rating double NOT NULL default '-9999',
Type tinyint unsigned NOT NULL default 0,
StartTime datetime NOT NULL default '0000-00-00 00:00:00',
EndTime datetime NOT NULL default '0000-00-00 00:00:00',
Round tinyint unsigned NOT NULL default '1',
Rank smallint unsigned NOT NULL default '0',
RankKept smallint unsigned NOT NULL default '0',
PRIMARY KEY (ID),
KEY tidRank (tid,Rank),
KEY uid (uid)
) ENGINE=MyISAM ;
-- added config for crowning of ladder-king
ALTER TABLE TournamentLadderProps
ADD CrownKingHours smallint unsigned NOT NULL default 0 ;
-- Clock for (hourly) tournament-cron
INSERT INTO Clock SET ID=207, Lastchanged=0 ;
-- table-column-set for tournament-results
ALTER TABLE ConfigPages
ADD ColumnsTournamentResults int NOT NULL DEFAULT -1 AFTER ColumnsTDTournamentParticipants ;
-----------
2011-04-07 juga
* tournaments/include/tournament_gui_helper.php (class TournamentGuiHelper,
~.build_tournament_ladder_standings),
tournaments/include/tournament_ladder.php (TournamentLadder.build_tournament_ladder_iterator),
tournaments/include/tournament_template.php (class TournamentTemplate,
~.getCountTournamentStandings),
tournaments/include/tournament_template_ladder.php (class TournamentTemplateLadder),
tournaments/ladder/view.php, tournaments/view_tournament.php, NEWS:
- tournament-ladder: show tournament-standings for tourney on status=PLAY|CLOSED,
show TOP 5, statically configured in tournament-template
* include/game_functions.php (GameHelper.delete_running_game, ~.delete_finished_unrated_game,
~.remove_double_game_reference, ~._delete_base_game_tables;
class GameFinalizer, ~.finish_game;
class GameNotify, ~.get_text_game_deleted),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
admin_game.php (parse_edit_form, draw_game_admin_form),
clock_tick.php, confirm.php, NEWS:
- game-admin: allow to delete finished unrated non-tournament games
2011-04-03 juga
* tournaments/include/tournament_games.php (TournamentGames.buildStatusFilterArray),
show_games.php:
- added filter for TournamentGames.Status for tournament-games
* include/message_functions.php (class MessageListBuilder, ~.message_list_head,
~.message_list_body, ~.message_build_user_string),
include/table_columns.php (class Table),
list_messages.php, message_thread.php, search_messages.php, status.php:
- fixed TODO by refactoring vars stored in ExtMode-array in Table-object
into class MessageListBuilder to pass vars between methods
* include/game_functions.php (GameAddTime.allow_add_time_opponent),
include/sgf_builder.php (SgfBuilder.load_game_info),
game_comments.php:
- fix missing handling of new games-status 'SETUP' in NOT-checks
like Games.Status != 'FINISHED/INVITED'
* include/classlib_userconfig.php, include/connect2mysql.php,
include/game_functions.php, include/make_translationfiles.php,
include/quick/quick_game.php, include/sgf_builder.php,
scripts/game_consistency.php, scripts/generate_translation_texts.php,
confirm.php, faq.php, opponents.php, quick_play.php, search_messages.php,
statistics.php, statisticspng.php, wap/status.php:
- checked/changed all TODOs, fixed TODO by changing to NOTE or by removing it
* scripts/convert_from_old_forum.php:
- added note to prevent script from being used without fixing TODOs
* clock_tick.php:
- bugfixes/TODOs for timeout-detection:
added Clock.ID>=0, select Games.Flags as int, added notes
* daily_cron.php:
- fixed TODOs:
- removed old code to write daily-statistics
- removed old code to handle night-start-change
* include/register_functions.php (UserRegistration.register_blocked_user),
include/config.php (FORUM_ID_SUPPORT),
do_registration_blocked.php:
- fixed TODO by adding global-config with forum-id of support-forum
* include/form_functions.php:
- fixed TODOs by removing unused add_form()-func, removing NTH-feature
* index.php:
- fixed TODO by cleaning up form-items
* join_waitingroom_game.php:
- fixed TODO by addding HOT-section for joining waiting-room
* ratingpng.php:
- fixed TODO by removing 'implicit' SHOW_NRGAMES-const
* include/std_functions.php:
- fixed TODOs by removing unused vars, changed some TODOs
* include/make_game.php, include/message_functions.php,
include/sgf_parser.php, include/std_functions.php,
tournaments/include/tournament_rules.php,
tournaments/view_tournament.php,
add_to_waitingroom.php, game.php, waiting_room.php:
- renamed ENA_STDHANDICAP -> ENABLE_STDHANDICAP, concentrating TODOs
* scripts/update_translation_pages.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/data_export.php:
- fixed TODO by removing TranslationPages.ID-field using Page-field as primary-key
-----------
-- drop unused column TranslationPages.ID
ALTER TABLE TranslationPages
DROP COLUMN ID,
ADD PRIMARY KEY (Page) ;
-----------
* scripts/tournament_consistency.php, scripts/index.php:
- added admin consistency-script to fix Tournament.RegisteredTP-field
* tournaments/include/tournament.php (class Tournament, ~.fillEntityData,
~.new_from_row, ~.update_tournament_registeredTP),
tournaments/include/tournament_participant.php (TournamentParticipant.isTournamentParticipant,
~.update_tournament_registeredTP, ~.delete_tournament_participant),
tournaments/edit_participant.php,
tournaments/list_tournaments.php,
tournaments/register.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added aggregate of number of registered participants of a tournament
for tournament-list, stored in new field Tournament.RegisteredTP
-----------
-- added aggregate of tournaments registered participants in Tournament-table
ALTER TABLE Tournament
ADD RegisteredTP smallint NOT NULL default '0' AFTER CurrentRound ;
-----------
* tournaments/include/tournament_factory.php (TournamentFactory.getTournamentTypes),
tournaments/include/tournament_globals.php,
include/config.php (ALLOW_TOURNAMENTS_ROUND_ROBIN),
tournaments/wizard.php, NEWS:
- added config-switch to disable ROUND-ROBIN tournaments for production,
because implementation is unfinished
- tourney-wizard: separate different tournament-types with line
* include/game_functions.php (MultiPlayerGame.init_multi_player_game,
~.join_waitingroom_game, ~.change_joined_players),
game_players.php (accept_invite, delete_joined_player),
specs/db/table-Games.txt, status.php:
- use Games.Moves to store number of joined-players of MP-game showing
on status-page on MP-game-list
* waiting_room.php:
- changed order of Rated-column -> after time-limit
* include/rating.php (change_user_rating),
scripts/recalculate_ratings2.php (find_rating_changes, change_user_ratings_for_recalc),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- adjusted recalc_rating2-script to read and process RatingChangeAdmin-table-entries
synchronizing rating-changes with game-end
- added key for RatingChangeAdmin.Created to optimize future rating-recalculations
* admin_rating.php (load_old_rating_changes):
- added warning about avoiding rating-changes on DST-change
- cleanup: replaced FOUND_ROWS()-SQL-call with existing row-count
2011-04-02 juga
* include/db/ratingchangeadmin.php (class RatingChangeAdmin, ~.to_string, ~.persist,
~.insert, ~.update, ~.fillEntityData, ~.build_query_sql, ~.new_from_row,
~.load_ratingchangeadmin_with_query, ~.load_ratingchangeadmin),
include/rating.php (format_ratingchangeadmin_changes),
admin_rating.php (load_old_rating_changes),
skins/dragon/screen.css, NEWS:
- admin-rating: show former rating-changes of edited user
* userinfo.php:
- added admin-link right besides rating on user-info-page to change user-rating
with admin-rating-page
* include/rating.php (change_user_rating),
admin_rating.php (diff, percent),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Ratings.txt, scripts/data_export.php, NEWS:
- added admin-rating-page to change user-rating directly and/or
resetting confidence-interval
- added RatingChangeAdmin-table to permanently store rating-changes
- cleanup: comment unused update_rating_glicko-func
-----------
-- added table with rating-changes by admin
CREATE TABLE RatingChangeAdmin (
ID int NOT NULL auto_increment,
uid int NOT NULL,
Created datetime NOT NULL default '0000-00-00 00:00:00',
Changes tinyint NOT NULL default 0,
Rating double NOT NULL default '-9999',
PRIMARY KEY (ID),
KEY uid (uid),
KEY Created (Created)
) ENGINE=MyISAM ;
-----------
* include/rank_converter.php (RankConverter),
rank_converter.php, docs.php, edit_rating.php, site_map.php, NEWS:
- refactored separate DGS-rank-converter to convert other ranks & ratings to DGS-rank
* edit_rating.php:
- show link for users rating-graph
- clearer notes about rating-change
* ratingpng.php:
- bugfix for non-const translation-texts
* include/quick/quick_game.php (QuickHandlerGame.process_cmd),
clock_tick.php, confirm.php:
- fix message to players for game-deletion and setting game-result differ
between executioner admin/cron/player
* include/game_functions.php (class GameFinalizer, ~.finish_game;
GameNotify._load_players, ~.get_text_game_deleted, ~.get_text_game_result),
tournaments/include/tournament_rules.php (TournamentRules.determineJigoBehaviour),
admin_game.php (parse_edit_form, draw_game_admin_form), NEWS:
- fix message to players for game-deletion and setting game-result differ
between executioner admin/cron/player
- added check for setting game-result for tournament-games matching
jigo-tournament-rules
- added link to tournament on added tourney-icon
- bugfixes: don't round float-score to int, varname-use for adminlog,
separator-line, SQL-fixes
* include/sgf_builder.php (SgfBuilder.load_game_info, ~.build_sgf_start,
~.build_sgf_result):
- added set-by-admin in result-node for SGF-download
- bugfixes: select Games.Flags as int, fix wrong args for func-call
* gameinfo.php:
- show admin-set-result with warning-CSS
* tournaments/game_admin.php (draw_game_end, draw_add_time):
- re-format form-parts similar to admin-game-page
- bugfix: pass global $vars
2011-04-01 juga
* admin_game.php (parse_edit_form, draw_game_admin_form):
- added message by admin to all game-players on setting game-result
* include/game_functions.php (GameFinalizer.finish_game),
include/globals.php (GAMEFLAGS_ADMIN_RESULT),
include/sgf_builder.php (SgfBuilder.build_sgf_start),
include/db/games.php (Games.parseFlags, ~.buildFlags),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Games.txt, specs/quick_suite.txt,
game.php, gameinfo.php:
- set Games.Flags GAMEFLAGS_ADMIN_RESULT if admin finishes game with result
- show 'game-result set by admin' on game-page, game-info-page, on comments as Note in SGF-download
-----------
-- add indicator for game-result set by admin
ALTER TABLE Games
MODIFY Flags set('Ko','HiddenMsg','AdmResult') NOT NULL default '' ;
-----------
2011-03-31 juga
* include/game_functions.php (class GameFinalizer, ~.skip_game_query, ~.finish_game,
~.convert_score_to_posx),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
admin_game.php, clock_tick.php, confirm.php:
- implemented finish game by admin by refactoring game-finish into GameFinalizer-class
- refactored: confirm-page, quick-game-handling, cron-time-out-handling
2011-03-30 juga
* include/game_functions.php (class GameNotify, ~.get_text_game_deleted,
~.get_recipients),
admin_game.php (parse_edit_form, draw_game_admin_form):
- send notify to all game-players if admin deletes game with optional message
- allow game-admin for MP-games:
- set game-result only for running game
- disable rated-status change for tournament- and MP-games
- delete game only for running games and MP-games on SETUP-status,
i.e. disabled only for finished games
- show game-type for MP-games
- show game-admin form-parts only if allowed
- write admin-log on all admin-changes on game
* game_players.php:
- add admin-link to game-admin for MP-game in SETUP-mode
2011-03-29 juga
* admin_game.php (parse_edit_form, draw_game_admin_form, toggle_rated):
- added toggling of Games.Rated for running non-tournament game
- added game-delete for running non-tourney-game with asking for confirmation
- allow setting of game-result only for running games
- show tournament-info if tournament-game
* gameinfo.php:
- bugfix: disable game-info-page only for games on SETUP-status,
but allow for FINISHED games
* admin_game.php (parse_edit_form, draw_game_end), gameinfo.php:
- started admin-game-page to end game with specific result allowed by ADMIN_GAME-role
- copied/adjusted admin-page from 'tournaments/game_admin.php'
* include/std_functions.php (ADMIN_GAME),
admin_admins.php:
- added admin-role ADMIN_GAME to change game-settings
- ordered admin-roles alphabetically by text
2011-03-27 juga
* edit_rating.php, edit_profile.php, change_profile.php, site_map.php,
userinfo.php:
- refactored update of rating & rank-info into 'edit_rating.php'-page
with more rank/rating-related information, especially rating-changes
- edit-profile: added bottom-links to edit all user-related stuff:
rating, rank-info, password, bio, user-picture, message-folders
* include/rating.php ($IGS_TABLE, $KGS_TABLE, getRatingTypes, convert_to_rating):
- overworked rank-conversion between other rating-types and DGS oriented
on http://senseis.xmp.net/?RankWorldwideComparison used own judgement
on conversion if base-data insufficient.
- added more rating-types: ogs, ogs-rating, tygem, wbaduk
- overworked rating-types: euro-rating, euro-rank, aga, aga-rating, china, korea
- limited rating to boundaries +/-50 around MIN/MAX_RATING
- re-arranged rating-types
* include/rating.php (update_rating2),
game_calc.php (convert_rating_result, print_rating_update),
gameinfo.php, NEWS:
- enabled game_calc.php to show rating-diffs for running-games
with potential outcomes: B wins, W wins, Jigo
- added link to game-calc-page for admin on game-info-page
* edit_folders.php:
- removed bottom-link to show user-info (use main-menu)
2011-03-26 juga
* edit_profile.php:
- re-arrangments of email+notifications, tablemaxrows/javascript
- minor changes (text, spans, v-space, typo)
* include/rating.php (getRatingTypes, convert_to_rating), NEWS:
- added rank-conversion for FICGS-server
* include/message_functions.php (game_settings_form):
- example-text for MP-game game-players
* edit_password.php:
- added section-title
2011-03-21 juga
* include/game_functions.php (GamePlayer.delete_joined_player),
game_players.php (build_user_actions, build_form_delete_joined_player,
delete_joined_player, check_invite, check_delete_invite, check_delete_joined_player),
specs/multi-player-game.txt, NEWS:
- game-master may delete a game-player in SETUP-mode of MP-game
- bugfix: protect game-master from unwanted deletions
* include/game_functions.php (GameHelper.delete_running_game),
include/gui_functions.php (echo_image_tournament_info),
include/make_game.php (create_game),
tournaments/ladder/edit_props.php,
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,
gameinfo.php, list_contacts.php, opponents.php, show_games.php, users.php:
- disabled most tournament-features if ALLOW_TOURNAMENTS disabled
2011-03-20 juga
* join_waitingroom_game.php:
- bugfix SQL to join MP-game
* message.php (read_mpgame_request):
- bugfix for PHP4
* waiting_room.php:
- bugfix: showing waiting-room-info only if game-id given
* specs/multi-player-game.txt:
- restrictions, better texts, design, time, vacation, NTH
- use-cases: info MP-game, play MP-game
* specs/db/table-Games.txt, specs/db/table-Waitingroom.txt:
- fix GameType/GamePlayers info
2011-02-14 juga
* specs/multi-player-game.txt, specs/team-go.txt (removed):
- added documentation about multi-player-game (Team-Go/Zen-Go)
- replaced team-go.txt
2011-02-13 juga
* userinfo.php:
- bugfix showing counts of multi-player-games:
show only setup + running games, finished games excluded
* include/game_functions.php (Games.load_users_for_mpgame),
include/db/games.php (Games.fillEntityData),
include/db/ratinglog.php (Ratinglog.fillEntityData),
tournaments/include/tournament_games.php (TournamentGames.fillEntityData),
tournaments/include/tournament_ladder.php (TournamentLadder.fillEntityData, ~.seed_ladder),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fillEntityData),
tournaments/include/tournament_pool.php (TournamentPool.fillEntityData, ~.seed_pools,
~.add_missing_registered_users),
message.php (read_mpgame_request),
scripts/tests/README.test:
- fix PHP4-incompatibility: can NOT use arg-reference assigned to null: &$arg=null
- test-suite requires PHP-version >= 5.x
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- replaced all SQL CHANGE-command to MODIFY-command if column-name not changed
2011-02-08 juga
* game_players.php:
- changed link-text for showing waiting-room-offer to accommodate
game-master & non-edit-allowed users alike
* scripts/browser_stats.php:
- updated with new browser-types (opera, Konqueror, MSIE, iPhone/etc)
2011-02-07 juga
* scripts/updates/fix_game_comments-1_0_15.php (load_games_with_hidden_comment):
- fix only games without missing hidden-comment-flag
- added db-query to error-log for debugging
2011-02-06 juga
* include/game_functions.php (MultiPlayerGame.get_message_defaults):
- for MPG-message-templates use <game_..> with new-window-link
* game.php (draw_game_info):
- bugfix: show last-moved player for multi-player-game only after 1st move
* include/game_texts.php (class GameTexts, ~.get_game_type, ~.format_game_type),
include/game_functions.php, include/message_functions.php,
include/quick/quick_game_info.php, include/quick/quick_game_list.php,
scripts/admin-export-games_info.php,
game.php, game_players.php, gameinfo.php, join_waitingroom_game.php,
message.php, quick_status.php, show_games.php, status.php, waiting_room.php:
- refactored MultiPlayerGame::format_game_type/get_game_type to GameTexts-class in 'include/game_texts.php'
* site_map.php:
- added new pages for multi-player-game handling
* include/std_functions.php (game_reference):
- adjusted format of <game>-tag: added game-type
* game_players.php (accept_invite):
- bugfix: increase players MP-game count on accepting-invite
* quick_status.php, status.php, specs/quick_suite.txt:
- cleanup: removed game_players unused Status-field for multi-player-games
* include/game_functions.php (MultiPlayerGame.get_message_defaults;
GamePlayer.load_game_player_by_uid, ~.delete_reserved_invitation),
include/error_codes.php (ErrorCode.init),
game_players.php (build_user_actions, load_game_players, build_table_game_players,
build_form_add_waiting_room, build_form_invite, build_form_delete_invite,
build_form_accept_invite, build_form_start_game, add_waiting_room_mpgame,
add_invitation_mpgame, delete_invite, accept_invite, reject_invite, check_invite,
check_delete_invite, check_accept_invite, show_errors),
message.php (handle_send_message, read_message_receivers, read_mpgame_request),
waiting_room.php (load_waitingroom_info),
skins/dragon/screen.css:
- added invite of single-player to multi-player-game
- invitation-process:
- game-master invites player making invitation-reservation, stored in GamePlayers-table
- game-master sends invitation for MP-game using "normal" message with template-text
- invite-player can approve or reject invitation on game-player-page
- reminder-message can be generated
- prevent user from joining same MP-game twice
- game-players-page:
- added commands: invite, delete-invite, accept/reject-invite
- safety-check for start-game, allow only for game-master
- added link to edit corresponding waiting-room-offer if existing
- added specific actions on game-players-entry: send-message, invite-message, delete-invitation
- cleanup: removed game_players Status-field
- cleanup: mark translation-texts with '#mpg'
- message-page:
- jump to game-players-page after sending MP-game-invitation-message
* include/error_codes.php (ErrorCode.init):
- renamed error-code: multiplayer_no_users -> multi_player_no_users
* include/std_functions.php (send_message, game_reference):
- changed <game gid,move> : added 'Move #' in game-text
2011-01-30 juga
* include/game_functions.php (MultiPlayerGame.calc_average_group_ratings),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
include/rating.php (update_rating2),
game_players.php (build_form_change_group_with_handicap, start_multi_player_game),
clock_tick.php, confirm.php:
- set new game-end-rating for end of multi-player-game to average current rating of players
- moved game_players.php calc_group_ratings() -> MultiPlayerGame.calc_average_group_ratings()
* userinfo.php:
- show running/setup MP-games in user-info for myself and admin,
added link to show all MP-games for myself on games-list-page
* quick_status.php, specs/quick_suite.txt:
- retrieve a list of multi-player-games ('MPG'-type) to manage for quick-status
like on status-page, but add only if there is a MP-game for user on setup
* include/game_functions.php (MultiPlayerGame.init_multi_player_game,
~.update_players_start_mpgame, ~.update_players_end_mpgame;
GameHelper.delete_running_game),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/table-Players.txt,
join_waitingroom_game.php, status.php:
- optimize status-page: avoid loading from game_players-table if no MP-game started for user
added db-field Players.GamesMPG with number of MP-game on SETUP-game-status
- cleanup: removed unused method MultiPlayerGame.delete_game()
-----------
-- number of setup MP-games to optimize status-loading
ALTER TABLE Players
ADD GamesMPG smallint unsigned NOT NULL default '0' AFTER Lost ;
-----------
* features/lib_votes.php (FeatureVote.formatPoints),
features/list_features.php, features/list_votes.php,
skins/dragon/screen.css:
- show feature vote-points for negative/positive/neutral-points in red/blue/black-color
* include/sgf_builder.php (class SgfBuilder, ~.sgf_echo_comment, ~.load_game_info,
~.find_mpg_user, ~.build_sgf, ~.build_sgf_moves, ~.buildPlayerName, ~.formatPlayerName),
include/game_functions.php (GamePlayers.load_users_for_mpgame, ~.get_user_info),
include/std_functions.php (remove_hidden_game_tags, game_tag_filter),
specs/quick_suite.txt, game.php, game_comments.php, sgf.php:
- show "players"-related game-info for ALL players of multi-player-game:
- for game-page and game-comments-page
- for SGF-download:
- added moved-player on each node,
added URL-argument 'mpg' for disable that
- show player-comments and private-notes for ALL game-players
- added info about multi-player-game in game-comment-tag: players, game-type
- return error for game on SETUP-status
- changed $_GET -> $_REQUEST to allow POST-requests as well
2011-01-24 juga
* features/lib_votes.php (Feature.set_subject):
- bugfix: feature-subject was not shown, because of wrong length-cutting
* include/game_functions.php (MultiPlayerGame.calc_game_player_for_move),
include/quick/quick_game.php (QuickHandlerGame.process_cmd),
include/make_game.php (create_game),
game_players.php (build_table_game_players, start_multi_player_game),
game.php (draw_game_info),
confirm.php, quick_play.php:
- show moving-player in board-info-box on viewing specific move on game-page for MP-game
* include/connect2mysql.php (db_close),
game.php:
- removed db_close(), because ...
- 1. took two days debugging to find that connection still needed, so at wrong place
- 2. DGS-tag resolving in messages may still need connection
- added debug-log of db_close()
2011-01-16 juga
* include/game_functions.php (GamePlayer.exists_game_player),
game_players.php (load_game_players, build_form_add_waiting_room),
join_waitingroom_game.php, waiting_room.php,
skins/dragon/screen.css:
- bugfix: assure that player can join multi-player-game only once
by avoiding more than one waiting-room-entry for MP-game
* include/game_functions.php (class MultiPlayerGame.is_single_player, ~.get_message_defaults;
class GamePlayer.load_users_for_mpgame),
include/error_codes.php (ErrorCode.init),
game_players.php (build_form_start_game),
game.php, message.php (read_mpgame_request), NEWS:
- go to send-message-page to ask for resignation or start a game using bulk-message
- only ask for resignation, if there are more than one game-players in same team
- start-game-message to all game-players
2011-01-15 juga
* all files:
- adjusted Copyright on every file to: -2011
* include/message_functions.php (message_info_table, message_list_query, message_list_body;
class DgsMessage, ~.count_recipients, ~.clear_errors, ~.add_error, ~.load_message,
~.load_message_receivers),
include/quick/quick_message.php (class QuickHandlerMessage, ~.parseURL, ~.prepare,
~.process_cmd_info, ~.convertMessageFlags),
include/std_functions.php (send_message),
include/error_codes.php (ErrorCode.init), include/globals.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/table-Messages.txt, specs/quick_suite.txt,
message.php (handle_send_message, read_message_receivers),
message_thread.php (echo_message_row), NEWS:
- added support for multi-receiver bulk-message
- msg to myself forbidden for bulk-message
- max. 16 message-receivers
- add link with other-uid 'oid' to identify bulk-message with same message-id
- bulk-messages are marked with MSGFLAG_BULK-flag set in new db-field Messages.Flags
- see also: specs/db/table-Messages.txt
Some of the DGS message-related pages escpecially with message-lists
may behave not very intuitive because of the fact, that there is only
one Messages-entry for a bulk-message. That produces some "strange" effects:
- a bulk-message is listed several times in message-lists, though it's good
that way, because you can see all the recipients of the bulk-message
- only the FIRST (initial) message in a message-thread can be a bulk-message
- navigating between message-related pages for a bulk-message of a dedicated
recipient might sometimes lose the reference to the recipient returning
to (any) one of the message-receivers
- a bulk-message for a dedicated receiver can NOT be moved to another folder
or destroyed (from Trashcan) without effecting also all other receivers,
because there is only one message-sender, where the "folder" is stored.
However, in message-lists with actions on toggle-marked messages all
checkbox-markers are reduced to but one for bulk-messages to avoid confusion.
- invitations can NOT have multiple receivers, because each invitation needs
a Games-entry and so there would be no "link" with the related (one) message
- a bulk-message can NOT be sent to oneself (that would wreck the data-model
used for messages to myself)
- fix bug for accepted/declined invitation-messages: set Messages.Game_ID and Type=INVITATION
-----------
copy /images/up_bulk.gif
-- fix wrong accepted/declined invitation-messages adding Game_ID of parent message (invitation/dispute)
-- * 1. count (ca. 270.000 rows - 15s)
SELECT COUNT(*) FROM Messages AS M WHERE M.Subject like 'Game invitation%' AND M.ReplyTo>0 AND M.Game_ID=0 ;
# not all of these are invitation-msgs, some are also replies to invitations
-- * 2. fix
UPDATE Messages AS M, Messages AS MSRC
SET M.Game_ID=MSRC.Game_ID
WHERE M.ReplyTo=MSRC.ID AND M.Subject LIKE 'Game invitation%' AND M.ReplyTo>0 AND M.Game_ID=0 AND MSRC.Game_ID>0 ;
-- * 3. control-count, repeat step (2) till count is 0 (ca. 4min)
SELECT COUNT(*) FROM Messages AS M INNER JOIN Messages AS MSRC ON MSRC.ID=M.ReplyTo WHERE M.Subject like 'Game invitation%' AND M.ReplyTo>0 AND M.Game_ID=0 AND MSRC.Game_ID>0 ;
-- added message-flags to mark as bulk with multiple receivers
ALTER TABLE Messages
ADD Flags tinyint unsigned NOT NULL default '0' AFTER Type ;
-----------
* scripts/data_export.php:
- added table for multi-player-go: GamePlayers
* message.php (read_message_receiver):
- added check for empty-receiver, and unique error-texts
* include/message_functions.php (init_standard_folders, message_info_table;
class DgsMessage, ~.has_recipient, ~.get_recipient, ~.add_recipient,
~.build_recipient_user_row, ~.load_message, ~.load_message_receiver,
~.update_message_folder),
include/quick/quick_message.php (QuickHandlerMessage.prepare, ~.process_cmd_info),
message.php (handle_send_message, handle_change_folder, read_message_receiver,
read_user_from_request):
- for preview and sending-message:
- show error-list instead of jumping to error-page
- already check for reject-message/invitation on preview
- added checks for missing subject, missing message receiver
- ignore reject-message/invitation of message-receiver
for developer-admins and forum-managers
- avoid double loading and checking of message-receiver by using check-cache
- used common code where possible by extracting methods locally and into
DgsMessage-class in message_functions.php, also for use in quick-suite message-handler
- cleanup: avoid double init for standard-folders, minor formatting-cleanup
* skins/dragon/screen.css:
- use CSS vertical-top-alignment for message-info-table table-rows
2011-01-08 juga
* include/std_functions.php (buildErrorListString),
tournaments/include/tournament_utils.php,
tournaments/edit_director.php, tournaments/edit_lock.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/edit_rules.php, tournaments/edit_status.php,
tournaments/edit_tournament.php, tournaments/game_admin.php, tournaments/ladder/admin.php,
tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php, tournaments/ladder/retreat.php,
tournaments/ladder/view.php, tournaments/register.php,
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/roundrobin/view_pools.php,
game_players.php:
- refactored TournamentUtils::buildErrorListString() into std_functions.php
* message.php (handle_send_message),
message_selector.php (REMOVED), send_message.php (REMOVED):
- refactored message_selector.php and send_message.php into message.php
in preparation for multi-receiver-message and error-checks without losing data
* include/game_functions.php (GameHelper.delete_invitation_game),
include/make_game.php (accept_invite_game),
send_message.php:
- cleanup:
- refactored accepting-invitation into make_game.php accept_invite_game()-func
- refactored rejecting-invitation into game_functions.php delete_invitation_game()-func
- formatting, removed old comments
* message.php:
- SQL-cleanup: replace FROM (T1,T2) -> INNER-JOIN, added LIMITs
2011-01-04 juga
* include/game_functions.php (class GameNotify, ~._load_players, ~._build_text_players,
~.get_text_game_deleted, ~.get_text_game_result, ~.get_recipients),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_end),
clock_tick.php, confirm.php:
- cleanup for handling game-end for multi-player-game:
- refactor handling of game-end for simple AND multi-player-game into GameNotify-class
for use-cases game-deletion, game-end (i.e. one of game-resignation, game-timeout,
game-score)
- changed game-end-message always including references to all game-players,
sending to all game-players
- changed game-deletion-message including player that deleted the game
- changed game-result-message to observers to not include hidden-message-info
* waiting_room.php:
- made Game-Type column static
2011-01-02 juga
* halfhourly_cron.php:
- bugfix: add user-handle of player for notification-only mails
* include/rating.php (update_rating, update_rating2, update_rating_glicko),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
scripts/recalculate_ratings2.php,
clock_tick.php, confirm.php:
- add player that deleted game in info-message to other players
- bugfix for rating-update:
- don't make tourney-game unrated if too-few-moves
- multi-player-game can not be rated
- cleanup:
- introduced consts for update_ratingX() RATEDSTATUS_..-result
- changed server-message with game-message to prepare for multi-player-game:
"opponent" -> "the player" wrote
* include/game_functions.php (GameHelper.update_players_end_game):
- remove default-values for update_players_end_game()
* include/game_functions.php (GameHelper.update_players_end_game),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
specs/db/table-Games.txt, clock_tick.php, confirm.php:
- cleanup:
- refactored updating Players.Running/Finished/etc into GameHelper-class
- remove unused code
- moved some FIXME/NOTEs into specs/db/table-Games.txt
2011-01-01 juga
* include/game_functions.php (GameHelper.delete_running_game),
include/classlib_game.php (NextGameOrder.delete_game_priorities),
include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
specs/db/table-Games.txt, confirm.php:
- cleanup: refactored delete-running-game into GameHelper-class
and extended for simple- and multi-player-game
* include/quick/quick_game.php (QuickHandlerGame.process_cmd_play),
confirm.php, quick_play.php:
- cleanup: removed old notify-opponent code, only using new notify(..)
* include/quick/quick_game.php (QuickHandlerGame.prepare),
confirm.php, quick_play.php:
- add additional check for game-finished instead of database_corrupted
* include/quick/quick_game.php (QuickHandlerGame.process_cmd),
confirm.php, quick_play.php:
- fix setting of hidden-message in Games.Flags for ALL game-actions
for ALL play-interfaces
- fix empty-public-comment-handling where missing
* game_players.php (check_game_setup, build_table_game_players,
build_form_start_game, build_arr_group_color_texts):
- changed warnings to errors for game-setup-check, if player joined game more than once
- show also 2nd-next to-move with right-arrow on game-players-list
- bugfixes for editing
* include/game_functions.php (MultiPlayerGame.update_players_start_mpgame,
~.update_players_end_mpgame; GamePlayer.load_game_player, ~.load_uid_for_move,
~.reset_flags),
include/quick/quick_game.php (QuickHandlerGame.prepare, ~.process_cmd),
include/make_game.php (create_game),
confirm.php, game_players.php:
- allow resign for both players (also for multi-player-game)
- refactored func: MultiPlayerGame::load_uid_for_move -> GamePlayer::load_game_player
- refactored func into: MultiPlayerGame::update_players_start_mpgame()
- cleanup: use existing vars
* game.php:
- show note to ask for consent with team-member for resignation of MP-game
* show_games.php:
- changed column-header for multi-player-game for finished-user-games-list
* quick_play.php:
- bugfix: set 2nd-next-player in multi-player-game on moving
* halfhourly_cron.php:
- optimize query for notification by checking on Email>''
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- dropped some tables (already) in production-database
2010-11-22 juga
* include/game_functions.php (MultiPlayerGame.is_game_player), game.php:
- multi-player-game: allow edit of private-game-notes for all game-players,
not only for current black/white-players
* include/quick/quick_game.php (QuickHandlerGame.prepare, ~.process_cmd),
confirm.php:
- set next but one game-player for multi-player-game for actions:
set-handicap, pass, move
- forbid resign + done-score for multi-player-game
* include/game_functions.php (MultiPlayerGame.calc_game_player_for_move),
include/make_game.php (create_game),
game_players.php (start_multi_player_game):
- bugfix: determine future players correctly handling moves for handicap-games
2010-11-21 juga
* include/gui_functions.php (echo_image_game_players), show_games.php:
- show running and finished multi-player-games for specific user
with special multi-player-game view (mp=1),
restrict data of some columns: Colors, Opponent (use Black-player instead)
- cleanup (security-fixes)
* include/filterlib_gametype.php (class FilterGameType, ~.use_prefix_fieldname,
~.parse_value, ~.get_input_element),
include/filter.php (Filter.init, ~.use_prefix_fieldname):
- added filter for Games.GameType combining selectbox with checkbox-switch
to enable search for multi-player-games
* include/game_functions.php (build_game_type_filter_array):
- added non-standard-Go for game-type-filter
* include/std_functions.php (toggle_observe_list), game.php:
- bugfix: allow observe-toggle for own-game, even without direct action-link for toggling
2010-11-20 juga
* include/message_functions.php (game_settings_form):
- show only Fischer-time for waiting-room simple-game-settings
* gameinfo.php:
- adjusted text for group-start-rating for multi-player-game
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Games.txt:
- removed field Games.MoveCounter using existing Games.Moves instead
* game_players.php (load_game_players, build_table_game_players, build_form_start_game,
check_game_setup, start_multi_player_game, build_start_game_user_row, build_page_title),
include/game_functions.php (MultiPlayerGame.calc_game_player_for_move, ~.load_uid_for_move),
include/make_game.php (create_game):
- added start multi-player-game with pre-checks
- start game after agreeing to start by game-master
- calculate 2nd-next player if standard-handicap set
- update Games.GamePlayers for right playing order Black:White for Team-Go
- show player-to-move in game-players-table as image in Nr-column
- show game-status in page-title
* include/db/games.php (class Games, ~.setGameType, ~.fillEntityData, ~.new_from_row),
include/globals.php,
scripts/sql_game_export.php (export_game),
scripts/admin-export-games_info.php,
scripts/data_export.php:
- added multi-player-fields: GameType, GamePlayers
- added GamePlayers-table where missing
2010-11-17 juga
* game_players.php (update_handicap_komi):
- update Games.Lastchanged on handicap/komi-update
* include/game_functions.php (MultiPlayerGame.determine_groups_player_count,
~.get_game_type),
game_players.php (build_table_game_players, check_game_setup,
build_arr_group_color_texts, buildErrorListString),
skins/dragon/screen.css:
- added pre-start checks with errors and warnings
- show also group-color text in game-players-table
- minor cleanup
2010-11-15 juga
* game_players.php:
- hide 'Change color' for Zen-Go if handicap-edit not enabled
2010-11-14 juga
* include/game_functions.php (parse_waiting_room_rating_range,
append_form_add_waiting_room_game),
include/message_functions.php (game_info_table),
include/error_codes.php (ErrorCode.init),
game_players.php (add_waiting_room_mpgame), new_game.php,
waiting_room.php (determine_color), NEWS:
- waiting-room / new-game: player-rating required (RatingStatus != NONE)
for multi-player-game
- waiting-room: show multi-player-game with manual handicap-type and tooltips
about color-set-by-game-master
* include/game_functions.php (GamePlayer.getGroupColorOrder, ~.get_group_color_order;
parse_waiting_room_rating_range, build_arr_handicap_stones,
build_suggestion_shortinfo, get_colortext_probable),
include/message_functions.php (game_settings_form),
game_players.php (build_game_settings, build_group_rating, calc_group_ratings,
count_group_colors, build_table_game_players, build_form_add_waiting_room,
build_form_change_group, build_form_change_order, change_group_color,
change_group_order, build_tableinfo_handicap_suggestion, update_handicap_komi,
use_handicap_suggestion, get_group_color_game_player_id, reorder_game_players,
_sort_game_players):
- extended change-groups editor to update handicap-settings of multi-player-game
- edit of handicap & komi only allowed if all required game-players joined
- added update for handicap-stones and komi
- added previewing for changing color and handicap-settings
- added handicap-suggestion for conventional and proper handicap for average ratings
- changed 'Change color'-link in bottom-menu if handicap editing is allowed to
'Change color & handicap' for Team-Go and to 'Change handicap' for Zen-Go
- allow changing of color only for Team-Go, forbidden for Zen-Go
- re-order game-players list for previewing and after update without reloading data
- show average-ratings for each group in separate line
- bugfix updating GamePlayers.GroupColor field-name-typo
- bugfix parsing must-be-rated in multi-player waiting-room-game form
- refactored (moved) some funcs to prevent redundant code
* add_to_waitingroom.php:
- bugfix: undo refactoring to set standard-handicap
- bugfix: parse rating-range only for standard-go game-type
* include/quick/quick_game.php (QuickHandlerGame.prepare),
confirm.php, game.php, quick_play.php:
- sync from stable-branch:
- bugfix: throw error on move-actions 'choose_move' & 'domove'
if expecting to set handicap-stones
* game_players.php (build_table_game_players, allow_change_group_order, change_group_order),
include/game_functions.php (MultiPlayerGame.determine_groups_player_count):
- extended change-groups editor to update GamePlayers.GroupOrder for joined users
2010-11-13 juga
* include/game_functions.php (GamePlayer.get_group_color),
game_players.php (build_game_settings, build_group_rating, build_user_flags,
build_user_status, load_game_players, calc_group_ratings, build_table_game_players):
- show average-rating for B/W- and G1/G2-group for multi-player-game in game-settings
- splitted status-column into Flags & Status column
* include/game_functions.php (class GamePlayers, ~.get_group_colors),
game_players.php (build_table_game_players, build_form_change_groups,
add_waiting_room_mpgame, change_group_color),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Games.txt, skins/dragon/screen.css:
- added change-groups editor to update GamePlayers.GroupColor for joined users
- changed order of GamePlayers.GroupColor to favor B/W over G1/G2 over BW (unset)
* include/db/games.php (Games.is_status_running),
include/sgf_builder.php (class SgfBuilder),
scripts/game_consistency.php, scripts/player_consistency.php,
scripts/tests/GameAddTimeTest.php, code_examples/query_sql.php,
code_examples/test_clock_tick.php,
game_comments.php, send_message.php:
- code cleanup to handle Games.Status
* include/std_functions.php (game_reference):
- adjust representation of <game>-tag for multi-player-game-type
- add game-id
- link to game-players-page for multi-player-game on SETUP-game-status
* include/quick/quick_game.php (class QuickHandlerGame),
include/quick/quick_game_info.php (class QuickHandlerGameInfo),
include/quick/quick_game_list.php (class QuickHandlerGameList),
specs/quick_suite.txt, quick_status.php, quick_play.php:
- added game-type for multi-player-game: Go (standard), Team-Go (N:M), Zen-Go
- added game_type for game-object, commands: info, list
- added game_type for quick-status
* include/game_functions.php (class MultiPlayerGame.determine_game_type,
~.determine_player_count, ~.get_game_type, ~.format_game_type,
~.build_game_type_filter_array, ~.delete_game, ~.revoke_offer_game_players,
~.count_game_players, ~.check_count_game_players, ~.init_multi_player_game,
~.join_waitingroom_game;
class GamePlayer, ~.setGroupColor, ~.build_game_player, ~.build_image_group_color;
get_gamesettings_viewmode, parse_waiting_room_rating_range,
append_form_add_waiting_room_game, echo_accept_same_opponent, build_accept_same_opponent_array),
game_players.php (build_game_settings, build_user_status, load_game, load_game_players,
build_table_game_players, build_form_add_waiting_room, add_waiting_room_mpgame),
include/message_functions.php (game_settings_form, game_info_table),
include/error_codes.php (ErrorCode.init),
include/globals.php,
include/gui_functions.php (echo_image_game_players),
include/quick_common.php (set_request_arg),
include/std_functions.php,
include/utilities.php (build_num_range_map),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Games.txt, specs/db/table-Waitingroom.txt,
tournaments/edit_rules.php,
add_to_waitingroom.php, clock_tick.php, confirm.php, daily_cron.php,
game.php (draw_game_info), gameinfo.php, join_waitingroom_game.php,
message.php, new_game.php (add_new_game_form), show_games.php, site_map.php,
status.php, waiting_room.php, skins/dragon/screen.css, NEWS:
- added game-type for multi-player-game:
- Go = standard game-type
- Team-Go (N:M) = two teams of 1..N and 1..M players take a match
- Zen-Go (N) = one group of players with alternating colors
- added multi-player-games:
- new game-type: Team-Go, Zen-Go
- max. 16 players in multi-player-game allowed
- delete-game forbidden for multi-player-game
- added game-players-page to setup and manage multi-player-game
- show joined game-players of multi-player-game
- show game-settings as overview for all game-players
- added place-holder game to setup multi-player-game
- added Games.Status=SETUP
- code cleanup to handle Games.Status
- throw error 'game_not_started' if game on wrong INVITED/SETUP-status to show game-page
- throw error 'invalid_game_status' if game on wrong INVITED/SETUP-status to show page
- add game-offer to waiting-room on reserved slots to invite new players
- delete expired waiting-room-entries
- delete waiting-room entry with GamePlayers-entries
- join waiting-room game-offer for multi-player-game
- added game-type in message to game-offerer
- WaitingRoom.nrGames for multi-player-game = number of requested players
- game-master is allowed to change settings, invite other players
- added multi-player-game info and links to game-players-page
- added more error-codes for joining games from waiting-room
- added class MultiPlayerGame, class GamePlayer to handle multi-player-game
- added simple, expert and multi-player view-mode for different game-settings
- simple view: rudimentary game-settings
- expert view: advanced game-settings like adjust-handicap/komi & more restrictions for waiting-room
- multi-player view: game-settings to start multi-player-game of game-type Team-Go (N:M) or Zen-Go (N)
- code cleanup, refactoring to avoid redundant code (moved funcs),
- optimize found-rows counting manually on status-page
-----------
-- added multi-player-game: Team-Go, Zen-Go
ALTER TABLE Waitingroom
ADD GameType enum('GO','TEAM_GO','ZEN_GO') NOT NULL default 'GO' AFTER Time ;
ALTER TABLE Waitingroom
ADD GamePlayers char(5) NOT NULL default '' AFTER GameType ;
ALTER TABLE Waitingroom
ADD gid int NOT NULL default 0 AFTER uid ;
-- added multi-player-game: Team-Go, Zen-Go
ALTER TABLE Games
ADD GameType enum('GO','TEAM_GO','ZEN_GO') NOT NULL default 'GO' AFTER ToMove_ID ;
ALTER TABLE Games
ADD GamePlayers char(5) NOT NULL default '' AFTER GameType ;
ALTER TABLE Games
MODIFY Status enum('SETUP','INVITED','PLAY','PASS','SCORE','SCORE2','FINISHED') NOT NULL default 'INVITED' ;
-- added multi-player-game: Team-Go, Zen-Go
CREATE TABLE GamePlayers (
ID int NOT NULL auto_increment,
gid int NOT NULL,
GroupColor enum('B','W','G1','G2','BW') NOT NULL default 'BW',
GroupOrder tinyint signed NOT NULL default 0,
uid int NOT NULL default 0,
Flags smallint unsigned NOT NULL default 0,
PRIMARY KEY (ID),
KEY gidGroup (gid,GroupColor,GroupOrder),
KEY uid (uid)
) ENGINE=MyISAM ;
-----------
* include/table_columns.php (Table.make_add_column_form):
- bugfix: show no column selected in select-box to avoid adding column with every filter-search
2010-11-01 juga
* include/quick/quick_game_info.php (class QuickHandlerGameInfo, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.process_cmd_info, ~.convertGameFlags),
include/quick/quick_game_list.php (class QuickHandlerGameList, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.build_game_info),
include/quick/quick_game.php (class QuickHandlerGame, ~.prepare, ~.process),
include/quick/quick_suite.php (class QuickSuite, ~.getQuickHandler),
include/error_codes.php (ErrorCode.init),
specs/quick_suite.txt, NEWS:
- added QuickHandlerGameList with "list"-command for game-object for different views:
- 'status' = status-games for user
- 'running' = running-games for user
- 'finished' = finished-games for user
- 'observing' = games user is observing
- 'observed' = all observed games
- allow "delete" & "resign"-command even if not-to-move just like for web-interface
- return error 'invalid_game_status' if not a running-game
- return error 'not_game_player' if user is not a player of a game
- refactored "info" & "get_notes"-command from QuickHandlerGame into
separate QuickHandlerGameInfo
- added some checks for game-obj "status_score"-command
- minor refactoring
- moved standard-list-command
- renamed matchCommand->matchRegex
- order of checking quick-handlers
* include/quick/quick_handler.php (class QuickObject, ~.initResult;
class QuickHandler, ~.check_list_style, ~.build_obj_user2, ~.add_list,
~.matchRegex, ~.buildObjectArray),
include/quick/quick_contact.php (class QuickHandlerContact),
include/quick/quick_folder.php (class QuickHandlerFolder),
include/quick/quick_message.php (class QuickHandlerMessage),
include/quick/quick_user.php (class QuickHandlerUser),
specs/quick_suite.txt:
- added specs for returning list of objects with list-style parameter (section (2d))
- added standard-list-commands "info" & "list"
- added standard list-style parameter "lstyle" for TABLE|JSON-style list-output
- added standard version into JSON-output as specified in quick-suite-specs (2c)
- renamed method: matchCommand->matchRegex
* include/classlib_game.php (class NextGameOrder, ~.get_next_game_order,
~.load_user_next_game_order),
confirm.php, status.php:
- added method to load Players.NextGameOrder for user
- minor refactoring for NextGameOrder-handling (consts, if->switch)
* include/error_functions.php (DgsErrors.add_error),
include/quick_common.php (isRunningGame),
include/globals.php:
- added standard version into JSON-output as specified in quick-suite-specs (2c)
- method to check for running game-status
* specs/db/table-Messages.txt:
- adjusted docu for obsoleted types 'ACCEPTED, DECLINED, DELETED'
* include/classlib_user.php (User.load_user):
- minor change and safety-check
2010-10-25 juga
* include/quick/quick_contact.php (class QuickHandlerContact, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.process_cmd_list, ~.build_obj_contact,
~.build_obj_contact_user),
include/quick/quick_folder.php (class QuickHandlerFolder, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.process_cmd_list, ~.build_obj_folder),
include/quick/quick_game.php (class QuickHandlerGame, ~.parseURL, ~.prepare,
include/quick/quick_handler.php (class QuickHandler, ~.is_with_option,
~.build_obj_user, ~.add_list),
include/quick/quick_message.php (class QuickHandlerMessage, ~.prepare,
~.process_cmd_info, ~.load_folder,,
include/quick/quick_suite.php (class QuickSuite, ~.getQuickHandler),
include/quick/quick_user.php (QuickHandlerUser.process_cmd_info),
include/contacts.php (class Contact, ~.build_querysql_contact, ~.load_contact,
~.load_quick_contacts, ~.format_system_flags, ~.format_user_flags,
~.getContactUserFlags, ~.getContactSystemFlags),
include/classlib_userconfig.php (ConfigPages.get_status_folder_visibility),
include/classlib_user.php (User.load_quick_userinfo),
specs/quick_suite.txt, list_contacts.php, NEWS:
- added folder-quick-suite (3d) to retrieve list of folders with list-command
- added contact-quick-suite (3e) to retrieve list of contacts with list-command
- added WITH-option to support deep-loading of some nested objects
- added result-list-handling with standard result-list-fields: list_object|size|offset|limit|order|result
- adjusted game-quick-suite:
- added WITH-option to support nested user-objects for info-command
- renamed ctx-option -> move_id-option
- changed result-format for info-command to support nested objects/info for black/white user/gameinfo
- added get_notes-command to retrieve private notes of game
- added TODOs for game-play-commands / detele&resign-command
- adjusted user-quick-suite:
- added field 'picture' for info-command
- adjusted message-quick-suite:
- added WITH-option to support nested user-/folder-objects for info-command
- added field 'needs_reply' for info-command
- changed result-format for info-command to support nested objects/info for user_from/to and folder
2010-10-17 juga
* quick_status.php:
- changed prefix for header-lines: # -> ##
* specs/quick_suite.txt:
- extended documentation with
- supporting tools (sgf.php, quick_status.php, quick_play.php, RSS/WAP-feed)
- purpose/errors for objects-commands
- formats-section for: date, time-limits, remaining-time
- logout, HTTP-output
- allow SGF-coordinates without comma-separator
* include/message_functions.php (get_folders),
include/quick/quick_suite.php (class QuickSuite),
include/quick/quick_handler.php,
include/quick/quick_message.php,
specs/quick_suite.txt (3c), NEWS:
- added message-quick-suite to retrieve information about a private message
with folder-info
2010-10-16 juga
* include/quick/quick_game.php (class QuickHandlerGame, ~.prepare, ~.process,
~.process_cmd_play, ~.process_cmd_info, ~.convertGameFlags),
specs/quick_suite.txt, NEWS:
- added command "info" to retrieve game-info as specifid in specs/quick_suite.txt (3a)
* tournaments/game_admin.php (draw_add_time), status.php:
- bugfix: using correct Clock.Ticks for time-remaining calculation for user
* quick_status.php:
- use standard-time-format also writing secs: "YYYY-MM-DD hh:mm:ss[ ZZZ]"
- cleanup: refactored time-remaining calculation using build_time_remaining-method
- minor (renamed my_id -> player_id)
* include/quick/quick_handler.php (QuickHandler.formatDate),
include/quick/quick_user.php (QuickHandlerUser.process),
include/rating.php (echo_rating_elo),
include/quick_common.php,
specs/quick_suite.txt:
- added standard date-formats for quick-suite including secs
- added convenience-method for quick-suite to format-date and format-rating-elo
* quick_do.php:
- return JSON-result with HTTP-Content-Type 'application/json',
and as 'text/plain' if argument 'test' given
* include/std_functions.php (score2text),
include/globals.php:
- moved board-array constants from include/std_functions.php to include/globals.php
- adjusted score2text()-method for quick-suite returning shorter score-text
* NEWS:
- game/user-handler for quick-suite, quick-status, SGF-download
* include/quick/quick_user.php (class QuickHandlerUser, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.convertUserType),
include/quick/quick_handler.php (class QuickHandler, ~.addResultKey),
include/quick/quick_suite.php (class QuickSuite, ~.getQuickHandler),
include/time_functions.php (class TimeFormat, ~.echo_onvacation, ~._replace_space),
include/classlib_user.php (User.build_query_sql),
include/rating.php (echo_rating),
specs/quick_suite.txt (3b):
- added user-quick-suite to retrieve public information about a user
* quick_status.php:
- added game-status PLAY|PASS|SCORE|SCORE2 to quick-status
- used tighter format (removed unnecessary spaces and quotes)
2010-10-03 juga
* quick_status.php:
- added header lines with format for message- and game-info-lines
* include/sgf_builder.php (class SgfBuilder, ~.build_sgf_start):
- added move_id (=Games.Moves) as private SGF-property XM[move_id]
* specs/quick_suite.txt:
- sync'ed with forum-discussion, added more details
- ctx -> move_id
- specs for game scoring-step status_score|score commands
- sgf.php parameters
* tournaments/include/tournament_helper.php (TournamentHelper.create_game_from_tournament_rules):
- bugfix: remove this-reference
2010-08-30 juga
* forum/forum_functions.php (class DisplayForum.forum_message_box, ~.draw_post),
forum/post.php (post_message), include/quick_common.php,
admin_users.php (update_user), admin_show_users.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt, specs/forums.txt:
- replaced Players.MayPostOnForum with user admin-options
- show forum-posts denied/moderated on page with administrated users
- ADMOPT_FORUM_NO_POST = deny new and edit of forum posts
- ADMOPT_FORUM_MOD_POST = moderate all new & edited forum posts
- don't show guest-user on administrated-users-page
-----------
-- replaced Players.MayPostOnForum with user admin-options
UPDATE Players
SET AdminOptions = AdminOptions | 0x4000 WHERE MayPostOnForum='M' ;
UPDATE Players
SET AdminOptions = AdminOptions | 0x2000 WHERE MayPostOnForum='N' ;
ALTER TABLE Players
DROP COLUMN MayPostOnForum ;
-----------
2010-08-29 juga
* admin_password.php:
- clean up of texts mentioning policy for showing user-email
* send_message.php:
- user with admin-level ADMIN_DEVELOPER can send-message
even if recipient has contacts-system-flag REJECT_MESSAGE
* forum/post.php (post_message), forum/forum_functions.php,
forum/admin_show_forumlog.php:
- added filter-option for new-threads
2010-08-01 juga
* include/std_functions.php (end_page),
include/quick_common.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
admin_show_users.php, admin_users.php, NEWS:
- show page created time for everyone in bottom bar,
removed Players.AdminOptions ADMOPT_SHOW_TIME
-----------
-- removed admin-option show-time (always showed now)
UPDATE Players
SET AdminOptions=AdminOptions & ~0x40 WHERE AdminOptions > 0 ;
-----------
* include/quick/quick_game.php (class QuickGame, ~.prepare, ~.process),
include/move.php (check_move):
- fix quick-game-handling: setting of handicap-stones and normal game-moving
2010-07-25 juga
* include/quick/quick_game.php (QuickGame.prepare, ~.process):
- adjust all error-labels
2010-07-19 juga
* include/quick/quick_game.php (class QuickGameHandler, ~.canHandle,
~.parseURL, ~.prepare, ~.process, ~.prepareMoves, ~.update_clock),
include/quick/quick_handler.php (class QuickObject;
class QuickHandler, ~.canHandle, ~.parseURL, ~.prepare, ~.matchCommand, ~.checkArgMandatory),
include/quick/quick_suite.php (QuickSuite.getQuickHandler),
include/board.php (Board.add_handicap_stones),
quick_do.php:
- started game-quick-handler with actions (copied from confirm.php):
delete, set-handicap, play move, pass-move, resign, scoring-mode
* confirm.php, game.php:
- bugfix: determine score-mode from Games.Ruleset
- check for ALLOW_TOURNAMENTS
2010-07-08 juga
* include/std_functions.php, NEWS:
- added markup-tag: <strike>text</strike> to strike out text
2010-07-05 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/ChangeLog:
- removed/adjusted DDL-changes from ChangeLog and scripts/updates/
for reverted field-precisions:
- Games.Black/White_Start/End_Rating
- Players.Rating,Rating2,RatingMin/Max,InitialRating
- Ratinglog.Rating,Ratingmin/max
- TournamentParticipant.Rating
2010-07-04 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Games.txt:
- revert double->float changes to original after realizing that it precision
has been lost for fields:
- Games.Black/White_Start/End_Rating
- Players.Rating,Rating2,RatingMin/Max,InitialRating
- Ratinglog.Rating,Ratingmin/max
- TournamentParticipant.Rating
- removed/adjusted DDL-changes from ChangeLog and scripts/updates/
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
specs/db/table-Waitingroom.txt, specs/db/table-Tournaments.txt:
- optimizing field-sizes for rating-fields requiring only int-precision
-----------
-- [field-size] COL TournamentProperties.UserMinRating : double -> float -> smallint
-- [field-size] COL TournamentProperties.UserMaxRating : double -> float -> smallint
ALTER TABLE TournamentProperties
MODIFY UserMinRating smallint NOT NULL default '-9999',
MODIFY UserMaxRating smallint NOT NULL default '-9999' ;
-- [field-size] COL Waitingroom.Ratingmin : double -> float -> smallint
-- [field-size] COL Waitingroom.Ratingmax : double -> float -> smallint
ALTER TABLE Waitingroom
MODIFY Ratingmin smallint NOT NULL default '-9999',
MODIFY Ratingmax smallint NOT NULL default '-9999' ;
-----------
* scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- added tournament-cron-entry to add for live-DGS
2010-06-27 juga
* quick_status.php:
- added Games.Moves to quick-status as context for quick-game-suite
* include/quick/quick_handler.php (class QuickObject, ~.setArg, ~.getArg;
class QuickHandler, ~.getArg, ~.getResult, ~.checkCommand, ~.checkArgMandatory,
~.parse, ~.check, ~.prepare, ~.process),
include/quick/quick_suite.php (class QuickSuite, ~.getQuickHandler),
scripts/update_translation_pages.php,
quick_do.php:
- added extendable quick-suite framework as specified in 'specs/quick_suite.txt'
as new alternative interface to various DGS-functions
* include/error_functions.php (class DgsErrors, ~.set_mode, ~.add_error):
- added ERROR_MODE_QUICK_SUITE to output errors in JSON-format
* include/std_functions.php (who_is_logged, is_logged_in):
- adjusted login to be used for quick-suite:
- added options for login-check for use in quick-suite
- allow to skip update on player-activity
- allow to skip reset of email-notify on login-check
- avoid jumping to other pages for quick-suite login-option,
returning error instead
- check for fever-fault-error for quick-suite
- avoid IP- and browser-update for quick-suite usage
- update Players.Lastaccess only for web-login
- update Players.LastQuickAccess only for quick-suite login
- avoid checking for new features and new messages as long as they are not
made available via the quick-suite
- load Players.LastQuickAccess as X_LastQuickAccess on login
- minor text-adjustment for fever-vault
* include/error_codes.php (ErrorCode.init):
- added error-codes for quick-suite:
server_down, bad_host, fever_vault, invalid_coord, invalid_command
* include/json_pear.php (class Services_JSON),
include/quick_common.php (dgs_json_encode):
- added external JSON-library
- some servers still need PHP4 and can't rely on PHP5-embedded JSON feature
- used Pear-JSON because very stable, "forgiving" parser and fast for encoding,
see http://gggeek.altervista.org/sw/article_20061113.html
- added wrapper-function dgs_json_encode() to stay independent from JSON-encoder
* userinfo.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added Players.LastQuickAccess for quick-suite usage
- showed in user-info for admins
-----------
-- added Players.LastQuickAccess for quick-suite usage
ALTER TABLE Players
ADD LastQuickAccess datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER Lastaccess ;
UPDATE Players
SET LastQuickAccess = Registerdate ;
-----------
* include/db/ratinglog.php (class Ratinglog, ~.to_string, ~.persist, ~.insert,
~.update, ~.delete, ~.fillEntityData, ~.build_query_sql, ~.new_from_row,
~.load_ratinglog_with_query, ~.load_ratinglogs),
include/rating.php (change_rating, update_rating2),
include/connect2mysql.php,
game_calc.php:
- sync from stable-branch:
- added script game_calc.php for showing rating-calculations of finished game,
more for debugging, so not included on site-map, also see
http://www.dragongoserver.net/forum/read.php?forum=4&thread=28053#28062
- show debug-output in change_rating() and update_rating2() used for game_calc
on set DBG_RATING
* confirm.php:
- removed redundant login-check
* show_games.php:
- check for ALLOW_TOURNAMENTS on showing tournaments-info in games-list
* scripts/data_export.php,
specs/db/dragon-ddl.sql:
- sync with db
2010-06-12 juga
* specs/quick_suite.txt:
- specs for new quick-suite for playing game with alternative interface
2010-06-06 juga
* include/board.php (Board.draw_board):
- added CSS-id 'lastMove' for last-move-image to support removing
last-move-marker via JavaScript/Greasemonkey
* game.php:
- fix bug for AUTO_COMMENT-tags for sensei-account:
add "<c></c>"-tags for all actions needing validation step on game-page
- added action-comments
2010-05-22 juga
* tournaments/include/tournament_participant.php (class TournamentParticipant,
~.to_string, ~.fillEntityData, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added field TournamentParticipant.NextRound for start/next-round handling
for tournament-participants
-----------
-- added field for start/next-round handling for tournament-participant
ALTER TABLE TournamentParticipant
ADD NextRound tinyint unsigned NOT NULL DEFAULT '0' AFTER StartRound ;
-----------
* tournaments/edit_participant.php (send_register_notification):
- added clearer message and tournament-registration-edit-link
for user-verification-message
* tournaments/list_tournaments.php:
- added substring-filter on Tournament-title
* tournaments/roundrobin/view_pools.php (build_pool_notes):
- added Point-values for game won/lost/jigo for pool-notes
2010-05-21 juga
* tournaments/include/tournament_pool_classes.php (PoolTables.fill_games;
PoolViewer.make_pool_table),
tournaments/include/tournament_pool.php (class TournamentPool),
tournaments/roundrobin/view_pools.php (build_pool_notes):
- added number of losses in #Wins-column in format "wins:losses"
* tournaments/include/tournament_pool.php (TournamentPool.echoRankImage,
~.load_tournament_pool_user, ~.update_tournament_pool_ranks, ~.execute_rank_action,
tournaments/include/tournament_pool_classes.php (class PoolViewer,
~.init_table, ~.make_pool_table),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/edit_ranks.php,
tournaments/roundrobin/view_pools.php (pool_user_edit_rank, build_pool_notes),
skins/dragon/screen.css:
- added rank-edit for single pool-user
- for rank-editor:
- don't show bulk-rank-edit for single-user rank-edit
- hide single-rank-edit on fill-ranks action
- changed view-pool link to open pool-view in edit-mode
- for pool-view:
- added edit-mode showing edit-link to edit-ranks-page for user-rank-edit
- forbid edit-mode for normal viewers
- adjusted pool-notes: clearer matrix description
- renamed const and texts for unsetting rank: RKACT_RESET_RANKS -> RKACT_REMOVE_RANKS
* tournaments/include/tournament_pool.php (TournamentPool.execute_rank_action),
tournaments/include/tournament_pool_classes.php (RankSummary.get_ranks),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/edit_ranks.php:
- added rank-actions to bulk-update TournamentPool.Rank on pool-users for tournament-round
- set next-round-flag Rank>0
- clear next-round-flag Rank<0
- clear rank Rank=0
- reset rank Rank=-100 to allow filling ranks anew
* include/form_functions.php (Form.print_insert_select_box, ~.print_insert_radio_buttonsx):
- bugfix: fix '' <=> 0 comparison for item-selections on selectbox and checkbox
* tournaments/include/tournament_pool_classes.php (class RankSummary,
~.build_notes, ~.make_table_rank_summary, ~._compare_ranks),
tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_ranks),
tournaments/roundrobin/edit_ranks.php:
- added rank-statistics showing rank-counts over all pools for current tournament-round
* tournaments/roundrobin/view_pools.php (build_pool_notes):
- added players-count to round-summary
- adjusted notes about currently used tie-breakers
2010-05-20 juga
* include/std_functions.php (add_link_page_link), docs.php, site_map.php:
- added link to web-statistics http://www.dragongoserver.net/stat/ if on live-server
* tournaments/include/tournament_pool_classes.php (class PoolRankCalculator, ~.get_tiebreaker,
~.calc_ranks, ~.build_same_ranks_groups, ~.build_user_ranks, ~.build_value_rank_map;
PoolTables.fill_games, ~._compare_user_ranks;
PoolViewer.init_table, ~.make_pool_table),
tournaments/include/tournament_pool.php (class TournamentPool, ~.get_cmp_rank,
~.formatRank, ~.build_query_sql, ~.count_tournament_pool_users,
~.update_tournament_pool_ranks),
tournaments/include/tournament_games.php (class TournamentGames, ~.fillEntityData,
~.new_from_row, ~.load_tournament_games, ~.count_tournament_games),
tournaments/include/tournament_helper.php (TournamentHelper.start_tournament_round_games,
~.create_pairing_game, ~.fill_ranks_tournament_pool),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/edit_ranks.php,
tournaments/roundrobin/view_pools.php (build_pool_notes),
tournaments/ladder/view.php,
tournaments/cron_tournaments.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
skins/dragon/screen.css:
- pool-rank-editor: added action to fill ranks for all finished pools
- finish tournament-pools by setting rank for users in pools for which all games have ended
- added field TournamentGames.Pool for pool-resulting
- identify pools to finish, calculate and update ranks for pool-users
- added rank and calculated-rank in pool-view in format "Rank (calc-rank)"
- added class PoolRankCalculator to calculate rank of pool-users
and applying tie-breakers if needed
- use static tie-breakers for now: Points, SODOS
- replaced Points-"sorter" with Rank-"sorter" generated with more generalized
PoolRankCalculator by separating rank-calculation and pool-view-order,
the latter additionally ordered by uid on final ties for pool-view
- set calculated-rank in TournamentPool->CalcRank
- added unused implementation of tie-breaker: Wins (number of wins)
- cleanup: removed unused function get_score_direct_comparison(),
because not iterative Direct-Comparison
- changes for pool-view:
- added rank and calculated-rank in pool-view in format "Rank (calc-rank)"
- show calculated-rank in pool-view with normal font
- added notes about tournament-pools with legend about pool-table-matrix
- used different translation-texts for pool-table-headers
-----------
-- added TournamentGames.Pool for pool-resulting
ALTER TABLE TournamentGames
ADD Pool smallint unsigned NOT NULL DEFAULT '0' AFTER Round_ID,
DROP INDEX tidRound,
ADD INDEX tidRoundPool (tid,Round_ID,Pool) ;
-----------
* include/gui_functions.php (echo_notes):
- added html-safe argument to echo_notes()-func
* tournaments/include/tournament_template_ladder.php,
tournaments/include/tournament_extension.php,
include/classlib_game.php, include/classlib_goban.php,
include/classlib_userpicture.php, include/faq_functions.php,
include/form_functions.php, include/goban_handler_gfx.php,
include/goban_handler_sl.php, confirm.php:
- fix: added missing TranslateGroups[] for pages with translated text T_(..)
- fix: removed TranslateGroups[] for pages without translated text T_(..)
- fixed translation-group: Game -> Goban for goban-handlers
2010-05-19 juga
* tournaments/include/tournament_pool.php (TournamentPool.get_edit_ranks_tournament_status),
tournaments/manage_tournament.php,
tournaments/roundrobin/edit_ranks.php,
tournaments/roundrobin/view_pools.php:
- started Tournament-Pool-Ranks-editor
* tournaments/include/tournament_pool.php (class TournamentPool, ~.formatRank),
tournaments/include/tournament_globals.php:
- renamed/added consts for TournamentPool.Rank
2010-05-18 juga
* tournaments/include/tournament_pool_classes.php (PoolGame.get_score, ~.calc_result;
PoolTables._compare_user_points, ~.get_score_direct_comparison;
PoolViewer.init_table, ~.make_pool_table),
include/utilities.php (cmp_int):
- added Tie-breaker SODOS to sort users in pool
- added (commented) Tie-breaker DirectComparison to sort users in pool
- refactored integer-comparison-func into 'utilities.php'
* tournaments/include/tournament_pool.php (class TournamentPool, ~.formatRank,
~.echoRankImage, ~.fillEntityData, ~.new_from_row),
tournaments/include/tournament_globals.php,
include/gui_functions.php (echo_image_tourney_next_round),
tournaments/roundrobin/view_pools.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
skins/dragon/screen.css:
- added TournamentPool.Rank to store users place (=rank) within pool
- added Rank and NextRound-flag showing next-round-image in pool-view tables
-----------
-- added Rank to store users place within tournament-pool
ALTER TABLE TournamentPool
ADD Rank tinyint NOT NULL DEFAULT '-100',
ADD INDEX Rank (Rank) ;
-----------
* tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_PAIR):
- limited error-output for REGISTER->PAIR status-change to some users, but checking all
* tournaments/include/tournament_pool_classes.php (PoolTables.fill_games,
~.init_table, ~.make_pool_table),
tournaments/include/tournament_pool.php (class TournamentPool):
- added info to pool-view:
- #Wins = number of wins
- SODOS = sum of defeated opponents score (points of loser, 1/2 point of opponent for jigo)
* tournaments/include/tournament_round.php:
- show more round-info: round-no + pool-count
2010-05-17 juga
* tournaments/list_tournaments.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
skins/dragon/screen.css:
- added table-columns to show board-size with filter, rated, ruleset,
time-limit and max-participants as tournament-size from TournamentRules-table
-----------
-- added size-field and filter on tournament-list
ALTER TABLE TournamentRules
ADD INDEX Size (Size) ;
-----------
* tournaments/include/tournament_pool_classes.php (PoolGame.calc_result;
PoolTables.fill_games, ~._compare_user_points;
PoolViewer.make_pool_table),
tournaments/include/tournament_pool.php (class TournamentPool),
skins/dragon/screen.css:
- show ended-game results in pool-view: won=green, lost=redish, jigo=blueish
- sort users in pools by user-points received for game-score
* tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_game_end,
~.process_tournament_ladder_game_end, ~.process_tournament_round_robin_game_end):
- process tournament-game-end for round-robin-tournaments
* tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_end,
~.update_tournament_game_wait):
- bugfix: corrected invalid SQL-update-query after former cleanup, remove ','
* tournaments/manage_tournament.php (make_links_ttype_specific):
- added PLAY-phase admin-links: view pools, show tourney-games, admin T-game
* include/std_functions.php (echo_dragon_top_bar),
include/globals.php, skins/dragon/screen.css:
- remind user of being mighty tournament-admin in DGS-top-bar
- remind user of site being in maintenance-mode
* tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_PLAY),
tournaments/include/tournament_games.php (TournamentGames.count_tournament_games,
~.count_games_started),
tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool_games),
tournaments/include/tournament_template.php (TournamentTemplate.checkGamesStarted),
tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.checkGamesStarted),
tournaments/include/tournament_template_round_robin.php (
TournamentTemplateRoundRobin.checkParticipantRegistrations, ~.checkGamesStarted):
- count games/tournament-games for consistency-check on tournament-status-change PAIR->PLAY,
check that all games have been started for current tourney-round of round-robin-tourney
* tournaments/include/tournament_round_status.php (TournamentRoundStatus.check_conditions_status_PLAY):
- allow Tournament-Round-Status change PAIR->PLAY only for admin
* include/classlib_user.php, include/make_game.php, include/rating.php,
tournaments/edit_participant.php, tournaments/register.php,
tournaments/include/tournament_ladder_props.php,
tournaments/include/tournament_participant.php,
tournaments/include/tournament_utils.php,
add_to_waitingroom.php:
- replaced const -OUT_OF_RATING -> NO_RATING
unless negative-const clearer for understanding
* include/cache_clock.php (class ClockCache, ~.load_clock_ticks),
include/classlib_game.php (NextGameOrder.make_timeout_date),
include/make_game.php (create_game),
include/time_functions.php (get_clock_ticks, time_left_ticksdate),
tournaments/include/tournament_cache.php (class TournamentCache, ~.load_clock_ticks):
- optimization: cache Clocks.Ticks for starting all tournament-pool-games,
Clock-ticks loaded three times per game
* tournaments/include/tournament_pool_classes.php (PoolTables.calc_pool_summary, ~.calc_pool_games_count; PollSummary.get_counts),
tournaments/include/tournament_pool.php (TournamentPool.load_tournament_pools, ~.check_pools),
tournaments/include/tournament_helper.php (TournamentHelper.start_tournament_round_games),
tournaments/roundrobin/edit_pairing.php:
- bugfix #2 for creating pair-games for round-robin-tourneys:
replaced wrong TournamentPool.ID in TPool->User->urow with correct Players.ID for uid
- bugfix: changed Tourney-Round status only if expected number of games have been started
- added notes about creation-process and ok/error-result after performing creation-process
- refactored setup of pool-summary to calculate all expected pool-games in PoolTables-class
- refactored counting of pools/users/games into poolSummary-class
* tournaments/include/tournament_pool_classes.php (class PoolTables):
- bugfix: replaced range(1,0) with normal for-loop
* tournaments/include/tournament_utils.php (TournamentUtils.calc_pool_count),
tournaments/roundrobin/define_pools.php (calc_suggestion):
- bugfix: handle division-by-zero on pool-values
* tournaments/roundrobin/edit_pools.php:
- don't allow editing for T-admin
* tournaments/include/tournament_games.php (TournamentGames.getScoreForUser),
include/std_functions.php (score2text), gameinfo.php:
- fixed long tourney-titles by wrapping it
- fixed unknown tourney-score: -OUT_OF_RATING (bad const for score) -> null (unknown score)
* game.php (draw_game_info):
- fixed tourney-info replacing title with tourney-ID + status
2010-05-16 juga
* tournaments/include/tournament_pool_classes.php (class PoolGame, ~.get_opponent;
class PoolTables.get_user_col_map, ~.fill_games, ~.count_games;
class PoolViewer.make_pool_table),
tournaments/roundrobin/view_pools.php:
- view pools:
- added links to started games in pool-cross-tables
- added round-summary with games-count for tournament-round
- minor cleanup (checks, optimization)
- bugfix in PoolGame-constructor for Score-attribute
* tournaments/include/tournament_pool.php (class TournamentPool, ~.load_tournament_pools):
- bugfix for creating pair-games for round-robin-tourneys: replaced wrong
TournamentPool.ID in TPool->User->urow with correct Players.ID for uid
- bugfix: setting TPool.User-attribute in constructor
- cleanup: removed unused const TPOOL_LOADOPT_TP_RID,
removed double query-part Players.Country
* tournaments/include/tournament_games.php (TournamentGames.load_tournament_games),
tournaments/cron_tournaments.php,
tournaments/ladder/view.php:
- added round-id in signature of TournamentGames::load_tournament_games()
* tournaments/roundrobin/edit_pairing.php:
- added HOT-section around staring tournament-round games
2010-05-15 juga
* scripts/admin-export-games_info.php, NEWS:
- added admin-script to perform export of info for all finished games
* include/std_functions.php (echo_dragon_top_bar), bookmark.php:
- added system-bookmark link to edit vacation
* people.php:
- removed "FAQ-maintainer", only use role as "FAQ-editor"
* include/config.php, game.php, NEWS:
- sync from stable-branch; (experimental for sensei-account on live-DGS):
added AUTO_COMMENT_UID-config with Players.ID
for which to add "<c></c>"-tags on new game-message
* confirm.php:
- empty game-message if only containing empty <c>-tags
2010-04-17 juga
* scripts/admin-sgf-bulk.php (create_dir), NEWS:
- added admin-script to perform a SGF-bulk-download of certain games
* include/sgf_builder.php (class SgfBuilder, ~.echo_sgf, ~.sgf_echo_prop,
~.sgf_echo_comment, ~.sgf_echo_point, ~.load_trimmed_moves,
~.build_sgf_start, ~.build_sgf_moves, ~.build_sgf_result, ~.build_sgf_end),
sgf.php:
- introduced way to output SGF into buffer instead of printing it directly
- bugfix: don't seek to first row if there are no rows to avoid mysql-warning
* include/sgf_builder.php (class SgfBuilder, ~.sgf_echo_prop, ~.sgf_echo_comment,
~.sgf_echo_point, ~.mark_territory, ~.sgf_create_territories, ~.load_game_info,
~.load_player_game_notes, ~.load_trimmed_moves, ~.build_filename_sgf,
~.build_sgf, ~.build_sgf_start, ~.build_sgf_moves, ~.build_sgf_result,
~.build_sgf_end, ~.sgf_simpletext, ~.switch_move_color, ~.sgf_count_string,
~.sgf_echo_rating, ~.sgf_get_ruleset)
sgf.php, NEWS:
- refactored building of SGF into SgfBuilder-class in 'include/sgf_builder.php'
- added URL-arg 'inline' to use "inline"-typed Content-Disposition HTTP-header
for direct start of browser-application when downloading SGF
- moved redundant code setting up reverse_htmlentities_table into quick_common.php
* include/quick_common.php (reverse_htmlentities),
halfhourly_cron.php, rss/status.php, wap/status.php:
- moved redundant code setting up reverse_htmlentities_table into quick_common.php
* sgf.php, NEWS:
- enhanced URL-arg 'owned_comments' with value 'N' to omit all comments and notes
- added URL-arg 'bulk' using different filename for bulk-download (for admin)
* links.php:
- removed invalid links
2010-04-16 juga
* tournaments/include/tournament_helper.php (TournamentHelper.create_game_from_tournament_rules,
~.start_tournament_round_games, ~.create_pairing_game),
tournaments/include/tournament_pool.php (class TournamentPool, ~.fillEntityData,
~.new_from_row, ~.load_tournament_pools, ~.seed_pools, ~.check_pools),
tournaments/include/tournament_pool_classes.php (PoolTables.get_user_tournament_pool,
~.get_pool_users; class PoolSummary, ~.make_table_pool_summary),
tournaments/include/tournament_games.php (class TournamentGames, ~.fillEntityData,
~.new_from_row, ~.count_tournament_games),
tournaments/include/tournament_rules.php (TournamentRules.create_game),
tournaments/include/tournament_globals.php,
include/classlib_user.php (User.new_from_row),
tournaments/roundrobin/create_pools.php,
tournaments/roundrobin/define_pools.php,
tournaments/roundrobin/edit_pairing.php,
tournaments/roundrobin/edit_pools.php (echo_pool_summary),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
skins/dragon/screen.css, NEWS:
- start all tournament-games for all pools of current tournament-round-robin-tourney
- load TournamentPool-entries along with user/tournament-participant-rating
and time-related data needed for creating-game
- starting games is only allowed on PAIR-tournament-round-status
- lock creation with TournamentExtension (id=2) to prevent executing it twice
at the same time
- print progress while starting games as this can be thousands of games
- tournament-status will be updated to PLAY-status after successful
game-creation for all pools
- refactored game-creation for tournament-ladder to support starting games for
tournament-round-robin as well preparing users before TournamentRule.create_game()-func
- added and enhanced pool-summary for round-robin-tourneys
- showing pool-summary with amount of users and games to create for all pools
using refactored PoolSummary-class calculate pool-counts with number of games
per pool and users per pool with total sums as pool-summary
- creating, defining and editing pools is only allowed on POOL-tournament-round-status
- added TournamentGames.Round_ID needed for round-robin-pooled tournaments
- remove field TournamentPool.GamesRun, which can be calculated
- removed round-URL-arg by using current Tournament.CurrentRound instead,
which allows easier checks for T-Admins and TDs alike
- disabled submit-buttons if creating pools is not allowed
because of error or wrong round-status
- minor cleanup also returning pool-summary while checking pools
-----------
-- added TournamentRound.ID for round-robin tournaments
ALTER TABLE TournamentGames
ADD Round_ID int NOT NULL default '0' AFTER tid,
DROP INDEX tid,
ADD INDEX tidRound (tid,Round_ID) ;
-- remove calculated field
ALTER TABLE TournamentPool
DROP COLUMN GamesRun ;
-----------
* include/std_functions.php (echo_message):
- added func to print string along with flushing output-buffers
* tournaments/include/tournament_extension.php (TournamentExtension.new_from_row):
- bugfix loading DateValue-field using UNIX_TIMESTAMP()-func
* tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPooling),
tournaments/roundrobin/edit_pools.php (echo_pool_summary):
- showing extended pool-summary with amount of users and games to create for all pools
- refactored pool-summary for round-robin-tourneys from editing pools
into PoolSummary-class
* tournaments/include/tournament_round_status.php (class TournamentRoundStatus.
~.check_action_status, ~.check_edit_status):
- cleanup: allow to pass in TournamentRound-object to save loading of round twice
- checks if tournament-round-status allows certain actions,
use same checks as for TournamentStatus
2010-04-11 juga
* tournaments/include/tournament_pool.php (load_tournament_participants_with_pools, check_pools),
tournaments/roundrobin/edit_pairing.php,
tournaments/roundrobin/edit_pools.php:
- started edit-game-pairing editor:
- added games-count for each pool into summary-array
- enhanced pool-load-functions to load only T-pools (without TournamentParticipants)
* tournaments/manage_tournament.php (make_links_ttype_specific):
- added link to View-Pools
- added link to (new) Edit-game-pairing-editor
2010-04-10 juga
* tournaments/roundrobin/define_pools.php (stripLF, calc_suggestion,
make_suggestions_table, compare_pool_parameters, compare_suggestions),
skins/dragon/screen.css:
- pool-definition-editor suggestions-table:
- bugfix handling TD-choice with user-diffs larger than pool-size,
chosen pool-size may be adjusted to find best-pool-distribution for TD-choice
- try to find best suggestion by ordering suggestions by:
min. user-diff, slice-ratio, pool-size
- changed data shown for suggestions:
replaced former values with user-capacity, user-diff, best-pool-distribution
- mark current TD-choice by CSS and in suggestion-note, use table-borders
- added ordering of suggestions by pool-size+count or best pool distribution
- remove double-entries, sort TD-choice into normal suggestions
- show add/del-pools only if pool-count saved already or specified by TD
* include/utilities.php (concat_str):
- added function to concat two strings with separator
2010-04-09 juga
* include/std_functions.php (end_page, make_menu),
tournaments/roundrobin/edit_pools.php:
- use max. 6 bottom-links per line for pool-editor
2010-04-07 juga
* tournaments/include/tournament_pool.php (TournamentPool.seed_pools, ~.add_missing_registered_users),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/create_pools.php, NEWS:
- create-pools: add missing registered users to pool #0 for manual pool-assignment
- allow seeding pools only if all pools are empty, because re-seeding overwrites
all orders anyway, so enforce deletion or use adding missed users functionality
- allow deleting all pools only if there is at least one pool
- cleanup: simplified func-signature: Tournament-object -> tid
* tournaments/include/tournament_pool_classes.php (PoolViewer.make_pool_table):
- show '-' in unused crosstable-column for pool with less users than ideal size
* tournaments/include/tournament_pool.php (TournamentPool.check_pools):
- remove (bad) user- and pool-lists from pool-check errors,
could be too much in certain situations
* tournaments/include/tournament_pool.php (TournamentPool.check_pools),
tournaments/roundrobin/edit_pools.php (echo_pool_summary),
skins/dragon/screen.css:
- pool-editor: added pool-summary including pool-specific errors
for checking pool-integrity
2010-04-06 juga
* tournaments/include/tournament_pool.php (TournamentPool.count_tournament_pool,
~.load_tournament_pool_bad_user, ~.load_tournament_participants_with_pools,
~.seed_pools,
tournaments/include/tournament_pool_classes.php (PoolTables.fill_pools, ~.calc_pool_summary),
tournaments/include/tournament_round_status.php (TournamentRoundStatus.check_conditions_status_POOL),
tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.checkPooling),
tournaments/include/tournament_template.php (TournamentTemplate.checkPooling),
tournaments/roundrobin/edit_pools.php:
- added pool-integrity checking for transition from POOL to PAIR round-status
and for pool-editor:
- check that uids are distinct in all pools
- check that there are some pools
- check that count of pools matches the expected TRound.Pools-count
- check that all registered users joined somewhere in the pools
- check that there are no unassigned users (with Pool=0)
- check that the user-count of each pool is in valid range of min/max-pool-size
- check that there are no empty pools
- bugfix in seed_pools fixing loading existing tournament-pools: missed argument
* tournaments/include/tournament_round_status.php (TournamentRoundStatus.check_conditions_status_POOL,
~.check_conditions_status_PAIR, ~.check_conditions_status_PLAY,
~.check_conditions_status_DONE, ~.error_expected_status):
- added standard check on current-status for status-transitions:
INIT->POOL, POOL->PAIR, PAIR->PLAY, PLAY->DONE
* tournaments/roundrobin/define_pools.php:
- show add/del-pool only for POOL-round-status
2010-04-05 juga
* tournaments/roundrobin/edit_pools.php (get_assigned_user_pools, pools_edit_col_actions):
- pool-editor:
- added re-assign for users in selected-pools to new individual pool
- show detach/re-assign only if pools have been selected
- started integrity-check for current tournament-pools
- re-added define-pools bottom-link
* tournaments/roundrobin/view_pools.php:
- show headline with pool of current-user
* tournaments/roundrobin/define_pools.php (parse_edit_form):
- define-pools: added way to add poll and to delete last (empty) pool
- added cancel to reload-page
* include/utilities.php (format_number):
- added func to give number with explicit sign +/-num
* specs/db/dragon-ddl.sql:
- synced with current db-state
* tournaments/roundrobin/edit_pools.php (get_marked_users, get_assigned_user_pools,
load_and_fill_pool_unassigned, pools_unassigned_extend_table_form):
- pool-editor:
- added update with individual new pool for unassigned pool-users
- assign-pool-submit-button below unassigned-user-table
- bugfix: check for valid uid for pool-assignments
* tournaments/include/tournament_pool.php (TournamentPool.load_tournament_pools),
tournaments/roundrobin/edit_pools.php (load_and_fill_pool_unassigned):
- pool-editor: assign unassigned (=detached) marked user to new pool,
added actions-column to unassigned users with checkboxes to mark users to assign
- don't show detach-action and select-pools-action
if unassigned users are shown, they can't be detached again
- bugfix: fill User.ID on loading tournament-pools
* tournaments/include/tournament_pool_classes.php (class PoolViewer, ~.setEditCallback,
~.init_table, ~.make_pool_table),
tournaments/include/tournament_pool.php (TournamentPool.assign_pool),
tournaments/roundrobin/edit_pools.php (get_marked_users, pools_edit_col_actions),
tournaments/roundrobin/view_pools.php:
- pool-editor: detach marked users from pools,
added actions-column to selected pools with checkboxes to mark users to detach
* tournaments/include/tournament_pool_classes.php (class PoolTables.count_pools_max_user;
class PoolViewer, ~.make_table, ~.make_pool_table),
tournaments/include/tournament_pool.php (class TournamentPool, ~.load_tournament_pools),
tournaments/roundrobin/edit_pools.php (make_pool_unassigned_table, load_and_fill_pool_unassigned),
tournaments/roundrobin/view_pools.php:
- changes on pool-editor:
- show tournament-3-pool selection with or without unassigned pool-users
- added table-list with unassigned pool-users for tournament-round with navigational paging
- added loading of user last-access, tournament-participant register-time and tourney-rating only if needed
* include/filter.php (SearchFilter.was_filter_submit_action, ~.get_submit_elements):
- added function to check if filter-submit-action has been chosen
- removed prefix for standard filter-submit-actions
* include/table_columns.php (class Table, ~.make_add_column_form, ~.make_show_rows,
~.was_table_submit_action):
- added function to check if table-submit-action has been chosen
- cleanup: used consts for table-submit-actions
* tournaments/include/tournament_globals.php,
tournaments/include/tournament_properties.php:
- moved tourney-properties runmode-consts
from tournament_properties.php to tournament_globals.php
* tournaments/view_tournament.php:
- added view-pools link in games-section for round-robin-tourneys
2010-04-04 juga
* tournaments/include/tournament_pool_classes.php (class PoolGame;
class PoolTables, ~.fill_pools, ~.fill_games, ~.count_pools_max_user;
class PoolViewer, ~.echo_table, ~.make_table, ~.make_pool_table),
tournaments/roundrobin/view_pools.php,
skins/dragon/screen.css, NEWS:
- added pool-view for round-robin-tournament with pool-cross-tables
* include/classlib_userconfig.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added table-column-set for pool-view for round-robin-tournament:
CFGCOLS_TOURNAMENT_POOL_VIEW
-----------
-- table-column-set for pool-view for round-robin-tournament
ALTER TABLE ConfigPages
ADD ColumnsTournamentPoolView int NOT NULL DEFAULT -1 ;
-----------
* tournaments/include/tournament_pool.php (class TournamentPool, ~.load_tournament_pools):
- added pool-view for round-robin-tournament with pool-cross-tables
- added non-DB-field User to store additional data for T-pool
- load tournament-pools with additional user-info if needed
* tournaments/include/tournament.php (Tournament.build_info):
- added version 3 for tournament-title with extra-info like current round
for round-robin pool-view
* include/table_columns.php (class Table, ~.build_row_cell, ~.add_row_title, ~.add_row_thead,
~.add_row_one_col, ~.make_table, ~.current_filter_string, ~.make_tablehead):
- added support pool-view for round-robin-tournament with separate
but aligned cross-tables:
- added option TABLE_NO_THEAD to disable normal table-header
- added way to add special row spanning all table-columns
- added way to add title spanning all table-columns
- added way to show table-header multiple times with or without controls
- added helper-function to build row-cell with class-attribute
- bugfix: do not include filter-URL-args if no filters used
* tournaments/include/tournament_round_status.php,
tournaments/include/tournament_status.php:
- added missed TranslateGroups-declaration for translations
2010-04-03 juga
* tournaments/include/tournament_games.php (class TournamentGames, ~.fillEntityData,
~.update_score, ~.new_from_row, ~.update_tournament_game_end, ~.update_tournament_game_wait),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/table-Tournaments.txt,
tournaments/cron_tournaments.php, clock_tick.php, confirm.php:
- removed TournamengGames.ChangedBy-field to save size for expected-big-table
-----------
-- [table-size] removed ChangedBy-field, saving size for expected-big-table
ALTER TABLE TournamentGames
DROP COLUMN ChangedBy ;
-----------
* tournaments/include/tournament_globals.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- reduced max. pool size: 100 -> 25
-----------
-- [field-size] reducing max. pool-size (100->25), TournamentPool.GamesRun: smallint -> tinyint
ALTER TABLE TournamentPool
MODIFY GamesRun tinyint unsigned NOT NULL DEFAULT '0' ;
-----------
2010-03-31 juga
* tournaments/roundrobin/view_pools.php, tournaments/view_tournament.php:
- started view of tournament-pools for current round
2010-03-30 juga
* tournaments/include/tournament_pool.php (TournamentPool.insert, ~.fillEntityData,
~.exists_tournament_pool, ~.count_tournament_pool, ~.build_slice_mode,
~.delete_pools, ~.seed_pools),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/create_pools.php,
tournaments/roundrobin/define_pools.php, NEWS:
- added deletion of all pools,
show number of existing TournamentPool-entries, which enables deletion
- added seeding of all pools by certain order and certain slice-mode
- slice-modes (=how to distribute on different pools):
- round-robin: distribute users round-robin on pools
- fill-up pools: first fill up one pool, then go next pool
- manual: seed with 0-pool to mark manual assigning for pool-editor
- handle already joined users in pool, overwrite to new pools at the moment
- define_pools: adjusted title to 'Tournament Pools Setup'
- create_pools: adjusted title to 'Tournament Pools Manager'
- bugfixes preparing data-persisting
- renamed existsTournamentPool-function into exists_tournament_pool()-func
* tournaments/include/tournament_ladder.php (TournamentLadder.seed_ladder),
tournaments/include/tournament_participant.php (TournamentParticipant.load_registered_users_in_seedorder),
tournaments/include/tournament_properties.php (TournamentProperties.build_seed_order),
tournaments/include/tournament_globals.php,
tournaments/ladder/admin.php:
- moved loading of all registered TPs from TournamentLadder-class
into TournamentParticipant-class as load_registered_users_in_seedorder()-func
- renamed function TournamentProperties.build_ladder_seed_order -> .build_seed_order
- renamed seed-order consts used for round-robin tournaments too:
LADDER_SEEDORDER_... -> TOURNEY_SEEDORDER_...
* include/db_classes.php (EntityData.build_sql_insert_values):
- enhance INSERT ... ON DUPLICAT KEY UPDATE by allowing to include primary-key,
used for seeding TournamentPool-entries
2010-03-29 juga
* tournaments/roundrobin/create_pools.php,
tournaments/roundrobin/define_pools.php,
tournaments/roundrobin/edit_pools.php,
tournaments/manage_tournament.php, NEWS:
- started (new) pool-editor to create and seed pools for tournament round
- added bottom-links for all 3 pool-editors (define, create, edit)
2010-03-28 juga
* tournaments/include/tournament_round.php (class TournamentRound, ~.fillEntityData,
~.new_from_row),
tournaments/include/tournament_pool.php (TournamentPool.existsTournamentPool),
tournaments/include/tournament_utils.php (TournamentUtils.calc_pool_count,
~.calc_pool_games),
tournaments/roundrobin/define_pools.php (parse_edit_form, make_suggestions_table,
compare_suggestions),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, skins/dragon/screen.css, NEWS:
- enhanced pool-definition-editor to determine pool-parameter for pools-editing
- define actual pool-size and pool-count to be used for pooling tournament round,
stored in TournamentRound.PoolSize/Pools
- added distribution samples with suggestions for pool-size and pool-count
for current tournament round
- defining pool-parameter only possible if there's no TournamentPool-entry yet
-----------
-- define actual pool-size and pool-count to be used for pooling tournament round
ALTER TABLE TournamentRound
ADD PoolSize tinyint unsigned NOT NULL DEFAULT '0' AFTER MaxPoolCount,
ADD Pools smallint unsigned NOT NULL DEFAULT '0' AFTER MaxPoolCount ;
-----------
* include/table_columns.php (Table.set_row_extra):
- allow to add additional row-data
* tournaments/include/tournament_participant.php (TournamentParticipant.isTournamentParticipant):
- use type-casts to prevent sql-injection
* tournaments/manage_tournament.php, tournaments/roundrobin/edit_pools.php:
- started (new) pool-editor to assign users to pools for tournament round
* tournaments/roundrobin/edit_pools.php,
tournaments/roundrobin/define_pools.php:
- renamed pool-editor 'edit_pools.php' to 'define_pools.php'
to define pool-parameters: pool-size, pool-count
* tournaments/include/tournament.php (Tournament.build_info):
- bugfix: fix URL adding base_path for tournament-info
2010-03-27 juga
* tournaments/include/tournament_pool.php (class TournamentPool, ~.to_string,
~.persist, ~.insert, ~.update, ~.delete, ~.fillEntityData, ~.build_query_sql,
~.new_from_row, ~.load_tournament_pools, ~.get_edit_tournament_status),
tournaments/roundrobin/edit_pools.php,
tournaments/manage_tournament.php (make_links_ttype_specific),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- started pools-editor for round-robin tournaments,
added TournamentPool-class and corresponding db-table
-----------
-- table to assign users to pools
CREATE TABLE TournamentPool (
ID int NOT NULL auto_increment,
tid int NOT NULL,
Round tinyint unsigned NOT NULL,
Pool smallint unsigned NOT NULL,
uid int NOT NULL DEFAULT '0',
GamesRun smallint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
KEY tidRoundPool (tid,Round,Pool),
KEY uid (uid)
) ENGINE=MyISAM ;
-----------
* tournaments/include/tournament_round.php (TournamentRound.build_notes_props),
tournaments/roundrobin/edit_rounds.php,
tournaments/roundrobin/edit_round_props.php:
- show separated min/max-pool-size info for tournament-round
- removed redundant tournament-round-status info, it's on edit-round-status page
* tournaments/include/tournament_round.php (TournamentRound.getStatusText),
tournaments/include/tournament_round_status.php (class TournamentRoundStatus),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/edit_round_props.php (build_round_notes),
tournaments/roundrobin/edit_round_status.php (build_status_notes),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- combined round-status POOL+PAIR in POOL-status, using PAIR-round-status
to prepare games making GAME-status meaningless
-----------
-- remove GAME-status
ALTER TABLE TournamentRound
MODIFY Status enum('INIT','POOL','PAIR','PLAY','DONE') NOT NULL DEFAULT 'INIT' ;
-----------
* tournaments/manage_tournament.php:
- added editor to change tournament-round-status
- show tournament-round-status for round-robin tourneys
* tournaments/include/tournament_round_status.php (class TournamentRoundStatus,
~.has_error, ~.add_error, ~.check_status_change,
~.check_conditions_status_INIT, ~.check_conditions_status_POOL,
~.check_conditions_status_PAIR, ~.check_conditions_status_GAME,
~.check_conditions_status_PLAY, ~.check_conditions_status_DONE),
tournaments/include/tournament_round.php (TournamentRound.setStatus),
tournaments/roundrobin/edit_round_status.php (parse_edit_form, build_status_notes),
tournaments/roundrobin/edit_rounds.php, NEWS:
- added editor to change tournament-round-status
* scripts/update_translation_pages.php:
- added new sub-dir for round-robin-tournaments
* tournaments/register.php:
- make user-message with reason mandatory if apply-status needed
for new registration
* tournaments/include/tournament_status.php (class TournamentStatus, ~._load_tround,
~.check_conditions_status_PAIR),
tournaments/include/tournament_template_round_robin.php (TournamentTemplateRoundRobin.calcTournamentMinParticipants,
~.checkProperties),
tournaments/include/tournament_template.php (TournamentTemplate.calcTournamentMinParticipants,
~.checkProperties),
tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.checkProperties):
- round-robin tourney: check for min-participants determined also
by round-properties min-pool-size
- round-robin tourney: check round-properties also for status-transition
to PAIR-tourney-status
* tournaments/include/tournament_round.php (class TournamentRound, ~.fillEntityData,
~.check_properties, ~.build_notes_props, ~.new_from_row, ~.getStatusText),
tournaments/include/tournament_template_round_robin.php (class TournamentTemplateRoundRobin.checkProperties),
tournaments/include/tournament_limits.php (TournamentLimits.getLimitRangeTextAdmin,
~._checkValue_MinMaxDisable, ~.check_MaxParticipants, ~.checkLadder_MaxChallenges,
~.check_MaxRounds, ~.checkRounds_MinPoolSize, ~.checkRounds_MaxPoolSize,
~.checkRounds_MaxPoolCount, ~.getStaticMaxLimit),
tournaments/include/tournament_globals.php,
tournaments/roundrobin/edit_round_props.php (parse_edit_form, build_round_notes),
tournaments/roundrobin/edit_rounds.php,
tournaments/view_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- cleanup of TournamentRound-table for pool-size and pool-count:
- renamed PoolCount to MaxPoolCount
- adjusted fields-size
- changed defaults for Min/MaxPoolSize: 0 -> 2
- added TournamentRound PLAY-status
- added edit of MaxPoolCount replacing read-only PoolCount
- added properties-check for current tournament-round on tourney-status change to REG-status
- added limitations on tournament-round min/max-pool-size and max-pool-count
- added rudimentary info about tournament-round on T-info page
- minor text-changes
-----------
-- [cleanup] renamed/resized fields
ALTER TABLE TournamentRound
MODIFY MinPoolSize tinyint unsigned NOT NULL DEFAULT '0',
MODIFY MaxPoolSize tinyint unsigned NOT NULL DEFAULT '0',
CHANGE PoolCount MaxPoolCount smallint unsigned NOT NULL DEFAULT '0' ;
-- add PLAY-status
ALTER TABLE TournamentRound
MODIFY Status enum('INIT','POOL','PAIR','GAME','PLAY','DONE') NOT NULL DEFAULT 'INIT' ;
-----------
* tournaments/include/tournament_template_round_robin.php (class TournamentTemplateRoundRobin.checkProperties),
tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_REG, ~.check_conditions_status_PLAY),
tournaments/include/tournament_template.php (TournamentTemplate.checkProperties),
tournaments/include/tournament_template_ladder.php (TournamentTemplateLadder.checkProperties):
- pass Tournament-object instead of tourney-ID for checking properties on change to REG-status
* tournaments/ladder/edit_props.php (parse_edit_form):
- bugfix: accept also max-limit as valid value
2010-03-26 juga
* tournaments/include/tournament_helper.php (TournamentHelper.add_new_tournament_round, ~.delete_tournament_round, ~.set_tournament_round),
tournaments/include/tournament_round.php (class TournamentRound, ~.getStatusText, ~.authorise_set_tround),
tournaments/include/tournament_limits.php (TournamentLimits.check_MaxRounds, ~.getStaticMaxLimit),
tournaments/include/tournament_template_round_robin.php (class TournamentTemplateRoundRobin),
tournaments/include/tournament_globals.php,
include/error_codes.php (ErrorCodes.init),
tournaments/roundrobin/edit_round_props.php (parse_edit_form, build_round_notes),
tournaments/roundrobin/edit_rounds.php (echo_confirm), NEWS:
- added/enhanced tournament-round editing and checks for use-cases in tournament rounds editors:
- view tournament round data
- add new tournament-round
- remove tournament-round
- set current tournament-round
- edit properties/data of tournament-round
- added checking min/max-limits on tournament-rounds
2010-03-24 juga
* tournaments/include/tournament_round.php (TournamentRound.add_tournament_round,
~.build_query_sql, ~.load_tournament_round_by_id, ~.get_edit_tournament_status),
tournaments/include/tournament_helper.php (TournamentHelper.add_new_tournament_round,
~.delete_tournament_round),
tournaments/include/tournament.php (Tournament.update_rounds),
include/db_classes.php (EntityData.build_sql_value_changed_by),
tournaments/roundrobin/edit_rounds.php:
- started rounds-editor with viewing T-rounds, adding/removing T-round,
editing of T-round
* tournaments/include/types/dgs_round_robin.php (class DgsRoundRobinTournament):
- initialize TournamentRound with all 0's to provoke error on T-status-change,
so TD needs to edit it
2010-03-22 juga
* tournaments/roundrobin/edit_round_props.php,
tournaments/roundrobin/index.php,
tournaments/edit_round.php,
tournaments/manage_tournament.php:
- copied full CVS-history in single commits from 'tournaments/edit_round.php'
to 'tournaments/roundrobin/edit_round_props.php',
- removed old 'tournaments/edit_round.php'
* tournaments/roundrobin/edit_round_props.php,
- copied full CVS-history in single committs from tournaments/edit_round.php
* tournaments/include/tournament_participant.php (TournamentParticipant.authorise_edit_register_status):
- bugfix: show '---' (no-value) for not-registered "TP-status"
* tournaments/include/tournament_template_round_robin.php (class TournamentTemplateRoundRobin,
~._createTournament, ~.checkProperties, ~.checkParticipantRegistrations),
tournaments/include/types/dgs_round_robin.php (class DgsRoundRobinTournament, ~.createTournament),
tournaments/include/tournament_factory.php (TournamentFactory.getTournament, ~.getTournamentTypes),
tournaments/include/tournament.php (Tournament.getWizardTypeText),
tournaments/include/tournament_utils.php (TournamentUtils.getWizardTournamentType),
tournaments/include/tournament_round.php (class TournamentRound, ~.persist,
~.fillEntityData, ~.isTournamentRound, ~.delete_tournament_round, ~.new_from_row,
~.getStatusText),
tournaments/include/tournament_globals.php,
tournaments/edit_round.php (parse_edit_form),
tournaments/edit_tournament.php (parse_edit_form),
tournaments/manage_tournament.php (make_links_ttype_specific),
tournaments/view_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Tournaments.txt, NEWS:
- added pooled round-robin tournament wizard-type without restrictions:
TOURNEY_WIZTYPE_DGS_ROUNDROBIN
- show current tourney-rounds only if tournament needs rounds
- redefined/added TournamentRound-table to keep track of tournament-rounds
for round-robin-tournament, relying on only one set of tourney-rules,
using shorter status-values, added ChangedBy-field and auto-increment ID-field
- moved editing of tournament-rounds from tournament-editor to round-editor
- bugfixes, small text-adjustments
-----------
-- redefine tournament-round for round-robin tournaments: only one set of rules, shorter status-values
DROP TABLE IF EXISTS TournamentRound ;
CREATE TABLE TournamentRound (
ID int NOT NULL auto_increment,
tid int NOT NULL,
Round tinyint unsigned NOT NULL DEFAULT '1',
Status enum('INIT','POOL','PAIR','GAME','DONE') NOT NULL DEFAULT 'INIT',
MinPoolSize smallint unsigned NOT NULL DEFAULT '0',
MaxPoolSize smallint unsigned NOT NULL DEFAULT '0',
PoolCount smallint unsigned NOT NULL DEFAULT '0',
Lastchanged datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
ChangedBy varchar(54) NOT NULL DEFAULT '',
PRIMARY KEY (ID),
UNIQUE KEY tidRound (tid,Round)
) ENGINE=MyISAM ;
-----------
* specs/db/dragon-ddl.sql:
- synchronized tournament-tables with current state of db
* include/game_functions.php (getRulesetText, build_ruleset_filter_array, getRulesetScoring),
include/make_game.php (make_invite_game, create_game),
include/message_functions.php (~.game_settings_form, ~.game_info_table),
tournaments/include/tournament_rules.php (class TournamentRules, ~.setRuleset,
~.fillEntityData, ~.convertTournamentRules_to_GameRow, ~.convertTournamentRules_to_EditForm,
~.convertEditForm_to_TournamentRules, ~.new_from_row),
include/error_codes.php (ErrorCode.init), include/globals.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, specs/db/table-Waitingroom.txt,
tournaments/manage_tournament.php,
tournaments/view_tournament.php (echo_tournament_rules),
game.php (draw_game_info), gameinfo.php, message.php, send_message.php,
sgf.php (get_ruleset), show_games.php, status.php, waiting_room.php, NEWS:
- added Rulesets Japanese/Chinese with territory/area-scoring
for waiting-room, new game and tournament-rules
- removed FIXME: show scoring-box only for chosen ruleset
-----------
-- changed Ruleset from scoring-method to real ruleset for new game
ALTER TABLE Waitingroom
DROP COLUMN Ruleset ;
ALTER TABLE Waitingroom
ADD Ruleset enum('JAPANESE','CHINESE') NOT NULL DEFAULT 'JAPANESE' AFTER Time ;
-- added Ruleset for new game
ALTER TABLE Games
ADD Ruleset enum('JAPANESE','CHINESE') NOT NULL DEFAULT 'JAPANESE' AFTER ToMove_ID ;
-- added Ruleset for tournament-rules
ALTER TABLE TournamentRules
ADD Ruleset enum('JAPANESE','CHINESE') NOT NULL DEFAULT 'JAPANESE' AFTER Flags ;
-----------
* tournaments/include/tournament.php (Tournament.get_edit_lock_tournament_status),
tournaments/edit_lock.php (parse_edit_form):
- bugfix: lock-edit also allowed for tourney-Pair-status
2010-03-21 juga
* forum/forum_functions.php (DisplayForum.draw_post, ~.draw_overview;
Forum.load_threads, ~.load_forum_list; ForumThread.load_revision_history;
class ForumPost, ~.is_author, ~.is_post_read, ~.new_from_row),
include/classlib_user.php (class User, ~.to_string, ~.build_query_sql, ~.newForumUser),
forum/read.php, forum/search.php:
- refactored ForumUser-class into using User-class: adding AdminLevel-handling
* forum/class_forum_read.php (ForumRead.update_global_forum_read,
~.load_global_new, ~.trigger_recalc_global_read_update),
include/std_functions.php (is_logged_in),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Players.txt, specs/forums.txt:
- optimization by replacing ForumRead(User_ID,Forum_ID=0,Thread_ID=0) to omit
extra-Forumreads-lookup with new Players-fields:
- Players.ForumReadTime=Forumreads.Time,
- Players.ForumReadNew=Forumreads.HasNew
-----------
-- store global forum-read date and NEW-flag in Players-table
ALTER TABLE Players
ADD ForumReadNew tinyint NOT NULL default '0' AFTER BlockReason,
ADD ForumReadTime datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER BlockReason ;
-- migration of global forum-read data
UPDATE Players AS P INNER JOIN Forumreads AS FR ON FR.User_ID=P.ID
SET P.ForumReadTime=FR.Time, P.ForumReadNew=FR.HasNew WHERE FR.Forum_ID=0 AND FR.Thread_ID=0 ;
-- cleanup, later eventually
DELETE FROM Forumreads
WHERE Forum_ID=0 AND Thread_ID=0 ;
-----------
* tournaments/list_tournaments.php:
- bugfix: show private-scoped tournaments to non-admins too
* tournaments/include/tournament_limits.php (TournamentLimits.getLimits,
~.getLimitRangeTextAdmin, ~.check_MaxParticipants, ~.checkLadder_MaxDefenses,
~.checkLadder_MaxChallenges, ~.getStaticMaxLimit),
tournaments/include/tournament_utils.php (TournamentUtils.build_range_text),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/edit_properties.php (parse_edit_form):
- allow tourney-admin to overwrite tourney-limits with off-limit-values
preserving overwritten values for non-T-admin
- showing tourney-limits to T-admin
* tournaments/edit_properties.php (parse_edit_form),
tournaments/ladder/edit_props.php (parse_edit_form):
- bugfix: check additional limitations and use new-value on max-participant,
ladder-max-defenses/challenges only if generic and additional checks are ok
* tournaments/include/types/private_ladder.php (class PrivateLadderTournament, ~.createTournament),
tournaments/include/tournament.php (Tournament.getScopeText, ~.getWizardTypeText),
tournaments/include/tournament_factory.php (TournamentFactory.getTournament, ~.getTournamentTypes),
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration),
tournaments/include/tournament_utils.php (TournamentUtils.getWizardTournamentType),
tournaments/include/tournament_globals.php, NEWS:
- added private-scoped tournament as invite-only tournament
blocking user registering by himself
- added private-ladder tournament of wizard-type TOURNEY_WIZTYPE_PRIVATE_LADDER
* tournaments/include/tournament_limits.php (TournamentLimits.getLimits,
~.getMinLimit, ~.getMaxLimit, ~.getLimitRangeText, ~.check_MaxParticipants,
~.checkLadder_MaxDefenses, ~.checkLadder_MaxChallenges),
tournaments/include/tournament_template_ladder.php (class TournamentTemplate),
tournaments/include/tournament_ladder_props.php (parse_edit_form),
tournaments/include/types/dgs_ladder.php (class TournamentTemplateLadder),
tournaments/include/types/public_ladder.php (class PublicLadderTournament),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/view.php (prepare_update_rank),
tournaments/edit_properties.php (parse_edit_form):
- added additional limitations on max-tournament-participants, ladder-max-defenses/challenges
- bugfix: reduce min-check for ladder-max-defenses from 1 to 0 because of max-defenses for group#1/2
- do not accept off-limit values with auto-limits for most properties, but show range-value-error instead
- no special handling for T-Admin for now
- use TournamentUtils::build_range_text()-func to build range-text '[min..max]'
- adjusted texts (added '.', more detailed error-text)
* tournaments/include/tournament_utils.php (TournamentUtils.build_range_text),
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration),
tournaments/edit_participant.php (parse_edit_form),
tournaments/register.php (parse_edit_form):
- use TournamentUtils::build_range_text()-func to build range-text '[min..max]'
2010-03-15 juga
* tournaments/include/tournament_limits.php (class TournamentLimits, ~.setLimits,
~.getLimits, ~.check_MaxParticipants, ~.checkLadder_MaxDefenses, ~.checkLadder_MaxChallenges),
tournaments/include/tournament_template.php (class TournamentTemplate, ~.getTournamentLimits),
tournaments/include/tournament_template_ladder.php (class TournamentTemplateLadder),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament, ~.createTournament),
tournaments/include/types/public_ladder.php (class PublicLadderTournament, ~.createTournament),
tournaments/edit_properties.php (parse_edit_form):
- replaced restriction specified by TournamentTemplate.limit_min/max_participants
with field-specific limits enforced by database (and not by policy)
- added TournamentLimits()-helper-class to add tournament-type specific checks for:
- TournamentProperties.MaxParticipants
- TournamentLadderProps.MaxDefenses/MaxChallenges
- added default-tournament-limits for Dragon/Public-scoped tournaments
- allow/use no min-participants for ladder (=0-value)
2010-03-14 juga
* tournaments/include/tournament_template_ladder.php (class TournamentTemplateLadder,
~._createTournament, ~.checkProperties, ~.checkParticipantRegistrations, ~.joinTournament),
tournaments/include/tournament_template.php (TournamentTemplate.make_tournament),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament, ~.createTournament),
tournaments/include/types/public_ladder.php (class PublicLadderTournament, ~.createTournament),
tournaments/include/tournament_factory.php (TournamentFactory.getTournament, ~.getTournamentTypes),
tournaments/include/tournament_utils.php (TournamentUtils.getWizardTournamentType),
tournaments/include/tournament.php (class Tournament, ~.getWizardTypeText),
tournaments/include/tournament_globals.php, NEWS:
- added wizard-type and tournament-type for public-ladder:
TOURNEY_WIZTYPE_PUBLIC_LADDER, PublicLadderTournament-class
- added default for MaxChallenges=10 for DGS_LADDER-type
- refactored tournament-templating adding template TournamentTemplateLadder-class
for ladder-typed-tournaments
* tournaments/manage_tournament.php:
- added better description for admin-tourney-game, edit-ladder-props
* tournaments/edit_tournament.php:
- show original input instead of only correctly parsed values for:
owner, scope, start-time, title, description, rounds, current-round
- cleanup: remove redundant textarea_safe()-calls
* tournaments/include/tournament_ladder_props.php,
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/edit_properties.php (parse_edit_form):
- use const for max-TPs TP_MAX_COUNT
- defined const for and increased max-value for tournament-ladder
absolute challenge-range: 1000 -> 2000
- moved max-limit consts from tournament_ladder.php to tournament_globals.php
* tournaments/include/tournament_participant.php (TournamentParticipant.count_tournament_participants),
tournaments/ladder/admin.php:
- bugfix: set default count for requested status
* tournaments/include/tournament_status.php (TournamentStatus.check_conditions_unfinished_tourney_games),
tournaments/include/tournament_games.php (TournamentGames.count_tournament_games):
- bugfix: count tournament-games for specific tournament-id on transition
to tourney-DELETE-status
* tournaments/include/tournament_ladder.php (TournamentLadder.count_tournament_ladder,
~.seed_ladder),
tournaments/ladder/admin.php:
- bugfix: seed tournament-ladder also handling already joined TPs
with or without reordering of existing ladder-users
* tournaments/include/tournament.php (class Tournament, ~.fillEntityData, ~.new_from_row),
tournaments/edit_lock.php (format_lock_note, build_notes_locking),
tournaments/manage_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added field Tournament.LockNote to store reasons for tournament-lockings
-----------
-- added note with reason for tournament-locking
ALTER TABLE Tournament
ADD LockNote varchar(255) NOT NULL default '' ;
-----------
* tournaments/include/tournament_ladder.php (TournamentLadder.get_rank_info_format),
tournaments/ladder/view.php:
- moved building of translated-texts rank-info-format for JavaScript
from ladder-view into ladder-lib
- create JavaScript-inlining for ladder-view only if JavaScript enabled
* skins/dragon/screen.css:
- use dynamic width for popup-info-box
* tournaments/ladder/view.php (build_rank_change),
skins/dragon/screen.css, NEWS:
- replaced Best-Rank table-column with Rank-Change-Info within current rank-period
- added JavaScript-based popup-info-box with rank-info for each ladder-user,
passing translated texts into vars with inlined-JavaScript
- if JavaScript disabled, show rank-info for current user above ladder
* js/common.js (sprintf, showInfo, hideInfo, showTLRankInfo, buildRankDiff):
- added utility-function sprintf with support of '%s'-format
- added functions to show popup info-box with with rank-change-info for ladder-tournament
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps.build_notes_props),
tournaments/ladder/view.php (build_rank_change):
- print started outgoing challenges also if MaxChallengedOut unrestricted
* tournaments/include/tournament_ladder.php (class TournamentLadder,
~.fillEntityData, ~.new_from_row, ~.add_participant_to_ladder, ~.seed_ladder,
~.process_rank_period, ~.build_rank_diff),
tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row),
tournaments/include/tournament_helper.php (TournamentHelper.process_rank_period,
~.load_ladder_rank_period_update),
tournaments/include/tournament_utils.php (TournamentUtils.get_month_start_time),
tournaments/include/tournament_extension.php (class TournamentExtension),
tournaments/include/types/dgs_ladder.php (DgsLadderTournament.createTournament),
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/cron_tournaments.php (run_once_daily),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added handling of archiving tournament-ladder-rank:
- added TournamentExtension-table for additional tournament-runtime-properties,
- added tournament-extension-property [TE_PROP_TLADDER_RANK_PERIOD_UPDATE=1]
holding date of next rank-archiving
- added field TournamentLadder.StartRank setting on joining ladder
for admin-purposes
- added field TournamentLadder.PeriodRank + HistoryRank
for two-periods-history of tournament-ladder-ranks
- next update-date for rank-archiving configured by new property
TournamentLadderProps.RankPeriodLength holding value between 1 and 255 months
- enhanced ladder-props-editor for RankPeriodLength-field
- updating TournamentLadder.Period/History-Rank in tournament-cron
when rank-update is due: TournamentExtension.Property=1
- added handling of archiving tournament-ladder-rank,
added tournament-extension-property [1] for archiving tournament-ladder-rank
- moved daily-jobs in tournament-cron from start to end
-----------
-- added history for tournament-ladder-ranks
ALTER TABLE TournamentLadder
ADD HistoryRank smallint unsigned NOT NULL default '0' AFTER BestRank,
ADD PeriodRank smallint unsigned NOT NULL default '0' AFTER BestRank,
ADD StartRank smallint unsigned NOT NULL default '0' AFTER BestRank ;
-- added table for tournament-runtime-properties
CREATE TABLE TournamentExtension (
tid int NOT NULL,
Property smallint unsigned NOT NULL,
IntValue int NOT NULL DEFAULT '0',
DateValue datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
ChangedBy varchar(54) NOT NULL DEFAULT '',
PRIMARY KEY (tid,Property),
KEY DateValue (DateValue)
) ENGINE=MyISAM;
-- added length of rank-period in months
ALTER TABLE TournamentLadderProps
ADD RankPeriodLength tinyint unsigned NOT NULL DEFAULT '1' ;
-----------
* tournaments/include/tournament_participant.php (TournamentParticipant.check_rated_tournament_participants),
tournaments/include/tournament_helper.php (class TournamentHelper),
tournaments/edit_rules.php:
- moved method from TournamentHelper::check_rated_tournament_participants
to TournamentParticipant::check_rated_tournament_participants
* include/std_functions.php (start_html, start_page),
include/utilities.php (js_safe, add_js_var):
- enhanced start_html/start_page-funcs with arguments
to add inline JavaScript in HTML-header
- added quoting-methods for JavaScript-argument and var-handling
- added hidden div-HTML-element to serve as popup-info-box
* tournaments/include/tournament_cache.php (TournamentCache.is_tournament_director):
- bugfix: check for director-flags only if director found
- bugfix: don't cache non-existing tournament-director
2010-03-11 juga
* tournaments/include/tournament_participant.php (class TournamentParticipant,
~.to_string, ~.fillEntityData, ~.build_query_sql, ~.new_from_row, ~.update_game_end_stats)
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
specs/db/table-Tournaments.txt,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
tournaments/list_participants.php, NEWS:
- added game stats for tournament-participant: finished/won/lost tournament-games
-----------
-- added tournament-game stats for tournament-participant
ALTER TABLE TournamentParticipant
ADD Finished mediumint unsigned NOT NULL default '0',
ADD Won mediumint unsigned NOT NULL default '0',
ADD Lost mediumint unsigned NOT NULL default '0' ;
-----------
* include/db_classes.php (class EntityData, ~.set_query_value, ~.get_fields, ~.get_query_value,
~.remove_value, ~.get_sql_value, ~.build_sql_insert, ~.build_sql_update),
scripts/tests/EntityDataTest.php:
- enhanced inserting/updating data with functional query-like field-values
* tournaments/manage_tournament.php:
- added link to show all running tournament games
2010-03-08 juga
* tournaments/include/tournament_games.php (TournamentGames.isScoreStatus, ~.getScoreForUser),
gameinfo.php, skins/dragon/screen.css, NEWS:
- show more defails for tournaments on game-info page:
- add tournament-game info: status, tourney-game-score with flags,
emphasize score if different to game-score or game still running
- hide current round for ladder-tourneys
- added link to ladder-view for ladder-tourneys
* show_games.php, NEWS:
- enhance games-list page for specific tournament with tournament-game-status,
mostly to allow TD an easy search for unfinished games
- query-cleanup: always qualify Games-table in field-references,
because the following fields were ambiguous with TournamentGames: tid, Status, Flags
* tournaments/list_participants.php:
- added column with link to users running games
* tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_CLOSED,
~.check_conditions_status_DEL, ~.check_conditions_unfinished_tourney_games),
tournaments/include/tournament_games.php (TournamentGames.count_tournament_games):
- added checks to change to CLOSED/DEL-tournament-status:
checking for unfinished tournament-games
2010-03-07 juga
* tournaments/include/tournament_rules.php (TournamentRules.convertTournamentRules_to_GameRow,
~.convertTournamentRules_to_EditForm, ~.create_game, ~.prepare_create_game_row),
include/message_functions.php (game_info_table),
tournaments/ladder/challenge.php (show_game_info), NEWS:
- show probable game-info/settings for ladder-challenge similar to waiting-room
- fix bug using string-type-casting on JigoMode-field instead of int-casting
* include/message_functions.php (game_info_table, get_colortext_probable):
- fix bug for waiting-room BLACK|WHITE-handicap-type showing wrong color
for probable game-settings
- fix bug with image-URLs missing $base_path
* tournaments/include/tournament_helper.php (TournamentHelper.check_rated_tournament_participants),
tournaments/edit_rules.php:
- if tournament should be Rated, added check that ALL existing TPs
have a user-rating (can also happen later by admin-operations)
* tournaments/view_tournament.php:
- add current ladder-rank for user
- added additional "View Ladder"-link in top-section
- commented out tournament-results (will be done later)
* specs/db/table-Tournaments.txt, specs/db/dragon-ddl.sql:
- synchronized tournament-tables with current state of db
* tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder,
~._process_game_end, ~.notify_removed_user, ~.process_user_absence, ~.get_notes_user_removed),
tournaments/ladder/admin.php (add_form_edit_user),
tournaments/ladder/retreat.php (build_retreat_notes),
tournaments/cron_tournaments.php (run_once_daily), NEWS:
- send notify about (full) removal from tournament-ladder to removed user
* tournaments/ladder/challenge.php:
- send notify about tournament-ladder challenge to defender
2010-03-06 juga
* tournaments/ladder/edit_props.php:
- added edit-note stating to use '0'-value to disable features
* tournaments/include/tournament_ladder.php (TournamentLadder.move_down_ladder_part,
~.move_up_ladder_part):
- bugfix fixing updated BestRank: fix UPDATE-query on TournamentLadder.BestRank
calculated from Rank already changed in UPDATE-SET-part before
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row),
tournaments/include/tournament_ladder.php (TournamentLadder.process_user_absence),
tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_absent_users),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/cron_tournaments.php:
- only remove-user-from-ladder action makes sense for handling long-user-absence,
because moving user to ladder-bottom for absent-users would be checked each day
in tournament-cron. So being more strict on user-absence and removed
TournamentLadderProps.UserAbsenceAction
-----------
-- reduce long-user-absence handling to one option, so remove field with action-choice
ALTER TABLE TournamentLadderProps
DROP COLUMN UserAbsenceAction ;
-----------
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.setUserAbsenceAction, ~.fillEntityData, ~.check_properties, ~.build_notes_props,
~.new_from_row, ~.getUserAbsenceText),
tournaments/include/tournament_ladder.php (TournamentLadder.build_query_sql,
~.load_tournament_ladder, ~.process_user_absence, ~._process_user_absence,
tournaments/include/tournament_helper.php (TournamentHelper.load_ladder_absent_users),
tournaments/include/tournament_globals.php, include/globals.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, specs/db/dragon-data.sql,
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/cron_tournaments.php (run_once_daily),
tournaments/manage_tournament.php,
admin_users.php, edit_vacation.php, NEWS:
- added handling of long-user-absence
- check once a day if there are users not being online for UserAbsenceDays
without vacation and process UserAbsenceAction for them either
- TLP_USERABS_DEL: removing user from ladder, or
- TLP_USERABS_LAST: moving absent user to last position in ladder
- added fields TournamentLadderProps.UserAbsenceDays + UserAbsenceAction,
adjusted ladder-props editor for new fields
- added clock for daily check in tournaments-cron processing long user-absence
- added Players.UseVacation with (starting) days of new vacation period
to check on user-absence for tournaments
- added administration of UseVacation-field
- adjust UseVacation when changing length of running vacation
-----------
-- handling long-user-absence for tournaments
ALTER TABLE TournamentLadderProps
ADD UserAbsenceDays tinyint unsigned NOT NULL DEFAULT '0',
ADD UserAbsenceAction enum('LAST','DEL') NOT NULL DEFAULT 'DEL' ;
ALTER TABLE TournamentLadderProps
ADD INDEX UserAbsenceDays (UserAbsenceDays) ;
ALTER TABLE Players
ADD UseVacation tinyint unsigned NOT NULL DEFAULT '0' AFTER OnVacation ;
UPDATE Players
SET UseVacation=ROUND(OnVacation)+1 WHERE OnVacation > 0 AND UseVacation = 0 ;
-- Clock for (daily) tournament-cron
INSERT INTO Clock SET ID=206, Lastchanged=0 ;
-----------
* tournaments/include/tournament_cache.php (class TournamentCache, ~.is_tournament_locked,
~.release_tournament_cron_lock, ~.set_tournament_cron_lock),
tournaments/cron_tournaments.php:
- moved checking/setting/releasing tournament-locking check into tournament-cache
class used for tournament-cron
* include/connect2mysql.php (DBG_TEST),
tournaments/cron_tournaments.php:
- added const DBG_TEST, can be set in local-config to allow local tests
2010-02-28 juga
* tournaments/ladder/admin.php, tournaments/ladder/view.php:
- show tournament-flags for T-Admin
- show warning for TD on set TDWork-Lock
* tournaments/include/tournament.php (Tournament.formatFlags, ~.getFlagsText),
tournaments/include/tournament_utils.php (TournamentUtils.show_tournament_flags),
tournaments/ladder/edit_props.php, tournaments/edit_director.php,
tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_rules.php, tournaments/edit_status.php,
tournaments/game_admin.php, tournaments/list_tournaments.php:
- show tournament-flags for T-Admin
* tournaments/edit_tournament.php, tournaments/manage_tournament.php:
- unified tournament-flags text
* tournaments/include/tournament_ladder.php (TournamentLadder.allow_edit_ladder):
- Admin-Lock overwrites other tournament-locks for T-Admin to allow editing ladder
* tournaments/include/tournament.php (Tournament.allow_edit_directors),
tournaments/edit_director.php, tournaments/list_directors.php,
tournaments/manage_tournament.php:
- fix bug: TD can only edit own comment,
adding TD and editing ALL TDs restricted to Owner/T-Admin
* tournaments/include/tournament_ladder.php (TournamentLadder.add_user_to_ladder, ~.allow_edit_ladder),
tournaments/include/tournament_template.php (TournamentTemplate.joinTournament):
- fix bug: check if tournament-participant already joined tournament on edit-TP
- fix bug: prohibit edit if TDWork-lock unset
* tournaments/edit_participant.php, tournaments/register.php:
- check Admin/TDWork/Close-Lock prohibiting registering/editing
- for TD: show Register-Lock and Close-Lock as warning
* tournaments/edit_director.php, tournaments/edit_properties.php,
tournaments/edit_round.php, tournaments/edit_rules.php,
tournaments/edit_status.php, tournaments/edit_tournament.php (parse_edit_form),
tournaments/ladder/edit_props.php, tournaments/game_admin.php:
- check Admin-Lock prohibiting adding/editing
- small bugfixes
* tournaments/include/tournament_ladder.php (TournamentLadder.allow_edit_ladder),
tournaments/ladder/view.php (build_action_row_str),
tournaments/ladder/admin.php (add_form_edit_user),
tournaments/ladder/challenge.php, tournaments/ladder/retreat.php:
- added check for tournament locks:
- Admin/TDWork/Cron-Lock prohibiting TD to edit locked ladder
- Admin/TDWork/Close-Lock prohibiting user to start challenge
- Admin/TDWork-Lock prohibiting user to retreat from ladder
- disabled submit-buttons on tournament-lock-errors
* tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_game_end,
~.process_tournament_ladder_game_end),
tournaments/cron_tournaments.php:
- set Cron-Lock for tournament during processing game-end
- use tournament-type-independent func to process tournament-game-end
- added check if game-end processing allowed
* tournaments/manage_tournament.php (make_admin_tgame):
- moved editing of Admin-/Cron-Lock from edit-tournament-page to edit_lock-page
- added form to enter game-id to admin tournament-game
* tournaments/view_tournament.php (check_locks, echo_tournament_rules):
- show current state of Admin/TDWork/Register/Close-Lock
- use Table_info-TABLEOPT_LABEL_COLON to append label with colon
* tournaments/edit_lock.php (parse_edit_form, build_lock_notes),
tournaments/edit_tournament.php (parse_edit_form):
- Admin-Lock prohibits adding/editing of locks excepts for T-Admin
- show error on Admin-Lock to non-T-Admins
- moved editing of Admin-/Cron-Lock from edit-tournament-page to edit-lock page as combined edit,
though restricted to T-Admin, disable checkboxes of uneditable locks
- fix bug: add hidden-field for disabled checkboxes not to lose former lock-state
- refactored specific TOURNEY_FLAG_LOCK_LADDER into generalized TOURNEY_FLAG_LOCK_TDWORk
- added editing of Close-Lock
- added tournament-lock-notes with lock-descriptions
* tournaments/include/tournament.php (Tournament.formatFlags, ~.buildMaintenanceLockText,
~.buildAdminLockText, ~.update_flags, ~.checkRegistrationLocks, ~.getFlagsText, ~.getLockText),
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration),
tournaments/include/tournament_status.php (TournamentStatus.add_error, ~.check_conditions_status_PAIR),
tournaments/include/tournament_globals.php,
skins/dragon/screen.css:
- added Close-Lock TOURNEY_FLAG_LOCK_CLOSE to prepare transition to tournament-CLOSE-status
- added/extended funcs to check and show info for all tournament-locks:
Admin/TDWork/Register/Cron/Close-Lock
- refactored specific TOURNEY_FLAG_LOCK_LADDER into generalized TOURNEY_FLAG_LOCK_TDWORk
- added CSS for tournament-locks
- renamed TPROP_CHKTYPE_.. -> TCHKTYPE_..
* specs/db/table-Tournaments.txt, NEWS:
- added doc about Tournament.Flags to store tournament-locks
* tournaments/include/tournament_utils.php (TournamentUtils.buildErrorListString):
- added optional safe-argument to make error-texts HTML-safe
for table-layouted error-lists
* include/table_infos.php (class Table_info, ~.add_info, ~.add_sinfo, ~._append_colon):
- added option to append colon to labels: TABLEOPT_LABEL_COLON
* include/form_functions.php (class Form, ~.create_string_func_checkboxx, ~.print_insert_checkbox):
- added extended CHECKBOX with additional attributes argument
2010-02-24 juga
* quick_play.php, NEWS:
- added URL-argument 'message' to provide move-message
2010-02-21 juga
* tournaments/include/tournament.php (class Tournament, ~.isFlagSet, ~.formatFlags,
~.fillEntityData, ~.update_flags, ~.new_from_row, ~.getFlagsText,
~.get_edit_lock_tournament_status),
tournaments/include/tournament_globals.php,
tournaments/edit_lock.php (parse_edit_form),
tournaments/edit_tournament.php (parse_edit_form),
tournaments/manage_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
skins/dragon/screen.css, NEWS:
- added Tournament.Flags to store tournament-locks:
- Admin-Lock = set only by Admin for tourney-maintenance, blocks all read-write ops
- Register-Lock = prohibits registration by user
- Ladder-Lock = lock set by TD to ladder-maintenance, prohibits cron and user-ops
like registration, challenging and retreat from ladder
- Cron-Lock = tourney-specific lock, only set by cron, prohibit Ladder-Lock
- T-Admin can edit all lock-flags on edit-tournament page
- added edit-lock page to edit Tournament.Flags for locking
-----------
-- added tournament-flags for lock-status
ALTER TABLE Tournament
ADD Flags smallint unsigned NOT NULL DEFAULT '0' AFTER Status ;
-----------
* include/db_classes.php (EntityData.build_sql_update):
- for update added arg to omit update of ChangedBy-field
* include/time_functions.php (TimeFormat.echo_time_diff),
tournaments/ladder/view.php:
- show time-diff to players last-access-date for tournament-ladder-view
* include/game_functions.php (class GameAddTime, ~.add_time, ~.make_add_time_info,
~.allow_add_time_opponent, ~.add_time_opponent),
include/board.php (Board.load_from_db),
include/std_functions.php,
tournaments/game_admin.php (parse_edit_form, draw_game_end, calc_opponent,
draw_add_time),
game.php (draw_add_time, draw_game_info), NEWS:
- added add-time for TD on tournament game-admin page
- time-added by TD is stored in Moves.PosY bit #2
- refactored add-time and show-remaining-time to avoid redundancy using extracted funcs
- adjusted showing of add-time added by tournament-director
- bugfix: reset byoyomi-reset if not needed for time-types
- cleanup
* include/db_classes.php (EntityData.make_row):
- added make_row()-func to build row with entries from table-row
* include/time_functions.php (build_time_remaining),
show_games.php, status.php:
- refactored show-remaining-time to avoid redundancy
* include/db/games.php (Games.setByotype, ~.is_status_running):
- fix bug setting wrong-field for Byotype
- added is_status_running()-func
2010-02-20 juga
* tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_tournament.php, tournaments/register.php,
tournaments/ladder/edit_props.php:
- fix form-TEXTINPUT: removed additional option only needed for TEXTINPUTX
* tournaments/include/tournament_games.php (class TournamentGames, ~.update_score,
~.load_tournament_game_by_gid, ~.getStatusText, ~.get_admin_tournament_status),
tournaments/include/tournament.php (Tournament.getRoleText, ~.allow_edit_tournaments),
tournaments/include/tournament_globals.php,
tournaments/game_admin.php, gameinfo.php, NEWS:
- added tournament game-admin page for TDs to prematurely end tournament-game
- added link on game-info page to game-admin page
* tournaments/include/tournament_director.php (class TournamentDirector,
~.formatFlags, ~.persist, ~.fillEntityData, ~.build_query_sql,
~.new_from_row, ~.load_tournament_director, ~.getFlagsText),
tournaments/include/tournament_cache.php (class TournamentCache,
~.is_tournament_director),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
tournaments/edit_director.php (parse_edit_form)
tournaments/list_directors.php:
- added TournamentDirector.Flags handling admin-rights for TD to:
- set end of tournament-game: TD_FLAG_GAME_END
- add time to players of tournament-game: TD_FLAG_GAME_ADD_TIME
- removed isTournamentDirector()-func, replaced using load_tournament_director()-func
- adjusted load-funcs to skip loading of user for optimized query
-----------
-- added flags to handle admin-rights for TD
ALTER TABLE TournamentDirector
ADD Flags smallint unsigned NOT NULL DEFAULT '0' AFTER uid ;
-----------
* include/db/games.php (class Games), include/globals.php,
include/db/index.php, scripts/update_translation_pages.php,
include/std_functions.php:
- added db-entity-class for Games-table
- moved SCORE_/GAMEFLAGS_-consts to 'include/globals.php'
* tournaments/manage_tournament.php:
- show TD-roles including tournament admin-rights
* include/db_classes.php (class EntityData, ~.get_sql_value, ~.build_sql_update),
scripts/tests/EntityDataTest.php, scripts/tests/EntityTest.php,
tournaments/include/tournament_participant.php (class TournamentParticipant),
tournaments/include/tournament_properties.php (class TournamentProperties),
tournaments/include/tournament_rules.php (class TournamentRules):
- added field-type for FLOAT
- added option to build_sql_update()-func to return update-query in parts
* include/gui_functions.php (echo_image_gameinfo, echo_image_tournament_info):
- used globals within if-clauses
- fix bug: added $base_path where missing
2010-02-14 juga
* tournaments/include/tournament_rules.php (class TournamentRules, ~.to_string,
~.convertTournamentRules_to_GameRow, ~.convertTournamentRules_to_EditForm,
~.convertEditForm_to_TournamentRules, ~.create_game, ~.getHandicaptypeText,
~.convert_trule_handicaptype_to_stdhtype),
tournaments/include/tournament_helper.php (TournamentHelper.create_game_from_tournament_rules),
include/message_functions.php (game_settings_form),
tournaments/ladder/challenge.php,
tournaments/edit_rules.php,
tournaments/view_tournament.php (echo_tournament_rules),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added manual handicap-types BLACK/WHITE for tournaments:
- for ladder: challenger gets BLACK/WHITE color
- for round-robin: stronger player gets BLACK/WHITE color
- bugfix: casting komi-fields with float instead of int
-----------
-- added manual handicap-types BLACK/WHITE for tournaments
ALTER TABLE TournamentRules
MODIFY Handicaptype enum('CONV','PROPER','NIGIRI','DOUBLE','BLACK','WHITE') NOT NULL default 'CONV' ;
-----------
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row,
~.fill_ladder_challenge_range, ~.find_ladder_rating_pos, ~.verify_challenge,
~.calc_highest_challenge_rank, ~.formatChallengeRangeRating),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/challenge.php,
tournaments/manage_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added challenge-range option with ranks around theoretical pos in ladder
ordered by user-rating: TournamentLadderProps.ChallengeRangeRating
- default-value -32768 = option not used
-----------
-- added option for challenge-range for theoretical pos in ladder by rating-order
ALTER TABLE TournamentLadderProps
ADD ChallengeRangeRating smallint NOT NULL DEFAULT '-32768' AFTER ChallengeRangeRelative ;
-----------
* include/std_functions.php, include/globals.php:
- moved rating-const from 'include/std_functions.php' to 'include/globals.php'
* tournaments/ladder/view.php:
- adjusted style of challenges-out
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props, ~.new_from_row,
~.calc_highest_challenge_rank),
tournaments/ladder/edit_props.php (parse_edit_form),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added option challenge-range with percentage of ladder-users above current pos:
TournamentLadderProps.ChallengeRangeRelative
-----------
-- added optional percentage of ladder-users above current pos that can be challenged
ALTER TABLE TournamentLadderProps
ADD ChallengeRangeRelative tinyint unsigned NOT NULL DEFAULT '0' AFTER ChallengeRangeAbsolute ;
-----------
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.check_properties, ~.build_notes_props,
~.fill_ladder_challenge_range, ~.verify_challenge, ~.new_from_row),
tournaments/include/tournament_ladder.php (class TournamentLadder, ~.fillEntityData,
~.update_outgoing_challenges, ~.new_from_row),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/challenge.php, tournaments/ladder/view.php (build_action_row_str),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, skins/dragon/screen.css, NEWS:
- added max. number of outgoing ladder-challenges: TournamentLadderProps.MaxChallenges
- added current number of outgoing challenges: TournamentLadder.ChallengesOut
- ladder-view:
- added table-column with links to show-games-page with running tournament-games
of ladder-user
- show number of outgoing challenges for current user,
highlight if limit reached
- renamed TournamentLadder.MaxChallenged -> MaxChallengedIn
-----------
-- added max. number of outgoing ladder-challenges
ALTER TABLE TournamentLadderProps
ADD MaxChallenges tinyint unsigned NOT NULL DEFAULT '0' AFTER MaxDefensesStart2 ;
ALTER TABLE TournamentLadder
ADD ChallengesOut tinyint unsigned NOT NULL DEFAULT '0' ;
-----------
* show_games.php, status.php:
- cleanup: omit 3rd arg for TableHead-constructor if identical to 1st arg
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.build_notes_props, ~.fill_ladder_running_games, ~.verify_challenge,
~.calc_ticks_due_rematch_wait, ~.calc_rematch_wait_remaining_hours, ~.new_from_row,
~.echo_rematch_wait),
tournaments/include/tournament_ladder.php (class TournamentLadder),
tournaments/include/tournament_games.php (class TournamentGames, ~.fillEntityData,
~.new_from_row, ~.update_tournament_game_wait),
tournaments/include/tournament_helper.php (TournamentHelper.process_tournament_ladder_game_end),
tournaments/include/tournament_cache.php (class TournamentCache, ~.load_tournament,
~.load_tournament_ladder_props, ~.load_clock_ticks),
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/view.php,
tournaments/cron_tournaments.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
skins/dragon/screen.css, NEWS:
- added tournament-ladder option to configure how many hours to wait
to challenge same user again:
- if ChallengeRematchWait=0 a rematch can be started immediately by challenger
- keep tournament-games on added WAIT-status till rematch-waiting-time is due
- added db-field TournamentLadderProps.ChallengeRematchWait
- added db-field TournamentGames.TicksDue
- added WAIT-status for db-field TournamentGames.Status
- use '#CRON' for tourney-tables ChangedBy-fields
- for verify-challenge added check for same-user
- mark general info in ladder-view with CSS-style LadderInfo
-----------
-- added property to control waiting-time to rematch user
ALTER TABLE TournamentLadderProps
ADD ChallengeRematchWait smallint unsigned NOT NULL DEFAULT '0' AFTER ChallengeRangeAbsolute ;
ALTER TABLE TournamentGames
MODIFY Status enum('INIT','PLAY','SCORE','WAIT','DONE') NOT NULL default 'INIT',
ADD TicksDue int NOT NULL DEFAULT '0' AFTER Status,
DROP INDEX Status,
ADD INDEX Status_Ticks (Status,TicksDue) ;
-----------
* quick_status.php (loc_start_page), NEWS:
- added tournament-id in game-list
- added URL-arg 'no_cache' to omit Expires-header
* sgf.php:
- bugfix: reverted use_cache reading from URL-arg 'no_cache'
* include/globals.php, include/time_functions.php, include/form_functions.php:
- added clock to be used for tournament-game rematch-waiting
- moved/added CLOCK-related consts into 'include/globals.php'
- moved const SMALL_SPACING into 'include/globals.php'
2010-02-13 juga
* specs/db/dragon-ddl.sql:
- sync with current DGS db-schema (tourney-ladder-stuff, cleanup)
* tournaments/include/tournament_ladder.php (class TournamentLadder, ~.update_rank,
~.remove_user_from_ladder, ~.switch_user_rank, ~.add_participant_to_ladder,
~.move_up_ladder_part, ~.move_down_ladder_part, ~.seed_ladder, ~._process_game_end),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.getGameEndText),
tournaments/include/tournament_utils.php (TournamentUtils.calc_best_rank),
tournaments/ladder/admin.php, tournaments/ladder/retreat.php,
tournaments/ladder/view.php:
- fix processing of game-end for ladder-tournament:
- forbid to punish challenger for winning tournament-game on timeout
with game-end-actions: TGEND_CHALLENGER_LAST, TGEND_CHALLENGER_DELETE
- set BestRank/RankChanged on switch-user-rank, moving ladder-user on ladder
- additionally lock TournamentParticipant-table on removing ladder-user,
because processing game-end needs "nested" db-lock
- changed signature of TournamentLadder.remove_user_from_ladder-func
- for debug-mode log rank-change
- bugfixes
- changed TournamentLadder.BestRank: defaulting to initial-Rank
- fix ladder-view:
- don't allow challenging or retreating if not on tourney-PLAY-status
- show admin-ladder-link when in tourney-PAIR-status
* include/table_columns.php (Table.set_rows_per_page),
tournaments/ladder/view.php:
- set rows-per-page to found-rows to enforce single-page for table-navigation
* tournaments/include/tournament_helper.php (class TournamentHelper.process_tournament_ladder_game_end),
tournaments/cron_tournaments.php:
- moved processing of game-end for tournament-ladder into tournament-helper
to keep cron simple
* tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_REG):
- bugfix: corrected local-var access
* tournaments/include/tournament_template.php (TournamentTemplate.joinTournament),
tournaments/include/types/dgs_ladder.php (DgsLadderTournament.joinTournament),
tournaments/edit_participant.php, tournaments/register.php:
- registered-user joins ladder-tournament only if tournament on PLAY-status
* include/register_functions.php (UserRegistration.register_user):
- set cookied on demand specified by arg
* code_examples/filter_example2.php, code_examples/form_example2.php,
code_examples/test_clock_tick.php, code_examples/test_nigiri_random.php:
- increase script-security for open scripts: type-cast args, early-exit script
2010-02-10 juga
* tournaments/include/tournament_ladder.php (TournamentLadder.update_rank):
- bugfix: update TournamentLadder.BestRank if not set yet
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.setGameEndTimeoutWin, ~.setGameEndTimeoutLoss, ~.fillEntityData,
~.build_notes_props, ~.calc_game_end_action, ~.new_from_row, ~.getGameEndText),
tournaments/include/tournament_ladder.php (TournamentLadder._process_game_end),
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added/changed handling tournament-game-end won/lost by timeout
configured by TournamentLadderProps:
- use GameEndTimeoutWin on game-timeout won by challenger
- use GameEndTimeoutLoss on game-timeout lost by challenger
- processing game-end-actions: CH_LAST, CH_DEL; see 'specs/db/table-Tournaments.txt'
-----------
-- added property for handling tournament-game-end challenger-timeout
ALTER TABLE TournamentLadderProps
CHANGE GameEndTimeout GameEndTimeoutWin enum('NO_CHANGE','CH_ABOVE','CH_BELOW','SWITCH','DF_BELOW','DF_LAST','DF_DEL') NOT NULL DEFAULT 'DF_BELOW',
ADD GameEndTimeoutLoss enum('NO_CHANGE','CH_LAST','CH_DEL') NOT NULL DEFAULT 'CH_LAST' ;
-----------
* tournaments/cron_tournaments.php:
- load tournament-games to process ordered by tourney-ID and last-changed-date
* tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_end):
- bugfix: missed global $NOW
* include/classlib_game.php (NextGameOrder.make_timeout_date),
include/make_game.php (create_game):
- fix bug creating new game choosing used clock:
ignore weekend if player on vacation
- fix bug to calculate games timeout-date chosing to be used clock:
ignore weekends and vacation
* tournaments/include/tournament_ladder_props.php (TournamentLadderProps.build_notes_props):
- adjusted notes-text, added note about running games on user-removal
2010-02-09 juga
* tournaments/include/tournament_ladder.php (TournamentLadder.update_rank,
~.remove_user_from_ladder, ~.process_game_end, ~._process_game_end),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.calc_game_end_action),
tournaments/include/tournament_games.php (TournamentGames.update_tournament_game_end),
tournaments/cron_tournaments.php (process_tournament_ladder_game_end),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- process tournament-game ending for ladder-tournament
- game-end-handling configured by TournamentLadderProps:
- use GameEndNormal on score/resignation
- use GameEndJigo on jigo
- use GameEndTimeout on game-timeout
- processing game-end-actions: NO_CHANGE, CH_ABOVE, CH_BELOW, SWITCH,
DF_BELOW, DF_LAST, DF_DEL; see 'specs/db/table-Tournaments.txt'
- set TournamentGames.Status/Score/EndTime/Lastchanged/ChangedBy-fields
- lock TournamentLadder-table for processing game-end-actions
- tournament-cron: use tournament-cache to reduce db-load
- tournament-cron: check for ALLOW_TOURNAMENTS-config
-----------
-- handle tournament-game-ending for tournament-cron
ALTER TABLE TournamentGames
DROP INDEX tid_Status,
ADD INDEX tid (tid),
ADD INDEX Status (Status) ;
-----------
* clock_tick.php, daily_cron.php, halfhourly_cron.php,
tournaments/cron_tournaments.php:
- bugfix initializing clock-diff
* clock_tick.php, confirm.php, specs/db/table-Tournaments.txt:
- set TG.Score on tournament-game-end
* tournaments/include/tournament_cache.php (class TournamentCache):
- use tournament-cache to reduce db-load for tournament-cron
* include/db_classes.php (EntityData.get_sql_value, ~.build_changed_by,
~.build_update_part_changed_by):
- RTRIM()'ed ChangedBy-field on update
- added static func to build field-clause for ChangedBy-field
- use '???' if player-unknown, e.g. running from cron
* include/connect2mysql.php (ta_begin, ta_end):
- add error_log()'ing for ta_begin/end()-funcs controlled by DGB_QUERY-const
2010-02-07 juga
* include/quick_common.php, cron_chained.php, clock_tick.php, daily_cron.php,
halfhourly_cron.php:
- cleanup of chained-cron: chain crons only with 'cron_chained.php'
* tournaments/include/tournament_games.php (TournamentGames.load_tournament_games,
~.update_tournament_game_end),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.verify_challenge),
tournaments/include/tournament_globals.php,
tournaments/ladder/view.php, tournaments/cron_tournaments.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-data.sql, specs/db/table-Tournaments.txt,
confirm.php (do_add_time), clock_tick.php, INSTALL:
- signal game-end for tournament by setting TournamentGames.Status=SCORE
- added cron with Clock.ID=205 for tournaments-stuff running every 15 mins
- added HOT-section with ta_begin/end() for db-updates
-----------
-- added SCORE-status for signaling game-end
ALTER TABLE TournamentGames
MODIFY Status enum('INIT','PLAY','SCORE','DONE') NOT NULL DEFAULT 'INIT',
ADD INDEX gid (gid) ;
-- Clock for tournament-cron
INSERT INTO Clock SET ID=205, Lastchanged=0 ;
-----------
* include/connect2mysql.php (build_query_in_clause):
- added function to build SQL-clause for IN-expression
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.setGameEndNormal, ~.setGameEndJigo, ~.setGameEndTimeout, ~.fillEntityData,
~.build_notes_props, ~.new_from_row, ~.getGameEndText),
tournaments/include/tournament_globals.php,
tournaments/ladder/edit_props.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added ladder-tournament properties for handling game-end
-----------
-- added properties for handling tournament-game-end
ALTER TABLE TournamentLadderProps
ADD GameEndNormal enum('CH_ABOVE','CH_BELOW','SWITCH','DF_BELOW','DF_LAST') NOT NULL DEFAULT 'CH_ABOVE',
ADD GameEndJigo enum('NO_CHANGE','CH_ABOVE','CH_BELOW') NOT NULL DEFAULT 'CH_BELOW',
ADD GameEndTimeout enum('NO_CHANGE','CH_ABOVE','CH_BELOW','SWITCH','DF_BELOW','DF_LAST','DF_DEL') NOT NULL DEFAULT 'DF_BELOW' ;
-----------
* include/utilities.php (array_intersect_key_values):
- added function to intersect array-map with array-keys
2010-02-05 juga
* tournaments/view_tournament.php, show_games.php, NEWS:
- show tournament-games for specific tournament given by URL-arg 'tid'
for all view-modi for my/all running/finished games
- added links to show tournament-games for my/all running/finished games
* tournaments/include/tournament_ladder.php (class TournamentLadder,
~.insert, ~.fillEntityData, ~.update_incoming_challenges, ~.new_from_row,
~.add_participant_to_ladder),
tournaments/include/tournament_ladder_props.php (class TournamentLadderProps,
~.fillEntityData, ~.calc_max_defenses, ~.check_properties, ~.build_notes_props,
~.fill_ladder_challenge_range, ~.verify_challenge, ~.new_from_row)
tournaments/include/types/dgs_ladder.php (DgsLadderTournament.createTournament),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, skins/dragon/screen.css,
tournaments/ladder/challenge.php, tournaments/ladder/edit_props.php (parse_edit_form),
tournaments/ladder/view.php, tournaments/manage_tournament.php:
- added max. number of incoming ladder-challenges: TournamentLadderProps.MaxDefenses*
- added current number of incoming challenges: TournamentLadder.ChallengesIn
-----------
-- added max. number of incoming ladder-challenges
ALTER TABLE TournamentLadderProps
ADD MaxDefenses tinyint unsigned NOT NULL,
ADD MaxDefenses1 tinyint unsigned NOT NULL DEFAULT '0',
ADD MaxDefenses2 tinyint unsigned NOT NULL DEFAULT '0',
ADD MaxDefensesStart1 tinyint unsigned NOT NULL DEFAULT '0',
ADD MaxDefensesStart2 tinyint unsigned NOT NULL DEFAULT '0' ;
ALTER TABLE TournamentLadder
ADD ChallengesIn tinyint unsigned NOT NULL DEFAULT '0' ;
-----------
2010-02-03 juga
* tournaments/include/tournament_games.php (TournamentGames.load_tournament_game_by_uid),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.build_notes_props,
~.fill_ladder_running_games, ~.verify_challenge),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
tournaments/ladder/view.php:
- restrict challenges to one running game per ladder-user
-----------
-- [index] added index on player uids
ALTER TABLE TournamentGames
ADD KEY Challenger_uid (Challenger_uid),
ADD KEY Defender_uid (Defender_uid ) ;
-----------
* tournaments/ladder/challenge.php:
- show confirm-button only if no error detected for challenge
* include/gui_functions.php (echo_notes), skins/dragon/screen.css:
- use CSS-class for <ul>-elements for tighter output of nested lists
2010-02-02 juga
* tournaments/include/tournament_games.php (class TournamentGames,
~.load_tournament_games),
tournaments/include/tournament_ladder.php (class TournamentLadder,
~.add_running_game, ~.get_running_games, ~.build_linked_running_games),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.fill_ladder_challenge_range,
~.fill_ladder_running_games),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
tournaments/ladder/view.php:
- show list of running tournament games for incoming challenges
at defenders position in ladder-view with rank of challenger:
link "[#challenger-rank]" to page with tournament-game
- adjust key: combine index on tid with Status
-----------
-- adjust key: combine index on tid with Status
ALTER TABLE TournamentGames
DROP KEY tid ;
ALTER TABLE TournamentGames
ADD KEY tid_Status (tid,Status) ;
-----------
2010-02-01 juga
* tournaments/include/tournament_ladder_props.php (TournamentLadderProps.make_ladder),
tournaments/ladder/view.php:
- added index on ListIterator with TournamentLadder-objects on Rank & uid
for optimized enhancing ladder-scans
- renamed method: make_ladder_info -> make_ladder
* include/std_classes.php (class ListIterator, ~.clearIndex, ~.addIndex,
~.getIndexMap, ~.getIndexValue, ~.to_string, ~.addItem, ~.rescanIndex):
- added index on row-fields for ListIterator
2010-01-31 juga
* tournaments/include/tournament.php (Tournament.build_info),
include/game_functions.php (class GameAddTime.add_time, ~.allow_add_time_opponent),
scripts/tests/GameAddTimeTest.php, confirm.php,
game.php (draw_game_info), NEWS:
- forbid adding-time and game-deletion for tournament-games
- show tournament-info with links in game-info-box:
scope, type, tourney-ID, status, title
- bugfixes, minor changes
* gameinfo.php, NEWS:
- added tournament-info with links: tourney-ID, scope, type, title, status, rounds
- added game-info link at Game-ID to refresh page
* show_games.php, status.php, skins/dragon/screen.css, NEWS:
- show tourney-icon for tournament-games linked to tournament-view
- Games-page: added filter to search for tournament-games
* include/gui_functions.php (echo_image_gameinfo, echo_image_tournament_info):
- show tourney-icon for tournament-games with or without link to tournament-view
* people.php:
- added credits for tourney-icon from
http://www.iconarchive.com/show/sport-icons-by-icons-land/Trophy-Gold-icon.html
* tournaments/include/tournament_rules.php (TournamentRules.create_game),
include/make_game.php (create_game),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- set Games.tid on creating game for tournament-reference
-----------
-- add tournament-reference in Games-table to tournament
ALTER TABLE Games
ADD tid int NOT NULL DEFAULT '0' AFTER ID ;
ALTER TABLE Games
ADD KEY tid (tid) ;
-----------
* tournaments/include/tournament_ladder.php (TournamentLadder.new_tournament_game),
tournaments/include/tournament_ladder_props.php (TournamentLadderProps.make_ladder_info,
~.calc_highest_challenge_rank, ~.verify_challenge),
tournaments/include/tournament_rules.php (class TournamentRules, ~.create_game,
~.convertTournamentRules_to_GameRow, ~.convertTournamentRules_to_EditForm),
tournaments/include/tournament_helper.php (class TournamentHelper),
tournaments/ladder/challenge.php,
include/error_codes.php (ErrorCode.init), NEWS:
- create game and tournament-game for verified challenge
- fix bug handling StdHandicap-field: missed bool <-> Y|N conversion
- added error-code 'tournament_participant_unknown'
* include/make_game.php (create_game):
- fixed bug for making status-games-timeout-date:
weekend-clock-offset has been added twice
* include/db_classes.php (EntityData.get_sql_value):
- handling 0-value for dates
* include/classlib_user.php (class User, ~.to_string, ~.new_from_row):
- added full Players-row into User-object: User->urow
* include/connect2mysql.php (ta_begin, ta_end):
- allow ta_begin/end() to be nested preserving first ignore-user-abort
until all transactions are "closed"
* tournaments/include/tournament_participant.php (class TournamentParticipant,
~.to_string, ~.need_rating, ~.fillEntityData, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- cleanup: removed unused db-field TournamentParticipant.AuthToken
- cleanup: removed unused function TournamentParticipant.need_rating()
-----------
-- [unused] removed unused field
ALTER TABLE TournamentParticipant
DROP COLUMN AuthToken ;
-----------
* tournaments/include/tournament_games.php (class TournamentGames),
tournaments/include/tournament_globals.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added table for tournament games
-----------
-- added table for tournament games
CREATE TABLE TournamentGames (
ID int NOT NULL auto_increment,
tid int NOT NULL,
gid int NOT NULL DEFAULT '0',
Status enum('INIT','PLAY','DONE') NOT NULL DEFAULT 'INIT',
Flags smallint unsigned NOT NULL DEFAULT '0',
Lastchanged datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
ChangedBy varchar(54) NOT NULL DEFAULT '',
Challenger_uid int NOT NULL,
Challenger_rid int NOT NULL,
Defender_uid int NOT NULL,
Defender_rid int NOT NULL,
StartTime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
EndTime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
Score decimal(5,1) NOT NULL DEFAULT '0.0',
PRIMARY KEY (ID),
KEY tid (tid)
) ENGINE=MyISAM;
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- db-cleanup field-size DECIMAL-type fields
- db-cleanup for DECIMAL-type fields for which internal representation
changed for MySQL-upgrade from v4 to v5: string -> byte
-----------
-- [field-size] COL Games.Score : dec(7,1) -> dec(5,1)
-- [cleanup] COL Games.Score : migrate MySQL4 -> MySQL5 interal storage
-- following must be 0
SELECT COUNT(*) FROM Games WHERE Score NOT BETWEEN -2000 AND 2000 ;
-- compare Data_length for table before & after field-migration
SHOW TABLE STATUS LIKE 'Games' ;
-- migrate MySQL4 (decimal string-type) -> MySQL5 (decimal byte-type)
ALTER TABLE Games
ADD MIGR_Score decimal(5,1) NOT NULL DEFAULT '0.0' AFTER Score ;
UPDATE Games
SET MIGR_Score = Score ;
ALTER TABLE Games
DROP COLUMN Score ;
ALTER TABLE Games
CHANGE MIGR_Score Score decimal(5,1) NOT NULL DEFAULT '0.0' ;
ALTER TABLE Games
ADD KEY Score (Score) ;
SHOW TABLE STATUS LIKE 'Games' ;
-- [field-size] COL Games.Komi : dec(6,1) -> dec(4,1)
-- [cleanup] COL Games.Komi : migrate MySQL4 -> MySQL5 interal storage
-- following must be 0
SELECT COUNT(*) FROM Games WHERE Komi NOT BETWEEN -200 AND 200 ;
-- compare Data_length for table before & after field-migration
SHOW TABLE STATUS LIKE 'Games' ;
-- migrate MySQL4 (decimal string-type) -> MySQL5 (decimal byte-type)
ALTER TABLE Games
ADD MIGR_Komi decimal(4,1) NOT NULL DEFAULT '6.5' AFTER Komi ;
UPDATE Games
SET MIGR_Komi = Komi ;
ALTER TABLE Games
DROP COLUMN Komi ;
ALTER TABLE Games
CHANGE MIGR_Komi Komi decimal(4,1) NOT NULL DEFAULT '6.5' ;
SHOW TABLE STATUS LIKE 'Games' ;
-- [field-size] COL Waitingroom.Komi : dec(6,1) -> dec(4,1)
-- [cleanup] COL Waitingroom.Komi : migrate MySQL4 -> MySQL5 interal storage
-- following must be 0
SELECT COUNT(*) FROM Waitingroom WHERE Komi NOT BETWEEN -200 AND 200 ;
-- compare Data_length for table before & after field-migration
SHOW TABLE STATUS LIKE 'Waitingroom' ;
-- migrate MySQL4 (decimal string-type) -> MySQL5 (decimal byte-type)
ALTER TABLE Waitingroom
ADD MIGR_Komi decimal(4,1) NOT NULL DEFAULT '6.5' AFTER Komi ;
UPDATE Waitingroom
SET MIGR_Komi = Komi ;
ALTER TABLE Waitingroom
DROP COLUMN Komi ;
ALTER TABLE Waitingroom
CHANGE MIGR_Komi Komi decimal(4,1) NOT NULL DEFAULT '6.5' ;
SHOW TABLE STATUS LIKE 'Waitingroom' ;
-- [field-size] COL Waitingroom.AdjKomi : dec(6,1) -> dec(4,1)
ALTER TABLE Waitingroom
MODIFY AdjKomi decimal(4,1) NOT NULL default '0.0' ;
-- [field-size] COL TournamentRules.Komi : dec(6,1) -> dec(4,1)
-- [field-size] COL TournamentRules.AdjKomi : dec(6,1) -> dec(4,1)
ALTER TABLE TournamentRules
MODIFY Komi decimal(4,1) NOT NULL default '6.5',
MODIFY AdjKomi decimal(4,1) NOT NULL default '0.0' ;
-----------
2010-01-30 juga
* include/error_codes.php (ErrorCode.init),
tournaments/edit_round.php, tournaments/ladder/challenge.php:
- die with new error 'tournament_wrong_status' if on wrong tourney-status
- replaced specific error-code 'tournament_miss_rules' with 'bad_tournament'
* tournaments/include/tournament_ladder.php (TournamentLadder.build_rank_kept),
tournaments/ladder/challenge.php, tournaments/ladder/view.php, NEWS:
- added ladder-challenge page to confirm or cancel challenge
- moved building of Rank-Kept info into TournamentLadder-class
* include/std_functions.php (make_menu):
- bugfix catching division-by-zero for empty menu-array while making menus
* tournaments/include/tournament_ladder_props.php (class TournamentLadderProps),
tournaments/include/tournament_status.php (TournamentStatus.check_conditions_status_REG),
tournaments/include/tournament_template.php (TournamentTemplate.checkProperties),
tournaments/include/types/dgs_ladder.php (DgsLadderTournament.createTournament, ~.checkProperties),
tournaments/manage_tournament.php (make_links_ttype_specific),
tournaments/view_tournament.php,
tournaments/ladder/edit_props.php,
tournaments/ladder/view.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added ladder-specific properties
- absolute challenge-range = challenge allowed for X positions above own position
- added editor for ladder-specific props with preview
- show ladder-specific props in ladder-view
- show which users can be challenged for current user in ladder-view
- Wizard: insert TournamentLadderProps to create new DGS-ladder
with default 10 for absolute challenge-range
-----------
-- added table for ladder tournament properties
CREATE TABLE TournamentLadderProps (
tid int(11) NOT NULL,
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
ChangedBy varchar(54) NOT NULL default '',
ChallengeRangeAbsolute smallint NOT NULL DEFAULT '0',
PRIMARY KEY (tid)
) ENGINE=MyISAM;
-----------
* include/std_classes.php (ListIterator.resetListIterator):
- added function to reset iterating of ListIterator
* tournaments/include/tournament_ladder.php (class TournamentLadder):
- added non-DB field AllowChallenge that is true if challenge is allowed in user-context
* tournaments/include/tournament_utils.php (TournamentUtils.isNumberOrEmpty):
- added arg for number-check to check for negative numbers
* tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_rules.php, tournaments/edit_tournament.php:
- fix array-merging of error-list with += which only works ok on hashes
- replace persist() using additional query by direct update(), wizard creates needed tables
2010-01-28 juga
* admin_password.php, NEWS:
- add 2nd HTML-form to show email (if existing) on admin-new-password page
* tournaments/include/tournament_participant.php (TournamentParticipant.getLinkTextRegistration),
include/classlib_user.php (class User, ~.to_string, ~.new_from_row),
include/error_codes.php (ErrorCode.init), include/quick_common.php,
admin_show_users.php, admin_users.php,
tournaments/edit_participant.php, tournaments/register.php,
tournaments/list_participants.php, tournaments/list_tournaments.php,
tournaments/view_tournament.php, tournaments/ladder/admin.php,
tournaments/wizard.php, NEWS:
- added admin-options to deny tournament creation and registration for NEW tournaments,
user can continue in tourneys he's already registered
* tournaments/include/types/dgs_ladder.php (DgsLadderTournament.createTournament):
- added ta_begin/end-transactional enclosing to create tournament with multi-table-updates
* tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/register.php:
- keep bottom-links in nearly same order for different tournament-pages
* tournaments/view_tournament.php:
- added tourney-ID to title
* tournaments/include/tournament_director.php (TournamentDirector.count_tournament_directors,
~.load_user_row, ~.assert_min_directors),
include/error_codes.php (ErrorCode.init),
tournaments/edit_director.php, tournaments/list_directors.php:
- assure min. number of tournament directors if not in NEW/ADMIN/DELETED tourney-status
* include/std_classes.php (ListIterator.getItemCount):
- added function to get number of items stored in ListIterator
* tournaments/include/tournament.php (Tournament.build_info):
- added tourney-ID in build-tourney-info for titles
2010-01-27 juga
* tournaments/include/tournament_template.php (TournamentTemplate.joinTournament),
tournaments/include/types/dgs_ladder.php (DgsLadderTournament.joinTournament),
tournaments/edit_participant.php (send_register_notification),
tournaments/register.php:
- join ladder-tournament if user is finally REGISTERed by
- user accepting invitation
- user registering by him/herself
- tournament-director accepting user-application
- add link in tourney-invite-notification to edit tourney-user-registration
* tournaments/include/tournament_ladder.php (TournamentLadder.add_user_to_ladder),
tournaments/ladder/admin.php:
- changed signature of add_user_to_ladder(tid,User-object) -> (tid,uid)
* tournaments/include/tournament_ladder.php (class TournamentLadder,
~.remove_user_from_ladder, ~.change_user_rank, ~.switch_user_rank,
~.add_participant_to_ladder, ~.move_up_ladder_part, ~.move_down_ladder_part,
~.seed_ladder):
- lock table TournamentLadder for multiple SQL-statements on same table to
- remove user from ladder
- change rank of ladder-user
- seed ladder
- update TournamentLadder.BestRank + RankChanged for
- switching places in ladder if BestRank set already,
- moving ladder-users up or down one rank
- seeding ladder
- set RankChanged to default-value, i.e. unset, for newly added ladder-user
- changed nomenclature for object-methods in db-query-debug-message
* include/connect2mysql.php (db_lock, db_unlock),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/README.developers, INSTALL:
- added function to support table-locking
- need access-right LOCK-TABLES grant for DGS-user
-----------
-- grant access-right to lock tables to DGS db-user
-- Lookup your respective configuration in 'include/config-local.php'
GRANT LOCK TABLES ON DB_NAME.* TO MYSQLUSER@MYSQLHOST ;
-----------
* tournaments/ladder/view.php:
- added table-column 'Rank Kept' with relative-time rank is kept for ladder-users
- for TDs show tournament-participant-list in admin-mode
* tournaments/include/tournament_participant.php,
tournaments/include/tournament_globals.php:
- moved TournamentParticipant-consts to tournament_globals.php
* include/quick_common.php:
- added const SECS_PER_HOUR
* statisticspng.php:
- optimize aggregrate-SQL MAX(func(col)) -> func(MAX(col))
2010-01-26 juga
* tournaments/manage_tournament.php, tournaments/ladder/admin.php:
- added Edit-Ladder to remove ladder-user and change rank of ladder-users
- added description about Admin/Edit-Ladder functionality
- added 4th step PLAY-phase
* tournaments/include/tournament_status.php (TournamentStatus.check_view_status),
tournaments/ladder/view.php (prepare_update_rank, admin_edit_ladder_extend_table_form),
tournaments/ladder/retreat.php,
skins/dragon/screen.css:
- added functionality in restricted admin-mode for Edit-Ladder to remove ladder-user and change rank of ladder-users
- added way for user to retreat from ladder also removing tourney user registration
- allow viewing of ladder only on certain tourney-status PLAY|CLOSED for user, additional on PAIR for TD
- added link in bottom bar for ladder-user to retreat from ladder also removing tourney user registration
- use CSS to emphasize current user in ladder
* tournaments/include/tournament_ladder.php (TournamentLadder.remove_user_from_ladder,
~.change_user_rank, ~.load_max_rank, ~.load_rank, ~.load_tournament_ladder_by_user,
~.load_tournament_ladder_by_rank, ~.add_participant_to_ladder, ~.move_up_ladder_part,
~.move_down_ladder_part, ~.get_view_ladder_status):
- fix removal of user from ladder:
- move below ladder-users one rank up
- optimized check if user removed from ladder
- added function to support:
- changing of user-rank moving up or down in ladder
- switching rank-places of two users in ladder using atomar/optimized SQL-statement
- load rank of ladder-user
- loading ladder-user by TournamentLadder.uid or .rid
- loading ladder-user by TournamentLadder.Rank
- move ladder-part up or down by one rank
- decision with authorisation about viewing ladder for TD or user
* include/table_columns.php (class Table, ~.make_table_form, ~.make_table):
- added/refactored method to pass-out Form-object before printing and making-table
* tournaments/edit_participant.php:
- show Admin-user link in bottom bar only on tourney-status PAIR|PLAY
* tournaments/include/tournament_utils.php (TournamentUtils.build_num_range_sql_clause,
~.calc_best_rank):
- added function to build SQL-clause for number range
- added function to calculate new best-rank for TournamentLadder.BestRank
* tournaments/include/types/dgs_ladder.php (DgsLadderTournament.createTournament):
- fix bug using object-method createError()
* tournaments/view_tournament.php:
- cleanup: less db-queries
2010-01-24 juga
* tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_rules.php, tournaments/edit_status.php,
tournaments/edit_tournament.php, tournaments/ladder/admin.php,
tournaments/ladder/view.php, tournaments/list_directors.php,
tournaments/list_participants.php, tournaments/manage_tournament.php,
tournaments/register.php, tournaments/view_tournament.php:
- adjusted bottom-menu link-texts:
- "View this tournament" -> "Tournament info"
- "Manage this tournament" -> "Manage tournament"
* tournaments/include/tournament_participant.php (class TournamentParticipant.authorise_delete,
~.authorise_edit_customized, ~.authorise_edit_register_status),
tournaments/register.php,
tournaments/edit_participant.php:
- restrict customized-editing, deleting TP and status-change
to certain tournament-status (REG|PLAY) and TP-status (<>REG),
hide inputs when change not allowed
- show current tournament-status
- for edit-TP: added link in bottom bar to admin-ladder-user
* tournaments/ladder/admin.php (add_form_edit_user):
- added removal of ladder-users for ladder-only or with TP-registration
- added consistency-checks on adding and removing ladder-users
- allow restricted editing also for PLAY-tourney-status
- added uid in form-URL if available for refresh add-status
- added sub-section headers
* tournaments/include/tournament_ladder.php (class TournamentLadder.remove_user_from_ladder,
~.load_tournament_ladder_by_uid, ~.add_user_to_ladder, ~.get_edit_tournament_status):
- added functions to support admin of ladder-users: add-user, remove-user
- allow editing of TP also for PLAY-tourney-status
* tournaments/view_tournament.php:
- added ladder-view in new section 'Tournament games'
* tournaments/include/tournament_ladder.php (class TournamentLadder.seed_ladder,
~.add_participant_to_ladder),
tournaments/ladder/view.php, skins/dragon/screen.css:
- mark own row in tournament-ladder with light blue background
- show ladder-users current and best rank, show best-rank only if not 0
* tournaments/include/tournament_status.php (TournamentStatus.check_action_status):
- fixed bug in check_action_status: used given error-message-format
- removed unused method 'check_register_status'
* include/table_columns.php (Table.make_tablerow):
- added additional table-row-class-attribute 'extra_class'
* include/error_codes.php:
- added error-code for invalid TP-status
2010-01-23 juga
* tournaments/include/tournament_ladder.php (class TournamentLadder, ~.insert,
~.update, ~.delete, ~.fillEntityData, ~.check_participant_registrations),
tournaments/include/tournament_participant.php (class TournamentParticipant,
~.load_tournament_participants_registered),
tournaments/include/tournament_status.php (class TournamentStatus, ~.check_conditions_status_PLAY),
tournaments/include/tournament_template.php (class TournamentTemplate, ~.checkParticipantRegistrations),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament, ~.checkParticipantRegistrations),
tournaments/edit_properties.php (parse_edit_form):
- implemented check for PAIR->PLAY tournament-status change
- added tournament-type specific limits for min/max participants
* tournaments/include/tournament_ladder.php (class TournamentLadder, ~.load_max_rank,
~.add_user_to_ladder, ~.add_participant_to_ladder, ~.delete_ladder, ~.seed_ladder),
tournaments/include/tournament_properties.php (TournamentProperties.build_ladder_seed_order),
tournaments/include/tournament_globals.php, tournaments/ladder/admin.php,
tournaments/manage_tournament.php, scripts/update_translation_pages.php, NEWS:
- added admin-interface for ladder-tournament for TD
- seed ladder with certain seed-order by:
current-rating, tournament-rating, register-time, random
- delete ladder with confirmation
- add single registered tournament-participant to ladder
* tournaments/include/tournament_participant.php (TournamentParticipant.get_edit_tournament_status),
tournaments/register.php:
- restricted editing of user-registration for user and participant-edit for TD:
deactivated PAIR -> REGISTER|PLAY
* tournaments/ladder/view.php:
- added number of registered users for ladder
* include/connect2mysql.php (ta_begin, ta_end):
- added for multi-table inserts: transaction-start/end:
no real DB-TA, but at least can not be broken by user-abort
2010-01-19 juga
* tournaments/manage_tournament.php:
- added start-phase to prepare ladder-tournament: view ladder
* tournaments/include/tournament_ladder.php (class TournamentLadder, ~.fillEntityData, ~.new_from_row),
tournaments/ladder/view.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added table-field TournamentLadder.RankChanged to indicate when TPs rank
has changed by TP losing or winning
2010-01-18 juga
* tournaments/include/tournament.php (Tournament.build_info),
tournaments/ladder/view.php,
include/classlib_userconfig.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added viewing of tournament-ladder showing entries from TournamentLadder-table
- added table-column-set for saving columns of tournament-ladder-view
-----------
-- table-column-set for tournament-ladder-view
ALTER TABLE ConfigPages
ADD ColumnsTournamentLadderView int NOT NULL DEFAULT -1 ;
-----------
* tournaments/include/tournament_ladder.php (class TournamentLadder),
tournaments/ladder/index.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added TournamentLadder-table to keep track of Ladder-type tournament
-----------
-- added table to keep track of Ladder-type tournament
CREATE TABLE TournamentLadder (
tid int(11) NOT NULL,
rid int(11) NOT NULL,
uid int(11) NOT NULL,
Created datetime NOT NULL default '0000-00-00 00:00:00',
RankChanged datetime NOT NULL default '0000-00-00 00:00:00',
Rank smallint unsigned NOT NULL DEFAULT '0',
BestRank smallint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (tid,rid),
KEY uid (uid),
KEY Rank (tid,Rank)
) ENGINE=MyISAM;
-----------
* tournaments/include/tournament_status.php (class TournamentStatus, ~._load_tprops,
~.check_conditions_status_REG, ~.check_basic_conditions_status_change,
~.check_conditions_status_PAIR),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added check-conditions for status-change REG->PAIR
- check min/max participant-count
- check registration-restrictions for all registered users
- extracted basic checks on tournament-title/description/director in separate check-method,
added check for status-changes to REG/PAIR/PLAY
- added index for TournamentProperties-status
-----------
-- added index for TP-status
ALTER TABLE TournamentParticipant
DROP INDEX tid ;
ALTER TABLE TournamentParticipant
ADD INDEX tid_status (tid,Status) ;
-----------
* tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration):
- check max-count on REGISTERed tournament-participants
* tournaments/edit_properties.php (parse_edit_form):
- for editing registration-properties: assure min < max tournament-participants
2010-01-17 juga
* tournaments/include/tournament_properties.php (class TournamentProperties.checkUserRegistration),
tournaments/edit_participant.php, tournaments/register.php:
- differ tournament-user-restrictions into errors and warnings
- errors always prohibit registration
- warnings are ignored but shown for existing TournamentParticipants for TD and user
- warnings must be explicitly ignored for new users by TD
- warnings will be errors for new users by TD and user
- warnings are not shown if TP on REGISTER-status
- show warnings as extra list in registration-restriction section
* include/db_classes.php (class Entity; class EntityData.get_sql_value,
~.build_changed_by, ~.build_sql_insert, ~.build_sql_update),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
tournaments/edit_participant.php,
tournaments/edit_properties.php,
tournaments/edit_rules.php,
tournaments/edit_status.php,
tournaments/edit_tournament.php,
tournaments/include/tournament.php (class Tournament, ~.fillEntityData, ~.new_from_row),
tournaments/include/tournament_participant.php (class TournamentParticipant,
~.to_string, ~.fillEntityData, ~.new_from_row),
tournaments/include/tournament_properties.php (class TournamentProperties,
~.fillEntityData, ~.new_from_row),
tournaments/include/tournament_rules.php (class TournamentRules,
~.to_string, ~.fillEntityData, ~.new_from_row),
tournaments/include/tournament_utils.php (TournamentUtils.buildLastchangedBy),
tournaments/manage_tournament.php,
tournaments/register.php:
- added changed-by field for tournament-tables showing users, that last updated data-row
- adjusted field-date-names 'Last changed date' -> 'Last changed', 'Creation date' -> 'Created'
-----------
-- added changed-by field
ALTER TABLE Tournament
ADD ChangedBy varchar(54) NOT NULL DEFAULT '' AFTER Lastchanged ;
ALTER TABLE TournamentProperties
ADD ChangedBy varchar(54) NOT NULL DEFAULT '' AFTER Lastchanged ;
ALTER TABLE TournamentRules
ADD ChangedBy varchar(54) NOT NULL DEFAULT '' AFTER Lastchanged ;
ALTER TABLE TournamentParticipant
ADD ChangedBy varchar(54) NOT NULL DEFAULT '' AFTER Lastchanged ;
-----------
2010-01-16 juga
* tournaments/edit_participant.php (build_new_status_choices, parse_edit_form,
send_register_notification),
tournaments/register.php (parse_edit_form),
specs/db/table-Tournaments.txt:
- changed tournament participants editor
- defined new register-status transitions for user and TD for
tournament-registration, see 'specs/db/table-tournaments.txt'
- send server-messages when TD changes user-registration-status
- registration-restrictions disallow user to register also for tournament-admin
- allow rounds-edit only if tournament has more than 1 round
- added cancel for editing too
- show preview for admin- and user-message
- added more data about user-registration (old/new status/flags)
- fixed bugs for editing user-registration:
copy-rating, parse URL-args for show-user, array-merging
- synchronized TP-editor with user-registration, adjusted GUI
* tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration):
- added check for rating-use-mode COPY_CUSTOM if there's a valid Dragon-rating
OR tournament-rating
* tournaments/include/tournament_utils.php (TournamentUtils.buildErrorListString):
- enhanced error-list builder with option for <ul>-list and embedding into table-cell
* include/message_functions.php (message_info_table):
- bugfix: don't show initial-thread icon if it is no thread
2010-01-11 juga
* tournaments/include/tournament_utils.php,
tournaments/edit_director.php,
tournaments/edit_participant.php,
tournaments/edit_properties.php,
tournaments/edit_round.php,
tournaments/edit_rules.php,
tournaments/edit_status.php,
tournaments/edit_tournament.php:
- replace "<span class=..>str</span>" by span(..)-func-call in gui_functions.php
* tournaments/include/tournament_factory.php (TournamentFactory.getTournamentTypes),
tournaments/include/tournament_template.php (class TournamentTemplate),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament),
include/error_codes.php (ErrorCode.init),
tournaments/wizard.php (build_tourney_type_radio):
- check if user is allowed to create selected type of tournament
- added tournament-type title
- added attribute to configure if tournament-creation requires tournament-admin
- show admin-required types with disabled radio-buttons
- scan list with available tournament-types using tournament-factory
* include/form_functions.php (Form.create_string_func_radiobuttons,
~.create_string_func_radiobuttonsx, ~.print_insert_radio_buttonsx,
~.parse_input_standard_attributes, ~.get_input_attbs):
- added RADIOBUTTONSX-elementtype with additional attributes to disable radio-button
* tournaments/register.php (parse_edit_form, build_participant_notes):
- enhanced tournament-registration with parse-edit-form (better error-parsing)
- added checks for custom-rating and start-round
- ask custom-rating only if needed and allowed by rating-use-mode
- check if registration allowed for tourney-status, properties and user-rating
- init participant-status for new registration to APPLY or REGISTER
- update participant-status to APPLY for edits of custom-rating if different
to current-user-rating and starting-round
- copy user-rating to tournament-rating if needed for rating-use-modes
- show more static info (tourney-info, old/new status, rating-use-mode)
- code/GUI cleanups-refactorings (clearer structure), bugfixes, adjusted texts
* specs/db/table-Tournaments.txt:
- added state-transitions for TournamentParticipant.Status for TD & User
* tournaments/include/tournament_participant.php (TournamentParticipant.need_rating,
~.calc_init_status, ~.getStatusUserInfo, ~.getLinkTextRegistration),
tournaments/include/tournament_properties.php (TournamentProperties.need_rating_copy,
~.allow_rating_edit, ~.checkUserRegistration, ~.getRatingUseModeText),
tournaments/include/tournament.php (class Tournament),
tournaments/view_tournament.php:
- added helper-methods to decide for tournament-registration and participants-edits
- fixed rating-check for tournament-restrictions for user
- fixed tournament-participant status-user-info
- removed allow_register()-function
- adjusted texts
* include/gui_functions.php (span):
- added helper method span() to format string with <span...>
* include/form_functions.php (Form.create_string_func_br):
- added LF for 'BR'-form-element
* register.php:
- logout if still logged-in
2010-01-09 juga
* tournaments/include/tournament_status.php (TournamentStatus.check_action_status,
~.check_edit_status, ~.check_register_status),
tournaments/edit_participant.php (parse_edit_form, build_rating_str),
tournaments/register.php (build_participant_notes),
skins/dragon/screen.css:
- checked for bad-tournament (missing tournament-properties)
- enhanced tournament-participant-edit with parse-edit-form (better error-parsing),
added checks for custom-rating and start-round
- check if registration allowed for tourney-status
- used tournament-specific attribute 'need_rounds' for rounds-stuff
- show more static info (tourney-info, rating-use-mode)
- code/GUI cleanups-refactorings, bugfixes, adjusted texts
* tournaments/edit_properties.php (parse_edit_form), tournaments/edit_rules.php:
- checked for bad-tournament (missing tournament-properties/rules)
- bugfix parsing value of checkboxes (user-rated)
- bugfix showing rating-use-mode
* tournaments/include/tournament_participant.php (class TournamentParticipant,
~.delete_tournament_participant),
tournaments/include/tournament_properties.php (class TournamentProperties,
~.checkUserRegistration, ~._load_user, ~.getRatingUseModeText),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- removed TournamentProperties 'ENTER_FIX'-RatingUseMode
- used better error-code if registration-edit forbidden
- code cleanups-refactorings, added TODOs
-----------
-- removed RatingUseMode 'ENTER_FIX'
ALTER TABLE TournamentProperties
MODIFY RatingUseMode enum('COPY_CUSTOM','CURR_FIX','COPY_FIX') NOT NULL default 'COPY_CUSTOM' ;
-----------
* tournaments/include/tournament_template.php (class TournamentTemplate),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament),
tournaments/edit_tournament.php (parse_edit_form):
- added attributes specific for tourney-types into TournamentTemplate with defaults:
- 'need_rounds' to express if tournament-type has rounds
- 'allow_register_tourney_status' containing allowed tournament-status for registrations
- fixed checks on rounds-stuff
* tournaments/view_tournament.php (echo_tournament_rules, echo_tournament_registration):
- emphasized Komi-/Handicap-adjustment for tournament-rules
- code/GUI cleanups-refactorings, adjusted texts
* include/gui_functions.php (echo_notes, spacing):
- bugfix (missed <li>), optimized replacing string-concat with echo, better LF'ing
- added method for easy building of spacings with formatting
* include/error_codes.php:
- added error-codes: invalid_rating, bad_tournament, tournament_register_edit_not_allowed
2010-01-08 juga
* site_map.php:
- synced with tournament-pages (T-list, T-manager, T-participants users-lists)
- increased nest-level max-cols: 5 -> 6
* tournaments/manage_tournament.php (make_header), skins/dragon/screen.css:
- added tournament-change-status page
- hide editing of round-stuff for ladder-type tournament
- changed title, added/adjusted/compacted texts, added phase-sections
* tournaments/include/tournament_status.php (class TournamentStatus,
~.check_conditions_status_ADM/NEW/REG/PAIR/PLAY/CLOSED/DEL,
~.has_error, ~.check_status_change, ~.error_expected_status,
~.check_edit_status),
tournaments/include/tournament_director.php (TournamentDirector.has_tournament_director),
tournaments/edit_status.php, NEWS:
- added tournament-change-status page and checks for allowed status-changes
- Tournament-admin is always allowed to change tournament-status
- check for allowed status-transitions: NEW > REG > PAIR > PLAY > CLOSED
- for REG-status check for existing title, description and tournament-director
* tournaments/edit_tournament.php (parse_edit_form):
- enhanced tournament-edit with parse-edit-form (show edits, better error-parsing)
- restrict editing of owner and scope to tournament-admin
- removed editing of tournament-status
- removed creation of tournament, which is done by tournament-wizard alone
- hide editing of round-stuff for ladder-type tournament
- show tournament wizard-type
- removed PRIVATE-scope for later
- removed tournament-status notes
- code cleanups-refactorings
* tournaments/include/tournament.php (Tournament.getStatusText),
tournaments/list_tournaments.php, NEWS:
- allow search for Admin-type tournaments
- show Admin-type tournaments only if selected in filter
- linked ID-button to tournament-manager for directoring-tournaments-list-view
* tournaments/include/tournament.php (Tournament.setStatus, ~.build_info,
~.build_role_info, ~.getScopeText, ~.getTypeText, ~.getWizardTypeText,
~.getStatusText, ~.get_edit_tournament_status),
tournaments/include/tournament_director.php (TournamentDirector.get_edit_tournament_status),
tournaments/include/tournament_participant.php (TournamentParticipant.get_edit_tournament_status),
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration,
~.getRatingUseModeText, ~.get_edit_tournament_status),
tournaments/include/tournament_round.php (TournamentRound.get_edit_tournament_status),
tournaments/include/tournament_rules.php (TournamentRules.get_edit_tournament_status),
tournaments/include/tournament_globals.php,
tournaments/edit_director.php (parse_edit_form),
tournaments/edit_participant.php,
tournaments/edit_properties.php (parse_edit_form, build_properties_notes),
tournaments/edit_round.php (parse_edit_form, build_round_notes),
tournaments/edit_rules.php (parse_edit_form),
tournaments/edit_tournament.php (parse_edit_form),
tournaments/register.php (build_participant_notes),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- restrict edit-pages to specific tournament-status-list for editing of
- tournament: NEW
- tournament-director: NEW, REG, PAIR, PLAY, CLOSED
- tournament-participants: REG, PAIR, PLAY
- tournament-properties: NEW
- tournament-round: NEW, PAIR
- tournament-rules: NEW
- added tournament delete-status: TOURNEY_STATUS_DELETE
- refactored build_notes() from class into edit-page
- removed PRIVATE-scope for later
- cleanup parsing and checking of edit-form
- code cleanups-refactorings, added/changed/simplified texts
-----------
-- added tournament delete-status
ALTER TABLE Tournament
MODIFY Status enum('ADM','NEW','REG','PAIR','PLAY','CLOSED','DEL') NOT NULL default 'NEW' ;
-----------
* include/gui_functions.php (echo_notes), include/globals.php,
include/table_columns.php:
- moved MINI|MED|SMALL_SPACING from gui_functions.php into globals.php
- enhanced echo_notes() with sub-lists
- added SEP_SPACING for tournaments
* tournaments/edit_participant.php, list_contacts.php, opponents.php,
users.php, NEWS:
- added tournament-invitations for users, opponents and contacts page
* include/std_functions.php (make_menu):
- bugfix: handle with_accesskeys-arg not to create access-keys to links
* include/table_columns.php (Table.add_tablehead):
- bugfix: error if table-id-number used again
* tournaments/edit_director.php, tournaments/edit_properties.php,
tournaments/manage_tournament.php:
- changed titles
2010-01-07 juga
* tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_rules.php, tournaments/list_participants.php,
tournaments/list_tournaments.php:
- minor GUI-layout/cleanup/TODOs
* tournaments/include/tournament_rules.php (TournamentRules.convertFormTimeSettings,
~.convertEditForm_to_TournamentRules),
tournaments/edit_rules.php (getBool):
- enhanced rules-edit with parse-edit-form (show edits, better error-parsing)
- removed RuleID (Tournament <-> Rules is 1:1 relation)
* include/error_codes.php (ErrorCode.init):
- added missing error-code: handicap_range
* tournaments/include/tournament_director.php (TournamentDirector.load_user_row),
tournaments/include/tournament_utils.php (TournamentUtils.buildErrorListString),
tournaments/edit_director.php (parse_edit_form),
tournaments/edit_properties.php (parse_edit_form):
- enhanced director-edit with parse-edit-form (show edits, better error-parsing),
- replaced deleting TD with TournamentDirector::delete_tournament_director()
- moved loading TD-user into TournamentDirector::load_user_row()
- moved formatting of error-list into TournamentUtils::buildErrorListString()
* links.php:
- added link to another go-introduction mentioned by DGS-user
2010-01-06 juga
* tournaments/edit_director.php, tournaments/edit_participant.php,
tournaments/edit_properties.php, tournaments/edit_round.php,
tournaments/edit_rules.php, tournaments/edit_tournament.php,
tournaments/list_directors.php, tournaments/manage_tournament.php,
tournaments/register.php, tournaments/view_tournament.php,
forum/admin.php, forum/index.php, scripts/index.php, admin.php,
add_to_waitingroom.php, admin_faq.php, docs.php, donation.php,
donation_success.php, gameinfo.php, goban_editor.php, introduction.php,
links.php, news.php, people.php, policy.php, show_games.php, site_map.php,
snapshot.php, status.php, translate.php, userinfo.php:
- since PHP5 global-vars need explicit "global"-directive: globalize $ThePage
* tournaments/include/tournament.php (class Tournament, ~.setWizardType, ~.insert,
~.update, ~.delete, ~.fillEntityData, ~.build_query_sql, ~.allow_create),
tournaments/include/tournament_factory.php (class TournamentFactory.getTournament),
tournaments/include/tournament_globals.php,
tournaments/include/tournament_template.php (class TournamentTemplate, ~.to_string,
~.create_error, ~.createTournament),
tournaments/include/tournament_utils.php (TournamentUtils.getWizardTournamentType),
tournaments/include/types/dgs_ladder.php (class DgsLadderTournament, ~.createTournament),
tournaments/include/types/index.php, tournaments/list_tournaments.php,
tournaments/wizard.php, include/error_codes.php (ErrorCodes.init),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/update_translation_pages.php, NEWS:
- added tournament-wizard to create new tournament
- added DRAGON ladder tournament without restrictions
- added Tournament.WizardType, influencing existing Tournament.Type
- allowed potentially all users to create new tournaments with wizard
- added error-codes: invalid_method, tournament_create_error
- refactored/added insert/update/delete using convenience-methods
of Entity/EntityData-classes,
- moved tournament constants into tournament_globals.php
- added directory to scan for translations: tournaments/include/types/
-----------
-- create official "DGS-ladder" for tournament-wizard
ALTER TABLE Tournament
ADD WizardType tinyint NOT NULL AFTER Type,
MODIFY Type enum('LADDER','ROUNDROBIN') NOT NULL ;
-----------
* tournaments/include/tournament_director.php (class TournamentDirector,
~.isTournamentDirector, ~.delete_tournament_director),
tournaments/include/tournament_participant.php (class TournamentParticipant,
~.delete_tournament_participant),
tournaments/include/tournament_properties.php (class TournamentProperties,
~.isTournamentProperties, ~.delete_tournament_properties),
tournaments/include/tournament_round.php (class TournamentRound,
~.isTournamentRound, ~.delete_tournament_round),
tournaments/include/tournament_rules.php (class TournamentRules,
~.delete_tournament_rules):
- refactored class using Entity/EntityData-classes to access db-table,
- adjusted/added methods: persist, insert, update, delete,
checkData, fillEntityData, build_query_sql, to_string
* include/db_classes.php (EntityData.get_pkey_string, ~.build_sql_insert,
~.build_sql_update, ~.build_sql_delete, ~.insert, ~.update, ~.delete),
scripts/tests/EntityDataTest.php:
- use FTYPE_INT also for float-values
- don't include auto-increment key for inserting entity-data
- change default-LIMIT for update + delete: none(=0) -> 1
- added convenience-functions with db-writings for operations
* tournaments/list_participants.php:
- added tournament-manager-link to bottom-menu-links
* tournaments/list_participants.php, tournaments/list_tournaments.php,
opponents.php:
- since PHP5 global-vars need explicit "global"-directive,
so use consts or statics if possible, otherwise declare as global
* phorum/list.php, phorum/read.php:
- removed unnecessary change-dir
* scripts/tests/AllTests.php, scripts/tests/UnitTestHelper.php,
scripts/tests/run_tests.php:
- added copyright
* tournaments/include/tournament.php (Tournament.insert, ~.update, ~.fillEntityData, ~.build_query_sql):
- replaced db-stuff using Entity/EntityData-classes
* include/db_classes.php (EntityData.build_sql_update, ~.build_sql_delete),
scripts/tests/EntityDataTest.php:
- added LIMIT-clause for update & insert
* include/filter.php:
- moved static var back as global non-static, because PHP-parser treats
string-concatenation as non-constant forbidding static-keyword
* include/db_classes.php (class Entity; class EntityData),
scripts/tests/EntityDataTest.php, scripts/tests/EntityTest.php,
scripts/tests/UnitTestHelper.php, scripts/tests/AllTests.php:
- added classes Entity and EntityData for db-access-abstractions with unit-tests
* include/error_functions.php (class DgsErrors, ~.add_error):
- renamed class Errors -> DgsErrors (clashed with PHP-unit)
- added ERROR_MODE_TEST for PHP-unit-tests,
- allow for separte collecting and printing of errors
* forum/forum_functions.php, forum/post.php, include/classlib_game.php,
include/classlib_goban.php, include/classlib_upload.php, include/classlib_userconfig.php,
include/contacts.php, include/coords.php, include/countries.php, include/error_codes.php,
include/error_functions.php, include/filter.php, include/filter_functions.php,
include/filterlib_country.php, include/form_functions.php, include/game_functions.php,
include/goban_handler_gfx.php, include/message_functions.php, include/quick_common.php,
include/rating.php, include/std_classes.php, include/std_functions.php,
include/tokenizer.php, scripts/convert_from_old_forum.php, scripts/convert_posindex.php,
tournaments/include/tournament.php, tournaments/include/tournament_participant.php,
tournaments/include/tournament_properties.php, tournaments/include/tournament_round.php,
tournaments/include/tournament_rules.php:
- since PHP5 global-vars need explicit "global"-directive,
so use consts or statics if possible, otherwise declare as global
* tournaments/include/index.php:
- index-page redirecting to tournament-list page
2010-01-05 juga
* INSTALL:
- note about ft_min_word_len mysql-system-variable
2010-01-04 juga
* tournaments/list_tournaments.php, status.php, NEWS:
- moved showing of tournament-applications from status-page
to list-tournaments page
- show registration-status with link to registration-page on
participating tournaments for specific user
- replaced external-form by URL-arguments + added bottom-links for:
- participating user: uid-arg
- directing tournaments: tdir-arg
* include/filter.php (SearchFilter.get_filter_value):
- added wrapper-function to get value of specific filter in SearchFilter-object
* include/error_functions.php (err_log), admin_show_errorlog.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- enhanced Errorlog with uid and page-request for causing error
-----------
-- enhanced Errorlog with uid and page-request for causing error
ALTER TABLE Errorlog
ADD uid int(11) NOT NULL DEFAULT '0' AFTER ID,
ADD Request varchar(128) NOT NULL DEFAULT '' AFTER Message ;
-----------
* tournaments/list_participants.php, tournaments/list_tournaments.php,
list_messages.php, show_games.php, waiting_room.php:
- bugfix: select FOUND_ROWS() right after query,
intermediate start_page() executed another db-request losing found-rows-data
* add_to_waitingroom.php, admin.php, admin_admins.php, admin_do_translators.php,
admin_faq.php, admin_password.php, admin_show_adminlog.php, admin_show_errorlog.php,
admin_show_faqlog.php, admin_show_users.php, admin_translators.php, admin_users.php,
change_password.php, change_profile.php, clock_tick.php, confirm.php, daily_cron.php,
features/lib_votes.php, forum/admin.php, forum/admin_show_forumlog.php,
forum/class_forum_read.php, forum/forum_functions.php, forum/list.php,
forum/old_links_redirect.php, forum/post.php, forum/read.php, game.php,
game_comments.php, gameinfo.php, goban_editor.php, halfhourly_cron.php,
include/connect2mysql.php, include/error_functions.php, include/filter.php,
include/filterlib_mysqlmatch.php, include/form_functions.php, include/make_game.php,
include/make_translationfiles.php, include/rating.php, include/std_functions.php,
join_waitingroom_game.php, login.php, message.php, phorum/read.php, quick_play.php,
quick_status.php, ratinggraph.php, scripts/check_block_ip.php,
scripts/convert_from_old_forum.php, scripts/convert_posindex.php,
scripts/data_export.php, scripts/data_report.php, scripts/fix_games_timeleft.php,
scripts/forum_consistency.php, scripts/game_consistency.php,
scripts/generate_translation_texts.php, scripts/mailtest.php,
scripts/make_handicap_pattern.php, scripts/message_consistency.php,
scripts/player_consistency.php, scripts/recalculate_ratings2.php,
scripts/start_frozen_clocks.php, scripts/translation_consistency.php,
scripts/update_translation_pages.php, send_message.php, send_new_password.php,
sgf.php, show_games.php, translate.php, update_translation.php, userinfo.php:
- added more debug-info on error()-calls, simplified some admin-errors
* scripts/game_consistency.php, clock_tick.php:
- bugfix: avoid sharing of Clock.ID=204 in query searching timed-out-games
- query-optimize for new timed-out-handling on Games.Status
- added TODO for potential bug when searching for timed-out games
* include/table_columns.php (Table.add_tablehead, ~._parse_sort_extension,
~.current_order_string):
- fixed FIXME: added function to check and parse sort-extension
* include/classlib_profile.php (SearchProfile.set_sysmessage),
include/classlib_userconfig.php,
include/error_codes.php (ErrorCode.init),
include/quick_common.php,
include/std_functions.php (start_html, nsq_addslashes, is_on_observe_list),
include/time_functions.php (is_weekend_clock_stopped),
game.php, confirm.php:
- minor cleanup of some TODOs and FIXMEs
2010-01-03 juga
* forum/class_forum_options.php (ForumOptions.build_db_options_exclude),
forum/class_forum_read.php (ForumRead.has_new_posts_in_all_forums):
- bugfix: exclude non-visible forums
* forum/post.php (post_message, approve_post, hide_post_update_trigger, show_post),
forum/forum_functions.php (class ForumPost, ~.to_string, ~.build_query_sql, ~.new_from_row),
include/register_functions.php (UserRegistration.register_blocked_user),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/forums.txt:
- bugfix: handling forum and global-forum NEW-flag-state always resetting
respective Updated-data for moderate-actions approve/reject/show/hide
- removed unused db-table-field: Posts.Updated (after revised NEW-flag handling)
- removed unused class-attribute: ForumPost.last_updated
- query-optimization on post-moderation checking Posts.Approved on old-value
-----------
-- [unused] remove unused field
ALTER TABLE Posts
DROP COLUMN Updated ;
-----------
* forum/list.php:
- bugfix: don't show "New topic"-link in top-bar for read-only forums
2010-01-01 juga
* scripts/generate_translation_texts.php, scripts/README.translations,
tournaments/include/tournament_properties.php (TournamentProperties.checkUserRegistration),
tournaments/include/tournament_participant.php (TournamentParticipant.build_notes),
features/lib_votes.php (Feature.build_feature_notes),
include/error_codes.php (ErrorCode.init),
policy.php:
- bugfix: leading and trailing spaces are not allowed within T_(..) translation-texts
-----------
-- bugfix: leading and trailing spaces are not allowed within T_(..) translation-texts
UPDATE TranslationTexts
SET Text=TRIM(Text) WHERE LENGTH(Text) != LENGTH(TRIM(Text)) ;
-- run translation-scripts as described in 'scripts/README.translations'
-----------
* scripts/index.php:
- open admin-scripts in new window, because they have no DGS-bars and DGS-menus
* forum/read.php:
- do not mark posts as read when in moderation-mode or toggling moderator-mode
2009-12-31 juga
* send_new_password.php:
- more hints who wants to change what for whom in error-message
* include/error_codes.php (ErrorCode.init), forgot.php:
- give more hints to reset password in case no email is set in account
* do_registration_blocked.php, forgot.php, register.php:
- added/changed page title
* include/std_functions.php (start_page, echo_dragon_top_bar, make_dragon_main_menu,
make_dragon_main_menu_logged_out, make_dragon_tools, echo_menu_tools),
site_map.php (echo_item, item, itemL),
statistics.php, NEWS:
- show special vertical main-menu for users not logged in and new users
- show also DGS top-bar if $printable set though without form-elements
- show basic supporting pages (FAQ/Docs/site-map and statistics) even if not logged in
* include/register_functions.php (class UserRegistration, ~.check_registration_normal,
~.check_email, ~.register_user),
register.php, NEWS:
- ask for optional email to register normal user
* forgot.php, register.php:
- added bottom-link to login-page
* include/std_functions.php (is_logged_in),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql:
- increase Players.Browser-field length: 100->150
-----------
-- increase Browser-field length: 100->150
ALTER TABLE Players
MODIFY Browser varchar(150) NOT NULL DEFAULT '';
-----------
* admin.php:
- bugfix: closed db-connection too early
* features/lib_votes.php (Feature.set_subject), features/edit_feature.php:
- cut off feature-subject to 255 chars length
- changed subject-input to textarea
* include/error_codes.php (ErrorCode.echo_error_text),
include/register_functions.php (class UserRegistration),
include/std_functions.php (verify_email),
do_registration_blocked.php, error.php (handle_error), NEWS:
- refactored blocked-registration-code from 'error.php'
into 'do_registration_blocked.php'
- preserve entered input-field-data for blocked registration on input-
check-errors, behaviour was that all entered data was lost on input-error
- show all input-check-erros in error-list instead of only one error
with error()-method destroying all entered input-data
- moved building error-log-id-text into ErrorCode-class
- trimmed some registration form-values (name, email, comment)
- bugfix: fix success-result for email-verify
* include/utilities.php (format_array), register.php:
- extracted utilities-method to format array to 'include/utilities.php'
2009-12-29 juga
* include/register_functions.php (class UserRegistration, ~.check_registration_normal,
~.check_registration_blocked, ~.check_userid, ~.check_email, ~.check_name,
~.check_password, ~.check_policy, ~.check_existing_user, ~._error,
~.register_user, ~.register_blocked_user),
register.php, do_registration.php, do_registration_blocked.php, NEWS:
- refactored registration-code with checks and user-db-registration for blocked
and normal user into UserRegistration-class in 'include/register_functions.php'
- preserve entered input-field-data for normal registration on input-check-errors,
behaviour was that all entered data was lost on input-error
- show all input-check-erros in error-list instead of only one error
with error()-method destroying all entered input-data
- refactored all functionality of 'do_registration.php' into 'register.php'
* include/form_functions.php (class Form, ~.create_string_func_password,
~.print_insert_password_input),
edit_password.php, index.php:
- preserve former form-value for PASSWORD-type-field
* include/error_codes.php (class ErrorCode, ~.echo_error_text, ~.get_error_text,
~.is_shown_error_log_id, ~.is_sensitive, ~.init),
error.php (handle_error):
- refactored error-codes into ErrorCode-class to prepare for registration-page
without losing input-fields on input-check-errors using error()-call
* include/std_functions.php (start_page, verify_email):
- bugfix: load global-forum NEW-flag only if user logged in
- verify_email: added die_on_error-argument to email-verify method
* include/classlib_game.php (class GameScore.getModeText),
include/contacts.php (class Contact.getContactUserFlags, ~.getContactSystemFlags),
include/countries.php (getCountryText),
include/filter.php (class FilterRelativeDate.getTimeUnitText),
include/languages.php (getLanguageText),
tournaments/include/tournament.php (Tournament.getScopeText, ~.getTypeText, ~.getStatusText),
tournaments/include/tournament_participant.php (TournamentParticipant.getStatusText, ~.getFlagsText),
tournaments/include/tournament_properties.php (TournamentProperties.getRatingUseModeText),
tournaments/include/tournament_round.php (TournamentRound.getStatusText),
tournaments/include/tournament_rules.php (TournamentRules.getFlagsText, ~.getHandicaptypeText):
- bugfix: import global-arrays into method-scope for lazy-init methods,
behaviour without global was to re-initialize array with every call
2009-12-27 juga
* forum/class_forum_read.php (ForumRead.mark_thread_read, ~.mark_forum_read,
~.load_global_updated, ~.trigger_recalc_global_post_update,
~.trigger_recalc_global_read_update, ~.trigger_recalc_forum_read_update),
forum/post.php (post_message, approve_post, hide_post_update_trigger, show_post),
scripts/forum_consistency.php (update_forum_global_post_update),
specs/forums.txt:
- fixed forum- and global-forum updated-date: must differ between trigger
on changed-post and trigger for changed read-state
* include/std_functions.php (start_page, load_global_forum_new),
forum/index.php, NEWS:
- show global-forum NEW-flag-state in main-menu as '(*)'
linked to system-bookmark S1 (showing recent forum posts)
* forum/forum_functions.php (class ForumOptions; class ForumRead;
ForumPost.is_post_read; ForumThread.load_posts),
forum/class_forum_options.php (class ForumOptions),
forum/class_forum_read.php (class ForumRead, ~.is_post_read):
- splitted forum_functions.php: moved class ForumOptions and class ForumRead
to separate include-file 'class_forum_read.php' in preparation to be able
to import them for main-menu global-forum NEW-flagging
- refactored method ForumRead.is_post_read() into ForumPost.is_post_read()
* forum/forum_functions.php (ForumOptions.is_executive_admin, ~.build_options_text),
forum/index.php, forum/list.php, forum/read.php, skins/dragon/screen.css, NEWS:
- show forum-options near forum-title on thread-list and thread-posts-view
* skins/dragon/screen.css:
- show forum NEW-flag in bold-font
* specs/db/dragon-ddl.sql:
- sync with current DGS db-schema
* include/std_functions.php (start_page, count_forum_new):
- removed unused field for (first-trial) aggregated global-forum NEW-flag
- added TODOs for global-forum 'new'-flag
* forum/forum_functions.php (class ForumOptions, ~.build_db_options_exclude;
class DisplayForum, ~.draw_post, ~.get_new_string, ~.make_link_array;
class Forum, ~.build_query_sql, ~.has_new_posts_in_threads,
~.load_forum_list, ~.load_threads, ~.new_from_row;
class ForumThread, ~.load_posts, ~.thread_post;
class ForumPost, ~.is_author;
class ForumRead, ~.build_query_sql, ~.has_new_posts_in_all_forums,
~.has_new_posts_in_forums, ~.has_newer_read_date, ~.is_post_read,
~.load_forum_reads, ~.load_global_new, ~.load_global_updated,
~.mark_forum_read, ~.mark_thread_read, ~.replace_row_forumread,
~.trigger_recalc_forum, ~.trigger_recalc_global,
~.is_read_post, ~.load_reads_post, ~.mark_read, ~.recalc_forum_reads,
~.recalc_thread_reads, ~.set_read, ~.trigger_recalc_thread),
forum/post.php (post_message, approve_post, hide_post_update_trigger,
show_post, recalc_forum_counts),
include/connect2mysql.php (mysql_exists_row),
specs/forums.txt, specs/db/table-Forum.txt,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/data_export.php, scripts/forum_consistency.php,
forum/index.php, forum/list.php, forum/read.php (revision_history),
skins/dragon/screen.css, daily_cron.php, NEWS:
- refactored and optimized forum 'NEW'-flag management by migrating from
ForumRead-table to now enhanced former Forumreads-table
- replaced (very) inefficient NEW-post-counter with simple 'NEW'-flag
indicating that there are new posts but not how many
- adjusted forum-specs "specs/forum.txt"
- removed difference of older and more recent NEW posts
- fixed viewing of "missing" new posts while replying
- removed 'Mark all read' from thread-posts view
- replaced/removed ForumThread-method: thread_post
- replaced/removed ForumRead-methods: is_read_post, load_reads_post, mark_read,
recalc_forum_reads, recalc_thread_reads, set_read, trigger_recalc_thread
- forum/post.php: removed method: recalc_forum_counts
- added 'Mark all read' on forums thread-list
- added Forums-link for refresh forums
-----------
-- check Forumreads-table with thread=0 (must be 0 entries)
SELECT * FROM Forumreads WHERE Thread_ID=0 ;
-- changed forum to backport to enhanced Forumreads-table, optimizing index
ALTER TABLE Forumreads
DROP PRIMARY KEY ;
ALTER TABLE Forumreads
ADD Forum_ID smallint NOT NULL DEFAULT '0' AFTER User_ID ;
ALTER TABLE Forumreads
ADD PRIMARY KEY (Thread_ID,User_ID,Forum_ID) ;
UPDATE Forumreads AS FR INNER JOIN Posts AS P ON P.ID=FR.Thread_ID
SET FR.Forum_ID=P.Forum_ID WHERE FR.Thread_ID>0 AND FR.Forum_ID=0 ;
ANALYZE TABLE Forumreads ;
-- check Forumreads-table with forum=0 (must be 0 entries)
SELECT * FROM Forumreads WHERE Forum_ID=0 ;
-- [not-null] cleanup Forumreads.Time datetime default NULL -> no default -> NOT NULL
ALTER TABLE Forumreads
MODIFY Time datetime NOT NULL ;
-- NEW-flag for forum-list
ALTER TABLE Forumreads
ADD HasNew tinyint NOT NULL DEFAULT '0' ;
-- discard unused table after backport-migration to former Forumreads-table
DROP TABLE ForumRead ;
-- removed unused field for (first-trial) aggregated global-forum NEW-flag
ALTER TABLE Players
DROP COLUMN CountForumNew ;
-----------
* userinfo.php:
- added link to starting/editing vacation on "Vacation days left"
after hiding that link on status-page if not on vacation
* forum/old_links_redirect.php, scripts/change_files.pl:
- added DGS-copyright notice
* bookmark.php:
- changed system-bookmark S1 showing recent forum posts during the last
from 7 days -> 4 weeks
* all files:
- adjusted Copyright on every file to: 2001-2010
* scripts/change_copyright.pl:
- added script to automatically change copyright in DGS-files
2009-12-14 juga
* include/classlib_userquota.php (UserQuota.increase_update_feature_points):
- bugfix: fix SQL-statement for FEATURE_POINTS_INC_VALUE>1
* edit_contact.php, NEWS:
- bugfix: removed double HTML-escaping for editing contact user and note-text
2009-12-13 juga
* NEWS:
- sync with NEWS of last stable-release (bugfixes)
* halfhourly_cron.php, NEWS,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- bugfixes on vacation-handling:
- fixed wrong clock setting after vacation is finished for games with clock
not running on weekends
- splitted vacation-days changes for VacationDays and OnVacation in two
separate queries avoiding unnecessary updates;
also removed restriction on Players.Lastaccess as VacationDays must not
be limited by last-access
- avoiding long-queries on vacation-fields: replaced restriction
on Players.Lastaccess by using added indexes. Players.Lastaccess and
vacation-handling are two separate concerns. Not using it as restriction
makes it easier to handle, because it would be an unexpected connection;
e.g. quick-play-suite does NOT change last-access field,
but allows to play without logging in changing last-access.
-----------
-- add index for vacation-cron job to increase/decrase vacation-days
ALTER TABLE Players
ADD INDEX OnVacation (OnVacation),
ADD INDEX VacationDays (VacationDays) ;
-----------
* include/contacts.php (Contact.getContactSystemFlags),
include/message_functions.php (echo_game_restrictions, game_info_table),
waiting_room.php, NEWS:
- added contact-option to "hide waiting-room games" for contact-user
- for example to be able to hide unsolicited game-offers asking for payment,
see forum-discussion:
http://www.dragongoserver.net/forum/read.php?forum=8&thread=26273
- bind hidden-games to only-suitable selection
- show "[Hidden]" for hidden game-offers in restriction-column
if showing all games
* include/std_functions.php (send_email, is_logged_in),
halfhourly_cron.php, scripts/mailtest.php, send_new_password.php:
- bugfix: skip 2nd word-wrapping in send_email()-function for sending email
with game-links and messages
2009-12-06 juga
* include/time_functions.php (time_remaining_value):
- bugfix on calculating timeout-date for status-next-game-order handling partly
byo-yomi-reset after add-time
* NEWS:
- moved all "Bug fixes"-sections after "Minor changes"-sections
* forum/forum_functions.php (DisplayForum.set_forum_options,
~.forum_message_box, ~.draw_post; Forum.allow_posting, ~.is_moderated),
forum/admin.php, forum/index.php, forum/post.php, forum/read.php,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt, error.php, NEWS:
- added forum-option READ-ONLY to restrict post-writing to forum-moderators
and developer-role-users
* game.php (draw_add_time, draw_board_info):
- for adding time:
- show byo-yomi-reset only if reset would change some byo-yomi-time data
- show changed time-added-text in board-info if only byo-yomi restarted
- allow "0 days" only for JAP/CAN-time for byo-yomi-reset without adding days
* confirm.php:
- time-added detection for sys-message also if only byo-yomi resetted
* include/game_functions.php (GameAddTime.add_time, ~.add_time_opponent),
scripts/tests/GameAddTimeTest.php:
- reset current byo-yomi period for JAP|CAN-time if in byo-yomi
- moved TimeOutDate-handling into add_time_opponent() because of db-loading
- bugfix: reset byo-yomi time-data to first period if no main-time
- bugfix: setting TimeOutDate for correct user (uid is the player GIVING time)
- bugfix: no aggregation of main- with byo-time, byo-yomi-resetting
- return non-0 result for add_time()/add_time_opponent() if only byo-yomi
had been resetted
- added unit-test for GameAddTime-class
* include/game_functions.php (adjust_handicap),
scripts/tests/Game_SettingsHelperTest.php:
- added unit-test + fix for adjust_komi() and adjust_handicap()
* include/time_functions.php (TimeFormat.echo_time_remaining),
scripts/tests/TimeFormatTest.php, code_examples/check_times.php,
game.php, quick_status.php, show_games.php, status.php:
- removed long-text-form for echo_time_remaining(), because text would have
been too long with extra-info and building of text not really thrilling
for non-english languages with other grammar
* quick_status.php, NEWS:
- sync games-order with status-page (by Lastchange ASC)
* include/game_functions.php (GameAddTime.add_time, ~.allow_add_time_opponent,
~.add_time_opponent),
scripts/tests/AllTests.php,
scripts/tests/GameAddTimeTest.php,
scripts/tests/Game_SettingsHelperTest.php,
confirm.php, game.php:
- refactored add_time-methods into class GameAddTime for unit-test-support
* include/time_functions.php (TimeFormat.echo_day, ~.echo_hour, ~.echo_time,
~._echo_time, ~.echo_byotype, ~.echo_onvacation, ~.echo_time_limit,
~.echo_time_remaining, ~._replace_space),
specs/time.txt,
include/gui_functions.php (echo_off_time),
include/message_functions.php (game_info_table),
scripts/tests/AllTests.php, scripts/tests/TimeFormatTest.php,
tournaments/view_tournament.php, code_examples/check_times.php,
edit_vacation.php, gameinfo.php, game.php (draw_game_info, draw_board_info),
quick_status.php, sgf.php, show_games.php, status.php, userinfo.php,
waiting_room.php, NEWS:
- refactored time-formatting methods into class TimeFormat with flexible
formatting-options
- enhanced time-formatting with extra-time-info for remaining-time in
abbreviated and complete-form
- use space as default for time-output (instead of HTML-non-breakable-space),
fixed replacing of spaces to include all spaces
- added TIMEFMT_ZERO-option to allow zero-value for no-time-left or zero-time
for display-fix '---' -> '0h'
- time-formats are described in specs/time.txt and unit-tested
with scripts/tests/TimeFormatTest.php
- game-page: enhanced players remaining-time with extra-time info,
switched to short-text-form
- gameinfo: show included remaining extra-time-settings for players
- quick-status: enhanced remaining-time with extra-time info
- status/show-games: enhanced players remaining-time with abbreviated
extra-time info
* include/globals.php, include/std_functions.php:
- moved constants in: NO_VALUE, UNKNOWN_VALUE
2009-11-08 juga
* include/classlib_game.php (NextGameOrder.make_timeout_date),
include/make_game.php (create_game):
- bugfix: set Games.TimeOutDate on creating game for joining waiting-room
and accepting invitation
* confirm.php:
- bugfix: execute double-game-update query on delete-game only
if it IS a double-game
* forum/forum_functions.php (make_link_array),
forum/list.php, forum/read.php, NEWS:
- added "Refresh"-link in forum link-bars to init-reload thread-list
and thread-posts-view
* scripts/.cvsignore:
- ignore .htaccess-file to protect folder
* daily_cron.php:
- bugfix: bad SQL-query on ForumRead-cleanup
* include/faq_functions.php (faq_item_html), skins/dragon/screen.css, faq.php:
- fixed missing separator between FAQ-sections on searching
- left-align search-form
* error.php:
- adjusted text for forgotten-password with no_email,
added in text what's needed (user-id + email) to get password-reset via admin
2009-11-07 juga
* features/lib_votes.php (Feature.is_final_status, ~.fix_user_quota_feature_points),
features/edit_feature.php:
- forbid changing LIVE|NACK-status, added warning for admins about that
- return all taken feature-points when feature goes LIVE (same as NACK = rejected),
cap UserQuota.FeaturePoints to maximum of FEATURE_POINTS_MAX_VALUE
* include/classlib_userquota.php:
- limit feature-points to maximum: 100 -> 50
- increased time-interval before increase feature-points: 10 -> 20 days
* include/time_functions.php (time_remaining), NEWS:
- bugfix not capping main-time on moving for Fischer-time after adding time
exceeding starting-main-time;
avoiding complicated checks for add-time feature
* specs/db/table-Games.txt:
- added description for Games-table
* include/classlib_game.php (NextGameOrder.make_timeout_date),
include/game_functions.php (add_time_opponent),
include/time_functions.php (time_left_ticksdate),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-data.sql, specs/db/table-Players.txt,
scripts/fix_games_timeleft.php, scripts/index.php,
clock_tick.php, confirm.php (jump_to_next_game), status.php, NEWS:
- added status-games-order on remaining-time
- time-left calculus used from
http://www.dragongoserver.net/forum/read.php?forum=4&thread=5728#5743
- use new clock with Clock.ID=204 to serve as time-anchor for time-left calculus
- added script to set Games.TimeOutDate
-----------
-- status-games ordering by remaining-time
ALTER TABLE Games
ADD TimeOutDate int NOT NULL DEFAULT '0' AFTER ClockUsed ;
ALTER TABLE Players
MODIFY NextGameOrder enum('LASTMOVED','MOVES','PRIO','TIMELEFT') NOT NULL DEFAULT 'LASTMOVED' ;
-- Clock for remaining-time ordering
INSERT INTO Clock SET ID=204, Lastchanged=0 ;
-- execute fix-script
-- 'scripts/fix_games_timeleft.php'
-----------
* include/config.php, error.php, register.php:
- fix $HOSTBASE -> HOSTBASE
2009-11-04 juga
* confirm.php (jump_to_next_game):
- cleanup: replace building SQL-statement using QuerySQL-class
* status.php:
- bugfix: show priority too if column is shown
* include/classlib_game.php (NextGameOrder.load_game_priority, ~.persist_game_priority, ~.delete_game_priorities),
specs/db/table-Games.txt, scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/game_consistency.php, clock_tick.php, confirm.php (jump_to_next_game),
gameinfo.php, status.php, NEWS:
- added status-games-order on priority (per player) and
editing on game-info page
- delete GamesPriority-table-entries for finished and deleted games
- deactivate status-game priority column by default
-----------
-- status-games ordering by priority
CREATE TABLE GamesPriority (
gid int(11) NOT NULL,
uid int(11) NOT NULL,
Priority smallint signed NOT NULL default '0',
PRIMARY KEY (gid,uid)
) ENGINE=MyISAM;
ALTER TABLE Players
MODIFY NextGameOrder enum('LASTMOVED','MOVES','PRIO') NOT NULL DEFAULT 'LASTMOVED' ;
-- deactivate status-game priority column by default
UPDATE ConfigPages SET ColumnsStatusGames=ColumnsStatusGames & ~0x10000 ;
-----------
* include/classlib_game.php (NextGameOrder.ARR_NEXT_GAME_ORDER,
~.get_next_game_orders_selection, ~.get_next_game_order),
include/std_functions.php (ARR_NEXT_GAME_ORDER, get_next_game_order),
confirm.php (jump_to_next_game),
status.php:
- moved status-games-next-game-order stuff to NextGameOrder-class
to 'include/classlib_game.php'
2009-11-03 juga
* include/table_columns.php (Table.make_sort_images, current_order_string),
status.php:
- show status-games sort-order with table-header sort-images
2009-11-02 juga
* include/std_functions.php (get_next_game_order),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Players.txt,
confirm.php (jump_to_next_game),
status.php (status_games_extend_table_form),
NEWS:
- added constrained order for status games bound to "next game"
on game-page for: last moved (default), number of moves
-----------
-- status-games ordering coupled with "next game"
ALTER TABLE Players
ADD NextGameOrder enum('LASTMOVED','MOVES') NOT NULL DEFAULT 'LASTMOVED' AFTER UserPicture ;
-----------
* include/table_columns.php (Table.set_extend_table_form_function,
~.make_add_column_form):
- added optional callback-function to extend table-form with additional
form-elements
2009-11-01 juga
* include/std_functions.php, NEWS:
- New game: Decreased maximum number of games in offer: 20 -> back to default 10
* snapshot.php:
- easier versioning
2009-09-07 juga
* include/classlib_profile.php, include/form_functions.php,
include/std_classes.php, include/table_columns.php,
scripts/index.php:
- fixed doxygen-warnings
2009-09-06 juga
* include/message_functions.php (game_info_table), waiting_room.php:
- fixed text for manual-handicaptype: Fix color -> Color Black|White
- fixed wrongly showed handicaptype of game-info for own game-offer
* scripts/index.php (echo_scripts):
- added 2nd phpinfo-link (with adjusted link)
- added more info about release-helper scripts
* error.php, admin.php, admin_admins.php, admin_do_translators.php, admin_faq.php,
admin_password.php, admin_show_adminlog.php, admin_show_errorlog.php,
admin_show_faqlog.php, admin_show_users.php, admin_translators.php,
admin_users.php, change_password.php, send_new_password.php,
forum/admin.php, forum/admin_show_forumlog.php,
scripts/check_block_ip.php, scripts/convert_from_old_forum.php,
scripts/convert_posindex.php, scripts/data_export.php, scripts/data_report.php,
scripts/game_consistency.php, scripts/generate_translation_texts.php,
scripts/index.php, scripts/mailtest.php, scripts/make_handicap_pattern.php,
scripts/message_consistency.php, scripts/player_consistency.php,
scripts/recalculate_ratings2.php, scripts/start_frozen_clocks.php,
scripts/translation_consistency.php, scripts/update_translation_pages.php,
scripts/updates/fix_game_comments-1_0_15.php,
scripts/updates/fix_message_thread-1_0_15.php, NEWS:
- save Adminlog-entry for adminlevel_too_low with originating source-page
* scripts/index.php (echo_scripts), skins/dragon/screen.css, admin.php:
- show list of important admin-scripts for "mighty" admins with short description
- produce error if admin-level too low
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- cleanup of unused entries in Clock-table
-----------
-- [data] cleanup unused Clocks
DELETE FROM Clock WHERE NOT ((ID BETWEEN 0 AND 23) OR (ID BETWEEN 100 AND 123) OR ID IN (201,202,203) ) ;
-----------
* list_messages.php, search_messages.php, NEWS:
- deactivated found-rows for message-pages with small usefulness
but high potential for slow-queries
* login.php, scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- no longer log user-login, also to have less needed db-queries
- delete uninteresting messages in Adminlog-table
-----------
-- [data] cleanup Adminlog (delete uninteresting messages, not longer logged)
DELETE FROM Adminlog WHERE Message = 'logged_in' ;
-----------
* faq.php, people.php, ratingpng.php, statisticspng.php, userinfo.php:
- replaced T_(non-const) with $TW_(..) to prevent error in script
'generate_translation_texts.php'
* forum/search.php, include/message_functions.php, introduction.php:
- fixed wrong/unused T_(..)-translation-texts
* scripts/generate_translation_texts.php (find_translation_texts, eat_comments,
eat_whitespace, eat_translation_text),
scripts/README.translations:
- refined and adjusted parsing of T_()-content to be more flexible replacing
pattern-matches with manually parsing
- replaced T_(non-const) with $TW_(..) to prevent error in script
'generate_translation_texts.php'
- use php_strip_whitespace()-func to read php-files stripping all comments,
since PHP5
- better error-handling, show errors and new entry count
- scan pages sorted alphabetically
- corrected current-dir for use of php_strip_whitespace() to base-dir
- adjusted parsing of $TranslateGroups[]
* scripts/update_translation_pages.php:
- adjusted parsing of $TranslateGroups[] allowing also single quotes
and more whitespaces
* specs/doxygen-usage.txt, scripts/README.developers,
goodies/index.php, scripts/tests/AllTests.php:
- added references, installation, usage for doxygen doc-style used for DGS
- fix doxygen-warnings
* scripts/doxygenConfig:
- updated config for doxygen 1.2.16-20020609 -> v1.5.5, adjusted to DGS
* scripts/experiments/activity_players.php,
scripts/experiments/analyze-slow_log.php,
scripts/experiments/bitfield_mysql_set.php,
scripts/experiments/bitmask_signed_int.php,
scripts/experiments/grabout.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, INSTALL:
- added and adjusted (old) test- and check scripts
- added access-right CREATE-TEMPORARY-TABLE for dragon user
-----------
-- grant access-right to create temporary tables to DGS db-user
-- Lookup your respective configuration in 'include/config-local.php'
GRANT CREATE TEMPORARY TABLES ON DB_NAME.* TO MYSQLUSER@MYSQLHOST ;
-----------
* include/std_functions.php (write_to_file, read_from_file):
- detailed error-message on error while reading or writing file
- added compatibility-code for file_get_contents()-func: changed args since PHP5
* scripts/check_block_ip.php:
- added syntax-description
* include/connect2mysql.php (connect2mysql):
- log retry-connect-count if DBG_QUERY>1
* admin_password.php:
- removed translation-group till there are any translation-texts
2009-09-04 juga
* scripts/data_export.php:
- removed OLD_STYLE_DUMP and configuration of it,
keeping notes about old-/new-style
- changed orders of exporting DDL of tables to alphabetical
* scripts/data_export.php (after_table, definitions_fix, dump2html, dbTable.structure):
- adjusted export-script for MySQL5 and DB-changes:
- added guest-seeding for ConfigPages/ConfigBoard/UserQuota-tables
- added new tables for export
- fixed definitions-fix emptying text (from last Posts-change)
- needed to use ISO-8859-1 encoding:
UTF-8 made problems resulting in empty TranslationTexts for HTML-view
- fixed MySQL5-syntax for "CREATE TABLE (..) TYPE=" -> ".. ) ENGINE="
- changed default mysql-version: 3.23.32 -> 5.0.38
- typos, comments, layouting, enhanced description for checkboxes
* include/message_functions.php (echo_folders, message_list_body),
list_messages.php:
- allow marking and moving of messages in NEW- and REPLY-folder when no reply
is needed on message
- show folders always with links to allow refresh
- bugfix: fixed check for destroyed messages: is_null -> ==FOLDER_DESTROYED
- adjust text for 'Follow move' -> 'Follow moving'
* waiting_room.php, join_waitingroom_game.php:
- removed way to enter message when joining waiting-room-game,
players can "chat" and greet during game
- changed notify text for joining waiting-room game:
added game links and removed user-message on game-join
- aiming for anonymizing notifies, relieving message-system from game-stuff
* message.php:
- reduced message-box height from 12 to 6 for invitations and disputes
to let user have focus on game-settings
* include/error_functions.php (dump_exit),
include/message_functions.php (message_list_head),
include/std_functions.php (game_reference, tournament_reference, user_reference),
include/table_columns.php (Table.add_tablehead, ~.set_default_sort,
~.current_order_string, ~.make_sort_string),
edit_profile.php, error.php, game.php:
- minor cleanup (clearer code, use bool instead ints), comments,
TODOs, FIXMEs?, typos, layouting
* include/page_functions.php (HTMLPage), include/std_functions.php (start_html):
- cleanup: sync'ed HTMLPage-varname with methodname: Id -> ClassCSS
* include/std_functions.php (strip_gamenotes, game_reference, tournament_reference, user_reference),
show_games.php, status.php:
- extracted strip_gamenotes()-func for trimming game-notes on games-lists
* show_games.php:
- bugfix: limit remaining-time columns to my-running-games view only
* waiting_room.php:
- remove sorting from Restrictions-column,
makes not many sense any more with multiple restraints
- revert default-sort for Games-numbers
* scripts/README.developers:
- enhanced text about translations, fixed typos
* admin_password.php:
- set translategroup (even if without translated text)
2009-09-03 juga
* forum/forum_functions.php (DisplayForum.forum_message_box),
forum/post.php (post_message), forum/read.php,
skins/dragon/screen.css, NEWS:
- preserved entered forum-message on missing subject and/or text,
switching into preview
- show optional error-message above forum-message-box
- use CSS for description-header
* include/std_functions.php (is_logged_in), status.php:
- moved check and switch for DST (daylight-saving-time) from status-page
into is_logged_in() in std-functions
* forum/forum_functions.php (ForumRead.replace_row_forumread), INSTALL:
- replaced 3-step UPDATE/check/INSERT with "INSERT .. ON DUPLICATE UPDATE"
supported by MySQL >= 5.0.38 (bugfix)
* opponents.php:
- added opponent-games-link on game-statistics page in players-info
- enhanced opponent-games-link by "finished" or "running" games
* include/filter.php (SearchFilter, ~.add_filter, ~.extract_filter_formname,
~.add_or_del_filter, ~.get_required_ids, ~.to_string, ~.reset_filter),
include/table_columns.php (Table.add_or_del_column),
include/globals.php, specs/filters.txt,
opponents.php, show_games.php, site_map.php, userinfo.php, NEWS:
- bugfix: filter-framework can now add hidden columns on-the-fly if required,
so table-columns need not be static any more to workaround this problem
- added parsing of REQF_URL-parameter used to declare required filters for search,
- required filters are skipped on filter-reset
- added Table-handling to add hidden columns for required filters
- make Rated/Won-columns on games-lists non-static,
adjusted source-links on user-info and site-map
* show_games.php, scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- added filter-search for existance of game-comments for my finished games
-----------
-- added index to search for games with comments
ALTER TABLE Games
ADD INDEX Flags (Flags) ;
-----------
* scripts/player_consistency.php:
- added consistency-check for Players/ConfigBoard/ConfigPages/UserQuota-tables,
fix missing entries by inserting
2009-09-02 juga
* halfhourly_cron.php, NEWS:
- optimize vacation-check-queries by restricting it on Players.Lastaccess within
twice max-vacation to avoid yet more indexes (Players.OnVacation/VacationDays)
* forum/forum_functions.php (DisplayForum.get_new_string,
ForumThread.load_revision_history),
error.php:
- bugfix: wrong NEW-link in tree-overview
- bugfix: forbid viewing of revision-history for non-approved post except
for author or moderators
* forum/post.php (show_post):
- bugfix: updating Forums.LastPost on showing hidden post
* include/message_functions.php (message_list_query, message_list_head),
scripts/translation_consistency.php, quick_status.php,
rss/status.php, wap/status.php:
- cleanup ORDER-BY query: avoid aliases and calculated fields;
e.g. MessageCorrespondents.mid has similar order as Messages.Time used
to sort messages
* forum/forum_functions.php (ForumRead.recalc_forum_reads, ~.recalc_thread_reads),
include/classlib_bitset.php (BitSet.reset),
include/filter.php (Filter.build_generic_selectbox_elem),
include/form_functions.php (Form.build_areas),
include/std_classes.php (QuerySQL.get_select),
game.php, statisticspng.php, statratingspng.php:
- slight optimize (loop-invariants)
* include/connect2mysql.php (db_close), edit_vacation.php, game.php:
- removed or moved closing of db-connection;
in general position of db_close() must take into account,
that texts may contain DGS-markup still needing db-access
* include/connect2mysql.php (connect2mysql):
- removed use of ignore_user_abort() in connect-function,
added TODO to use it around HOT-sections to avoid transaction-break
* include/contacts.php (Contact.load_contact, ~.update_contact),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- fixed wrong handling of date-handling for Contacts.Created & Lastchanged
-----------
-- fix date-field Contacts.Created
UPDATE Contacts SET Created=Lastchanged WHERE YEAR(Created)=1970 ;
-----------
* scripts/README.developers:
- added W3C-compliance, adjusted myths about constant strings
2009-08-23 juga
* include/classlib_game.php (GameScore.calculate_score):
- fix area-scoring: substract only "Handicap-1" points from Black as compensation
* include/gui_functions.php (echo_image_gamecomment),
scripts/updates/fix_game_comments-1_0_15.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
clock_tick.php, confirm.php, game.php, people.php, show_games.php, NEWS:
- mark games that have hidden game comments from one of the players
- notify players about hidden game comments after game finished
- show icon near Comments-link on game page if there are hidden comments
- added column with icon as indicator if there are hidden comments
on games-list with my finished games
-----------
-- add indicator for hidden-comments within move-messages
ALTER TABLE Games
MODIFY Flags set('Ko','HiddenMsg') NOT NULL default '' ;
-- execute fix-script (with do_it=1 right away), because db-statement takes quite some time:
-- 'scripts/updates/fix_game_comments-1_0_15.php?do_it=1'
-----------
* confirm.php:
- added more LFs in game-result message
* people.php:
- changed text for site-admin (ADMIN_DEVELOPER)
* show_games.php:
- added hideable column-header for game-info column
* include/std_functions.php (is_logged_in, delete_all_observers),
include/move.php (check_move), scripts/game_consistency.php, quick_play.php:
- renamed const KO -> GAMEFLAGS_KO
- more detail in error-labels
* include/std_functions.php (start_page, is_logged_in, update_count_message_new,
count_forum_new),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- prepared main-menu to add linked count of NEW forum-posts in main-menu
- bugfix on update for message-count in main-menu
-----------
-- quick-read-count for NEW-forum for user
ALTER TABLE Players
ADD CountForumNew mediumint NOT NULL default '-1' AFTER CountFeatNew ;
-----------
* include/filterlib_country.php (getFilterCountries):
- added shorter names for some long ones for country-codes: IO,PM,VC,GS,VA,XF
* include/countries.php (getCountryText), NEWS,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- added flags for country-codes (ISO-3166-1), even if unoffical flags:
AI (Anguilla), BL (Saint Barthelemy), BM (Bermuda), CC (Cocos Islands),
CK (Cook Islands), CX (Christmas Island), FK (Falkland Islands),
GF (French Guinea), GP (Guadeloupe), GS (South Georgia and Sandwich Islands),
IM (Isle of Man), IO (British Indian Ocean Territory), KY (Cayman Islands),
MF (Saint Martin), MQ (Martinique), MS (Montserrat), NC (New Caledonia),
NU (Niue), PM (Saint Pierre and Miquelon), PN (Pitcairn), RE (Reunion),
SH (Saint Helena), TC (Turks and Caicos Islands), VI (US Virgin Islands),
WF (Wallis and Futuna), YT (Mayotte)
- removed country-codes: BV (Bouvet Island), NT (Neutral Zone)
-----------
# added flags
copy /images/flags/bl.gif
copy /images/flags/gf.gif
copy /images/flags/gp.gif
copy /images/flags/io.gif
copy /images/flags/mf.gif
copy /images/flags/mq.gif
copy /images/flags/nc.gif
copy /images/flags/pm.gif
copy /images/flags/re.gif
copy /images/flags/wf.gif
copy /images/flags/yt.gif
# updated flags
copy /images/flags/ai.gif
copy /images/flags/bm.gif
copy /images/flags/cc.gif
copy /images/flags/ck.gif
copy /images/flags/cx.gif
copy /images/flags/fk.gif
copy /images/flags/gs.gif
copy /images/flags/im.gif
copy /images/flags/ky.gif
copy /images/flags/ms.gif
copy /images/flags/nu.gif
copy /images/flags/pn.gif
copy /images/flags/sh.gif
copy /images/flags/tc.gif
copy /images/flags/vi.gif
-----------
2009-08-16 juga
* include/std_functions.php (update_count_message_new),
include/message_functions.php (change_folders), message.php:
- renamed const COUNTMSGNEW_RECALC -> COUNTNEW_RECALC
* features/lib_votes.php (Feature.can_delete_feature, ~.delete_feature):
- minor optimize on allow-check for feature-delete
- returns number of affected rows for feature-delete
* include/std_functions.php (start_page, count_feature_new, update_count_feature_new),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/player_consistency.php,
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
features/edit_feature.php, features/vote_feature.php, NEWS:
- show linked count of NEW features in main-menu if there are some
update count accordingly when features is added, updated, deleted or voted upon
-----------
-- quick-read-count for NEW-features for user
ALTER TABLE Players
ADD CountFeatNew smallint NOT NULL default '-1' AFTER CountMsgNew ;
ALTER TABLE Players
ADD INDEX CountFeatNew (CountFeatNew) ;
-----------
* include/std_functions.php (start_page):
- main-menu text change: Feature vote -> Features
* include/globals.php, include/quick_common.php include/std_functions.php:
- added include-file for globally used vars and constants without dependencies
- moved folder-consts from std_functions and quick_common to globals include-file
* include/classlib_userconfig.php (ConfigPages, ~.get_status_flags,
~.get_status_folder_visibility, ~.set_status_flags_folderbit, ~.set_status_flags,
~.get_status_folders_querypart, ~.update_status_folders, ~.is_system_status_folder,
~.load_config_pages),
include/std_functions.php (start_page, make_menu_horizontal, make_menu_vertical,
send_message, is_logged_in, count_messages_new, update_count_message_new),
include/message_functions.php (change_folders),
specs/db/dragon-ddl.sql, specs/db/table-Players.txt,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/player_consistency.php, skins/dragon/screen.css,
edit_folders.php, message.php, status.php, NEWS:
- show linked count of NEW messages in main-menu if there are some,
update count accordingly when sending messages and changing folders
- NEW and REPLY message folders on status page can be hidden,
load messages on status page only if some folders should be shown,
can be changed on edit-folders-page
-----------
-- GUI-flags for status page
ALTER TABLE ConfigPages
ADD StatusFlags smallint NOT NULL default '3' AFTER User_ID ;
-- quick-read-count for NEW-messages of user
ALTER TABLE Players
ADD CountMsgNew mediumint NOT NULL default '-1' AFTER Notify ;
-----------
* statistics.php:
- added total count for user-country statistics
* scripts/README.developers,
include/classlib_profile.php (SearchProfile.handle_action),
include/classlib_upload.php (ImageFileUpload.checkFileUploadError, ~.loadImage),
include/connect2mysql.php (check_passwd_method),
include/error_functions.php (Errors.set_mode),
include/faq_functions.php (faq_item_html), include/graph.php (get_image_type),
include/std_functions.php (start_html, start_page, send_email,
switch_admin_status, is_logged_in),
include/time_functions.php (time_remaining),
send_message.php, sgf.php, statratingspng.php, scripts/data_export.php:
- added typed-cast for switch-statements
2009-08-10 juga
* include/countries.php (getCountryText, getCountryFlagImage),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt, NEWS:
- adjusted flags for country-codes (ISO-3166-1):
- added flags for AX (Aaland Islands), AS (American Samoa), AW (Aruba),
EU (Europe), FO (Faroe Islands), PF (French Polynesia), GI (Gibraltar),
GL (Greenland), GU (Guam), GG (Guernsey), JE (Jersey), AN (Netherlands Antilles),
NF (Norfolk Island), MP (Northern Mariana Islands), TK (Tokelau),
EH (Western Sahara)
- fixed country-codes using user-defined ISO-3166 ccodes:
TP (East Timor) -> TL (Timor Leste), EO (Esperanto) -> XO, IA (Interlingua) -> XI,
CI (change pos), MJ (Montenegro) -> ME, __ (Earth) -> XE,
- added user-defined ISO-3166 ccodes for some fun "fighting-style" countries:
XK (Klingon Empire), XF (United Federation of Planets)
- fixed names: AG (Antigua and Barbuda) lower-case 'and', BA (Bosnia and Herzegovina) typo,
BN (Brunei Darussalam) full name, KZ (Kazakhstan) typo, MO (Macao) typo,
PS (Palestinian Territory) fix-name
- added ccodes but commented out in lack of nice flag:
AI (Anguilla), BM (Bermuda), BV (Bouvet Island), KY (Cayman Islands),
CX (Christmas Island), CC (Cocos Islands), CK (Cook Islands), FK (Falkland Islands),
IM (Isle of Man), MS (Montserrat), NU (Niue), PN (Pitcairn), SH (Saint Helena),
GS (South Georgia and Sandwich Islands), TC (Turks and Caicos Islands),
VG (Virgin Islands (British)), VI (Virgin Islands (US))
- added ccode but without flag because it's the same as other countries:
IO (British Indian Ocean Territory), GF (French Guinea), GP (Guadeloupe), MQ (Martinique),
MY (Mayotte), NT (Neutral Zone), NC (New Caledonia), RE (Reunion), BL (Saint Barthelemy),
MF (Saint Martin), PM (Saint Pierre and Miquelon), SJ (Svalbard and Jan Mayen),
UM (United States Minor Outlying Islands), WF (Wallis and Futuna)
- added static width/height for country-images: 32x20
- added URLs for ISO-3166 and more links to flags-images
-----------
# added flags
copy /images/flags/ai.gif
copy /images/flags/an.gif
copy /images/flags/as.gif
copy /images/flags/aw.gif
copy /images/flags/ax.gif
copy /images/flags/bm.gif
copy /images/flags/cc.gif
copy /images/flags/ck.gif
copy /images/flags/cx.gif
copy /images/flags/eh.gif
copy /images/flags/fk.gif
copy /images/flags/fo.gif
copy /images/flags/gg.gif
copy /images/flags/gi.gif
copy /images/flags/gl.gif
copy /images/flags/gs.gif
copy /images/flags/gu.gif
copy /images/flags/im.gif
copy /images/flags/je.gif
copy /images/flags/ky.gif
copy /images/flags/me.gif
copy /images/flags/mp.gif
copy /images/flags/ms.gif
copy /images/flags/nf.gif
copy /images/flags/nu.gif
copy /images/flags/pf.gif
copy /images/flags/pn.gif
copy /images/flags/sh.gif
copy /images/flags/tc.gif
copy /images/flags/tk.gif
copy /images/flags/vg.gif
copy /images/flags/vi.gif
copy /images/flags/xf.gif
copy /images/flags/xk.gif
# updated flags
copy /images/flags/rs.gif
# changed country-code
copy /images/flags/tl.gif ( was former tp.gif )
copy /images/flags/xe.gif ( was former __.gif )
copy /images/flags/xi.gif ( was former ia.gif )
copy /images/flags/xo.gif ( was former eo.gif )
# remove old flags
remove /images/flags/__.gif
remove /images/flags/eo.gif
remove /images/flags/ia.gif
remove /images/flags/mj.gif
remove /images/flags/tp.gif
-- fix country-code for East Timor -> Timor Leste: TP -> TL
UPDATE Players SET Country='tl' WHERE Country='tp' ;
-- fix country-code for Montenegro: MJ -> ME
UPDATE Players SET Country='me' WHERE Country='mj' ;
-- fix country-code for Earth: __ -> XE
UPDATE Players SET Country='xe' WHERE Country='__' ;
-- fix country-code for (language) Interlingua: IA -> XI
UPDATE Players SET Country='xi' WHERE Country='ia' ;
-- fix country-code for (language) Esperanto: EO -> XO
UPDATE Players SET Country='xo' WHERE Country='eo' ;
-- obsoleted country-code for Yugoslavia: YU -> RS (Serbia), but could be ME (Montenegro)
UPDATE Players SET Country='rs' WHERE Country='yu' ;
-- check for more unknown country-codes with Statistics page (evtl. fix more):
-- unknown flags are shown without flag-image but shows "[country-code]"
statistics.php?stats=1
-----------
* statistics.php (stats_start_page, show_stats_default, show_stats_user_countries),
skins/dragon/screen.css, NEWS:
- added new view with counts for user countries
- stats for all users or within 8 weeks (URL-var 'w')
- show remaining/unused countries (flags), so this can be used to view all flags
2009-08-09 juga
* forum/forum_functions.php (DisplayForum.print_headline, ~.draw_post,
Forum.fix_forum):
- show subject as "moderated" too for hidden initial thread-post
- show post-approved state in tree-overview for own posts
- fix-forum: also fix hidden initial thread-posts
* forum/post.php (approve_post, hide_post_update_trigger, show_post),
scripts/forum_consistency.php, specs/forums.txt,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- fixes for changed forum-behaviour: thread not hidden if initial thread post hidden
- increase Forums.ThreadsInForum for approving post only if thread was empty
- decrease Forums.ThreadsInForum for hiding post only if thread had only one post
- fix Thread.LastPost/Lastchanged/Updated also if LastPost was unset (=0)
- fix Forums.LastPost if LastPost was unset (=0) and fixed code with undefined forum-var
-----------
# Fixes for changed forum-behaviour: thread not hidden if initial thread post hidden
# see 'scripts/updates/other_changes_1_0_14_to_1_0_15.txt' for further instructions
scripts/forum_consistency.php
-----------
2009-08-08 juga
* forum/search.php:
- added search for hidden messages, except for guest-user
- added moderator-search for all/own shown/hidden/pending-approval messages
* forum/search.php, NEWS:
- added message-scope to search for own hidden messages
* features/lib_votes.php (VOTE_MIN_RATEDGAMES):
- reduced number of min-rated games to allow voting: 10 -> 5
* people.php:
- added user [jgrande] as developer
- changed title for Dragon executives as hint for restriction
on 6 weeks last-active, added active-note
* include/quick_common.php (DGS_VERSION), sgf.php (sgf_echo_rating), NEWS:
- fix cgoban3-issue with empty BR/WR-property for player-rank in downloaded SGF,
show '?' for unrated player
- show rating in standard short form for BR/WR-properties
- added more info in SGF: AP[application with DGS-version], SO[DGS-url to game]
- changed general comment property:
- added black/white start/end rating in general comment property (with ELO-rating)
- changed info if game is rated in extra-line: "Rated: Y|N"
- added comment with all useful SGF-properties, note about time-info
2009-08-05 juan_grande
* include/game_functions.php,
include/message_functions.php (game_settings_form),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/dragon-ddl.sql, specs/db/table-Waitingroom.txt,
add_to_waitingroom.php, waiting_room.php:
- added area-scoring for game-offers in waiting-room:
- added db-field Waitingroom.Ruleset to store territory and area scoring method
- added selectbox in new-game for waiting-room to choose
from territory (default) and area scoring
-----------
-- added ruleset selection to waiting room
ALTER TABLE `Waitingroom`
ADD COLUMN `Ruleset` enum('area', 'territory') NOT NULL DEFAULT 'territory' AFTER `Time` ;
-----------
2009-08-04 juga
* scripts/forum_consistency.php:
- split validation-step in "with" or "without" NEW-fixes
- added integrity-check on posts.author reporting if unknown author found in post
- optimized query-fix for Thread.Updated-fields
- cleanup (separator-lines, date-format, shorter output/code, clearer SQL)
* forum/forum_functions.php (DisplayForum.forum_message_box, ~.draw_post,
~.get_post_edited_string, Forum.fix_forum, ForumPost.build_query_sql):
- show post-message inputbox and reply-/edit-link on post only for allowed users
with Players.MayPostOnForum<>'N'
- fix for forum-fix for Forums.LastPost, which can be 0 if containing no threads
- use INNER-join for building post-query
* forum/post.php (post_message, approve_post, reject_post, hide_post, show_post,
hide_post_update_trigger, recalc_thread_lastpost, recalc_forum_lastpost):
- fix editing of post with different moderated-state changed from shown to hidden
- fix adding new-thread: update thread Posts.Updated and Forums.LastPost
- fix moderator-actions (approve/reject/hide/show_post):
update trigger only if moderated-state has changed to avoid wrong counters
if action re-done (by resubmitting same URL for example)
- fix recalc of thread-last-post if all posts of thread are hidden (no last-post)
- fix recalc of forum-last-post if all posts of forum are hidden (no last-post)
* forum/read.php:
- fix double forum-input-box when replying to one-post-only-thread
* specs/forums.txt:
- fixed comments and trigger-updates for table-fields, fixed post-editing
- added more docu about forum-stuff
2009-08-02 juga
* scripts/README.developers:
- added more detailed DGS-layouting
* specs/db/dragon-ddl.sql:
- fix DDL-glitch with comments (missing space)
* INSTALL:
- fix Adminlevel=-1 (now signed field) -> 0xffff
2009-07-31 juga
* specs/db/dragon-ddl.sql:
- sync'ed with local DB to reflect current DDL for DGS
2009-07-28 juga
* forum/forum_functions.php (DisplayForum, ~.show_found_rows, ~.print_headline,
~.forum_end_table, ~.make_link_array, ~.forum_message_box, ~.draw_post, ~.draw_overview,
Forum.load_threads, ForumThread.get_post, ~.create_navigation_tree,
ForumPost.is_thread_post, ~.get_approved_text, ForumRead.recalc_thread_reads),
include/filter.php (SearchFilter.has_query), forum/read.php, forum/search.php,
skins/dragon/screen.css, NEWS:
- changed moderation for forum-moderators to work like in non-moderation mode:
- allow add/edit/preview of post in moderator mode and non-moderator mode alike
- added forum-search option for moderators to allow searching for hidden posts
independent from moderator-state
- fixed bug for moderators: edit-text + toggle moderator + submit post
had lead to lost text
- show approved-state for hidden posts in thread overview and search-result
- moderator-mode shows hidden posts and moderation-actions
show/hide/approve/reject
- forum bugfixes:
- loading also hidden posts for navigation & initial thread post
- "quote"-option only allowed on non-hidden post (except for moderators
and post-author)
- fix missing (CSS-)borders for preview of post in new thread
- fix force-reply when >1 posts: added link to "add reply" to initial-thread
at end of thread
- fix thread view post navigation for hidden initial thread-post,
show first post without body if hidden (to allow replying and navigating),
mark with "Content moderated"-category-text
- aligning own and other post-subjects in thread overview
- changes for forum-search:
- show found-rows count in forum search result view
- always show top forum-bar, also for init state of forum-search page
without query and result,
omit bottom bar for initial forum-search
- always show forum-search link in forum-bar (for easier reloading)
- [cleanup]: refactored using of postClass-arg/var to control logic,
replaced with more flexible drawmode + defined consts DRAWPOST_..,
differ post views (NORMAL, PREVIEW, EDIT, REPLY, SEARCH) + submodes to mark
hidden posts and allowing to omit post-body,
derive CSS-post-class from drawmode
- optimize query for ForumRead when loading and recalculating threads
* forum/post.php (hide_post, show_post):
- fix showing & hiding post: only increasing/decreasing Forums.ThreadsInForum
for completly hidden thread
- added LIMITs on db-queries
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- deactivated game-notes in table-columns as default to reduce server-load
for games-list status-games & my running/finished games
-----------
-- deactivate game-notes in table-columns as default (to reduce server-load) for games-list (status, my running/finished games)
UPDATE ConfigPages
SET ColumnsStatusGames=ColumnsStatusGames & ~0x800,
ColumnsGamesRunningUser2=ColumnsGamesRunningUser2 & ~0x4,
ColumnsGamesFinishedUser2=ColumnsGamesFinishedUser2 & ~0x4 ;
-----------
* include/message_functions.php ($MSG_TYPES),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- fixed table-field-order for ConfigPages.ColumnsFeatureList
- fix-cleanup of wrong table-values for Messages.Type
- removed unused Messages.Type enum-values "ACCEPTED, DECLINED, DELETED"
-----------
-- [unused] remove unused enum-values of Messages.Type (ACCEPTED,DECLINED,DELETED), cleanup wrong table-values
-- check (wrong) empty 'Type'-values (2489 empties)
SELECT COUNT(*),Type FROM Messages GROUP BY Type ;
-- check all for normal type (game invitations accepted or declined)
SELECT COUNT(*) FROM Messages WHERE Type='' AND Subject LIKE 'Game invitation%' ;
-- check for newer such entries (all should be <2009)
SELECT MAX(Time) FROM Messages WHERE Type='' ;
-- fix table data + check empty types again (should be 0)
UPDATE Messages
SET Type='NORMAL' WHERE Type='' AND Subject LIKE 'Game invitation%' LIMIT 2489 ;
SELECT COUNT(*),Type FROM Messages GROUP BY Type ;
-- cleanup Messages.Type enum (ca. 2min)
ALTER TABLE Messages
MODIFY Type enum('NORMAL','INVITATION','DISPUTED','RESULT') NOT NULL default 'NORMAL' ;
-----------
* daily_cron.php:
- removed (old) code to delete old invitations (if needed add again later)
- removed vars to configure unused/missing code-fragments
* do_registration_blocked.php, forum/post.php (hide_post, show_post),
scripts/convert_from_old_forum.php, scripts/data_export.php:
- refactoring-fix for db-fields:
- replaced Forums.Moderated -> Forums.Options (FORUMOPT_MODERATED)
- replaced Posts.PendingApproval -> Posts.Approved
* forum/admin_show_forumlog.php:
- add currrent Posts.Approved-status to forumlog-entries:
S=shown, H=hidden, M=needs-moderation
- detailed forumlog notes
* include/std_functions.php ($DEBUG):
- added global $DEBUG for better debugging (default OFF)
* specs/db/dragon-data.sql:
- fixed seeding of guest-player in database of new dragon-go-server:
missed ConfigPages/ConfigBoard/UserQuota-table-entry
2009-07-24 juga
* edit_vacation.php, halfhourly_cron.php:
- removed alternative (old) code to handle vacation-is-over on games
* change_bio.php, edit_bio.php, userinfo.php:
- db-cleanup to use index on Bio.SortOrder (removed 2nd order-column)
* include/board.php (Board.load_from_db):
- db-cleanup to use index on Moves.MoveNr (replaced ID -> MoveNr),
MoveNr is not unique for game-id, but order within same MoveNr is not needed
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- cleanup [not-null] for db-fields:
- Players.InitialRating: NOT-NULL + default -9999
- Ratinglog.Rating: NOT-NULL + removed default
- Ratinglog.RatingMin: NOT-NULL + removed default
- Ratinglog.RatingMax: NOT-NULL + removed default
- Ratinglog.RatingDiff: NOT-NULL + removed default
-----------
-- [not-null] Players.InitialRating -> NOT NULL -> default -9999 [ok]
UPDATE Players
SET InitialRating='-9999' WHERE InitialRating IS NULL ;
ALTER TABLE Players
MODIFY InitialRating double NOT NULL default '-9999' ;
-- [not-null] Ratinglog.Rating/RatingMin/RatingMax/RatingDiff -> NOT NULL -> no default [mandatory fields]
-- following query-result should be 0
SELECT COUNT(*) FROM Ratinglog
WHERE Rating IS NULL OR RatingMin IS NULL OR RatingMax IS NULL OR RatingDiff IS NULL ;
ALTER TABLE Ratinglog
MODIFY Rating double NOT NULL,
MODIFY RatingMin double NOT NULL,
MODIFY RatingMax double NOT NULL,
MODIFY RatingDiff float NOT NULL ;
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added index to accelerate building of rating-graph (for ORDER BY Time)
-----------
-- added index to accelerate building of rating-graph (for ORDER BY Time)
ALTER TABLE Ratinglog
DROP INDEX uid ;
ALTER TABLE Ratinglog
ADD INDEX UserTime (uid,Time) ;
-----------
2009-07-23 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
include/std_functions.php (RATING_NONE, RATING_INIT, RATING_RATED),
include/classlib_user.php (User, ~.hasRating),
include/make_game.php (make_invite_game, create_game),
include/rating.php (update_rating, update_rating2, update_rating_glicko),
tournaments/include/tournament_participant.php
(TournamentParticipant.needTournamentRating),
scripts/recalculate_ratings2.php, tournaments/register.php,
add_to_waitingroom.php, change_profile.php, edit_profile.php,
join_waitingroom_game.php, message.php, new_game.php, send_message.php,
waiting_room.php:
- [not-null] db-cleanup of Players.RatingStatus: NOT-NULL + default 'NONE'
by adding new enum-value 'NONE' representing NULL-values,
added consts for enum: RATING_NONE/INIT/RATED
-----------
-- [not-null] Players.RatingStatus -> NOT NULL -> default 'NONE' (enhance enum) [ok]
ALTER TABLE Players
MODIFY RatingStatus enum('NONE','INIT','RATED') default 'NONE' ;
UPDATE Players
SET RatingStatus='NONE' WHERE RatingStatus IS NULL OR RatingStatus='' ;
ALTER TABLE Players
MODIFY RatingStatus enum('NONE','INIT','RATED') NOT NULL default 'NONE' ;
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/data_export.php:
- [not-null] db-cleanup of TranslationTexts.Ref_ID: NOT-NULL + default 0
-----------
-- [not-null] TranslationTexts.Ref_ID -> NOT NULL -> default '0' [ok]
UPDATE TranslationTexts
SET Ref_ID=0 WHERE Ref_ID IS NULL ;
ALTER TABLE TranslationTexts
MODIFY Ref_ID int(11) NOT NULL default 0 ;
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- [not-null] db-cleanup of Translationlog.Original_ID: NOT-NULL + default 0
-----------
-- [not-null] Translationlog.Original_ID -> NOT NULL -> default '0' [ok]
UPDATE Translationlog
SET Original_ID=0 WHERE Original_ID IS NULL ;
ALTER TABLE Translationlog
MODIFY Original_ID int(11) NOT NULL default 0 ;
-----------
* admin_show_errorlog.php, skins/dragon/screen.css:
- added text-filter on Errorlog.Message
- added table-navigation and found-rows for Errorlog
- put too long Debug-info into 2nd line in table-rows
- bugfix date-filter-const (FRDTU_ABS_ALL -> FRDTU_ALL_ABS)
* include/table_columns.php (Table.get_column_count):
- added method to ask for number of Table-columns
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- cleanup unused db-fields in Translationlog-table,
which have been replaced with Player_ID and Language_ID long before
-----------
-- [unused] cleanup Translationlog-table (fields not used and not referenced) -> CLEANUP
-- fields have been replaced with Player_ID/Language_ID, check with select
SELECT DISTINCT Handle, Language FROM Translationlog ;
ALTER TABLE Translationlog
DROP COLUMN Handle,
DROP COLUMN Language ;
-----------
* bookmark.php:
- fix sort-args for Opponents/Users online (field -> table-id)
* halfhourly_cron.php:
- removed unused Players.Lastaccess
- use index for Messages.Time (removed function around index-field)
* people.php:
- removed unused Players.Lastaccess from queries
* show_games.php:
- fix showing of 0-dates for opponent-lastaccess and last-changed
* include/connect2mysql.php (db_query):
- added const DBG_QUERY to log db-query to error-log,
const can be defined somewhere e.g. in local-config
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
admin_show_users.php, list_contacts.php, opponents.php, userinfo.php, users.php:
- cleanup [not-null] for db-fields:
- Players.Registerdate: NOT-NULL + removed default
- Players.Sessionexpire: NOT-NULL + default 0
- Players.LastMove: NOT-NULL + default 0
- Players.Lastaccess: NOT-NULL + default 0
-----------
-- [not-null] Players.Registerdate -> NOT NULL -> no default [mandatory field]
-- the following query-result should be empty before going on
SELECT COUNT(*) FROM Players WHERE Registerdate IS NULL ;
ALTER TABLE Players
MODIFY Registerdate date NOT NULL ;
-- [not-null] Players.Sessionexpire -> NOT NULL -> default '0' [ok]
UPDATE Players
SET Sessionexpire=0 WHERE Sessionexpire IS NULL ;
ALTER TABLE Players
MODIFY Sessionexpire datetime NOT NULL default 0 ;
-- [not-null] Players.LastMove -> NOT NULL -> default '0' [ok]
UPDATE Players
SET LastMove=0 WHERE LastMove IS NULL ;
ALTER TABLE Players
MODIFY LastMove datetime NOT NULL default 0 ;
-- [not-null] Players.Lastaccess -> NOT NULL -> default '0' [ok]
UPDATE Players
SET Lastaccess=0 WHERE Lastaccess IS NULL ;
ALTER TABLE Players
MODIFY Lastaccess datetime NOT NULL default 0 ;
-----------
* include/GoDiagram.php, include/board.php, include/connect2mysql.php,
include/error_functions.php, include/faq_functions.php, include/filter_parser.php,
include/form_functions.php, include/graph.php, include/gui_functions.php,
include/index.php, include/make_game.php, include/make_translationfiles.php,
include/message_functions.php, include/quick_common.php, include/rating.php,
include/sgf_parser.php, include/std_functions.php, include/table_columns.php,
include/table_infos.php, include/time_functions.php, include/utilities.php,
include/translation_functions.php, goodies/index.php, js/index.php,
forum/admin.php, forum/forum_functions.php, forum/index.php,
forum/old_links_redirect.php, phorum/list.php, phorum/read.php,
scripts/browser_stats.php, scripts/data_export.php, scripts/index.php,
scripts/mailtest.php, scripts/player_consistency.php,
scripts/tests/run_tests.php, scripts/update_translation_pages.php,
skins/dragon/index.php, skins/dragon2/index.php, skins/index.php,
rss/status.php, wap/status.php, pattern/index.php,
admin_do_translators.php, admin_faq.php, admin_show_users.php, admin_translators.php,
change_bio.php, change_password.php, change_profile.php, confirm.php, daily_cron.php,
do_registration.php, edit_bio.php, edit_password.php, edit_profile.php,
edit_vacation.php, error.php, game.php, game_comments.php, index.php,
introduction.php, links.php, list_messages.php, message.php, new_game.php,
people.php, quick_play.php, ratingpng.php, register.php, sgf.php, statistics.php,
statratingspng.php, translate.php, update_translation.php:
- cleanup + layout: indent, line-wraps, elseif, nested if's, braces,
empty lines, switch, arrays, ?-op, clearer vars, comments
* scripts/data_export.php:
- replaced static config of scripts super-admin-role by using ARR_USERS_MAINTENANCE
from 'include/config.php'
* translate.php:
- cleanup: removed old-way to determine translation-groups (static -> from db-table)
* include/message_functions.php (game_settings_form), edit_profile.php, new_game.php:
- use array_value_to_key_and_value() to build key-value map
* change_bio.php:
- bugfix: added missing str-concat
2009-07-22 juga
* include/rating.php (get_rating_at_date):
- bugfix get_rating_at_date: mysql_query -> mysql_single_fetch
* daily_cron.php:
- cleanup: removed unused code to update rating for users with not
existing RatingStatus=READY
* features/lib_votes.php, features/list_features.php features/list_votes.php,
forum/admin.php, forum/admin_show_forumlog.php, forum/forum_functions.php,
forum/post.php, code_examples/test_clock_tick.php,
include/GoDiagram.php, include/board.php, include/classlib_profile.php,
include/connect2mysql.php, include/contacts.php, include/game_functions.php,
include/make_game.php, include/make_translationfiles.php,
include/message_functions.php, include/rating.php, include/std_functions.php,
rss/status.php, wap/status.php,
admin_do_translators.php, admin_faq.php, admin_show_adminlog.php,
admin_show_errorlog.php, admin_show_faqlog.php, admin_show_users.php,
admin_users.php, change_bio.php, change_password.php, change_profile.php,
clock_tick.php, confirm.php, daily_cron.php, do_registration.php,
do_registration_blocked.php, edit_bio.php, edit_contact.php, edit_folders.php,
edit_vacation.php, faq.php, halfhourly_cron.php, join_waitingroom_game.php,
list_contacts.php, login.php, message.php, opponents.php, people.php,
quick_play.php, quick_status.php, ratinggraph.php, ratingpng.php,
send_message.php, send_new_password.php, statistics.php, statisticspng.php,
statratingspng.php, status.php, translate.php, update_translation.php:
- cleanup: replaced mysql_query() with db_query()-func (except for scripts/-stuff),
enhanced query-debugmessage to provide more error-context
* include/connect2mysql.php (db_query):
- db_query: added 3rd arg for different error-code
* include/std_functions.php (get_players_field):
- cleanup: removed get_players_field()-func (not used so far anyway), because
1. IPs may be re-used for different users,
2. retrieving generic fields with a generic query can be cumbersome
-> better do a specific (optimized and secured) selection
- make quota-exceeded notify translateable
* scripts/player_consistency.php:
- removed sensible-fields replacement breaking query
* scripts/browser_stats.php:
- cleanup (SQL-keywords in upper-case)
* scripts/convert_posindex.php:
- added SQL optimization using index
* include/message_functions.php (message_info_table, change_folders,
change_folders_for_marked_messages, echo_folder_box),
include/std_functions.php (FOLDER_DESTROYED),
scripts/message_consistency.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
daily_cron.php, edit_folders.php, search_messages.php, NEWS:
- cleanup for MessageCorrespondents.Folder_nr: NOT-NULL + removed default,
replaced former NULL-values with FOLDER_DESTROYED (= -4)
-----------
-- [not-null] MessageCorrespondents.Folder_nr tinyint default NULL -> no default -> NOT NULL
-- the following query-result should be empty before going on [update ca. 10s, alter-table ca. 25s]
SELECT COUNT(*) FROM MessageCorrespondents WHERE Folder_nr < 0 ;
UPDATE MessageCorrespondents
SET Folder_nr=-4 WHERE Folder_nr IS NULL ;
ALTER TABLE MessageCorrespondents
MODIFY Folder_nr tinyint NOT NULL ;
-----------
* daily_cron.php:
- cleanup (removed unused method to delete old messages)
2009-07-21 juga
* include/rating.php (update_rating,update_rating2,update_rating_glicko),
include/make_translationfiles.php (make_include_files),
include/std_functions.php (game_reference),
scripts/convert_from_old_forum.php, scripts/message_consistency.php,
scripts/recalculate_ratings2.php, scripts/start_frozen_clocks.php,
code_examples/test_clock_tick.php, rss/status.php, wap/status.php,
clock_tick.php, confirm.php, daily_cron.php, edit_vacation.php, faq.php,
game.php, game_comments.php, halfhourly_cron.php, quick_play.php, sgf.php:
- cleanup: since MySQL 5.0.x JOINs have higher precedence than ','-JOIN operator,
so add braces to avoid potential confusion when accidentally used with JOINs.
Should later be replaced with explicit JOIN-operators.
2009-07-20 juga
* scripts/README.developers,
scripts/convert_from_old_forum.php, scripts/game_consistency.php,
scripts/sql_game_export.php, forum/admin.php,
admin_faq.php, change_bio.php, edit_bio.php, userinfo.php:
- cleanup (write SQL-keywords in upper-case)
* scripts/message_consistency.php (game_settings_form),
scripts/player_consistency.php, people.php, sgf.php:
- cleanup (remove braces for single table-reference)
2009-07-19 juga
* NEWS:
- remaining-time-colored warning, found-rows status-games, row-nums users-page
- reordered sections + cleanup newer items, fixed typos, added more links,
added/adjusted/unified/clarified texts (single-quote-handling for link markup,
quick-status external-link, user-types icons, site-map update)
* news.php:
- replaced <br> with LF within <pre>-context
* include/std_functions.php (parse_tags_safe):
- bugfix: added special handling to allow external link for tag needing closing tag,
allow external link with '_'-tag-suffix notation for "<home_ ..></home>"
* include/time_functions.php, include/game_functions.php, include/make_game.php,
include/message_functions.php, tournaments/include/tournament_rules.php,
add_to_waitingroom.php, game.php, waiting_room.php,
code_examples/check_times.php:
- used consts for byo-yomi types JAP, CAN, FIS: BYOTYPE_...
* include/time_functions.php (time_remaining_value, get_time_remaining_warning_class),
show_games.php (build_time_remaining), status.php, skins/dragon/screen.css:
- warn with colors of my or opponents short remaining-time for status-games and my running games,
- use yellow(-card)-like color to warn about remaining-time <7d
- use red(-card)-like color to warn about remaining-time <3d
- added total found-rows to status games-list
* show_games.php (build_time_remaining):
- for my running-games added remaining-time for myself and opponent
- fix ambiguity with Lastchanged-field (Games,Clock)
2009-07-18 juga
* specs/db/optimize-sql.txt, scripts/README.developers:
- SQL optimizations, add hint in developer-README
* forum/forum_functions.php (Forum.fix_forum, ~.load_fix_forum_list, ~.load_forum),
scripts/forum_consistency.php:
- added forum consistency script to check- and fix forums and posts
* specs/db/table-Forum.txt, specs/forums.txt:
- corrected docu and specs about forums
2009-07-17 juga
* include/classlib_userconfig.php (COORD_RELATIVE_MOVENUM, COORD_REVERSE_MOVENUM),
include/board.php (Board.move_marks),
change_profile.php, edit_profile.php,
skins/dragon/screen.css, NEWS:
- added options for move-numbering: relative and reverse
- changed order, grouping and description of hover-options
- show admin-CSS for SGF-move-hover
- fixed building of bitmask: '+' -> '|'
2009-07-14 juga
* change_profile.php, edit_profile.php:
- bugfix setting SMOOTH_EDGE in user-profile (read wrong local var)
- store SMOOTH_EDGE-setting only for textured wood-colors + added note about that
* include/classlib_userpicture.php (UserPicture.getPicturePath),
include/config.php (USERPIC_FOLDER), INSTALL:
- fix userpic-directory handling: replaced DOC-root with relative base_path
* specs/db/dragon-data.sql, specs/db/dragon-ddl.sql, init.mysql, INSTALL:
- split init.mysql into dragon-ddl.sql and static dragon-data.sql
- added note how to create Dragon DDL using PHPMyAdmin from live-server
2009-07-13 juga
* include/std_functions.php (start_page, check_maintenance),
include/quick_common.php ($is_maintenance),
include/config.php ($ARR_USERS_MAINTENANCE),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
index.php:
- moved config-array $ARR_USERS_MAINTENANCE with allowed maintenance-users
- check for maintenance-user to allow form-login, use URL:
'index.php?userid=...' without exposing password in URL,
'login.php?userid=...&password=...' is still possible (but exposing password)
- added (unchanged) var-state for indication of maintenance-mode: $is_maintenance
- added '[MAINTENANCE]'-text in top-bar if in maintenance-mode
- added extra spaces around maintenance-message
2009-07-12 juga
* admin_show_errorlog.php, list_contacts.php, search_messages.php,
show_games.php:
- added absolute timeunit-choice for some RelativeDate-filters
* include/filter.php, features/list_features.php,
forum/admin_show_forumlog.php, forum/search.php,
tournaments/list_participants.php, code_examples/filter_example2.php:
- renamed const for absolute timeunit-choice of RelativeDate-filter
- increased size of input-field of date-filter
* include/filter.php (FilterRelativeDate, ~.get_input_element, ~.getTimeUnitText):
- added lazy-init for loading timeunit-choices for RelativeDate-filter
* forum/admin_show_forumlog.php:
- added all single moderator-actions for searching (hide/post/approve/reject post)
- added full-page-navigation with found-rows
- translated note
* sgf.php (sgf_echo_comment):
- fix bug with gamenote-appending in comment of last SGF-node for running-games
* game.php, status.php, show_games.php, sgf.php, NEWS,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- migrated GamesNotes.player enum-field -> GamesNotes.uid
in preparation for more than B and W player (e.g. TeamGo)
-----------
-- change GamesNotes.player-enum to user-id (e.g. for later Rengo has more than one B and W player)
ALTER TABLE GamesNotes
ADD uid int NOT NULL AFTER gid ;
-- migrate GamesNotes.player -> uid
UPDATE GamesNotes AS GN, Games AS G
SET GN.uid=IF(GN.player='B',G.Black_ID,IF(G.White_ID<>G.Black_ID,G.White_ID,-1)) WHERE GN.gid=G.ID ;
-- check if migration successful (following query-result must be empty)
-- NOTE: this can happen if Games are "broken", e.g. with same user as B & W
-- -> resolve by deleting GamesNotes or correcting Games-table
SELECT gid FROM GamesNotes WHERE uid <= 0 ;
-- switch primary-key (gid,uid) must be unique (that's the case if above conflicts have been resolved)
ALTER TABLE GamesNotes
DROP PRIMARY KEY,
ADD PRIMARY KEY (gid,uid) ;
-- remove unused field GamesNotes.ID, .player -> CLEANUP
ALTER TABLE GamesNotes
DROP COLUMN ID,
DROP COLUMN player ;
-----------
* edit_profile.php, NEWS,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- enlarged length of Players.Open-field 40 -> 60
-----------
-- enlarge field-size of Players.Open 40 -> 60
ALTER TABLE Players
MODIFY Open varchar(60) NOT NULL default '' ;
-----------
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- added index on Messages.Time
-----------
-- add index on Messages.Time to support searches on date (~ 2mins)
ALTER TABLE Messages
ADD INDEX Time (Time) ;
-----------
2009-07-11 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- Synchronized table-structure of various DGS-servers
live - SourceForge - local - remote
- Optimized all tables, checked categories "[category]":
- [field-order] adjusted field-order within table to keep different server in sync
- [field-size] minimized field data-types according to
http://dev.mysql.com/doc/refman/5.0/en/choosing-types.html
- [index] checked use of prefix-index for text/binary-types
- [index] checked all multi-column indexes if needed or missing
- [index] assured same field-type + length for joins
- [index] analyzed data-distribution for query-optimizer
- [not-null] avoided NULL in fields and indexes if possible, evtl. added default
- [no-def] removed some defaults where it makes sense to have mandatory fields
- [unused] corrected or removed unused fields or tables to save space
- check of sources for changes [not-null] and [no-def] signaled by '[ok']
- Database changes worth mentioning:
- Changes alltogether: 3x [field-order], 94x [field-size], 42x [not-null],
42x [index] (7x drop index, 8x add index, 4x fix wrong index, 23x analyze table),
44x [no-def], 22x [unused]
- Changes for category [index]:
- added index on Bio(uid,SortOrder) to accelerate bio-show and sorting
- added indexes on Errorlog to be able to better search for errors (for admin)
- added index on Forumlog(Action) for admin-searches
- added index on Posts.Approved, cleanup unused PendingApproval-index
- cleanup of MessageCorrespondents index, removed double-index for Folder_nr
- fixed wrong index on Moves(gid,ID) -> Moves(gid,MoveNr)
- cleanup of Ratinglog index, index on gid alone
- Changes for category [unused]:
- remove game-id auto-increment in MoveMessages-table
- remove unused fields 'From_ID' and 'To_ID' in Messages-table
- remove unused (old) tables on live-server saving 370MB of space,
useful to reduce backup-time
- remove unused 'OFF'-enum-value in NotesSmall/LargeMode field of Players-table
- Changes for category [field-size] with regard to foreign-keys (keep same-length):
- Changed type for Folders.Folder_nr from int -> tinyint
- Changed type for Clock.ID from int -> smallint
- Changed type for Forums.ID from int -> smallint
- Changed type for *.SortOrder from int -> smallint
- Changed type for *.Rating* from double -> float
- adjusted existing DDL-change for Players.Button (after pre-db-cleanup)
- added notes to perform database-changes and CLEANUP
- changed SQL-layout for updates
* init.mysql:
- sync with last known DDL for stable-version 1.0.14 with dump from PHPMyAdmin
of current stable live-version. Enhanced with inserts for guest-Player and
Clock-values.
* include/game_functions.php (allow_add_time_opponent):
- added TODO after DB-synchronization (removal of Games.Tournament_ID)
* change_bio.php:
- cleanup SQL-statements (LIMIT, Bio.uid)
* people.php:
- cleanup SQL-statement
* new_game.php:
- use clearer title: add game to waiting room
* waiting_room.php:
- show handicap-type text "Nigiri" for according "Manual (Nigiri)"-game
* game.php, skins/dragon/screen.css:
- show hint to close all boundaries before passing
- add some CSS for Game-settings, change color for ExtraInfos
* include/message_functions.php (game_settings_form):
- add note for manual-game 'even or handicap game'
* tournaments/include/tournament_round.php (TournamentRound),
tournaments/manage_tournament.php,
tournaments/edit_round.php,
specs/db/table-Tournaments.txt:
- added (unfinished) first draft of TournamentRound-table
* scripts/build-game-cluster.pl:
- added perl-script to determine user-clusters (from wishlist), see
http://www.dragongoserver.net/forum/read.php?forum=4&thread=4690#25424
2009-06-21 juga
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added (optional) cleanup of unused tables and fields on live-server saving
several hundreds MB of data
* include/message_functions.php (message_info_table, get_message_directions,
message_list_query, message_list_head, message_list_body,
message_build_user_string),
include/std_functions.php (send_message),
include/gui_functions.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/fix_message_thread-1_0_15.php,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/table-Messages.txt,
message.php, message_thread.php, people.php, search_messages.php,
skins/dragon/screen.css, site_map.php, NEWS:
- added new page with message-thread
- function to show or hide all message-texts for message-thread
- added image-links to message-thread and first-message if feasible
- for single message
- for message-lists on status-page, search-messages page, list-messages page
- added Messages.Thread and Messages.Level to manage message-thread,
server-messages have no threads
- added script and SQL-updates to set-up message-threads for messages on server
- adjust sending of message to manage message-thread with thread and thread-levels
-----------
copy /images/thread.gif
copy /images/msg_first.gif
-- add message-thread (without the need for recursion), (~90s + ~90s)
ALTER TABLE Messages
ADD Level smallint NOT NULL DEFAULT '0' AFTER Type,
ADD Thread int(11) NOT NULL DEFAULT '0' AFTER Type ;
ALTER TABLE Messages
ADD INDEX Thread (Thread) ;
-- fill Messages.Thread with some database-queries and fix-script
-- First do preparations for fix-scripts ...
-- * step 1, init (~25s): all starting messages start a thread
UPDATE Messages SET Thread=ID WHERE ReplyTo=0 ;
-- * step 2, init (~20s): revert Thread-field for system-message as they should have no replies and no threads
UPDATE Messages AS M INNER JOIN MessageCorrespondents AS MC ON MC.mid=M.ID SET M.Thread=0 WHERE M.Thread>0 AND MC.Sender='S' ;
-- * step 3, init: shouldn't happen, but did (system-message replied) -> add thread for those
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.ReplyTo=0 SET M2.Thread=M2.ID WHERE M.ReplyTo>0 AND M.Thread=0 AND M2.Thread=0 ;
-- * step 4, check: message-count which need message-thread assigning ... (~530.000 rows)
SELECT COUNT(*) FROM Messages WHERE ReplyTo>0 AND Thread=0 ;
-- * step 5, pre-run (~20s): set message of reply-level #1
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.ReplyTo=0 SET M.Thread=M.ReplyTo, M.Level=1 WHERE M.ReplyTo>0 ;
-- * step 6, pre-run (~4-20s each run): set message of reply-level #2 (execute 10 times) !!
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
UPDATE Messages AS M INNER JOIN Messages AS M2 ON M.ReplyTo=M2.ID AND M2.Thread>0 SET M.Thread=M2.Thread, M.Level=M2.Level+1 WHERE M.ReplyTo>0 and M.Thread=0 ;
-- * step 7, check: remaining message-count that need message-thread assigning ... (~37.000 rows left)
SELECT COUNT(*) FROM Messages WHERE ReplyTo>0 AND Thread=0 ;
-- * step 8, repeat for all thread-levels until no more rows affected any more using optimized script:
-- execute (with do_it=1): 'scripts/updates/fix_message_thread-1_0_15.php'
-- * step 9, execute 'scripts/message_consistency.php'
-----------
* include/table_columns.php (make_tablerow):
- added way to add extra-row within same row-class setting,
added for message-thread including texts
* include/std_classes.php (ThreadList):
- added class ThreadList to help managing thread-like views
* phorum/post.php:
- Requesting 'post.php' looks like a "spam"-attack [htaccess 404: /phorum/post.php],
but it consumes server-resources, because redirection writes Errorlog-entries.
So now avoid redirection with "catching" it with existing page declaring
it as "old page".
* phorum/index.php, phorum/list.php, phorum/read.php:
- committed "old" forum-pages to preserve code (not needed on newer servers)
* waiting_room.php:
- added notes about (FH) = Free handicap
* list_messages.php:
- bugfix adding FOUND_ROWS-SQL-directive for listing messages
2009-06-17 juga
* opponents.php, show_games.php, NEWS:
- added full-page-navigation with found-rows for:
opponents-page, my finished and running games
* include/std_classes.php (QuerySQL, ~.useUnionAll, ~.get_select):
- added support for pages with UNION-queries, possible because LIMIT global in UNION
- added support for both UNION-queries: 'UNION ALL' and 'UNION DISTINCT'
* include/table_columns.php (Table.make_next_prev_links):
- fixed last-page calculation from found-rows (was one page too much)
2009-06-14 juga
* include/gui_functions.php (echo_image_table),
opponents.php, show_games.php, NEWS:
- opponent page:
- added table-column with link to games with current opponent
for finished or running games; all-games treated as running
as there is no "all games view"
- added named filter "opp_hdl" on show-games page
* scripts/updates/other_changes_1_0_14_to_1_0_15.txt, people.php:
- added table-list image from silk icons collection representing table-list
-----------
copy /images/table.gif
-----------
* include/make_game.php (create_game),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
confirm.php, gameinfo.php, join_waitingroom_game.php, send_message.php, NEWS:
- for (newly started) double-games:
- show reference to game and game-info page of corresponding game
- after double-game deleted remove link-reference on game-info for remaining game
-----------
-- added double-game reference
ALTER TABLE Games
ADD DoubleGame_ID int(11) NOT NULL DEFAULT '0' AFTER Tournament_ID;
-----------
* include/gui_functions.php (echo_image_gameinfo),
game.php, show_games.php, status.php:
- use helper-func echo_image_gameinfo() to draw game-info image
* site_map.php:
- added DGS-wishlist, install, snapshot
* todo.php, TODO, docs.php site_map.php:
- removed todo-list, moved content to DGS-Wishlist on Sensei's Library
http://senseis.xmp.net/?DGSWishlist
- keep todo-page redirecting to DGS-wishlist on SLs to avoid breaking links
* forum/forum_functions.php (DisplayForum.init_navi_images),
include/classlib_game.php (GameScore.draw_score_box),
include/classlib_userpicture.php (UserPicture.getImageHtml),
include/game_functions.php (build_image_double_game),
include/gui_functions.php (echo_image_vacation, echo_image_nighttime,
echo_image_weekendclock, echo_image_admin, echo_image_online),
include/message_functions.php (game_info_table, get_colortext_probable),
edit_bio.php, game.php, game_comments.php, gameinfo.php, people.php,
show_games.php, status.php:
- used option title=null of image()-func to copy alt-text of images
- replaced CSS-image class for (non-) stone-images: InTextStone -> InTextImage
- cleanup (const usage, some W3C-conformity for HTML)
* include/std_functions.php (image, build_usertype_text):
- added option title=null for image()-func to copy alt-text of images
* include/contacts.php (Contact.load_globals, ~.getContactSystemFlags,
~.getContactUserFlags, ~.parse_system_flags, ~.parse_user_flags,
~.format_system_flags, ~.format_user_flags),
edit_contact.php, list_contacts.php:
- replace load_globals() with lazy-init static funcs to return "global" values
for user- and system-flags
* waiting_room.php, NEWS:
- Game-settings: move standard-handicap-placement from Handicap-column
to Game-Settings-column as "Free-handicap" if no standard-placement used
-----------
-- show Settings-column in waiting-room
UPDATE ConfigPages
SET ColumnsWaitingroom=ColumnsWaitingroom | 0x20000 ;
-----------
2009-06-13 juga
* tournaments/include/tournament_rules.php (TournamentRules,
~.convertTournamentRules_to_EditForm, ~.convertEditForm_to_TournamentRules):
- keep in sync with changes on waiting-room merging NIGIRI / DOUBLE
into MANUAL-game-setting parsing from and filling to edit-form
- bugfix: missed parsing/filling of handicap stones
- bugfix: parsing adj-komi, jigo-mode
* specs/db/table-Waitingroom.txt:
- added MANUAL-game with fix color for my-color WHITE and BLACK in waitingroom
- added future plans for fair-komi
* include/message_functions.php (game_info_table), NEWS:
- Changes on game-info table for waiting-room, new-game page, invite/dispute:
- show handicap-type with category, my-color, handicap and komi
- show different images to represent handicap-types for "color"
- show jigo-mode adjustment: k.0|k.5 removed 'k' -> .0|.5
- differ between 'Even game / Handicap game' for NIGIRI-handicap-type
- changed nigiri-handling for CONVENTIONAL and PROPER handicap-type:
- nigiri now only used if both players have same rating,
old behaviour for CONV-handicap-type was to make nigiri if there is no handicap
- show NIGIRI as my-color in probable game-settings in that case
- always show probable game-settings if calculated (conv|proper) or
resulting my-color, handicap and komi differing from setup handicap/komi
* include/message_functions.php (game_settings_form, game_info_table,
build_adjust_komi, build_suggestion_shortinfo, get_colortext_probable),
include/game_functions.php (adjust_komi, get_category_handicaptype,
build_image_double_game),
include/make_game.php (make_invite_game),
add_to_waitingroom.php, join_waitingroom_game.php,
waiting_room.php (determine_color), skins/dragon/screen.css,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, NEWS:
- Changes in waiting-room / new-game page:
- added MANUAL-game with fix color for my-color WHITE and BLACK
- replaced Color-column with (probable) Game-Settings (mentioned in notes) with:
my-color, handicap and komi
- changed handicap-type filter matching on collection
of handicap-type categories: conv, proper, nigiri, double, fix-color, manual
- migrated and merged handicap-types NIGIRI & DOUBLE with category MANUAL
for waiting-room, invites/disputes and tournament-rules
- replaced 'Even game with nigiri' with MANUAL-game with my-color NIGIRI
- replaced 'Double game' with MANUAL-game with my-color DOUBLE
- Waitingroom.Handicaptype is mapped to category and my-color
- CONV / PROPER -> category CONV, no my-color
- NIGIRI / DOUBLE -> category MANUAL, my-color NIGIRI / DOUBLE
- WHITE / BLACK -> category MANUAL, my-color WHITE / BLACK
- bugfix of strange behaviour for adjust-komi: '-0' -> 0
- cleanup: use consts, better error-labeling, merges to avoid redundancies
- minor changes, layouting, comments
-----------
-- added manual coloring black/white
ALTER TABLE Waitingroom
MODIFY Handicaptype enum('conv','proper','nigiri','double','black','white') NOT NULL default 'conv' ;
ALTER TABLE Waitingroom
ADD INDEX Handicaptype (Handicaptype);
-----------
* include/rating.php (suggest_proper, suggest_conventional):
- changed nigiri-handling for CONVENTIONAL and PROPER handicap-type
- nigiri only used if both players have same rating,
old behaviour for CONV-type was to make nigiri if there is no handicap
- bugfix: returning $iamblack as int
* include/gui_functions.php (button_TD_width_insert, button_TD_insert_width):
- refactoring: renamed method to easier finding of insert_width-methods
* include/std_functions.php (insert_width), include/table_columns.php (make_tablehead):
- defined const DEFAULT_KOMI = 6.5
- insert_width: allow to enable/disable MinWidth-class for forced with using transparent-image
- bugfix: use style MinWidth-class to achieve height 0 not disturbing other elements in table-cells
2009-06-12 juga
* include/message_functions.php (game_info_table, echo_game_restrictions,
echo_accept_same_opponent, build_accept_same_opponent_array,
build_suggestion_shortinfo),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Waitingroom.txt,
include/quick_common.php, include/std_functions.php, error.php,
waiting_room.php (echo_rating_limit), new_game.php,
add_to_waitingroom.php, join_waitingroom_game.php,
daily_cron.php, NEWS:
- added waiting-room restriction to avoid same opponent joining too many games,
challenger has to wait some days or is restricted by number of games to join
- daily-cron: delete unused WaitingroomJoined-entries
- bugfix: added check on rated-finished-games restriction, limited board-size
- increased number of games to 1..20 (=NEWGAME_MAX_GAMES)
- cleaned up Waitingroom.Rated/MustBeRated: removed unused enum-value 'Done'
-----------
-- accept same opponent
ALTER TABLE Waitingroom
ADD SameOpponent tinyint signed NOT NULL default '0' AFTER MinRatedGames ;
-- added table to keep track of joined waiting-room games with opponent
CREATE TABLE WaitingroomJoined (
opp_id int(11) NOT NULL,
wroom_id int(11) NOT NULL,
JoinedCount tinyint signed NOT NULL default '0',
ExpireDate datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (wroom_id,opp_id)
) ENGINE=MyISAM;
-- cleanup table Waitingroom removing (unused) enum-value 'Done'
ALTER TABLE Waitingroom
MODIFY Rated enum('N','Y') NOT NULL default 'N',
MODIFY MustBeRated enum('N','Y') NOT NULL default 'N' ;
-----------
* confirm.php, game.php:
- bugfix: on delete can't stay on board
2009-06-11 juga
* confirm.php, game.php, skins/dragon/screen.css, NEWS:
- added 'Stay on board'-checkbox allowing to stay on board after submit move
- removed submit-button 'submit move and go to status'
- increased width of message-box: 50 -> 60
- adjusted text for submit button: 'submit and go to next game' -> 'submit move'
- adjusted text for goback button: 'Go back' -> 'Cancel move',
renamed action: nextback -> cancel
- query-optimize: OR -> IN
- adjusted layout: all message submit-buttons on one line
* include/message_functions.php (game_settings_form):
- move Komi-adjustment below handicap-adjustment
- added timezone-info for weekend-clock setting
2009-06-10 juga
* waiting_room.php, NEWS:
- added color-column indicating which color game-offerer had chosen,
'no image shown' stands for calculated color (that's not shown,
because it would need too much calculation on every item)
2009-06-08 juga
* include/message_functions.php (game_settings_form):
- added headers for game-settings-form (Time settings & Restrictions)
* include/message_functions.php (game_settings_form, game_info_table,
build_adjust_komi),
include/make_game.php (create_game),
include/game_functions.php (adjust_komi),
tournaments/include/tournament_rules.php (TournamentRules, ~.to_string,
~.build_persist_query_part, ~.convertTournamentRules_to_EditForm),
tournaments/view_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
add_to_waitingroom.php, waiting_room.php, NEWS:
- added komi-adjustment: +-komi-value and jigo-mode allowing or rejecting Jigo
- to allow jigo always round komi down on absolute value
-----------
-- game-komi adjustment & jigo mode (for Waiting room)
ALTER TABLE `Waitingroom`
ADD `AdjKomi` decimal(6,1) signed NOT NULL default '0.0' AFTER `Handicaptype`,
ADD `JigoMode` enum('KEEP_KOMI','ALLOW_JIGO','NO_JIGO') NOT NULL default 'KEEP_KOMI' AFTER `AdjKomi` ;
-- game-komi adjustment & jigo mode (for Tournament rules)
ALTER TABLE `TournamentRules`
ADD `AdjKomi` decimal(6,1) signed NOT NULL default '0.0' AFTER `Handicaptype`,
ADD `JigoMode` enum('KEEP_KOMI','ALLOW_JIGO','NO_JIGO') NOT NULL default 'KEEP_KOMI' AFTER `AdjKomi` ;
-----------
* list_contacts.php, opponents.php users.php:
- show user-picture icon only if feature not disabled
* include/classlib_userconfig.php (ConfigBoard):
- bugfix: init notes-dimensions
* include/message_functions.php (game_settings_form):
- reformat handicap-stone Standard Placement on right side in form
* game.php:
- move showing of 'Comments'-link to the right of View-move-element
- bugfix: show scoring-info only on last move
* game_comments.php, NEWS:
- bugfix: include comments on PASS, SCORE and RESIGN moves
- optimize SQL-query (removed DISTINCT)
2009-06-07 juga
* list_messages.php, search_messages.php, waiting_room.php,
features/list_features.php, features/list_votes.php,
tournaments/list_participants.php, tournaments/list_tournaments.php,
NEWS:
- added full-page-navigation for most pages with Tables
- Waiting room, Tournaments, Tournament participants, Messages,
Search messages, Users, Votes, Features
- All finished and running games, Observed games
- NOTE: User-specific (also my) finished and running games as well as the
opponents page can not be equipped with full-page navigation, because of
used UNION-db-queries, which do not work correctly with SQL_CALC_FOUND_ROWS.
UNION-queries can be replaced by disabling global-config ALLOW_SQL_UNION,
but would need performance-testing before using this option!!
- NOTE (revised): It is possible under certain conditions.
* show_games.php:
- added full-page-navigation, except for queries using UNIONs
* include/std_classes.php (QuerySQL.has_union, ~.get_part, ~.get_select):
- QuerySQL: handling forbidden SQL-options with UNIONs;
especially SQL_CALC_FOUND_ROWS, HIGH_PRIORITY
* include/table_columns.php (Table.disable_table_mode, ~.make_next_prev_links):
- allow to disable some table-modes after constructing Table
- bugfix on full-page-navigation: show entries even if only one page showed (needing no navi)
* include/classlib_game.php (GameScore.draw_score_box),
game.php (draw_score_box):
- moved draw_score_box()-function to 'include/classlib_game.php'
* users.php:
- added full page-navigation using SQL_CALC_FOUND_ROWS
* include/table_columns.php (Table, ~.set_found_rows, ~.make_next_prev_links, ~.get_query),
include/std_classes.php (QuerySQL, ~.get_part),
include/connect2mysql.php (mysql_found_rows),
include/config.php,
skins/dragon/screen.css, INSTALL, NEWS:
- added full page-navigation for Tables using SQL_CALC_FOUND_ROWS,
this is experimental to evaluate need of additional load on live-server
- enabled with Table-option TABLE_ROWS_NAVI
- added additional navigation-links and info if used
- feature can be disabled with global config ALLOW_SQL_CALC_ROWS
- FOUND_ROWS() must be set from outside Table-class to avoid DB-queries in it
- FOUND_ROWS() need php.ini config "mysql.trace_mode = Off" to work
- added page-navigation-link to start of result-set
* edit_picture.php:
- added note about supported image-formats (JPEG, GIF, PNG)
* include/classlib_game.php (GameScore.calculate_score):
- fix negative komi-output in scoring-information: + -x -> -x
2009-06-06 juga
* include/classlib_userconfig.php (ConfigBoard.insert_default),
include/classlib_userquota.php (UserQuota.insert_default):
- bugfix: use correct arg on static insert_default()-method
* include/classlib_game.php (GameScore, ~.calculate_score, ~.recalculate_score),
include/move.php (check_remove), confirm.php, game.php:
- check_remove: made scoring-mode explicit
- for testing, temporarily added 2nd score-box with area-scoring for comparison
* include/board.php (Board.load_from_db):
- cleanup: remove un-needed arg-ref
* scripts/sql_game_export.php:
- added script to export game-related tables as helping "template" for local import
* NEWS:
- game-info, off-time (vacation/nighttime/weekend), userinfo (2 cols),
"online"-users, mark admin users, optimizations
* userinfo.php, include/quick_common.php, skins/dragon/screen.css:
- show user-info table in two columns (less game- and more-game-related info)
with nearly equal number of rows
- show additional vacation-icon if user on vacation
- show night-icon when player is in sleeping-time (near Nighttime)
- show full range of night-time (from - to)
- bugfix: added mysql_free_result for bio-infos
* include/time_functions.php (is_hour_clock_run, is_weekend, is_weekend_clock,
is_weekend_clock_stopped, is_vacation_clock, is_nighttime_clock),
include/game_functions.php (get_to_move),
gameinfo.php, game.php:
- show images for players being off-time for vacation, sleep-time, weekend-clock,
show context-specific hint-tip on images
- gameinfo: show current clock-status and reason why it is stopped (vacation, sleep-time, weekend)
- show vacation-icon besides 'On vacation'-text if user on vacation
* include/time_functions.php (get_clock_used):
- bugfix: PHP5-adjustments for checking on invalid timestamp,
use date-formatting without leading zeros
* game.php:
- replaced red-colored 'On vacation'-text with vacation-icon
* gameinfo.php, skins/dragon/screen.css:
- bugfix: reduce remaining-time by current number of ticks for player to move
- add info which player (color) has to move next
- use CSS to show empty-cells
* status.php:
- bugfix on games order on Lastchanged (was switched accidentally on rev 1.111)
- show vacation-icon besides 'On vacation'-text if user on vacation
- added hideable game-info column in games-list with link to respective gameinfo-page
- added image-icon (house) for users being "online" (=lastaccess) within certain time range
* list_contacts.php, users.php, opponents.php, include/std_functions.php:
- added image-icon (house) for users being "online" (=lastaccess) within certain time range
* forum/forum_functions.php (DisplayForum.draw_post, ForumUser),
userinfo.php:
- forum: show admin-icon near author-info for executive-user with link to people with executives
- userinfo: show admin-icon on Dragon executives near user-id
* include/gui_functions.php (echo_image_vacation, echo_image_nighttime,
echo_image_weekendclock, echo_image_admin, echo_image_online, echo_off_time):
- added methods to show icon for vacation, night-time, weekend-clock,
being executive-admin, being "online", in off-time
* people.php (get_executives), include/std_functions.php (section),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- added section with all Dragon executives matched by ADMINGROUP_EXECUTIVE,
show admin-icon for Dragon executives (FAQ-editors, forum moderators)
- added HTML-anchors for all sections
- added images for: vacation, night-time
- added modified icons from silk-collection for:
admin (Dragon executive), being "online", stopped-weekend-clock
-----------
copy /images/admin.gif
copy /images/online.gif
copy /images/night.gif
copy /images/vacation.gif
copy /images/wclock_stop.gif
-----------
* confirm.php:
- optimized SQL-query for skip-to-next-game allowing to use Lastchanged-index
* clock_tick.php:
- changed SQL-query using BETWEEN..AND
- added more comments on sleeping-time
* admin_admins.php:
- bugfix with db-query
* INSTALL:
- need GD-version 2.x at least for image-upload
2009-05-24 juga
* include/filterlib_country.php (FilterCountry.get_input_element,
~.getFilterCountries):
- cleanup: refactored static-init of _FILTERC-array into lazy-init where used
* include/countries.php (getCountryText, getCountryFlagImage),
change_profile.php, edit_profile.php, list_contacts.php, opponents.php,
userinfo.php, users.php, waiting_room.php, tournaments/list_participants.php,
scripts/README.developers:
- fixed init of globals by lazy-loading
- T_(..) needs $tr[] array to be set beforehand
- lazy-init of countries-array
- lazy-init of filter-countries
- replaced global COUNTRIES-array with functions to check/get
country-code/-text and country-flag-image
* include/std_functions.php (basic_safe),
include/utilities.php (basic_safe):
- moved basic_safe() from std_functions.php to utilities.php
* include/languages.php:
- added known languages (for later)
2009-05-23 juga
* features/lib_votes.php (Feature.update_vote, ~.fix_user_quota_feature_points,
~.build_feature_notes; FeatureVote.build_query_featurevote_list,
~.load_featurevote_summary),
features/edit_feature.php, features/list_votes.php:
- add feature-points to voters if feature-status changes ...
- to NACK: return all voted points if feature rejected
- to LIVE: return minimum of own-vote and average-vote
- bugfix on consuming feature-points for unvoted feature
- bugfix: handle abstention from voting (0-vote) by ignoring it in calculations
- changed signature for FeatureVote::build_query_featurevote_list()
- cleanup (mysql_query -> db_query), bugfixes (wrong var),
minor text-adjustment for feature-notes
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
features/list_features.php:
- enhanced feature my-vote filter: allow search for <0 =0 >0 points
-----------
-- need restriction on voted points
ALTER TABLE FeatureVote
ADD INDEX Points (Points) ;
-----------
* include/classlib_userconfig.php, features/list_features.php,
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added table-column-set for feature-list: ColumnsFeatureList
-----------
-- table-column-set for feature-list
ALTER TABLE ConfigPages
ADD ColumnsFeatureList int(11) NOT NULL default '-1' AFTER ColumnsGamesObservedAll2 ;
-----------
* features/lib_votes.php (Feature.update_vote, FeatureVote.check_points,
~.getFeaturePointsText),
features/list_features.php, features/list_votes.php,
features/vote_feature.php, features/edit_feature.php,
error.php:
- show and keep track of remaining feature-points with UserQuota
- refined feature-searching on subject: min-chars 4 -> 2, mark matches
- wordwrap feature-subject, reduced some feature-notes
* include/classlib_userquota.php (UserQuota),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-UserQuota.txt,
do_registration.php,
daily_cron.php:
- added UserQuota to keep track of remaining feature-points
that can be used to vote on features
- increase users feature-points every 10 days by 1 point
-----------
-- added table for points-management and quota-like fields
CREATE TABLE UserQuota (
uid int(11) NOT NULL,
FeaturePoints smallint(5) NOT NULL default '25',
FeaturePointsUpdated datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (uid),
KEY FeaturePointsUpdated (FeaturePointsUpdated)
) ENGINE=MyISAM;
-- create UserQuota for all players
INSERT UserQuota (uid,FeaturePointsUpdated)
SELECT ID,NOW() FROM Players ;
-----------
* features/vote_feature.php:
- bugfix: show subject and description tag-formatting
* features/list_votes.php:
- added features-notes
- renamed title: Feature vote list -> Feature vote result list
* include/std_functions.php (start_page):
- renamed main-menu item: Vote -> Feature vote
* forum/list.php:
- thread list: switch columns Hits <-> PostCount
2009-05-21 juga
* users.php:
- added table-row-number (in 1st column)
* include/std_functions.php, admin_admins.php, admin_show_users.php,
features/lib_votes.php (Feature.delete_feature, ~.is_admin),
features/edit_feature.php, NEWS:
- added voting-admin (ADMIN_VOTE) as admin-executive
- allow feature-deletion & editor-showing to voting-admin
* include/std_functions.php (start_page, make_menu_horizontal, make_menu_vertical):
- allowed multi-texts in std-menu
- changed Vote-link referring to feature-vote-results
* site_map.php:
- added links for feature-voting
* features/lib_votes.php (Feature, ~.get_query_fields),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
features/list_features.php, features/list_votes.php,
features/edit_feature.php, features/vote_feature.php, NEWS:
- increase features-subject-maxlen: 120 -> 255, wrapped long feature-subject
- cleanup
- optimized query for vote-selection
- renamed page-titles and bottom-links
- removed Lastchanged from table-list (shown on detail-view anyway)
- removed Editor from table-list (shown on detail-view anyway)
- added more notes
-----------
-- allow longer Feature-subject
ALTER TABLE FeatureList
MODIFY Subject varchar(255) NOT NULL ;
-----------
* include/classlib_userpicture.php (UserPicture.getPicturePath, ~.getImageHtml),
include/quick_common.php,
edit_picture.php, userinfo.php, list_contacts.php, opponents.php, users.php,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt, NEWS:
- added indicator to show if user has an existing user-picture
- refactoring: moved code to display user-picture into UserPicture::getImageHtml()
- changed user-picture new-URL-suffix to readable date-format
* people.php:
- added picture-icon to show user has uploaded a picture (taken from silk icons)
-----------
copy /images/picture.gif
-----------
* include/table_columns.php (Table, ~.make_table_head, ~.make_filter_row,
~.get_displayed_tableheads; TableHead):
- allow image in table-header
- added TableHead-class to manage table-headers
- removed unused get_displayed_tableheads()-function
2009-05-20 juga
* include/classlib_upload.php (UploadImageFile.*),
include/classlib_userpicture.php, edit_picture.php:
- removed resizing(-attempt) of user-picture
- not really needed, users should upload "fitting" images
- resizing needs too much special treatments for transparency
- restricted max. upload filesize: 100KB -> 30KB
- UploadImageFile.need_resize as indicator for resizing-need
- adjusted error-texts
* site_map.php:
- added edit of user-picture
* edit_picture.php:
- added notes on uploading user-picture
2009-05-17 juga
* admin_show_users.php, admin_users.php:
- enhanced admin-options DENY_HIDE_BIO and DENY_EDIT_BIO to restrict
user-picture too
* include/classlib_upload.php (ImageFileUpload),
include/classlib_userpicture.php (UserPicture),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Players.txt,
include/config.php, INSTALL,
edit_picture.php, error.php, userinfo.php, NEWS:
- added user-picture on user-info page (support for GIF, JPEG, PNG)
- added page to add or remove user-picture
- restricted filesize and image dimensions
- added config for USERPIC_FOLDER to store uploaded user-pictures,
only use if USERPIC_FOLDER-config set
-----------
-- added user-picture
ALTER TABLE Players
ADD UserPicture varchar(48) NOT NULL default '' ;
-----------
* include/form_functions.php (Form, ~.set_form_attributes, ~.add_form_attribute,
~.create_form_string, ~.create_string_func_file, ~.print_start,
~.print_start_default, ~.print_insert_file):
- needed for user-picture file-upload:
- added neccessary form-attributes and form-element for FILE-upload-inputbox
- enhanced signature of print_start(_default) with additional form-attributes,
create_form_string: changed order of building form-string
* tournaments/edit_properties.php (isNumberOrEmpty),
tournaments/include/tournament_utils.php (TournamentUtils.isNumberOrEmpty):
- cleanup: moved isNumberOrEmpty() to TournamentUtils::isNumberOrEmpty()
* tournaments/edit_director.php, tournaments/list_directors.php:
- added link to manage tournament
* error.php:
- added tournament-rules errors: tournament_miss_rules
* include/std_functions.php (start_page), bookmark.php:
- added system-bookmark to edit-profile as shortcut
2009-05-10 juga
* bookmark.php, include/std_functions.php (start_page), NEWS:
- added bookmarks in top-bar with 3 most requested queries
- latest forum posts
- players & opponents "online"
* include/classlib_game.php (GameScore),
include/board.php (Board.fill_game_score, ~.create_territories_and_score),
include/move.php (check_remove),
confirm.php, game.php (draw_score_box), skins/dragon/screen.css, NEWS:
- added scoring information on game-page
- show score-box in scoring step and for finished games handling
to left of game-board with scoring data (dame, stone, dead-stones,
territory, prisoners, komi, handicap) if needed for scoring mode
- prepare for handling territory and area scoring
- refactored check_remove() returning GameScore-object
encapsulating score-calculation
- fixed extra-info-table images (adding alternative-text) on game-page
2009-04-04 juga
* include/std_functions.php (make_menu, make_menu_link),
tournaments/manage_tournament.php, skins/dragon/screen.css, NEWS:
- listed management-operations with descriptions and admin-links
* site_map.php:
- added tournament-rules, tournament-manager
* tournaments/manage_tournament.php, tournaments/edit_tournament.php,
tournaments/edit_participant.php, tournaments/edit_properties.php,
tournaments/edit_rules.php, tournaments/view_tournament.php:
- added separate page for tournament management with all admin-links
and important info
* status.php:
- fix: check ALLOW_TOURNAMENTS-config for "My tournaments"-link
* tournaments/view_tournament.php, skins/dragon/screen.css:
- added CSS for Table_info for Game-rules and tournament status
- adjusted output of tournament game-rules
* tournaments/view_tournament.php:
- added Tournament-status with current round, number of rounds,
current tournament-status, registration status of user)
* tournaments/include/tournament.php (Tournament.allow_create),
tournaments/list_tournaments.php:
- allow only tournament-admin to create new tournaments,
this is in preparation for a release longing to support the official
Dragon-tournament but with an "uncomplete" tournament-feature
* tournaments/include/tournament_rules.php (
TournamentRules.build_persist_query_part, ~.needsCalculatedHandicap,
~.needsCalculatedKomi, ~.getHandicaptypeText),
tournaments/view_tournament.php:
- show ruleset with current tournament round and game-related settings
* include/table_infos.php (Table_info.make_table),
include/message_functions.php (game_info_table),
skins/dragon/screen.css:
- renamed Table_info CSS-table-id suffix: Infos -> TableInfos
to avoid "clash" with other CSS-id 'GameInfos'
* waiting_room.php:
- hide notes-section if showing game-info
* include/std_functions.php, skins/dragon/screen.css, NEWS:
- link-markup with optional text
- added own CSS-class 'linkmarkup' for link-markup with normal layout at first
* tournaments/list_participants.php:
- added link to edit-participants
* admin_show_errorlog.php, NEWS:
- added filters on Errorlog: ID, Date, IP
2009-04-03 juga
* include/message_functions.php (game_settings_form),
tournaments/include/tournament_rules.php (TournamentRules),
tournaments/edit_rules.php, tournaments/edit_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt, NEWS:
- added creating and editing of (single) tournament-ruleset
- adjusted game-settings-form for editing Tournemant-rules (GSET_TOURNAMENT),
- supported settings are: size, handicap-types (conventional/proper/even),
handicap-adjustment, handicap-placement, time-settings, weekendclock, rated
- added consts GSET_MSG_DISPUTE/INVITE/WAITINGROOM/TOURNAMENT
-----------
-- added tournament-rules with game-settings
CREATE TABLE TournamentRules (
ID int(11) NOT NULL auto_increment,
tid int(11) NOT NULL,
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
Flags smallint(5) unsigned NOT NULL default '0',
Size int(11) NOT NULL default '19',
Handicaptype enum('CONV','PROPER','NIGIRI','DOUBLE') NOT NULL default 'CONV',
Handicap int(11) NOT NULL default '0',
Komi decimal(6,1) NOT NULL default '6.5',
AdjHandicap tinyint signed NOT NULL default '0',
MinHandicap tinyint signed NOT NULL default '0',
MaxHandicap tinyint signed NOT NULL default '127',
StdHandicap enum('N','Y') NOT NULL default 'N',
Maintime int(11) NOT NULL default '0',
Byotype enum('JAP','CAN','FIS') NOT NULL default 'JAP',
Byotime int(11) NOT NULL default '0',
Byoperiods int(11) NOT NULL default '0',
WeekendClock enum('N','Y') NOT NULL default 'Y',
Rated enum('N','Y') NOT NULL default 'N',
Notes text NOT NULL,
PRIMARY KEY (ID),
KEY tid (tid)
) ENGINE=MyISAM;
-----------
* message.php, new_game.php:
- replaced strings with consts GSET_MSG_DISPUTE/INVITE/WAITINGROOM
* error.php:
- show debug-messages with sensitive data (db-message) only for admin user
* tournaments/edit_participant.php:
- added "Manage tournament" bottom-link
* tournaments/edit_properties.php:
- added tournament-title
* tournaments/edit_tournament.php:
- changed page-title to "Tournament Management"
2009-04-01 juga
* error.php:
- output Errorlog.ID only on "irregular" errors where useful
- removed unused error-codes: mysql_update_player, no_action, no_game_nr, not_a_player,
couldnt_make_backup, couldnt_open_transl_file, admin_no_longer_admin_admin
2009-03-29 juga
* tournaments/include/tournament.php (Tournament, ~.formatRound, ~.getRoundLimitText,
~.build_persist_query_part, ~.new_from_row),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/table-Tournaments.txt,
tournaments/edit_participant.php, tournaments/edit_tournament.php,
tournaments/list_tournaments.php, tournaments/register.php,
tournaments/view_tournament.php:
- added handling of Tournament-rounds in Tournament-table: Rounds, CurrentRound
-----------
-- added tournament-rounds
ALTER TABLE Tournament
ADD Rounds int(11) NOT NULL default '1',
ADD CurrentRound int(11) NOT NULL default '1' ;
-----------
* tournaments/include/tournament_properties.php (TournamentProperties,
~.checkUserRegistration, ~._load_user, ~.build_query_sql),
tournaments/include/tournament_participant.php (
TournamentParticipant.count_tournament_participants, ~.build_query_sql, ~.getFlagsText),
tournaments/include/tournament.php (Tournament, ~.allow_register),
include/classlib_user.php (User, ~.setRating, ~.hasRating, ~.matchRating,
~.to_string, ~.new_from_row),
include/gui_functions.php (echo_notes),
tournaments/edit_participant.php, tournaments/register.php,
tournaments/view_tournament.php, skins/dragon/screen.css, NEWS:
- check user for tournament-registration restrictions
- show registration restrictions for selected player
- disallow registration for user, but allow for TD
- mark user-registration with VIOLATE-flag if violated registration-restrictions by TD
- User-class: added loading of PlayerGames-fields RatedGames, Finished for rated- and finished games
* tournaments/view_tournament.php:
- show registration restrictions in registration-section
- show all registration-status of TPs
* tournaments/include/tournament_properties.php (TournamentProperties,
~.checkUserRegistration, ~._load_user, ~.build_query_sql),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql, specs/db/table-Tournaments.txt,
tournaments/edit_properties.php, tournaments/view_tournament.php:
- removed TournamentProperties.UserMinMoves: user can't see it, so bad to control
* tournaments/include/tournament_utils.php (TournamentUtils.formatDate),
tournaments/edit_tournament.php, tournaments/list_participants.php,
tournaments/view_tournament.php:
- moved date-formatting into TournamentUtils
- minor cleanup
* features/edit_feature.php, features/list_features.php,
features/vote_feature.php, forum/index.php, NEWS:
- marked admin bottom-links with CSS
* include/error_functions.php (Error.add_error, err_log), error.php, NEWS:
- output Erroglog-ID as [ERRLOG123] for easier debugging and error-location
- output debug-message except if containing sensitive-data
- added missing error-code 'mail_failure'
* tournaments/list_participants.php, NEWS:
- show table row-number
* include/table_columns.php (Table, ~.add_tablehead, ~.is_column_displayed,
~.add_row, ~.make_table, ~.add_or_del_column, ~.make_tablehead,
~.parse_table_attbs, ~.make_table_filter, ~.make_tablerow, ~.build_cell_rownum):
- added Table-config TABLE_ROW_NUM (on column-id #0) to show row-number on each row-line
* waiting_room.php, NEWS:
- simplified "suitable" games restrictions
- added notes about suitable games
* new_game.php (add_new_game_form), waiting_room.php (add_new_game_form),
include/config.php, include/std_functions.php (start_page), NEWS:
- splitted new-game form from waiting-room into separate new-game page
- added new-game page in main-menu with access-key [n]
* site_map.php:
- added intro, tournaments (mine, management), new-game, site-map, logout
- changed pos of: statistics, Admin/Translate-link
- shortened/adjusted texts for bottom-link
* edit_folders.php, status.php:
- shortened/adjusted texts for bottom-link
* userinfo.php, skins/dragon/screen.css:
- use CSS for admin-links with lighter green
* features/lib_votes.php (Feature.build_feature_notes):
- removed user vote-restriction on user-moves (can't be seen everywhere on DGS pages)
- fixed notes-text
* tournaments/include/tournament_properties.php (TournamentProperties.build_notes):
- fixed text
2009-03-27 juga
* include/rating.php (getRatingArray),
tournaments/edit_properties.php, waiting_room.php:
- added getRatingArray() to get array with 30k..9dan (used for selectbox)
* tournaments/include/tournament_properties.php (TournamentProperties,
~.getRatingUseModeText, ~.build_notes),
tournaments/edit_properties.php, tournaments/view_tournament.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added edit-page for Tournament-properties for registration-restrictions
- bugfixes (insert, defaults), text changes
- added notes for tournament-properties-edit page
* tournaments/edit_tournament.php:
- added edit-properties in bottom-menu-link
- removed unnecessary <center>-tags
* include/std_functions.php:
- added const RATING_9DAN
* tournaments/include/tournament_utils.php (normalizeRating):
- added numeric-check on rating
* tournaments/edit_participant.php:
- use translated texts for edits
2009-03-24 juga
* tournaments/include/tournament_properties.php (TournamentProperties),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- added TournamentProperties-table and persistence-layer-class to manage it
-----------
-- manage Tournament-Properties with restrictions for register-phase
CREATE TABLE TournamentProperties (
tid int(11) NOT NULL,
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
MinParticipants smallint NOT NULL default '2',
MaxParticipants smallint NOT NULL default '0',
RatingUseMode enum('COPY_CUSTOM','CURR_FIX','COPY_FIX','ENTER_FIX') NOT NULL default 'COPY_CUSTOM',
RegisterEndTime datetime NOT NULL default '0000-00-00 00:00:00',
UserMinRating double NOT NULL default '-9999',
UserMaxRating double NOT NULL default '-9999',
UserRated enum('N','Y') NOT NULL default 'N',
UserMinGamesFinished smallint NOT NULL default '0',
UserMinGamesRated smallint NOT NULL default '0',
Notes text NOT NULL,
PRIMARY KEY (tid)
) ENGINE=MyISAM;
-----------
* tournaments/include/tournament_utils.php (TournamentUtils.isAdmin,
~.parseDate, ~.normalizeRating),
tournaments/include/tournament_participant.php (TournamentParticipant.setRating),
tournaments/include/tournament.php (Tournament.isAdmin, ~.parseDate),
tournaments/edit_tournament.php, tournaments/list_tournaments.php:
- moved some general consts and functions into tournament_utils.php
2009-03-23 juga
* add_to_waitingroom.php, waiting_room.php, NEWS,
include/message_functions.php (game_info_table),
include/rating.php (echo_rating),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- WaitingRoom: added (optional) minimum number of rated finished games
-----------
-- add required number of finished rated games
ALTER TABLE `Waitingroom`
ADD `MinRatedGames` smallint NOT NULL default '0' AFTER `Ratingmax` ;
-----------
* features/lib_votes.php (Feature.build_feature_notes),
tournaments/view_tournament.php:
- fixes translation-texts
* NEWS:
- tournaments (registration-edit for TDs, invite-handling)
- added rating-type conversion: added KGS-rank, added DGS-rating
- status page: open tournament-application, "My tournaments"-link
* status.php, include/classlib_userconfig.php,
tournaments/list_tournaments.php, tournaments/list_participants.php:
- show open tournament-application of user
- added bottom-menu-link to users tournament-list as "My tournaments"
- added table-column-set ColumnsStatusTournaments:
tournaments-list on status page
- added table-column-set ColumnsTDTournamentParticipants:
tournament-participants-list for TDs
-----------
-- table-column-set for status-tournaments-list
ALTER TABLE ConfigPages
ADD ColumnsStatusTournaments int(11) NOT NULL default '-1' AFTER `ColumnsStatusGames`;
-- table-column-set for tournament-participant-list for TD
ALTER TABLE ConfigPages
ADD ColumnsTDTournamentParticipants int(11) NOT NULL default '-1' ;
-----------
* tournaments/include/tournament_participant.php (TournamentParticipant,
~.setStatus, ~.has_rating, ~.to_string, ~.build_persist_query_part),
tournaments/edit_participant.php, tournaments/edit_tournament.php,
tournaments/view_tournament.php, tournaments/register.php,
site_map.php, skins/dragon/screen.css,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
specs/db/table-Tournaments.txt:
- added admin/tournament-director (TD) registration-edit on tournament-participants
- edit customized rating and starting round
- change user registration-status between: unset, APPLY, REGISTER, INVITE
- added UserMessage, AdminMessage
- added invitation-handling for user and TDs
- approve invite or decline invite (leading to edit-invite)
- renamed bottom-links 'Invite user' -> 'Edit participants'
- registration:
- added TP-flags: invited, ack-invite, ack-apply
- don't show changeable fields when on invite-status or deleting user
- minor changes (CSS, status-texts, notes)
-----------
-- added message-texts for talk between TD and participant-user
ALTER TABLE TournamentParticipant
ADD UserMessage text NOT NULL,
ADD AdminMessage text NOT NULL ;
-----------
* tournaments/list_participants.php:
- changed table-columns:
- made registration-id optional
- show status also for normal-user (hideable)
- show current user rating if no tourney-rating set
- replaced Notes-column with column indicating presence of Notes/User-/AdminMessage,
removed notes-filter
- minor changes, bugfixes
* include/std_classes.php (ListIterator.addItem, ~.to_string),
tournaments/include/tournament.php (Tournament.load_tournaments),
tournaments/include/tournament_director.php (TournamentDirector.load_tournament_directors),
tournaments/list_directors.php, tournaments/list_participants.php,
tournaments/list_tournaments.php:
- ListIterator: changed item-content to store original database-row for item
* include/rating.php (is_valid_rating, echo_rating, getRatingTypes, convert_to_rating),
change_profile.php, edit_profile.php:
- moved rating-conversion-types into include/rating.php
- added rating-types:
- added 'kgs' with interpolation-table from http://senseis.xmp.net/?RankWorldwideComparison
- added 'dragonrating' expecting ELO-rating, renamed 'dragonrating' -> 'dragonrank'
- bugfixes, enhancements, minor changes
* include/classlib_user.php (User, ~.to_string, ~.build_query_sql,
~.new_from_row, ~.load_user_query, ~.load_user, ~.load_user_by_handle):
- added reading of Players.RatingStatus, added funcs to load user
2009-03-22 juga
* tournaments/include/tournament.php (Tournament.getStatusText),
tournaments/edit_tournament.php:
- bugfix: get statustext for ADM also for non-admin
* tournaments/include/tournament_director.php (TournamentDirector.build_query_sql),
tournaments/list_directors.php:
- fixed user-ref-link for tournament-directors-list (needed to read Players.ID)
* include/classlib_profile.php, tournaments/list_directors.php,
tournaments/list_participants.php, tournaments/list_tournaments.php:
- renamed tournament-profile-consts: .._LIST -> ..S, e.g.
PROFTYPE_FILTER_TOURNAMENT_LIST -> PROFTYPE_FILTER_TOURNAMENTS
* NEWS:
- tournaments (round-robin, list, scopes, registration, <tourney>-markup)
- admin-roles (ADMIN_TOURNAMENT), server-configuration
2009-03-21 juga
* tournaments/list_tournaments.php:
- added role-search for participating user and tournament director
- added link to return to show ALL tournaments
* tournaments/edit_director.php,
skins/dragon/screen.css,
tournaments/edit_tournament.php,
tournaments/list_directors.php,
tournaments/view_tournament.php:
- added checks, if tournament-editing is allowed
- added checks, if adding/deleting tournament directors is allowed
- mark admin-bottom-links with CSS
- removed Tournaments-link from bottom-menu
- separate preview for edit-tournament: title and description
* tournaments/list_directors.php:
- adjust text for sending user-message
- introduced User-class to be used for Players-table-related data
* tournaments/view_tournament.php:
- added basic registration for tournament participants
- show number of completed registrations
- show number of registrations on other stati for admins/TDs only
- show a users registration status
- added general information section common to all tournaments,
cleaned up section with tournament-title and description
- added own set with "bottom"-links for each page-section
* tournaments/include/tournament_participant.php (TournamentParticipant),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt,
tournaments/include/tournament.php (Tournament.allow_register),
include/classlib_profile.php,
tournaments/list_participants.php,
tournaments/register.php,
tournaments/view_tournament.php,
skins/dragon/screen.css,
error.php, site_map.php:
- added basic registration for tournament participants
- list of participants of a tournament
- tournament registration page for users
- added CSS for tournament-view, registration
-----------
-- manage Tournament-Participants
CREATE TABLE TournamentParticipant (
ID int(11) NOT NULL auto_increment,
tid int(11) NOT NULL,
uid int(11) NOT NULL,
Status enum('APPLY','REGISTER','INVITE') NOT NULL default 'APPLY',
Flags smallint(5) unsigned NOT NULL default '0',
Rating double NOT NULL default '-9999',
StartRound tinyint(3) unsigned NOT NULL default '1',
AuthToken varchar(32) NOT NULL default '',
Created datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
Comment varchar(60) NOT NULL default '',
Notes text NOT NULL,
PRIMARY KEY (ID),
KEY tid (tid),
KEY uid (uid)
) ENGINE=MyISAM;
-----------
* include/gui_functions.php (echo_notes),
features/lib_votes.php (Feature.build_feature_notes),
features/edit_feature.php, features/list_features.php,
tournaments/include/tournament.php (Tournament.build_notes, ~.getStatusText)
tournaments/edit_tournament.php:
- generalized Feature::echo_feature_notes()-func into echo_notes()-func
- added tournament notes with status-legend
* admin_admins.php, admin_show_users.php, error.php,
tournaments/include/tournament.php (Tournament.allow_register),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added admin-role for tournament-admin: ADMIN_TOURNAMENT,
replaced ADMIN_DEVELOPER with tournament-admin
- removed admin-role ADMIN_ADD_ADMIN,
one admin-role SUPERADMIN is enough to manage admins (add new and edit)
- SUPERADMIN can't remove SUPERADMIN-flag for himself
- minor changes (cleanup, comments, simplified URL-args)
-----------
-- removed ADMIN_ADD_ADMIN-role (has been merged with ADMIN_SUPERADMIN-role)
UPDATE Players SET Adminlevel=Adminlevel & ~0x20 WHERE Adminlevel > 0 ;
-----------
* include/filter.php (SearchFilter.get_query),
specs/filters.txt:
- added filter-option FC_QUERYSQL to add arbitrary QuerySQL
to filter-query if filter-value set
* include/std_functions.php (make_menu, is_logged_in):
- changed admin-roles:
- added tournament-admin ADMIN_TOURNAMENT, added in executives-group
- removed ADMIN_ADD_ADMIN, merged into admin-role SUPERADMIN
- make_menu: added arg to disable access-key in links,
link-values can be arrays with additional attributes for <a>-tag
- is_logged_in: addded Lastaccess in $player_row
* include/classlib_user.php (User),
tournaments/include/tournament_director.php (TournamentDirector):
- added User-class to represent some basic Players-table related data
* include/classlib_userconfig.php (ConfigBoard.update_all),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- fixed query for ConfigBoard-update (missed quotes, fixed query-syntax)
- undo rename of table-column-set: ColumnsTournamentList -> ColumnsTournaments
- added table-column-set for tournament-participant-list: ColumnsTournamentParticipants
-----------
-- undo rename of table-column-set for tournament-list
ALTER TABLE ConfigPages
CHANGE ColumnsTournamentList ColumnsTournaments int(11) NOT NULL default '-1' ;
-- table-column-set for tournament-participant-list
ALTER TABLE ConfigPages
ADD ColumnsTournamentParticipants int(11) NOT NULL default '-1' ;
-----------
* site_map.php, status.php:
- fixed URL for games i'm observing
2009-03-09 juga
* js/goeditor.js:
- used original pictures (found on SourceForge.net) for active/inactive tool,
renamed original bl/gr.gif -> blue/grey.gif
* goban_editor.php,
include/std_functions.php (start_html, start_page),
js/goban_editor.js,
skins/dragon/screen.css:
- added playing ground "goban_editor.php" for new Goban-editor using
manual-edit and/or JavaScript-based editor, but also included
old go-diagram-editor which is JavaScript-based too
- added config-switch ALLOW_GOBAN_EDITOR to activate new Goban-editor
- included JavaScript-file "js/goban_editor.js" into page
if activated by ALLOW_GOBAN_EDITOR
* forum/forum_functions.php (DisplayForum, ~.setConfigBoard,
~.forum_message_box, ~.draw_post):
- added <igoban>-tag for "inline"-goban go-board
* include/classlib_goban.php (Goban, MarkupHandlerGoban),
include/goban_handler_gfx.php,
include/goban_handler_sl.php:
- added Goban-class as container to manage go-board with different
input/output-formats
- added MarkupHandlerGoban-class to handle <igoban>-tag with "inline"-goban
- added GobanHandler for Goban-object to output as graphical-oriented board
- added GobanHandler for reading/parsing the "Sensei's Library" goban-format
* include/coords.php (is_hoshi):
- enhanced method to be able to check for hoshi on non-square boards
* include/board.php (Board):
- added defined-check on EDGE_SIZE-definition (copied in other files to avoid include)
- added comments for graphical board-output to "keep-in-sync"
* include/GoDiagram.php (GoDiagram, ~.set_values_from_goban_tag, ~.echo_board,
~.echo_editor, extract_value, create_godiagrams),
forum/forum_functions.php (DisplayForum, ~.setConfigBoard,
~.forum_message_box, ~.draw_post),
forum/post.php (post_message), forum/read.php:
- basic bugfixes and minor changes to bring Go-Diagrams to work for others developers
- changed var cfg_board -> ConfigBoard, fixed usage
- fixed default-handling of extract_value()-func and parsing <goban>-tag
- fixed parsing of goban-'view' attribute
- fixed parsing and checking of goban-'left/right/down/up' attributes
- fixed base_path for go_editor.js
- fixed handling of "altered" go-diagrams
- allow to activate usage of Go-Diagrams
- added config-switch ALLOW_GO_DIAGRAMS to activate old Go-Diagrams
- included JavaScript "js/goeditor.js" into page if activated by ALLOW_GO_DIAGRAMS
* js/goeditor.js (change_mode, show_button, dump_data, goeditor),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- basic bugfixes and minor changes to bring Go-Diagrams to work
- fixed base_path handling
- fixed missing images (to mark selected/unselected tool) using added bl.gif and existing dot.gif
- added some comments, TODOs
- replaced string-keyword
-----------
copy /images/blue.gif
copy /images/grey.gif
-----------
* forum/read.php:
- bugfix: don't show preview on editing forum-post
* include/std_functions.php (start_page, tournament_reference, attb_build):
- added check on config-switch ALLOW_TOURNAMENTS to activate Tournaments
- added <tourney>-tag to reference tournaments
- added <igoban>-tag for "inline"-goban go-board
- attb_build: don't quote values of JavaScript-attributes "on...", e.g. onClick
* include/utilities.php (extract_regex_value):
- added method to extract attribute-string parsed with regex
* tournaments/edit_director.php, tournaments/edit_tournament.php,
tournaments/list_directors.php, tournaments/list_tournaments.php,
tournaments/view_tournament.php, site_map.php:
- added check on config-switch ALLOW_TOURNAMENTS to activate Tournaments
* include/config.php:
- added config-switches
- ALLOW_GOBAN_EDITOR to activate new Goban-Editor, switched OFF by default
- ALLOW_GO_DIAGRAMS to activate old Go-Diagrams, switched OFF by default
- ALLOW_TOURNAMENTS to activate Tournaments, switched OFF by default
* scripts/update_translation_pages.php, scripts/README.translations,
tournaments/include/tournament.php, tournaments/include/tournament_director.php,
tournaments/edit_tournament.php, tournaments/list_directors.php,
tournaments/list_tournaments.php, tournaments/view_tournament.php,
features/edit_feature.php:
- added notes how to add new Translation-group
- fixed adding of new Translation-groups for features and tournaments
- used own translation-group for Features and Tournaments (fixed quoting: ' -> ")
* edit_profile.php:
- re-added profile for smooth-board-edge,
seems it has been accidentally removed around 2008-06-06
2009-03-03 juga
* site_map.php:
- added Tournaments-pages (list/view/edit)
- added TournamentDirectors-pages (list/edit)
* tournaments/include/tournament.php (Tournament, ~.to_string, ~.persist,
~.build_persist_query_part, ~.insert, ~.update, ~.allow_edit_tournaments,
~.allow_edit_directors, ~.build_query_sql, ~.load_tournament,
~.load_tournaments, ~.allow_create, ~.parseDate),
tournaments/include/tournament_director.php (TournamentDirector),
tournaments/list_tournaments.php, tournaments/edit_tournament.php,
tournaments/view_tournament.php,
tournaments/list_directors.php, tournaments/edit_director.php,
include/classlib_profile.php, include/gui_functions.php,
error.php, skins/dragon/screen.css,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- Changes to manage tournaments
- create and edit tournaments
- started page to view tournament
- check if user is allowed to create/edit tournament
- added management of tournament-directors
- added table TournamentDirector and class to manage tournament-directors
- create/delete/edit tournament-directors for a tournament
- view list of tournament-directors of a tournament with search-profile
- check if user is allowed to create/delete or edit tournament-directors
- bugfixes, adjusted texts, added CSS
-----------
-- manage Tournament-Directors
CREATE TABLE TournamentDirector (
tid int(11) NOT NULL,
uid int(11) NOT NULL,
Comment varchar(255) NOT NULL default '',
PRIMARY KEY (tid,uid)
) ENGINE=MyISAM;
-----------
* features/lib_votes.php (Feature.set_description),
features/edit_feature.php, features/list_features.php, features/list_votes.php:
- bugfix: format feature-subject/description with (intended) correct make_html_safe()-args
- minor text-adjustments for empty-values
* error.php:
- cleanup: remove unused errors and old tournament-errors
* users.php:
- bugfix: correct ID-button-link to right user-info
* include/std_functions.php (start_page),
tournaments/index.php, tournaments/list_tournaments.php:
- renamed tournaments/list.php -> ~/list_tournaments.php
2009-03-02 juga
* tournaments/list_tournaments.php, tournaments/list.php:
- renamed list.php -> list_tournaments.php
2009-03-01 juga
* tournaments/include/tournament.php (Tournament.getStatusText, ~.isAdmin),
tournaments/list.php:
- added filter on tournament-owner: show all or my tournaments
- show tournaments on admin-status only to developer-admins
* tournaments/include/tournament.php (Tournament),
tournaments/list.php, tournaments/index.php,
include/classlib_profile.php, include/classlib_userconfig.php,
include/config.php, include/std_functions.php (start_page),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Tournaments.txt:
- started Tournament-management in tournaments/-subdir
- added Tournament-list page with search-profile and own table-column-set,
index-page redirects to tournament-list page
- added link to Tournament-list page into main-menu with access-key [t],
replaced access-key of Translate [t] -> [l]
- added table Tournament and class to manage tournaments
- ConfigPages: added table-column-set for tournament-list
-----------
-- manage Tournaments
CREATE TABLE Tournament (
ID int(11) NOT NULL auto_increment,
Scope enum('DRAGON','PUBLIC','PRIVATE') NOT NULL default 'PUBLIC',
Type enum('ROUNDROBIN') NOT NULL default 'ROUNDROBIN',
Title varchar(255) NOT NULL default '',
Description text NOT NULL,
Owner_ID int(11) NOT NULL default '0',
Status enum('ADM','NEW','REG','PAIR','PLAY','CLOSED') NOT NULL default 'NEW',
Created datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
StartTime datetime NOT NULL default '0000-00-00 00:00:00',
EndTime datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (ID),
KEY Status (Status),
KEY StartTime (StartTime)
) ENGINE=MyISAM;
-- table-column-set for tournament-list
ALTER TABLE ConfigPages
CHANGE ColumnsTournaments ColumnsTournamentList int(11) NOT NULL default '-1' ;
UPDATE ConfigPages
SET ColumnsTournamentList=-1 ;
-----------
* include/std_classes.php (ListIterator, WhereClause):
- added ListIterator-class to help iterating over lists and keep track of query
- cleanup: removed WhereClause-class (not needed)
* new_tournament.php, list_tournaments.php, show_tournament.php, create_tournament.php,
include/tournament.php, include/tournament_round.php,
include/tournamenttypes/index.php, include/tournamenttypes/macmahon.php,
include/tournamenttypes/all_types.php,
init-tournaments.mysql:
- removed old tournament-stuff (will be replaced),
including previously added DDL
* init-tournaments.mysql:
- added DDL needed for old tournament-stuff to have it for one revision in CVS,
exported from Dragon on SourceForget.NET
2009-02-28 juga
* NEWS:
- restructured (swapped code-improvements with minor-changes)
- added more links to changed-feature page, corrected links
* include/filter.php:
- bugfix: added include for constant BITSET_MAXSIZE
* show_games.php, NEWS:
- added columns start-rating, end-rating and rating-diff of opponents
counterpart-user for user-running/finished view
- changed different default-sort for observe-all view to Observer-count
* show_games.php:
- renamd all SQL-fields & vars for user-running/finished view
with prefix 'opp' in preparation of adding some user-specific fields
- changed texts of color-filter (not always my-user-view):
replaced "i'm/my" -> "user"
* status.php:
- shortened bottom menu link texts to save space (in sync with show-games-page)
* include/classlib_profile.php, include/classlib_userconfig.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
show_games.php, site_map.php, NEWS:
- added view-mode to show all observed games with own profile and column-set
- show "#Observed"-column with number of observing users
- show "Mine"-column if my games are observed
- shortened bottom menu link texts to save space
-----------
-- added games-list view for [all observed games]
ALTER TABLE `ConfigPages`
ADD ColumnsGamesObservedAll2 int(11) NOT NULL default '-1' AFTER `ColumnsGamesObserved2`,
ADD ColumnsGamesObservedAll int(11) NOT NULL default '-1' AFTER `ColumnsGamesObserved2` ;
-----------
* include/classlib_userconfig.php (ConfigBoard.load_config_board):
- bugfix: read values from cookies only if there are some
* ratinggraph.php:
- fixed link-text (can be other user): "Show my finished games" -> "Show finished games"
* show_games.php, NEWS, scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- Table-class can now handle >32 columns, so
- show weekendclock for all views
- added game-info as column-id #32 linked to game-info-page
* show_games.php:
- minor adjustments (with some layouting/cleanup)
- show links to all possible game-list-views in bottom menu and changed order
- adjusted page/section title to reflect current view-mode
- adjusted image-alt text for color-image
* show_games.php, list_contacts.php, status.php, waiting_room.php,
include/message_functions.php (message_list_head, message_list_body),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- Table-class can now handle >32 columns, so changed column-IDs:
- show-games-page: reverted column-ids to avoid data migration for
- game-notes: #15 -> #33
- last-access: #15 -> #25 -> back to #15
- weekendclock: #12 -> #24 -> back to #12
- contact-list: moved column-id #33 -> #9 for static Actions-header
- status-page: moved column-id #15 -> #12 for Notes-column
- waiting-room: moved column-id #33 -> #17 for static Info-column
- message-lists: moved column-id #33 -> #8 for static Message-flow-column
* include/table_columns.php (is_column_displayed, add_or_del_column),
include/filter.php (SearchFilter.add_filter, ~.init, ~.get_active_set, ~.get_url_parts),
include/filter_functions.php (filter_id2mask),
include/classlib_userconfig.php (ConfigTableColumns.get_maxsize):
- enhanced Table- and Filter-classes to handle >32 columns
using BitSet/ConfigTableColumns-class
* include/classlib_profile.php (SearchProfile.handle_action):
- bugfix: check for existing profile on deleting profile
2009-02-27 juga
* list_contacts.php:
- bugfix: handle ambiguous column-name Players/Contacts.UserFlags
* opponents.php, skins/dragon/screen.css, NEWS:
- added CSS to highlight sum-row/column in game-stats for opponents
* include/table_columns.php (add_external_parameters),
list_contacts.php, opponents.php, search_messages.php:
- make use_hidden-option explicit (no default) for add_external_parameters()
- bugfix: fix usage add_external_parameters(.., use_hidden) after recent signature-change
* users.php:
- bugfix for loading ConfigTableColumns for my-userid
* forum/search.php:
- bugfixes:
- show forum-name in forum-filter selection
- fix query on visible forums
2009-02-25 juga
* include/classlib_userconfig.php (ConfigBoard, ConfigPages, ConfigTableColumns),
include/classlib_bitset.php (read_from_int_array), scripts/tests/BitSetTest.php,
include/std_functions.php ($cookie_pref_rows),
include/table_columns.php (TableColumns, ~.is_column_displayed, ~.add_or_del_column),
include/GoDiagram.php (GoDiagram, echo_board, echo_editor, create_godiagrams, draw_editors),
include/board.php (Board.set_style),
forum/forum_functions.php (toggle_forum_flags),
forum/post.php (post_message),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
specs/db/table-Players.txt,
scripts/data_export.php,
scripts/README.developers,
forum/index.php, forum/list.php, forum/read.php,
do_registration.php, change_profile.php, edit_profile.php, edit_folders.php,
status.php, waiting_room.php, users.php, opponents.php, list_contacts.php,
show_games.php, game.php:
- split Players-table into GUI-related config-tables
- ConfigBoard-table with board-related GUI-config
- cookie-prefs passing to ConfigBoard-handling via global var $player_row
read in std_funcs.is_logged_in()
- ConfigPages-table with (other) pages-related GUI-config mostly special
to one single page like table-column-set
- bugfix BitSet-class: added handling of negative-values: erase highest 2 bits + fixed phpunit-test
- added PHP-experience with 32-bit (signed) integers to scripts/README.developers
- for user-registration inserted defaults for splitted GUI-config-tables
- load ConfigBoard/ConfigPages-table only when needed
- use ConfigBoard-class to load/save board-related GUI-configs for ConfigBoard-table
- use ConfigPages-class to load/save board-related GUI-configs for ConfigPages-table
- added class ConfigTableColumns to handle persistence of table-column-set
with more than 32 columns stored in bits using BitSet-class
- writing 30 bits in one int(32)-dbfield to avoid any "signed int"-effect
- added 2nd int(11)-signed dbfield to handle >32 table-columns,
can be easily extended to more than 60 bits if needed
- renamed and migrated data for db-fields for shown table-columns
XyzColumns -> ColumnsXyz[2]
- added own table-column-sets for
- opponents page (copied data from users column-set)
- splitted running/finished games into two sets: all + user running/finished games
-----------
-- split Players-table into GUI-related config-tables (board-related)
CREATE TABLE ConfigBoard (
User_ID int(11) NOT NULL DEFAULT '0',
Stonesize tinyint(3) unsigned NOT NULL default '25',
Woodcolor int(11) NOT NULL default '1',
Boardcoords int(11) NOT NULL default '31',
MoveNumbers smallint(5) unsigned NOT NULL default '0',
MoveModulo smallint(5) unsigned NOT NULL default '0',
NotesSmallHeight tinyint(3) unsigned NOT NULL default '25',
NotesSmallWidth tinyint(3) unsigned NOT NULL default '30',
NotesSmallMode enum('RIGHT','BELOW','RIGHTOFF','BELOWOFF') NOT NULL default 'RIGHT',
NotesLargeHeight tinyint(3) unsigned NOT NULL default '25',
NotesLargeWidth tinyint(3) unsigned NOT NULL default '30',
NotesLargeMode enum('RIGHT','BELOW','RIGHTOFF','BELOWOFF') NOT NULL default 'RIGHT',
NotesCutoff tinyint(3) unsigned NOT NULL default '13',
PRIMARY KEY (User_ID)
) ENGINE=MyISAM;
-- create ConfigBoard-entries for all players and drop copied columns
INSERT INTO ConfigBoard
(User_ID,Stonesize,Woodcolor,Boardcoords,MoveNumbers,MoveModulo,
NotesSmallHeight,NotesSmallWidth,NotesSmallMode,NotesLargeHeight,
NotesLargeWidth,NotesLargeMode,NotesCutoff)
SELECT ID,Stonesize,Woodcolor,Boardcoords,MoveNumbers,MoveModulo,
NotesSmallHeight,NotesSmallWidth,NotesSmallMode,NotesLargeHeight,
NotesLargeWidth,NotesLargeMode,NotesCutoff
FROM Players ;
-- drop copied columns (ConfigBoard)
ALTER TABLE Players
DROP COLUMN Stonesize,
DROP COLUMN Woodcolor,
DROP COLUMN Boardcoords,
DROP COLUMN MoveNumbers,
DROP COLUMN MoveModulo,
DROP COLUMN NotesSmallHeight,
DROP COLUMN NotesSmallWidth,
DROP COLUMN NotesSmallMode,
DROP COLUMN NotesLargeHeight,
DROP COLUMN NotesLargeWidth,
DROP COLUMN NotesLargeMode,
DROP COLUMN NotesCutoff ;
-- split Players-table into GUI-related config-tables (related to other pages)
CREATE TABLE ConfigPages (
User_ID int(11) NOT NULL DEFAULT '0',
StatusFolders varchar(40) NOT NULL default '',
ForumFlags tinyint(3) unsigned NOT NULL default '8',
ColumnsStatusGames int(11) NOT NULL default '-1',
ColumnsWaitingroom int(11) NOT NULL default '-1',
ColumnsUsers int(11) NOT NULL default '-1',
ColumnsOpponents int(11) NOT NULL default '-1',
ColumnsContacts int(11) NOT NULL default '-1',
ColumnsGamesRunningAll int(11) NOT NULL default '-1',
ColumnsGamesRunningAll2 int(11) NOT NULL default '-1',
ColumnsGamesRunningUser int(11) NOT NULL default '-1',
ColumnsGamesRunningUser2 int(11) NOT NULL default '-1',
ColumnsGamesFinishedAll int(11) NOT NULL default '-1',
ColumnsGamesFinishedAll2 int(11) NOT NULL default '-1',
ColumnsGamesFinishedUser int(11) NOT NULL default '-1',
ColumnsGamesFinishedUser2 int(11) NOT NULL default '-1',
ColumnsGamesObserved int(11) NOT NULL default '-1',
ColumnsGamesObserved2 int(11) NOT NULL default '-1',
ColumnsTournaments int(11) NOT NULL default '-1',
PRIMARY KEY (User_ID)
) ENGINE=MyISAM;
-- create ConfigPages-entries for all players and drop copied columns (migration-split)
INSERT INTO ConfigPages
(User_ID,StatusFolders,ForumFlags,
ColumnsStatusGames,ColumnsWaitingroom,
ColumnsUsers,ColumnsOpponents,ColumnsContacts,
ColumnsGamesRunningAll,
ColumnsGamesRunningAll2,
ColumnsGamesRunningUser,
ColumnsGamesRunningUser2,
ColumnsGamesFinishedAll,
ColumnsGamesFinishedAll2,
ColumnsGamesFinishedUser,
ColumnsGamesFinishedUser2,
ColumnsGamesObserved,
ColumnsGamesObserved2,
ColumnsTournaments)
SELECT
ID,StatusFolders,ForumFlags,
GamesColumns,
WaitingroomColumns,
UsersColumns,
UsersColumns,
ContactColumns,
0x3fffffff & RunningGamesColumns,
0x3ffffffc | ((RunningGamesColumns & 0x3fffffff) >> 30),
0x3fffffff & RunningGamesColumns,
0x3ffffffc | ((RunningGamesColumns & 0x3fffffff) >> 30),
0x3fffffff & FinishedGamesColumns,
0x3ffffffc | ((FinishedGamesColumns & 0x3fffffff) >> 30),
0x3fffffff & FinishedGamesColumns,
0x3ffffffc | ((FinishedGamesColumns & 0x3fffffff) >> 30),
0x3fffffff & ObservedGamesColumns,
0x3ffffffc | ((ObservedGamesColumns& 0x3fffffff) >> 30),
TournamentsColumns
FROM Players ;
-- drop copied columns (ConfigPages)
ALTER TABLE Players
DROP COLUMN StatusFolders,
DROP COLUMN ForumFlags,
DROP COLUMN GamesColumns,
DROP COLUMN WaitingroomColumns,
DROP COLUMN UsersColumns,
DROP COLUMN ContactColumns,
DROP COLUMN RunningGamesColumns,
DROP COLUMN FinishedGamesColumns,
DROP COLUMN ObservedGamesColumns,
DROP COLUMN TournamentsColumns ;
-----------
* forum/forum_functions.php (display_posts_pending_approval):
- bugfix: used wrong ID for post-id in URL-building
* forum/index.php:
- bugfix: make toggleflag-URL-arg more injection-secure
* code_examples/filter_example2.php, include/contacts.php,
scripts/data_export.php, scripts/player_consistency.php, NEWS:
- minor changes/fixes, added docs
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- Players-table: grouped global GUI-related configs, moved to table-end,
in preparation for clearer table-structure and split
-----------
-- group (global) user-profile fields in Players-table
ALTER TABLE `Players`
MODIFY Button tinyint unsigned NOT NULL default '0' AFTER UserFlags,
MODIFY TableMaxRows smallint(5) unsigned NOT NULL default '20' AFTER UserFlags,
MODIFY MenuDirection enum('VERTICAL','HORIZONTAL') NOT NULL default 'VERTICAL' AFTER UserFlags,
MODIFY SkinName varchar(32) NOT NULL default '' AFTER UserFlags ;
-----------
2009-02-22 juga
* include/std_functions.php (is_javascript_enabled, start_html),
include/table_columns.php (Table),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
change_profile.php, edit_profile.php, game.php, scripts/data_report.php,
specs/db/table-Players.txt:
- moved JavaScript-enabling configuration from Players.Boardcoords
to UserFlags field in preparation to split Players-table
- added helper-func is_javascript_enabled()
- JAVASCRIPT_ENABLED -> USERFLAG_JAVASCRIPT_ENABLED
-----------
-- global user profile flags (in preparation to split Players-table)
ALTER TABLE `Players`
ADD `UserFlags` int(11) NOT NULL default '0' ;
-- move JavaScript-flags from Boardcoords into UserFlags
UPDATE Players SET UserFlags=IF(Boardcoords & 0x100,1,0) ;
UPDATE Players SET Boardcoords=Boardcoords & ~0x100 ;
-----------
* specs/db/table-Players.txt:
- doc about Players-table + split-info
* quick_status.php, NEWS:
- synced with changes in release-branch DGS-stable-200712
- added column with time-remaining
* code_examples/check_times.php:
- various time-format outputs
* donation.php:
- redirect donate-button to thank-you forum post if disabled
* include/config.php, include/std_functions.php (start_page),
donation.php, donation_success.php, skins/dragon/screen.css,
docs.php, site_map.php, NEWS:
- synced with changes in release-branch DGS-stable-200712
- added donation and donation thank-you page redirecting from and to PayPal,
text mainly written by Erik
- added config-switch ENABLE_DONATIONS to enable donation links
on site-map, docs and status-page
to forum-thank-you (needs adjustment for DGS-clones)
- added donate-tool below main-menu linked to new donation-page
- show only on status-page
-----------
copy /images/donate.gif
-----------
2009-02-15 juga
* edit_bio.php, edit_folders.php, status.php, gameinfo.php:
- adjusted some texts (show userinfo, Opponents -> Players)
2009-02-14 juga
* include/filter.php (FilterDate, FilterRelativeDate),
opponents.php, show_games.php, users.php, waiting_room.php,
scripts/README.translations, specs/filters.txt:
- added some docs and notes
* forum/admin_show_forumlog.php:
- cleanup: remove setting of filter-access-keys (are set per default)
* include/connect2mysql.php (connect2mysql),
include/config.php:
- moved consts DB_CONNECT_RETRY_COUNT, DB_CONNECT_RETRY_SLEEP_MS
from connect2mysql() into config.php
- bugfix: don't sleep on last db-connect retry-loop
* opponents.php, NEWS:
- replaced repeating "Info"-column with ID-column (one column less)
* users.php:
- used button on ID-column (same as on opponents-page)
* include/std_functions.php (end_page),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
admin_admins.php, admin_show_users.php:
- removed ADMIN_TIME (has been replaced by ADMOPT_SHOW_TIME in previous release)
-----------
UPDATE Players SET Adminlevel=Adminlevel & ~0x10 WHERE Adminlevel > 0 ;
-----------
* include/gui_functions.php (TD_button), include/faq_functions.php (TD_button),
admin_faq.php, forum/admin.php:
- moved TD_button() from include/faq_functions.php to include/gui_functions.php
* faq.php, include/faq_functions.php (build_regex_term):
- trim search-term (must not contain spaces around terms, otherwise regex drives havoc)
- added search-syntax for input-box with search-term
* include/form_functions.php (create_string_func_textinput,
create_string_func_textinputx, print_insert_text_input,
print_insert_submit_buttonx, parse_input_standard_attributes):
- added TEXTINPUTX-type to allow to specify additional attributes
- put redundant parsing of standard-attributes into separate func
* features/edit_feature.php:
- show preview only if something to show
- switched position of save and preview like on other DGS-pages
* INSTALL:
- added note about timeadjust.php and some clarifications
* admin_users.php:
- bugfix: be able to clear textual fields like AdminNote/BlockReason
* error.php:
- bugfix after merge:
placement of db-close (needed connection for writing admin_log)
* include/connect2mysql.php (connect2mysql):
- reduced db-connect retry-count: 6 -> 2 (enough for a user to wait for)
- fixed usage of ignore_user_abort
- adjusted comments
2009-02-13 juga
* include/config.php, include/std_functions.php (start_page), error.php, NEWS,
features/lib_votes.php (build_feature_notes, echo_feature_notes, allow_vote_check),
features/list_features.php, features/list_votes.php,
features/edit_feature.php, features/vote_feature.php:
- completed feature-voting and feature-management:
- added config-switch ALLOW_FEATURE_VOTE in config.php to switch feature-voting on/off
- added feature-notes with status-legend and some small help
- bugfixes, minor layouting
* include/filterlib_mysqlmatch.php:
- splitted over-long string-const MYSQL_MATCH_STOPWORDS after each 1000 chars
* skins/dragon/screen.css:
- admin-pages: use top vertical-alignment on admin-tables:
user-attributes, FAQ-log, error-log
* features/list_features.php, features/list_votes.php,
include/table_columns.php (add_tablehead),
skins/dragon/screen.css:
- votes: added search-filters on SumPoints and CountVotes
- layout: show own user-vote as centered number
- re-organized & sync'ed table-column-IDs for feature-/vote-list
* features/edit_feature.php:
- added preview for feature-edit
- bugfix showing HTML-un-encoded description in textarea
2009-02-12 juga
* features/lib_votes.php (FeatureList, FeatureVote, build_filter_selection_status),
features/edit_feature.php, features/list_features.php,
features/list_votes.php, features/vote_feature.php,
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
include/gui_functions.php (button_TD_anchor), include/quick_common.php,
error.php, skins/dragon/screen.css:
- changed feature-lifecycle (status): NEW > NACK|WORK > DONE > LIVE
- NEW = new feature, can be voted upon
- NACK = rejected feature
- WORK = feature implementation started
- DONE = feature implemented, not released yet
- LIVE = feature released and online
- changes access rights on features:
- feature-edit/add/delete only allowed for admins (executive- or developer-role)
- feature-edit only allowed on NEW-status, except for super-admin (developer-role)
- feature-delete only allowed for super-admin (developer-role)
- added check on user to allow voting: min rated-games/moves/last-moved
- added admin-option DENY_VOTE to forbid user to vote on features
- allowed guest-user to view all features, but forbid to vote
- added view of vote-points if voting not allowed
- feature-delete:
- added vote-constraint: feature-delete only allowed if no votes existing
- cancel feature-delete leads to feature-edit
- changes for feature-voting:
- replaced actions-column with button to view/vote (Vote-ID) and admin edit-column
- added feature-actions as bottom-links:
show feature-/votes-list, add/edit/delete feature
- added error-codes for feature-voting
- replaced <font>-tag with CSS for error-message
- moved redundant func to build filter-selection for status-field into lib_votes.php
-----------
ALTER TABLE `FeatureList`
MODIFY Status enum('NEW','WORK','DONE','LIVE','NACK') NOT NULL DEFAULT 'NEW' ;
ALTER TABLE `FeatureList`
DROP INDEX Editor_ID ;
-----------
* include/std_functions.php (is_logged_in):
- read X_LastMove as unix-timestamp from Players-row for feature-voting
* include/gui_functions.php (button_TD_anchor):
- added optional link-title
* userinfo.php:
- added convenience-link "Admin user" for admins to edit-user attributes
* admin_show_users.php, admin_users.php, include/quick_common.php:
- added admin-option DENY_VOTE to forbid user to vote on features
* features/edit_feature.php:
- fixed title (mixed up add/update-mode)
* features/vote_feature.php:
- vote-point-selector: show positive points first
- aligned save-vote submit-button
- bugfixes (null-object-checks)
* features/lib_votes.php (FeatureVote),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- save Voter-IP on voting
-----------
ALTER TABLE `FeatureVote`
ADD `IP` varchar(16) NOT NULL default '' ;
-----------
* features/edit_feature.php, features/lib_votes.php,
features/list_features.php, features/list_votes.php,
features/vote_feature.php, include/std_functions.php (start_page):
- moved feature-voting from 'features/vote/' into parent sub-dir 'features/'
2009-02-11 juga
* features/vote/lib_votes.php (Feature.is_admin, ~.is_super_admin, ~.allow_user_edit),
features/vote/edit_feature.php, features/vote/list_features.php,
features/vote/list_votes.php, features/vote/vote_feature.php:
- differ two admin-roles: feature-admin + feature-super-admin with more rights:
super-admin is allowed to edit all
- used cell-button on feature-id
- adjusted status-texts description
* include/message_functions.php (game_info_table),
include/table_infos.php (Table_info.add_info, ~.add_sinfo, ~.warning_cell_attb),
gameinfo.php, userinfo.php, status.php:
- changed Table_info::add_info/sinfo()-signature:
replaced warning_cell_attb with iattb+nattb-args
- replaced Table_info->add_row() with add_sinfo() if possible
* include/gui_functions.php (button_style, button_TD_anchor,
button_TD_width_insert, warning_cell_attb),
include/table_columns.php (button_style, button_TD_anchor,
button_TD_width_insert, warning_cell_attb),
include/table_infos.php (Table_info.warning_cell_attb),
list_tournaments.php, opponents.php, status.php, show_games.php, waiting_room.php:
- code cleanup (removed code redundancy),
moved some static GUI-funcs to include/gui_functions.php:
button_style, button_TD_anchor, button_TD_width_insert, warning_cell_attb
2009-02-10 juga
* include/message_functions.php (build_adjust_handicap, game_info_table),
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
waiting_room.php:
- merged "showing" of handicap and std-placement, but kept separate column
on StdPlacement for filtering on it, to let user choose what to use
- simplified handicap-adjustment output-format (removed 'H'-prefix),
moved NO_VALUE-formatting to caller
* waiting_room.php:
- added separate column for user-type
* links.php:
- corrected outdated links
- added gosensations.com
* message.php:
- added handicap-suggestion also for dispute-view of invitation
* scripts/README.developers:
- note about faster echo()-output
* translate.php:
- adjusted readme-first text: fixed typos, more details
* gameinfo.php:
- added opponents rating diff for finished game
* gameinfo.php, game.php, skins/dragon/screen.css,
include/table_infos.php (Table_info, ~.add_row, ~.add_info, ~.add_sinfo,
~.check_cols, ~.make_tablerow, ~.add_cell),
people.php, NEWS:
- added game info page and two links from game-page (info.gif + bottom-link)
- added info-icon to show for opening game-info page (taken from silk icons)
- Table_info: added handling for multiple-columns (>2)
-----------
copy /images/info.gif
-----------
2009-02-09 juga
* include/std_functions.php (activity_string),
opponents.php, userinfo.php, users.php, NEWS:
- reverted activity-level (Eriks wish)
- higher activity shouldn't encourage more activity,
two levels are enough
- can use user-type to mark robots now
2009-02-07 juga
* people.php:
- added new section (other credits) to fulfill license-requirements
for some used icons of Mark James' silk icons collection
* include/std_functions.php (build_usertype_text),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt,
admin_users.php, list_contacts.php, opponents.php, userinfo.php, users.php,
waiting_room.php, NEWS:
- added searchable user-type together with new icons to mark user
as professional, teacher, robot, (team)
- show iconographic user-type in contact-list and waiting-room
-----------
copy /images/robot.gif
copy /images/team.gif
copy /images/professional.gif
copy /images/teacher.gif
-- user-type characteristics: bot, teacher, pro, etc.
ALTER TABLE `Players`
ADD `Type` smallint(5) unsigned NOT NULL default '0' AFTER `ID` ;
ALTER TABLE `Players`
ADD INDEX `Type` (`Type`) ;
-----------
2009-02-01 juga
* show_games.php, status.php:
- load Notes-data only if column shown for user to reduce server-load for page
avoiding additional outer-join on GamesNotes-table
- changed table-column-id for Notes-column: 32 -> 15 (was unused)
* include/config.php, include/std_functions.php:
- moved LIST_GAMENOTE_LEN from std_functions.php to config.php controlling
Notes-column for some games-lists
* include/std_classes.php:
- removed $TranslateGroups (no translation-texts)
- adjust EMPTY_SQL_QUERY with mysql5 now to DUAL-table-feature
* include/classlib_bitset.php (BitSet._get_intval_range, ~._set_intval_range),
include/filter.php (FilterRating.parse_value),
include/filter_parser.php (BasicParser.swap_range_start_end):
- used swap()-func, moved into utilities.php
* include/std_functions.php (mod, modf, swap, array_combine, array_bsearch,
array_value_to_key_and_value, map_to_string, array_bsearch,
activity_string, RGBA, limit),
include/utilities.php (mod, modf, swap, array_combine, array_bsearch,
array_value_to_key_and_value, map_to_string, limit),
NEWS:
- moved DGS-unrelated functions to separate include-file utilities.php and added more doc
- changed colors for activity-levels:
arranged activity-stars like traffic-light, keeping green as highest activity-level
in order to reduce GUI-"change"
- deprecated nsq_addslashes()
* add_to_waitingroom.php:
- fixed bug for handicap-adjustment: swap min/max-handicap if min>max
* add_to_waitingroom.php, waiting_room.php, NEWS,
include/game_functions.php (adjust_handicap),
include/make_game.php (create_game),
include/message_functions.php (game_settings_form, game_info_table,
build_adjust_handicap),
scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- added new-game options for waiting-room with adjustment and min/max-limitation
of handicap stones
-----------
-- game-handicap adjustment & min/max-limits
ALTER TABLE `Waitingroom`
ADD `AdjHandicap` tinyint signed NOT NULL default '0' AFTER `Handicaptype`,
ADD `MinHandicap` tinyint signed NOT NULL default '0' AFTER `AdjHandicap`,
ADD `MaxHandicap` tinyint signed NOT NULL default '127' AFTER `MinHandicap` ;
-----------
2009-01-26 juga
* opponents.php, status.php, users.php, waiting_room.php:
- fix add_tablehead()-defaults for "hideable, but not sortable" columns:
- users, opponents: Rank info, Open for matches
- status: sgf
- waiting-room: comment, time-limit
2009-01-25 juga
* include/classlib_profile.php (SearchProfile.handle_action),
include/filter.php (set_profile_handler),
include/std_classes.php (RequestParameters.use_hidden, ~.RequestParameters,
~.get_hiddens),
include/table_columns.php (Table.add_external_parameters, ~.Table,
~.get_hiddens, ~.set_profile_handler),
features/vote/list_features.php, features/vote/list_votes.php,
list_contacts.php, opponents.php, search_messages.php, show_games.php,
waiting_room.php, NEWS:
- bugfixes for search-profiles:
- reload profile after handling delete-profile
- correct regex_save_args for search-profile including all
additional-element-names for Score/RelativeDate/CheckboxArray/MysqlMatch-Filter
- handling of hiddens of search-profiles replacing Table-global use_hidden-var
by moving it into RequestParameters for multiple occurences
- use prefix for sort-args
- added search-profile for all pages with table-filters except forum-search and status-page:
- users, opponents, waiting room, search messages, contacts, features, votes
- observers of a game (users.php), observed games
- different search-profile ones for all/my/other finished and running games
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql:
- synchronized: added Profiles-table
* opponents.php, show_games.php:
- show player-rating in title
2009-01-19 juga
* users.php:
- added prototype of (default) search-profile for Filters & Table
to save form-entries as replacement for simple filter-reset-submit,
needs restructuring of object-inits: SearchProfile, SearchFilter, Table
* include/classlib_profile.php (Profile.get_text, ~.update_profile, ~.delete_profile,
~.delete_all_profiles, ~.new_from_row, ~.load_profile; class SearchProfile),
include/filter.php (SearchProfile.set_profile_handler, ~.get_arg, ~.get_saved_arg,
~.init, ~.get_submit_elements),
include/table_columns.php (Table.set_profile_handler, ~.get_saved_arg,
~.set_default_sort, ~.handle_show_rows):
- added class SearchProfile to handle single (default) search-profile
saving args for Filters & Table
- added profile-handler SearchProfile to clear/reset/load/save profiles
- disallowed writing of search-profile for guest-user
- fixed SQL on Profiles-table, added safety-checks
* include/filter.php (get_submit_elements),
include/table_columns.php (make_add_column_form),
code_examples/filter_example.php, code_examples/filter_example2.php,
forum/search.php, opponents.php:
- changed signature of filter->get_submit_elements(): added Form-object to use form-funcs
* include/quick_common.php:
- added notes/FIXME for arg_stripslashes/get_magic_quotes_gpc-funcs
2009-01-12 juga
* include/classlib_profile.php (get_text, set_text),
scripts/tests/ProfileTest.php, scripts/tests/AllTests.php,
include/std_functions.php (build_url, split_url):
- fixed text-conversion for get/set_text()
- added phpunit-test for Profile-class
- build_url (added separator-arg),
split_url (handle '0'-value (<> unset or false))
* include/classlib_profile.php:
- added class Profile and DB-table Profiles to handle filter-search
and form-element profiles
- added phpunit-test
-----------
CREATE TABLE Profiles (
ID int(11) NOT NULL auto_increment,
User_ID int(11) NOT NULL default '0',
Type smallint(5) NOT NULL default '0',
SortOrder tinyint(3) NOT NULL default '1',
Active enum('Y','N') NOT NULL default 'N',
Name varchar(40) NOT NULL default '',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
Text blob NOT NULL,
PRIMARY KEY (ID),
KEY UserType (User_ID,Type)
) ENGINE=MyISAM ;
-----------
* edit_profile.php:
- fixed typo: Appearances -> Appearance
* waiting_room.php:
- fixed to clearer title: Handicap -> Handicap-Type
* include/classlib_bitset.php (reset), scripts/tests/BitSetTest.php:
- renamed and enhanced clear() -> reset() allowing to set all bits, adjusted test
2009-01-10 juga
* include/classlib_bitset.php, scripts/tests/BitSetTest.php:
- added class BitSet for bit-operations of arbitrary length,
added phpunit-test
* scripts/tests,
scripts/tests/README.test,
scripts/tests/Makefile,
scripts/tests/AllTests.php,
scripts/tests/run_tests.php:
- introducing unit-tests for DGS-code based on phpunit,
see README.test
2009-01-07 juga
* message.php, NEWS, skins/dragon/screen.css,
include/message_functions.php (game_settings_form,
build_suggestion_shortinfo, get_colortext_probable):
- from wishlist for invites:
added color/handicap/komi-suggestion for conventional & proper type
- fixed text-TODO using "probable" only for conv/proper-type
* message_selector.php:
- fixed expression: or -> ||
2009-01-06 juga
* list_messages.php, NEWS:
- from wishlist: added $follow option to stay in folder after message-move
- changed default to stay in current-folder
- changed move-elements in natural order from left to right,
toggle-marks to the right (near the toggles)
* include/message_functions.php (change_folders_for_marked_messages),
list_messages.php:
- secured parsing of args
* game_comments.php:
- fixed PHP-warning on missing mysql_free_result()
* include/config.php,
change_profile.php, edit_profile.php, game.php, include/std_functions.php,
include/table_columns.php, include/table_infos.php, scripts/data_report.php:
- renamed ALLOW_JSCRIPT and moved into config as ALLOW_JAVASCRIPT
- added comment for ALLOW_QUOTING
* change_profile.php, edit_profile.php, game.php, ratinggraph.php, ratingpng.php,
include/std_functions.php, include/table_columns.php, scripts/data_report.php:
- renamed consts
- JSCRIPT_ENA -> JAVASCRIPT_ENABLED (clearer, JScript != JavaScript)
- GRAPH_RATING_BY_NUM_ENA -> GRAPH_RATING_BY_NUM_ENABLED
* sgf.php (switch_move_color), NEWS:
- use 3rd PASS-move as node for scoring for better RESUME-handling
- switched off inclusion of node-names, added switch $include_games_notes
* game.php (draw_moves, get_final_score_move):
- fix SGF-move-number for final score-step or exceeding max-moves
* game.php, skins/dragon/screen.css, NEWS:
- from wishlist: show SGF-move-number before view-moves-list, added CSS
- mark setup-moves in view-moves-list with prefix: (H) =handicap-setup
- always show some start- and end-moves in view-moves-list
* change_bio.php:
- fixed PHP-warning on missing mysql_free_result()
* quick_status.php:
- minor sql-change in ORDER: date -> Lastchanged
* ratinggraph.php:
- corrected bottom-link: Show finished games -> Show my finished games
* sgf.php:
- bugfix to include game-notes
- included PASS-moves
- removed node-name for PASS/SCORE-moves (strange effects with cgoban)
- added no_cache-URL-arg to disable caching
2009-01-04 juga
* edit_bio.php:
- fixed adapted text-height for bio (more effect), increased width (60->70)
* message.php:
- changed text-width for userid (50,maxl80->25,40), subject & message-body (60->70)
* show_games.php:
- bugfix for RESTRICT_SHOW_GAMES_ALL:
- use different day-restriction for full finished games list,
adjusted restrict-note
- use more elegant FC_DEFAULT-setting to restrict games-list Lastchanged
- make end-date/last-move column (#13) static
* include/message_functions.php (message_list_body), status.php:
- fixed PHP-warning on missing mysql_free_result() after message_list_body()
* forum/forum_functions.php (make_link_array, draw_post), forum/read.php:
- bugfix: prevented moderate-action to be re-done on moderator-toggle,
replaced show/hide/approve/reject-URL-arg by modact/modpid-URL-arg
* skins/dragon/screen.css:
- bugfix (reported): table-cell vertical-alignment only on forms
* NEWS, policy.php:
- merge-fix:
- adjusted to new date-format and added release-info for 1.0.14
- adjusted using new Page-class for CSS
2009-01-03 juga
* include/message_functions.php (message_info_table),
include/std_functions.php, NEWS:
- from wishlist:
- to send new message use "(no subject)"-text for empty subject (was '???')
- for preview show warning on empty subject
* include/table_columns.php (make_table, add_tablehead):
- bugfix for new Table-mode TABLE_NO_SIZE: need-form for show-max-rows elements
- added comment: known classes (CSS) for add_tablehead()
* admin_admins.php:
- fix translated-text for removal of translations: /*T_*/('...#header'),
removed '#header' from now normal texts without "T_(..)"
- bugfix for Table-use-rows: deactivate show-max-rows with TABLE_NO_SIZE
* game_comments.php, list_messages.php:
- bugfix for Table-use-rows: deactivate show-max-rows with TABLE_NO_SIZE
* features/vote/list_features.php, features/vote/list_votes.php,
code_examples/filter_example.php:
- fix adjustment for add_tablehead()-signature and table-rows cell-values
- reverted default-sort-order for ID, fixed class
* forum/admin_show_forumlog.php:
- cleanup table-IDs (removed #3-gap)
* scripts/updates/database_changes_1_0_14_to_1_0_15.mysql,
scripts/updates/other_changes_1_0_14_to_1_0_15.txt:
- started with needed changes for next DGS-release 1.0.15,
easier to upgrade existing devel-servers
# All changes between releases DGS 1.0.13 (CVS-tag dev-start-20081116)
# and DGS 1.0.14 (CVS-tag DGS-stable-200812) are now merged into
# the MAIN-branch.
# DDL-changes for release 1.0.14 are NOT repeated here within the merge.
* admin.php, admin_show_adminlog.php, admin_show_errorlog.php,
admin_show_faqlog.php, admin_show_users.php, forum/admin_show_forumlog.php,
forum/index.php, forum/list.php, forum/read.php,
include/quick_common.php, people.php:
- more merge-fixes:
- forum-management restriction ADMIN_FORUM -> ADMIN_DEVELOPER
- overlooked some changes for forum-options
- adjustment for new add_tablehead()-signature and table-rows cell-values,
used DATE_FMT2-const, fixed wordwrapping
- added Table-show-max-rows form-elements
- added date-format DATE_FMT3 with seconds for admin-log
* INSTALL, admin.php, admin_show_adminlog.php, admin_show_errorlog.php,
admin_show_faqlog.php, admin_show_users.php, admin_users.php,
change_bio.php, do_registration.php, do_registration_blocked.php,
docs.php, edit_bio.php, error.php,
forum/admin.php, forum/admin_show_forumlog.php, forum/index.php, forum/list.php,
forum/forum_functions.php (ForumOptions; add_forum_log, load_forum_id;
Forum, load_forum_names),
forum/post.php (post_message, approve_post, reject_post, hide_post, show_post),
forum/read.php, forum/search.php,
include/config.php,
include/connect2mysql.php (mysql_addslashes),
include/error_functions.php,
include/quick_common.php (error_on_blocked_ip, is_blocked_ip,
check_subnet_ip),
include/std_functions.php (end_page, is_logged_in),
include/table_columns.php (button_style, make_next_prev_links),
login.php, message.php, people.php, policy.php, quick_play.php, quick_status.php,
register.php, rss/status.php, wap/status.php,
scripts/apc_cache_info.php, scripts/apc_clear_cache.php, scripts/data_export.php,
scripts/check_block_ip.php, scripts/convert_from_old_forum.php,
scripts/updates/database_changes_1_0_13_to_1_0_14.mysql,
scripts/updates/roadmap_1_0_13_to_1_0_14.txt,
show_games.php, site_map.php, snapshot.php, userinfo.php, waiting_room.php,
skins/dragon/screen.css:
- merged all changes for release DGS 1.0.14 from branch [DGS-stable-200712],
also see NEWS-file and ChangeLog for release 1.0.14:
- added Dragon-Go-Server policy,
added mandatory check to register account (need to accept policy)
- added IP-blocking feature and alternative registration for blocked users
- added admin-options on user and edit of certain user-attributes:
- admin-options: deny login with block-reason, hide-bio, deny-edit-bio
- edit: vacation-days, fever-values, hidden forums (admin/dev), show-time
- view: IP, browser, some mail-based user attributes
- added view-page with list of admins and administrated users
- forum: only present visible forums to user (list, read, searching)
- added viewing of various logs: Adminlog, Errorlog, FAQlog, added Forumlog
- writing more logs for user and admin actions
- dynamical adaption of height of text-areas to edit bio or messages
- people-page: changed FAQ-main-editor, show list of forum-moderators
- added optimization (RESTRICT_SHOW_GAMES_ALL-config) to reduce
slow-queries for ALL-finished games
- restricted forum-management: ADMIN_FORUM -> ADMIN_DEVELOPER
- made forum-readings independent from forum-id;
to prepare for move-thread-to-other-forum,
- adjusted mysql-version in documentation: DGS needs MySQL5.0.X now
- some minor bugfixes
- added scripts to control APC (cache on live-server)
- added snapshots and instructions for DGS-release 1.0.14
2009-01-02 juga
* scripts/ChangeLog:
- removed (msql5)-warning for "CREATE TABLE (..) TYPE=": replaced TYPE= with ENGINE=
2008-12-29 juga
* scripts/ChangeLog, NEWS:
- start of merge from all changes for release DGS 1.0.14 from the stable
branch [DGS-stable-200712] tagged with [DGS-stable-200812]
2008-12-28 juga
# The code up to here is marked with CVS-tag [pre-merge-1_0_14-20081228].
* features/vote/lib_votes.php:
- fixed double used varname: voter -> points
* forum/forum_functions.php (replace_row_forumread):
- fixed SQL-syntax for INSERT IGNORE
* change_password.php:
- bugfix of last fix for guest-id (':'-typo -> ';')
2008-11-03 juga
* faq.php, NEWS, skins/dragon/screen.css,
include/faq_functions.php (search_faq_match_terms, check_faq_search_terms,
build_regex_term),
include/std_functions.php (contains_mark_terms):
- added search on FAQ:
matching words-regex on texts exported in translations-dir
for user-specific language or FAQ-original-english
2008-11-01 juga
* forum/post.php:
- fix SQL-bug for use-case U06 (new thread)
* include/game_functions.php (allow_add_time_opponent):
- fix potential bug allowing max of 360 days to add time
* include/std_functions.php, include/config.php:
- changed bottom-bar: Logout -> Login, if user is logged out
2008-10-19 juga
* admin_faq.php, change_bio.php, confirm.php, edit_bio.php, edit_contact.php,
edit_profile.php, game.php, join_waitingroom_game.php, list_contacts.php,
news.php, opponents.php, ratingpng.php, search_messages.php, send_message.php,
sgf.php, snapshot.php, userinfo.php, users.php, waiting_room.php,
code_examples/filter_example.php, code_examples/filter_example2.php,
code_examples/form_example2.php, code_examples/test_clock_tick.php,
code_examples/test_nigiri_random.php, code_examples/tokenizer_example.php,
features/vote/edit_feature.php, features/vote/lib_votes.php,
features/vote/list_features.php, features/vote/list_votes.php,
features/vote/vote_feature.php, forum/forum_functions.php, forum/post.php,
forum/read.php, forum/search.php, include/board.php, include/contacts.php,
include/classlib_matrix.php, include/filter.php, include/filter_functions.php,
include/filter_parser.php, include/filterlib_mysqlmatch.php,
include/form_functions.php, include/game_functions.php, include/move.php,
include/message_functions.php, include/quick_common.php, include/rating.php,
include/std_classes.php, include/std_functions.php, include/table_columns.php,
include/tokenizer.php, rss/status.php, wap/status.php,
scripts/data_report.php, scripts/game_consistency.php,
scripts/player_consistency.php, scripts/update_translation_pages.php:
- fixed layout:
'if/for/foreach/while ('-> 'cmd('; some 'else if' -> elseif
* include/contacts.php:
- text-change: Admin Crew -> Site Crew,
item was also meant for translators, FAQ-editors or people
"contributing" to the server
* skins/dragon/screen.css:
- fix v-alignment of page-related tables (bottom)
2008-10-12 juga
* NEWS:
- added new and changed features so far (since DGS release 1.0.13)
* forum/read.php:
- changed text: Hide -> Hide overview
2008-10-05 juga
* docs.php:
- added link to statistics page
* include/config.php:
- added note about unused keys for access-keys
* include/std_functions.php (start_page):
- added site-map page into main menu
2008-10-03 juga
* include/connect2mysql.php, INSTALL:
- use separate local config 'include/config-local.php' copied
and adjusted from config-template 'include/config.php';
easier for SourceForge website updates and to avoid CVS-conflicts
* include/.cvsignore:
- hide local config file from CVS
2008-09-28 juga
* forum/forum_functions.php (get_new_string), forum/list.php:
- thread-list: remove link from NEW-text
* forum/post.php:
- bugfix (SQL)
* forum/forum_functions.php (set_approved, set_pending_approval,
is_approved, is_pending_approval),
forum/post.php (post_message, approve_post, reject_post),
forum/read.php, forum/search.php, scripts/data_export.php:
- replaced Posts.PendingApproval with new 'P'-enum-value in Posts.Approved
-----------
-- replace Posts.PendingApproval -> Approved (enum 'P')
ALTER TABLE `Posts`
MODIFY Approved enum('Y','N','P') NOT NULL DEFAULT 'Y';
UPDATE Posts SET Approved='P' WHERE PendingApproval='Y';
-- after update above, the "old" column can be dropped
ALTER TABLE `Posts`
DROP COLUMN PendingApproval;
-----------
* daily_cron.php:
- replace forumreads-cleanup: Forumreads -> ForumRead-table
* forum/forum_functions.php (draw_post, load_threads, load_forum_list; ForumPost;
ForumRead.replace_row_forumread, recalc_forum_reads, recalc_thread_reads),
forum/post.php (recalc_forum_counts, cleanup_forum_read),
forum/index.php, forum/list.php, forum/read.php:
- calculate and show number of NEW unhidden (approved) posts in
- forum-list (NEW feature), thread-list and post-list
- NEW-update is trigger if Forum/Thread.Updated date is newer than last
recalculation of corresponding ForumRead-entry
- ForumPost: added field for Posts.Updated for NEW-handling
- adjust ForumRead-methods to handle count for NEW entries
- added methods to recalculate forum/thread-list NEW-reads
- only approved posts are counted as NEW entries, also in moderator-mode
- post-list: use tighter layout of navigation-images (less spacing)
- added some safety-fixes on retrieving db-data
- added methods to recalculate forum-counts (Threads/PostsInForum)
- moved ForumRead-cleanup into daily_cron.php
- used workaround to compensate for INSERT-IGNORE (mysql4.1-feature)
* forum/read.php:
- add toggle to switch post-tree-overview on/off, saved in Players.ForumFlags
* include/config.php, include/quick_common.php:
- defined number of weeks ending NEW-scope of older forum-entries:
FORUM_WEEKS_NEW_END replacing DAYS/SECS_NEW_END
- increased min read-date for forum: 4 -> 12 weeks
- moved initial config for forum-old-entries from quick_common.php
to config.php as FORUM_WEEKS_NEW_END
* skins/dragon/screen.css:
- added white-header font for all forum-views
* specs/forums.txt:
- fix some queries to recalculate forum/thread-NEW count
2008-09-15 juga
* forum/forum_functions.php (replace_row_forumread):
- fix use CSS-class MyPost
- fix UPDATE non-affected-rows using insert-IGNORE to avoid duplicate-key-violation,
removed unnecessary return-values in mark-read-funcs
* skins/dragon/screen.css:
- posts overview: use darkblue for own-posts, black for overview-posts
to achieve fix link-colors sight (URL is changing through page-args)
2008-09-14 juga
* forum/forum_functions.php (toggle_forum_flags, load_threads),
forum/index.php, forum/list.php, include/std_functions.php,
skins/dragon/screen.css:
- added toggle to show/hide last-post author in forum/thread-list,
- store current show-state in new Players.ForumFlags-field
- defined bitmask-constants for flags
- thread-list:
- placed show-maxrows submit button on same line as rows-selectbox
- bugfix loading threads with wrong LastPost
-----------
-- configure forum-GUI for user, manage hidden forum-config for user
ALTER TABLE `Players`
ADD `ForumFlags` tinyint unsigned NOT NULL default '8' AFTER `MayPostOnForum` ;
-----------
* scripts/convert_from_old_forum.php:
- comment about recalculate_postsinforum-func not longer existing
* forum/list.php:
- changed valign-style using CSS for multiline-table-cells: middle -> top
* forum/forum_functions.php (all classes & functions),
forum/post.php (post_message, approve_post, reject_post, show_post,
hide_post, recalc_thread_lastpost, recalc_forum_lastpost,
recalc_thread_counts, cleanup_forum_read),
forum/index.php, forum/list.php, forum/read.php:
- changes to post view (forum/read.php):
- viewing thread-posts now doesn't mark thread as read
- user can mark single posts as read ('mark read'-link for unread post)
- user can mark all posts as read ('mark all read'-link in top/bottom-bar)
- force-reply: reply-form only shown for new thread or if only one post exists,
so user has explicitly to choose post to reply to
- added new set for thread-posts navigation: f_*.png (see below)
- changed time-range for an old NEW (shown in lighter red): 2 -> 4 weeks
- avoided some RACE-conditions on updating LastPost/Lastchanged-fields
by using GREATEST(..): newer db-IDs or dates are always greater,
so can take maximum in sql-updates
- preparations for NEW-handling in forum- and thread-list
- added class and db-table ForumRead for handling thread/post-read
and forum/thread-new-count
- moved and changed db-writing functions to forum/post.php
resembling the documented and adjusted use-cases in specs/forums.txt
- minor bugfixes and optimizations on db-operations
-----------
-- add Posts.Updated for NEW-handling
ALTER TABLE `Posts`
ADD `Updated` datetime NOT NULL default '0000-00-00 00:00:00' AFTER `Lastedited` ;
UPDATE Posts SET Updated=Lastchanged WHERE Parent_ID=0 ;
-- add Forums.Updated for NEW-handling
ALTER TABLE `Forums`
ADD `Updated` datetime NOT NULL default '0000-00-00 00:00:00' AFTER `LastPost` ;
UPDATE Forums, Posts
SET Forums.Updated=Posts.Time WHERE Forums.LastPost>0 AND Posts.ID=Forums.LastPost ;
-- add Table ForumRead for NEW-handling (replacing Forumreads-table)
CREATE TABLE ForumRead (
User_ID int(11) NOT NULL default '0',
Forum_ID int(11) NOT NULL default '0',
Thread_ID int(11) NOT NULL default '0',
Post_ID int(11) NOT NULL default '0',
NewCount int(11) NOT NULL default '-1',
Time datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY FR_Uniq (Thread_ID,Post_ID,Forum_ID,User_ID),
KEY Time (Time)
) ENGINE=MyISAM ;
-- migrate Forumreads- to ForumRead-table
DELETE FROM Forumreads WHERE Thread_ID=0 ;
INSERT INTO ForumRead (User_ID,Forum_ID,Thread_ID,Post_ID,NewCount,Time)
SELECT FR.User_ID,P.Forum_ID,FR.Thread_ID,-1,-1,FR.Time
FROM Forumreads as FR INNER JOIN Posts as P ON P.ID=FR.Thread_ID ;
// added images for thread-post-list navigation
copy images/f_bottom.png
copy images/f_firstanswer.png
copy images/f_nextanswer.png
copy images/f_nextparent.png
copy images/f_prevanswer.png
copy images/f_prevparent.png
copy images/f_top.png
-----------
* specs/forums.txt:
- added some specs and docu for forums
* specs/filters.txt:
- updated to recent changes (country, mysqlmatch, UNION, examples)
* edit_contact.php:
- bugfix:
- check for adding guest-contact also denied adding new contact
- guest can be added as contact (why not?)
* skins/dragon/screen.css:
- changed valign-style using CSS for multiline-table-cells: middle -> top
- added some CSS for forum-NEW-flag
* list_contacts.php, search_messages.php, forum/search.php,
code_examples/filter_example2.php:
- changed table-cell valign to top using CSS
2008-08-24 juga
* forum/forum_functions.php (draw_post, create_navigation_tree, set_navigation;
forum_start_table, make_link_array),
forum/list.php, forum/search.php,
change_profile.php, include/std_functions.php:
- thread view: added post navi link to first answer
- forum-thread-list: added configurable max-rows with selectbox
- cleaned up usage for max-rows, set by DisplayForum.max_rows (was page_rows)
- correctly include offset/maxrows in navigational links
- replaced var $RowsPerPage with const MAXROWS_PER_PAGE_DEFAULT cause not longer needed
- minor code-cleanup ("->', removed default-args)
* include/std_classes.php (RequestParameters.get_entries):
- added func get_entries to return entries to build-url with array
* forum/forum_functions.php (draw_overview):
- thread-tree-overview: show only first 40 chars of subject
to prevent wrapping (in most cases)
* forum/read.php:
- show reply-form only for new-topic and when replying or editing,
this enforces a user to explicitly choosing a post to reply to
- omit thread-tree-overview if there are no posts in thread to show
* skins/dragon/screen.css:
- removed fixed table-layout for thread-tree-overview
* edit_profile.php, include/rating.php (convert_to_rating):
- removed converting of NNGS-rank/rating (not longer existing server)
* error.php:
- fixed wording for errors: userid_too_short, password_illegal_chars
* forum/forum_functions.php (draw_post, draw_overview),
skins/dragon/screen.css:
- fixed page-local navigation: used only '#target' to navigate,
because URL can vary (moderator, search-term, etc)
- Thread tree-overview:
- put subject, author, date in separate table-columns
- mark own posts with bold font
- use 2-rows-colored background for overview-list: don't use RowX
standard because of existing background
2008-08-23 juga
* forum/list.php:
- removed link to first-new, because of introduced thread-tree-overview
showing all new's
* forum/forum_functions.php (DisplayForum.draw_overview, set_rx_term,
forum_start_table, print_headline, get_new_string, draw_post,
get_post_edited_string, build_url_post),
forum/read.php, forum/search.php,
skins/dragon/screen.css:
- added thread-tree-overview at top (with own anchors for new entries)
- added func DisplayForum.draw_overview
- added separate headline (thread overview & thread read posts),
moved headline-printing into func print_headline
- moved handling of rx-terms into DisplayForum,
added func DisplayForum.set_rx_term (moved passing in as arg)
- added more anchors (ftop/fbottom) and full url (with rx-term-url-part)
for navigating to avoid page-reload on jumping
- added func get_post_edited_string to return edited date-string for post
- added CSS for thread-tree-overview
- bugfix draw_post: use post-created date replacing last-updated date
* forum/forum_functions.php (DisplayForum.draw_post;
ForumThread.create_navigation_tree, load_posts, load_revision_history;
ForumPost.set_navigation),
forum/read.php:
- fixed navigation in tree-thread-view:
- DisplayForum.draw_post:
go to top/bottom, prev/next-parent, prev/next-answer
- added funcs to create and set navigation:
ForumThread.create_navigation_tree, ForumPost.set_navigation
- adjusted funcs to support navigation:
ForumThread.load_posts/load_revision_history using post_id as key
* include/std_functions.php (insert_width),
include/table_columns.php (button_TD_width_insert):
- replaced var $button_width with const BUTTON_WIDTH
- compiled func insert_width from table_columns.ph to draw transparent widthed-image
2008-08-21 juga
* clock_tick.php, do_registration.php, edit_profile.php, error.php,
features/vote/list_features.php, forum/forum_functions.php, game.php,
halfhourly_cron.php, include/config.php, include/connect2mysql.php,
include/error_functions.php, include/graph.php,
include/message_functions.php, include/page_functions.php,
include/quick_common.php, include/std_functions.php,
include/time_functions.php, index.php, introduction.php, list_contacts.php,
login.php, opponents.php, people.php, quick_status.php, ratinggraph.php,
rss/status.php, scripts/data_export.php, scripts/data_report.php,
scripts/mailtest.php, scripts/make_handicap_pattern.php,
scripts/player_consistency.php, send_new_password.php, sgf.php,
show_games.php, show_tournament.php, status.php, userinfo.php,
users.php, wap/status.php:
- changed vars in include/config.php (using constants)
- replaced some unchanged vars with constant defines (can remove global-ref):
DATE_FMT, DATE_FMT2, DB_NAME, EMAIL_FROM,
FRIENDLY_LONG_NAME, FRIENDLY_SHORT_NAME, GMDATE_FMT, HOSTBASE, HOSTNAME,
MYSQLHOST, MYSQLUSER, MYSQLPASSWORD, SESSION_DURATION,
SUB_PATH, TICK_FREQUENCY
2008-08-20 juga
* forum/forum_functions.php (
class DisplayForum, Forum, ForumThread, ForumPost, ForumUser;
change_depth, display_posts_pending_approval, draw_post, echo_links,
forum_end_table, forum_message_box, forum_start_table, get_new_string,
load_forum_names, load_revision_history, load_thread_last_read,
make_link_array, print_moderation_note),
forum/admin.php, forum/index.php, forum/list.php, forum/old_links_redirect.php,
forum/post.php (hit_thread), skins/dragon/screen.css,
status.php:
- big (unfinished) refactoring
- separated application logic and presentational layer (GUI & layout)
from database operations by using classes.
introduced container-classes used as database-objects with additional
data used in application-logic.
get rid of extract($row) and global vars using container-classes
to pass data into funcs.
- class ForumDisplay serving as general container to help in displaying
forum content
- class Forum representing a forum-object
- class ForumThread helping in loading list of posts of a thread
- class ForumPost representing a Post with all its fields
- class ForumUser temporary representation of a user for creating
user-references
- moved funcs needing global data into classes serving as "global" container,
adjusted function-signatures accordingly moving most args into container
ready for more refactoring
- bugfix: setting page-offset and page-rows in DisplayForum-container
for navigating forum-pages
- simplified has-more-pages handling for page-navigation
- moved load_forum_names-func to load forum-names from forum/search.php
- moved change_depth-func and globals vars from forum/read.php
- moved loading of post revision history data from forum/read.php
- added func: hit_thread to increase thread-hit-activity
- used shared appearance of user-reference
- used QuerySQL in order to share common parts
- optimized and cleaned up code
- replaced var $new_level1 with const NEW_LEVEL1
- using convenience funcs for mysql-access
- replaced nested ternary-operators with if-clause
- position of code has changed due to refactoring
- clearer naming of some vars (switching admin-status and more)
- added comments & TODOs
- adjusted chdir-bracing to include forum_functions.php (always expect root-dir)
- moved ALLOW_QUOTING into config.php
- changed thread-navigation for parent post '^' on left of subject
into footer of post with full navigation to top/bottom, prev/next parent/post
using existing icons;
left to do is
- position of 'navigation'
- used icons
- implementation of full navigation
* forum/index.php:
- added header-row with column-titles
- added column "number of threads" per forum
- added author with user-reference for last-post
- added link from last-post-date to view post
- adjusted CSS
- moved and enhanced db-table description (Posts) from forum/index.php
* forum/list.php:
- added column hits representing "activity" in a thread
- added author with user-reference for last-post
- added link from last-post-date to view post
- adjusted CSS
* forum/read.php (revision_history, change_depth):
- increased thread-hits representing thread-"activity"
- moved loading of revision history data of a post from forum/read.php
-----------
-- add Forums.ThreadsInForum & seed it
ALTER TABLE `Forums`
ADD `ThreadsInForum` int(11) NOT NULL default '0' AFTER `LastPost` ;
UPDATE Forums,
(SELECT Forum_ID, COUNT(*) AS X_Count
FROM Posts WHERE Approved='Y' AND Thread_ID>0 AND Parent_ID=0
GROUP BY Forum_ID) as TMPF
SET Forums.ThreadsInForum=TMPF.X_Count WHERE Forums.ID=TMPF.Forum_ID ;
-- add Posts.Hits
ALTER TABLE `Posts`
ADD `Hits` int(11) NOT NULL default '0' AFTER `PostsInThread` ;
UPDATE Posts,
(SELECT ID, COUNT(*) AS X_Count
FROM Posts WHERE Thread_ID>0 AND PosIndex>''
GROUP BY Thread_ID HAVING X_Count>0) as TMP
SET Posts.Hits=TMP.X_Count WHERE Posts.ID=TMP.ID ;
-----------
* forum/search.php:
- bugfix: setting page-offset and page-rows in DisplayForum-container for navigating
- simplified has-more-pages handling for page-navigation
- bugfix: using standard access-keys for filters
- optimized SQL-query (removing not needed join with Forums-table)
* error.php:
- added error-code 'invalid_args'
- adjusted chdir-bracing to include forum_functions.php (always expect root-dir)
* skins/dragon/screen.css:
- forum-index: added header, column post-count, linked last-post-date
- forum-thread-list: added column hits, linked last-post-date
- added debug-CSS for table-working (commented out)
* include/config.php:
- moved global feature ALLOW_QUOTING from forum/forum_functions.php
* daily_cron.php, include/quick_common.php:
- replaced var $new_end with const SECS_NEW_END
2008-08-16 juga
* specs/db/table-Posts.txt:
- moved and enhanced db-table description (Posts) from forum/index.php
2008-08-15 juga
* include/message_functions.php (game_settings_form):
- changed time defaults of new game: from [JAP: 90d + 10x1d] to [Fischer: 30d + 1d]
* forum/search.php,
code_examples/filter_example2.php:
- show potential filter-warnings for mysql-match-search
- replaced some " -> '-strings
* include/filter.php (class Filter: to_string, get_filter_keys, warnmsg, has_warn, init_parse),
include/filter_functions.php,
include/filterlib_mysqlmatch.php (class FilterMysqlMatch: parse_value, extract_match_terms):
- added warning-message (used for stopwords-warning of mysql-match-search)
- added prefix/suffix format for filter-warnings
- added english stopwords
* include/form_functions.php (create_string_func_filterwarn, print_insert_filterwarn):
- added FILTERWARN-element to show potential filter-warnings
* include/table_columns.php (make_filter_row, make_table_filter):
- show potential filter-warnings in filter-row
* skins/dragon/screen.css:
- added formats for showing filter-warnings (color teal=darkcyan)
* opponents.php:
- replaced some " -> '-strings
2008-08-13 juga
* news.php, skins/dragon/screen.css:
- format TOC with CSS
2008-08-12 juga
* confirm.php, game.php:
- allow resign during opponents turn
- share common Status-checks using var
2008-08-11 juga
* game.php:
- added preview of move-submit-message
- added accesskeys for next-game-submit and preview
- jump to message-box-anchor in validation-step
- replaced some "-strings by '-strings
* include/board.php (draw_board, draw_move_message):
- added draw_move_message-func to draw and preview move-message
* confirm.php, game.php:
- allow deleting game on opponents turn
2008-08-10 juga
* include/message_functions.php (game_settings_form):
- set default for Standard-Handicap to on
* userinfo.php:
- show users timezone, local time and night-start;
{ from 26-Oct-2007 release-talk allowed by Erik }
* include/classlib_matrix.php (get_x_axis, get_y_axis):
- fixed get_x/y_axis returning only keys
2008-08-09 juga
* include/std_functions.php (start_page, make_menu_horizontal,
make_menu_vertical, cmp1, cmp2),
include/classlib_matrix.php:
- use Matrix-class to draw vertical and horizontal dragon-menu
with any x/y-layout,
- removed cmp1/cmp2-funcs involved in old dragon-menu drawings
2008-08-05 juga
* include/filter.php (FilterCountry, FilterMysqlMatch),
include/filterlib_country.php (FilterCountry),
include/filterlib_mysqlmatch.php (FilterMysqlMatch),
code_examples/filter_example2.php, forum/search.php, list_contacts.php,
opponents.php, search_messages.php, users.php, waiting_room.php:
- moved FilterCountry & FilterMysqlMatch into separate class-files
include/filterlib_country.php, include/filterlib_mysqlmatch.php
- moved init-countries into include/countries.php
* include/countries.php (init_countries),
change_profile.php, edit_profile.php, userinfo.php:
- moved init-countries into include/countries.php (revert change),
if countries-map is used, it must be initialized (require_once)
* include/rating.php (con_value, a_value, convert_to_rating):
- init consts-table as global vars: IGS_TABLE, A_TABLE, CON_TABLE
- shorten case-statements (using less breaks, assuming needrank-default)
2008-08-03 juga
* status.php:
- reduced User-Info on status-page to most important values
to have more space for games-list:
- moved user-name/handle/rank into section-title
- show vacation-info only if on vacation
- all other info removed, can be viewed on user-info-page
* INSTALL:
- added description for CACHE_FOLDER
* game.php, opponents.php, sgf.php:
- layout (spacing around '?'-op)
- added comments, fixed typos, fixed debug-msg
* game_comments.php:
- changed SQL: Moves.Stone= OR Moves.Stone= -> using IN-operator
- using '-strings for some constant-strings
* show_games.php:
- uses $page-var
- clearer comments for views & others
- avoid double use of '?'-operator
* site_map.php:
- added statistics-page in site-map
* statistics.php:
- added FIXME (only for Linux)
* include/config.php:
- added note for MYSQL-version (refer to PHP-version_compare-function)
* include/connect2mysql.php (mysql_single_fetch),
scripts/convert_from_old_forum.php, scripts/data_export.php:
- defined and used fetch-types FETCHTYPE_ARRAY/ASSOC/ROW
for mysql_single_fetch(),
renamed some local vars making usage clearer
- replaced some strange-layouted use of '?'-operator
- added doc for functions: check_passwd_method, check_password
* include/contacts.php (load_globals):
- changed userflag-text: Admin-crew -> Admin Crew
* include/error_functions.php (dump_exit):
- used local function to clear array
* include/form_functions.php (Form):
- clearer doc for make_texts_safe-var
* include/page_functions.php (HTMLPage, Page):
- renamed/fixed constructor of HTMLPage: Page -> HTMLPage,
added constructor for Page-class
- minor layout changes, fix typos
* include/rating.php (read_rating, convert_to_rating):
- put rating-pattern in constant
- added more doc for functions: read_rating, convert_to_rating
- renamed local var: needkyu -> needrank
- minor layout changes
* include/std_functions.php (read_from_file), game_comments.php:
- added some comments, fixed typos
- read_from_file: added FIXME (PHP6 has different signature)
- using ' for some constant-strings and " for HTML-attributes
* include/table_columns.php (warning_cell_attb), waiting_room.php:
- warning_cell_attb-signature has bool-arg (clearer usage than int)
- used clearer doc and vars for warning_cell_attb-function
* scripts/ChangeLog:
- detailed and corrected some older logs since Jan-2008 by Rod,
added performed changes for easier creation of NEWS-file,
especially for further actions needed for release and
documentation about changes visible to DGS-users
- fixed typos
2008-08-02 juga
* include/config.php, include/filter.php,
admin_admins.php, admin_faq.php, edit_bio.php, edit_folders.php,
edit_profile.php, forum/admin.php, forum/forum_functions.php,
game.php, include/form_functions.php, include/std_functions.php,
include/table_columns.php, list_contacts.php, list_messages.php,
message.php, opponents.php, search_messages.php, show_games.php,
translate.php, users.php, waiting_room.php:
- introduced constants for accesskeys,
especially easier for configuration of DGS-clones
- changed accesskeys for filter-search: x -> e, z stays =reset
- fixes to allow '0' as accesskey
* forum/list.php:
- removed unused SQL-join (LastPost)
- cleanup double comment
* admin_admins.php, opponents.php, users.php:
- reverted '#'-header to clearer 'ID',
'#' has too many interpretations (id, number, count)
and already is used as count-representation in wait-room
* show_games.php, status.php:
- changed '#'-header (former 'ID') to clearer 'Game ID'
* features/vote/list_votes.php:
- changed Type-header -> Status
* add_to_waitingroom.php, admin_admins.php,
admin_do_translators.php, admin_faq.php,
code_examples/filter_example2.php, code_examples/test_clock_tick.php,
confirm.php, daily_cron.php, edit_contact.php, edit_folders.php,
edit_profile.php, features/vote/lib_votes.php, forum/admin.php,
forum/forum_functions.php, forum/post.php, forum/search.php,
halfhourly_cron.php, include/GoDiagram.php, include/board.php,
include/contacts.php, include/coords.php, include/filter.php,
include/filter_functions.php, include/filter_parser.php,
include/form_functions.php, include/game_functions.php,
include/make_game.php, include/message_functions.php, include/move.php,
include/page_functions.php, include/quick_common.php, include/rating.php,
include/std_classes.php, include/std_functions.php,
include/table_columns.php, include/time_functions.php,
include/tokenizer.php, include/tournament.php, join_waitingroom_game.php,
list_messages.php, list_tournaments.php, login.php, message.php,
message_selector.php, opponents.php, quick_play.php, quick_status.php,
scripts/data_export.php, scripts/game_consistency.php,
scripts/make_handicap_pattern.php, scripts/message_consistency.php,
scripts/player_consistency.php, send_message.php, sgf.php,
show_tournament.php, translate.php, update_translation.php,
userinfo.php, waiting_room.php,
scripts/ChangeLog:
- replace and/or with &&/|| in logical expressions
because of =-precendence; see README.developers
- fix cast, layouting of 'or error()', correct typos
* scripts/README.developers:
- added texts about:
- translation-texts
- using and/or/xor <-> &&/||, logical expression vs. and/or-command
- usage of list(), don't reuse varnames
- DGS-conventions for SQL-aliases
- string constants
2008-08-01 juga
* features/vote/edit_feature.php, features/vote/lib_votes.php,
features/vote/list_features.php, features/vote/list_votes.php,
features/vote/vote_feature.php:
- adjusted to Table-signature changes (new add_tablehead, default-sort)
- use standardized GUESTS_ID_MAX-check for guest-user
- used table-id 33 for static column (Actions)
2008-07-28 juga
* .cvsignore:
- ignore temp-dir (CACHE_FOLDER)
- ignore favicon.ico
* NEWS, news.php:
- added %TOC% (table of contents) parsed from NEWS-file
- added main changes for all releases
* include/config.php:
- adjusted comment
* features/vote/edit_feature.php, features/vote/lib_votes.php,
features/vote/list_features.php, features/vote/list_votes.php,
features/vote/vote_feature.php:
- added feature-voting (feature list, voting on feature)
- start-page is list_features.php
-----------
-- add feature-voting
CREATE TABLE FeatureList (
ID int(11) NOT NULL auto_increment,
Status enum('NEW','NACK','ACK','WORK','DONE','LIVE','ARCH') NOT NULL default 'NEW',
Subject varchar(120) NOT NULL,
Description text NOT NULL,
Editor_ID int(11) NOT NULL default '0',
Created datetime NOT NULL default '0000-00-00 00:00:00',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (ID),
KEY Status (Status),
KEY Editor_ID (Editor_ID)
) ENGINE=MyISAM;
CREATE TABLE FeatureVote (
fid int(11) NOT NULL,
Voter_ID int(11) NOT NULL default '0',
Points int(11) NOT NULL default '0',
Lastchanged datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (fid,Voter_ID),
KEY Voter_ID (Voter_ID)
) ENGINE=MyISAM;
-----------
* include/std_classes.php (add_part, add_part_fields):
- added add_part_fields() to add SQL-part (for SQLP_FIELDS only)
- added comments
* include/filter.php (read_defaults):
- fixed bug in read_defaults(): selectbox default failed
* include/filter.php (SearchFilter.get_url_parts,
Filter.get_url_parts, FilterMysqlMatch.extract_match_terms),
* include/std_functions.php (build_hidden, build_url):
- undo empty()-value-check, because some clients (e.g. filters) need ''<>0
* include/table_columns.php (current_order_string):
- overall more white-spaces, more doc, typos
- current_order_string(): added FIXME with question (preg_replace usage?)
2008-06-06 rodival
* include/std_functions.php (start_html),
include/table_columns.php (make_tablerow),
scripts/data_export.php, scripts/data_report.php,
scripts/player_consistency.php, js/common.js,
game.php, edit_profile.php, change_profile.php:
- introducing the JavaScript tools and their management (profile setting)
-----------
-- enable JavaScript usage for old players (as actually):
-- perform this only, if your DGS-server wants to support JavaScript
UPDATE Players SET Boardcoords=Boardcoords|0x100;
-----------
* statisticspng.php, statratingspng.php:
- managed to disable the image-cache feature from the url
2008-06-05 rodival
* game.php:
- change the simple toggle notes feature to a true switch on/off one;
to avoid a toggle back when refreshing the page
- enhance the private notes management to avoid some database updates
* include/table_columns.php (add_tablehead),
include/message_functions.php (message_list_head),
admin_admins.php, game_comments.php, list_contacts.php,
list_tournaments.php, opponents.php, show_games.php, status.php,
users.php, waiting_room.php,
code_examples/filter_example.php:
- adjusted the parameters of the add_tablehead() function.
this should be the last step of the "tablehead" modifications
2008-06-04 rodival
* include/std_functions.php (is_logged_in, activity_string),
halfhourly_cron.php, daily_cron.php, confirm.php, quick_play.php,
users.php, userinfo.php, opponents.php,
statistics.php, statratingspng.php,
scripts/browser_stats.php:
- changed the type of the Activity column of the Players table
from DOUBLE to INT to speed up the rebuilds of the table index.
- also managed the Activity values as a fixed decimal number
to preserve enough precision (Activity column= $activity * 1000)
- added a third ActiveLevel which should help to distinguish
the robots (overheated activity)
-----------
copy /images/star3.gif
-- change Players.Activity: float -> integer
UPDATE Players SET Activity=FLOOR(1000*Activity) WHERE Activity>0;
ALTER TABLE Players
MODIFY Activity INT(11) NOT NULL DEFAULT '15000';
-----------
* include/time_functions.php, include/quick_common.php,
include/connect2mysql.php (disable_cache),
clock_tick.php, daily_cron.php, sgf.php, quick_status.php, graph.php,
scripts/make_handicap_pattern.php:
- added $gmtdate_fmt, updated the headers using GMT dates
- moved $date_fmt to quick_common.php
- minor MySQL query enhancements and comment adjustments
- moved make_handicap_pattern.php from /pattern folder to /scripts folder
* include/std_functions.php (game_reference), game_comments.php:
- fix a bug since ADDTIME feature update (duplicated rows if ADDTIME)
- changed the char used for the moves number in the games references
2008-05-31 rodival
* include/std_functions.php (send_message, notify),
halfhourly_cron.php, confirm.php, quick_play.php:
- introduced the FIND_IN_SET function in notification queries
* include/std_functions.php (start_html):
- now set the favicon href with the full absolute path
2008-05-30 rodival
* halfhourly_cron.php:
- optimization of the update-vacations query
* include/std_functions.php,
status.php, show_games.php:
- add of a "Notes" column in the Status and Games list-tables owned
by the reader
- this column had been added with the number 32 to also test this
newly deletable column which use the sign bit
- also modified the favicon href to "/favicon.ico"... as a new try
* include/connect2mysql.php (connect2mysql, db_query, versioncmp):
- adjusted db_query() when error() is not a "die" function
- removed versioncmp() using version_compare() instead
- a different way to manage the ignore_user_abort setting
2008-05-26 rodival
* include/table_columns.php (Table, add_tablehead, make_table,
is_column_displayed),
include/message_functions.php (message_list_head, message_list_body),
list_messages.php, search_messages.php, list_tournaments.php:
- enhanced (and finished) the management of the TABLE_NO_SORT
and TABLE_NO_HIDE options.
- removed the now useless Static_Columns variable
- removed the now useless $no_sort argument of message_list_head()
* include/std_functions.php (is_logged_in, send_message, notify),
send_new_password.php, admin_admins.php, send_message.php,
list_contacts.php, join_waitingroom_game.php, edit_contact.php,
change_profile.php, change_bio.php, add_to_waitingroom.php,
contacts.php, change_password.php:
- minor fixes around the 'guest' account particularity
- at least, it highlight where the guest id is used in our code
- now, is_logged_in returns the id (id>0) of the player who is logged in
(instead of the previous simple true)
- various LIMIT added on MySQL queries
* include/std_functions.php (switch_admin_status, set_cookie_prefs),
forum/search.php, forum/read.php, forum/index.php, forum/list.php,
forum/forum_functions.php (set_moderator_cookie),
change_profile.php:
- generalized way to handle the moderator status
- set_moderator_cookie() is replaced by switch_admin_status()
- set_cookie_prefs() now had the player_row as parameter
like get_cookie_prefs()
2008-05-24 rodival
* include/table_columns.php, include/message_functions.php,
list_contacts.php, opponents.php, waiting_room.php:
- a full set of 32 columns which can be shown or hidden in the
table-list (id from 1 to 32)
- ids > 32 are static by definition
- ids <= 0 are no longer allowed: replaced the few existing ones by id 33
- the database fields of the Column_set must be reseted to SIGNED INT:
-----------
-- change Players table-columns-handling
ALTER TABLE Players
MODIFY UsersColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY GamesColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY RunningGamesColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY FinishedGamesColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY ObservedGamesColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY WaitingroomColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY TournamentsColumns INT( 11 ) DEFAULT '-1' NOT NULL ,
MODIFY ContactColumns INT( 11 ) DEFAULT '-1' NOT NULL ;
-----------
2008-05-23 rodival
* include/std_functions.php (start_html), INSTALL:
- because of old browsers favicon.ico should be in the root folder
-----------
copy /images/favicon.ico into the root folder
-----------
* include/move.php, include/faq_functions.php, include/countries.php,
include/tournament.php, include/tokenizer.php, include/table_infos.php,
include/GoDiagram.php, include/contacts.php ,include/filter_parser.php,
include/page_functions.php, include/time_functions.php,
include/make_game.php, include/board.php, include/filter_functions.php,
include/make_translationfiles.php, include/error_functions.php,
include/rating.php,
scripts/player_consistency.php, scripts/data_report.php,
scripts/data_export.php, scripts/generate_translation_texts.php,
rss/status.php, forum/search.php,
index.php, edit_vacation.php, update_translation.php,
translate.php, introduction.php, game_comments.php, login.php,
join_waitingroom_game.php, error.php, confirm.php, add_to_waitingroom.php,
edit_folders.php, change_profile.php, admin_do_translators.php:
- a bunch of pending minor adjustements or comments
2008-05-22 rodival
* game.php:
- typo
* include/table_columns.php (Table, set_default_sort, set_sort,
current_order_string, make_sort_string, add_or_del_columnn,
make_tablehead, current_filter_string),
status.php (show games part), show_games.php,
users.php, opponents.php, list_contacts.php,
list_tournaments.php, waiting_room.php:
- removing the risk of mysql injection using the sort? arguments
now, the sort arguments of the URL mentions the column number
instead of the raw MySQL field (or alias).
- also replaced the TABLE_ALLOW_DOUBLE_SORT constant by
TABLE_MAX_SORT and the cluster of $Sort?+$Desc? variables by
a single array
- added some asserts to clearly force the use of some functions
before or after the table_head definitions (using Head_closed-var)
- Table(): added a mode parameter to manage the global behaviour
of the table (not yet fully implemented, coming soon)
- removed set_sort() which is now dispatched into other functions
- set_default_sort(), make_sort_string(): the arguments became
+/- column numbers instead of mysql fields + desc_flags
- show_games.php and status.php:
changed default sort-direction for ID (descending)
* include/message_functions.php (message_list_table,
message_list_head, message_list_body),
status.php (show messages part), list_messages.php, search_messages.php:
- separated message_list_table($which_part) into two clear functions
message_list_head and message_list_body with dispatched arguments
* include/filter.php (get_url_parts),
scripts/message_consistency.php, message.php:
- filtering out empty url parts
- minor adjustements and comments
* change_profile.php:
- the country was no more editable
2008-05-21 rodival
* include/std_functions.php (make_url, build_url, build_hidden,
write_to_file, read_from_file),
include/filter.php, include.std_classes.php,
include/form_functions.php,
game.php:
- split of the make_url function into make_url(unchanged behaviour)
and build_url which build the query part of an URL from an array
- add of build_hidden which build the 'hidden' lines of a form from
an array
- others are various use of build_hidden and build_url,
and replacement of some calls to the array_push function
by the quicker and equivalent "[]=" array operator
* include/sgf_parser.php,
scripts/update_translation_pages.php,
pattern/make_handicap_pattern.php:
- use of funcs: read_from_file, write_to_file
* include/std_functions.php (get_request_user), show_games.php:
- get_request_user() now return 0 if it had found nothing or
the type of what it had found
- slightly modified the columns in show_games.php to free
some of them; needs migration of bitmasks in DB;
changed table-field-numbers of
- Games.Weekendclock: #12 -> #24
- Players.LastAccess: #15 -> #25
- changed position of handling for RU-section (user running games)
- use of the get_request_user() returned info
- table-field #11 and others had been put into FU-section only,
FU=user finished games
2008-05-16 rodival
* skins/dragon/screen.css, include/config.php,
include/graph.php (get_image_type, image_passthru),
include/std_functions.php (grab_output_start, grab_output_end,
read_from_file),
statistics.php, statisticspng.php, statratingspng.php,
ratinggraph.php, ratingpng.php:
- introduction of a cache management for the stats graphics
- enabled/disabled with the CACHE_FOLDER constant in config.php
-----------
// see also CACHE_FOLDER in config.php
// The Sourceforge devel server needs a soft link: (where temp is CACHE_FOLDER)
// This is an example for the devel-server only
mkdir /tmp/persistent/dragongoserver/temp/
chmod 775 /tmp/persistent/dragongoserver/temp/
ln -s -d /tmp/persistent/dragongoserver/temp /home/groups/d/dr/dragongoserver/htdocs/temp
-----------
* install.php, licence.php, news.php, todo.php:
- using the new read_from_file function
* include/std_functions:
- many changes like:
- preg % -> /
- use " -> ' in html_safe_preg-array
2008-05-15 rodival
* skins/dragon/screen.css,
forum/forum_functions.php (draw_post),
forum/post.php (post_message):
- added an anchor to retrieve the replied post in the forums
- CSS'ed the 3 rows post headers
- replaced logical operators: and/or -> &&/||
2008-05-11 rodival
* include/time_functions.php, clock_tick.php,
edit_profile.php, change_profile.php:
- limitation of the number of rows returned by the
"find_timeout_games" query in clock_tick.php
- NIGHT_LEN constant added
- various comments around "night" clocks management
* statratingspng.php:
- just a comment added
2008-05-09 rodival
* include/std_functions.php (send_email, verify_email,
parse_tags_safe, make_html_safe, illegal_chars, is_logged_in,
get_request_user, user_reference),
include/error_functions.php (add_error),
sgf.php (sgf_simpletext):
- changing some bad ereg_* to preg_*... maybe, in the way to
replace all the ereg* functions by their preg* equivalent!
2008-05-05 rodival
* status.php, show_games.php, site_map.php:
- replacing "Show my observed games" by "Show games I'm observing"
* admin_translators.php:
- removing missed translations in this page
2008-05-04 rodival
* status.php, show_games.php, site_map.php,
edit_bio.php, edit_folders.php:
- various ajustments of the texts or urls of the bottom links
- changed text: games -> my games
* statistics.php, statisticspng.php:
- removing the 'loadavg' stats from the end-users view
- added the 'Activity' curve in the graph (activated in the URL)
* clock_tick.php, halfhourly_cron.php, daily_cron.php,
include/std_functions.php (end_html, get_accounts_from_ip),
include/error_functions.php (echo_error_list, list_string, dump_exit):
- better handling of the errors during cron jobs
- a small optimization of the (often slow) 'Activity' level query
in halfhourly_cron.php
- changed echo_error_list to list_string which no more "echo" the string
- added dump_exit which echo the pending errors and exit
- added an automatic dump of pending errors at the end of pages
- removed the not so good get_accounts_from_ip function
* confirm.php, quick_play.php:
- handled in the right order the game.Status and ToMove_ID errors
* include/filter.php (get_submit_elements):
- added the tooltips to the buttons of the search filters
* include/std_functions.php (get_accounts_from_ip, get_players_field):
- replaced get_accounts_from_ip()-func by more general get_players_field()
2008-05-02 rodival
* include/std_functions.php (limit),
include/coords.php (sgf2number_coords, board2number_coords),
include/filter_parser.php (parse),
include/form_functions.php (parse_layout_global),
include/tokenizer.php (parse_quote_double, parse_quote_quote,
parse_quote_escape),
include/GoDiagram.php (echo_board):
- replacing the string indexes using the deprecated '{}' by '[]'
* edit_vacation.php, halfhourly_cron.php:
- optimization of "vacations start/end" queries on the Games table
2008-04-29 rodival
* include/form_functions.php (get_hiddens_string),
include/table_columns.php (get_hiddens_string):
- handled forbidden chars in hiddens
* scripts/data_report.php:
- fixed a possible W3C compliance problem
2008-04-28 rodival
* include/std_functions.php (user_reference, make_tools):
- user_reference: fix a badly matched parenthesis
- make_tools: complete the last row with enough empty cells
- else minor fixes
2008-04-27 rodival
* error.php:
- adjusting the "404 not found" error handling
* skins/dragon/screen.css,
edit_profile.php:
- added warning messages for empty rating or email
* skins/dragon/screen.css,
forum/index.php, forum/list.php:
- more CSS-ing including column-classes
* scripts/update_translation_pages.php,
scripts/generate_translation_texts.php:
- displaying the group-names
* include/translation_functions.php:
- adjusted the '#'suffix removing function
now, if you need a '#' which is removed, end the string with a '#'
* admin.php, admin_admins.php, admin_password.php, admin_faq.php,
admin_translators.php, admin_do_translators.php, translate.php,
forum/admin.php:
- removing translations for the "admin" pages.
Some of them have already been removed during a previous commit,
so for those, I just removed the now useless $TranslateGroups[] line.
* skins/dragon/screen.css,
game.php (draw_moves), include/board.php:
- a try to make the HTML-code of the "goto move" selection box smaller
by offering only a sub-set of the options;
previously "230 moves" was meaning "230 option lines".
Maybe this was causing the "Game page truncated" bug with some
browsers on 25x25 boards.
- modified the URI &toggleobserve= behaviour to avoid that
a refresh of the page toggle back the game status.
Former value '1' to toggle has been changed to y&n, which needs
FAQ-adjustment for observing own-games-trick
- adjusted some minor CSS
* show_games.php:
- an other query adjustment (maybe a go-back fix)
* include/rating.php (update_rating):
- commented the not used update_rating() function
* forum/list.php:
- add a full user_reference to the thread list
2008-04-25 rodival
* include/message_functions.php (message_list_table),
include/table_columns.php (add_tablehead, make_tablerow,
make_table_filter, warning_cell_attb, button_TD_anchor),
include/filter.php,
status.php, users.php, show_games.php, game_comments.php,
waiting_room.php, list_contacts.php, list_tournaments.php,
opponents.php, admin_admins.php,
skins/dragon/screen.css,
code_examples/filter_example.php:
- introducing a "by column" class in the list-tables
- add_tablehead() now fully handle the last 'attbs' argument
- the table_row array supplied to add_row() no more have to include
the "<td></td>" tag: it will be added with the right attributs
- also adjusted the filter-row build to handle the column-classes
- adjusted all the pages using a list-tables
* include/std_functions.php:
- added consts NO_VALUE, UNKNOWN_VALUE
2008-04-17 rodival
* include/countries.php (init_countries), include/filter.php,
list_contacts.php, userinfo.php, users.php, waiting_room.php,
opponents.php, edit_profile.php, change_profile.php:
- modified the load of the $COUNTRIES array to have it translated
at once (and so, fixing untranslated country-filters).
- doing so, introduced the init_countries() to be used once the
translations are already loaded.
- removed the includes of countries.php and rating.php from
filter.php. Now, they must be included by the calling script
only when a "country" or "rating" column is used.
* include/rating.php (read_rating, rank_to_rating, convert_to_rating,
handicapfactor):
- removed some calls to error() in the rating-decoding functions
to avoid the rating-filters to rise a nasty jump_to error.php,
returning instead the -OUT_OF_RATING value.
- adjusted accordingly some other functions
- introduced the handicapfactor() function to centralize this shared
part of some calculus
* include/make_game.php, add_to_waitingroom.php:
- minor adjustement around ratings
* include/contacts.php (has_contact), userinfo.php:
- slightly modified the return value of has_contact() to include
the case where the 2 users can't have contacts.
* include/translation_functions.php (include_all_translate_groups,
include_translate_group),
include/quick_common.php (get_preferred_browser_language, recover_language),
include/make_translationfiles.php (make_known_languages):
- adjusted the including/reconstruction of known_languages.php
to try to avoid some of its loads (according to APC-stats
nearly loaded twice as needed)
- allowed the 'N'=Native pseudo-language to be selected from the
browser settings.
- changed the $TranslateGroups of known_languages.php to "Common"
to avoid to load the "Users" group when not needed
- allowed '_' as alternate-text in T_('text#alternate')
* include/form_functions.php (print_insert_select_box),
admin_translators.php:
- changed the behaviour of the 'SELECTBOX' operator of the form build.
When multiple is enabled the right "[]" is appended to the name.
* quick_status.php:
- removed the profile language detection. no-translation => forced utf-8.
* scripts/data_export.php:
- changed MYSQL_VERSION to READ_MYSQL_VERSION
2008-04-16 rodival
* include/filter.php (add_or_del_filter):
- added the prefix to the "toggle filter" actions (else remove them
into include/table_columns.php (make_table_filter)).
Bugfix [http://www.dragongoserver.net/forum/read.php?forum=4&thread=18318]
and each class/table using SearchFilter with prefix like:
search_messages.php, show_games.php, opponents.php, list_contacts.php,
though was only a problem for show_games.php because there are different
filter-prefixes in use
2008-04-09 rodival
* site_map.php:
- fix an invalid link
* error.php:
- better handling (Errorlog recording) of the htaccess errors
- temporary hide an unsolved DGS problem (numerous 404 on /favicon.ico
and /phorum/post.php)... waiting better
2008-04-04 rodival
* include/filter.php, include/filter_parser.php,
include/std_classes.php, include/table_columns.php,
users.php, opponents.php:
- some mysql-'AS' adds, minor fixes and comments
* message.php:
- change a section title to emphasize the fact that only the
message is previewed, not the game settings (as far as now)
* include/connect2mysql.php (mysql_addslashes, db_close, db_query,
versioncmp, check_passwd_method, connect2mysql):
- because of a deprecated mysql_escape_string(), force the use
of mysql_real_escape_string() if exists
- introduce 2 new functions: db_close and db_query
- enhance the password recovery: SHA1 instead of SHA and add versioncmp()
- add a retry feature for the database connection in connect2mysql()
* include/config.php:
- set the default password encryption to SHA1
* include/page_functions.php, include/std_functions.php (start_html),
admin_faq.php, admin.php, userinfo.php, translate.php, status.php,
snapshot.php, site_map.php, people.php, news.php, links.php,
introduction.php, docs.php, show_games.php,
forum/index.php, forum/admin.php:
- introducing the pages classes. Right now, it mainly helps the CSS stuff
and solves some E_WARNING messages disturbing the header() outputs,
more to come
- removing all the (old and temporary) "$ThePage['class']=..." lines,
replacing them with the new "$ThePage = new Page(...)"
- the start_html() is adjusted handle the presence of this new class
* show_games.php:
- fix some bugs around query (filter and sort)
reduced a little the db connection time.
- cleanup Weekendclock-column (was mixed with Lastchanged for FU/FA)
-> keep Weekendclock for RU for col#12
- changed col#12(FU+FA) 'Lastchanged' into col#13 (for FU/FA) together
with OB/RU/RA (as 'Last move')
2008-03-17 rodival
* include/form_functions.php (create_form_string,
print_insert_text_input, print_insert_textarea):
- fixed the textarea_safe() problem in the forms,
because of the new PHP5; fix located in create_form_string()
- changed the not obvious $safe_text var-name to $make_texts_safe
* scripts/data_report.php, scripts/data_export.php,
include/graph.php, include/move.php,
confirm.php, game.php, quick_play.php:
- following the previous fix, ajusted some ambiguous uses of the
list() operator along the code (see scripts/README.developers).
* translate.php:
- added comments to clarify the translation process
- modified the various encodings management - both with OWNHTML now
* statratingspng.php:
- removed some trailing ';'s in mysql queries
* quick_status.php:
- substituted opponent.Name to opponent.Handle in the returned infos
to avoid charsets mismatches (the names are independently recorded
within the opponent charset, handles are all ascii compatible)
2008-02-20 rodival
* sgf.php:
- minor mysqlerror handling enhancement
2008-02-18 rodival
* error.php:
- hide the sensible infos from the Mysql errors displayed to users.
2008-01-20 rodival
* include/contacts.php:
- free the CUSERFLAG_ADMIN flag (and its translations) from a reference to DGS
2008-01-18 rodival
* include/quick_common.php (fnop, get_preferred_browser_language,
recover_language),
include/std_functions.php, include/translation_functions.php:
- to allow the managment of the encoding in quick_status.php
- moved get_preferred_browser_language() and the LANG_* constants
from translation_functions.php to quick_common.php
- moved fnop() from std_functions.php to quick_common.php
- added recover_language() to set the language-related globals without
loading the translations datas.
* quick_status.php (loc_start_page, loc_end_page):
- enable encoding managment
* include/config.php,
include/connect2mysql.php (check_passwd_method, check_passwd):
- added check_passwd_method() to allow a password check
free from encryption method.
- added the MYSQL_VERSION constant into config.php
2008-01-09 rodival
* include/connect2mysql.php (check_password):
- revert the bad PASSWORD() stored (because of the new MySQL version)
to their OLD_PASWORD() value.
Today, there are 448 users with a corrupted password and no Email address
and this number grow. So, the previous "define the encryption function"
fix should be useful too.
2008-01-06 rodival
* skins/dragon/screen.css:
- add a red OnVacation in game infos table
2008-01-05 rodival
* include/config.php, include/connect2mysql.php (check_password),
do_registration.php, change_password.php, send_new_password.php,
scripts/data_export.php (after_table):
- define the encryption function used for passwords in config.php
* scripts/browser_stats.php:
- add of new browser types
2007-12-27 juga
* code_examples/test_clock_tick.php:
- test for checking better query-time of clock-tick
* NEWS:
- prepare for new release 1.0.14
* scripts/README.developers:
- hints about using translations with T_() in classes
* updates/,
updates/database_changes_1_0_12_to_1_0_13.mysql,
updates/other_changes_1_0_12_to_1_0_13.txt,
updates/roadmap_1_0_12_to_1_0_13.txt:
- moved text-files for server-updates into new updates-dir
* translationdata.mysql, INSTALL:
- synced with changes in release-branch DGS-stable-200712
- removed translation-data from distribution
- downloads from snapshot-page
- info about GD & FreeType and refs to scripts-READMEs
2007-12-22 rodival
* clock_tick.php:
- delayed the Players join from timeout games query
* include/std_functions.php,
clock_tick.php, halfhourly_cron.php,
send_new_password.php, send_message.php,
confirm.php, join_waitingroom_game.php:
- remove the backup lines of ENA_SEND_MESSAGE and send_email
* include/std_functions.php (str_TD_class_button, button_style):
- removed funcs
* forum/search.php:
- remove a T_() detection while commented
# From here on up development continued on MAIN-branch as continuation
# after release DGS 1.0.13 on 19-Dec-2007 till 03-Nov-2008,
# then development on branch DGS-stable-200712 is included below,
# ending in release DGS 1.0.14
#
# All changes between releases DGS 1.0.13 (CVS-tag dev-start-20081116)
# and DGS 1.0.14 (CVS-tag DGS-stable-200812) are merged into the MAIN-branch,
# which is included in this ChangeLog starting at 29-Dec-2008 above.
#
# DDL-changes for release 1.0.14 are NOT repeated within the merge,
# because those changes are already performed on the live-server
# and they are not conflicting with development on the MAIN-branch.
//
koh5_pano
Drag mouse to navigate.
Navigation
- Left/Right Mouse drag: Changes camera heading.
- Up/Sown Mouse drag: Changes camera pitch.
- Scroll wheel: Changes camera field of view.
- I-Key: Displays Info panel with canvas size, image size and FPS.
17.Aug.2010, Martin Wengenmayer