Details for restrictions.
When it comes to visibility (e.g. flags like „hidden“, „starttime“ or „deleted“) TYPO3 implements a lot of magic, that works differently in the Frontend and in the Backend. Imagine a list view for example. In the Backend list all records flagged with „hidden“ are shown while in the Frontend list they are hidden. In the past (before the change to the Doctrine DBAL facade that I mentioned in my earlier post ) that was archieved by the function ContentObjectRenderer->enableFields().
And now this will change again. Once change 48049  is merged into the master, this will simplify things drastically. So, what you are reading right now is brand new stuff, stuff that is even only in code review at the moment of writing. Please be aware of this and forgive me for any misinformation that might be in this post.