2) There is a code that updates the display.
which is properly loaded while you ask for the player page, off the player and not is date combined or with histrory. at least i would construct it like that.
Definately a bad thing to do...
If you would have done it upon event and not periodic and spreaded over time, you may got a burst that would result a fatality to the system.
This is why the training is computed exactly like this and not upon openning the training page...
training is a database operation, like asking for the skills. But the BB didn't have prepared 60+ sites for every player, since a player like to see his skill in english/francais/german etc.
Thats in german einen "Datenbank anfrage", or simply translated a question to the database who give the information to create the players side. So the skills didn't change through it, like at the training cause they don't have to. During the game you have a database operation to, in increasing the XP and adding injurys who are done right now but this should not make a difference if you add 0,1 XP to 2,7 or 2,9 Xp even when one leads to a different display of the players page.
The flag there is most likely a boolean variable, who get reseted every training update.
So? You add the arrow when the times come (Interrupt event), and remove it after the next training result or the one after that.
Nobody said that it needs to be 7 days exactly or even roughly.
Think outside the box...
i would at least have it with a bit consistency, if you delete it the next training update it get useless cause many arrow will disappear unseen from the cup and scrimmage games. If they carry it nearly two weeks, when it comes saturday game, or just one week when it arrives thursday would be weird too with the two week solution - and even that would be most likely furfill a need of extra programming and not even use the training solution.