Publish documents only if another document has a specific flag

I have an application, where I need to publish documents based on the setting, an admin can set.

a document can weather be published:

  • after a specific date
  • x hours after the user registered
  • x minutes after another document was viewed
  • at the time the document with the ID x also gets published

is there any way, I can only publish documents that are “publishable” based on the above business logic? Is there a way to force the server to reevaluate the publication after e.g. 15 minutes?

Because the Status does contain references to other documents and I cannot easily incorporate these information as it is per user I cannot do one query for that.