That won't work. The events are executed in order, and you've canceled all delayed events at the end. So the door won't auto close after someone has touched it.
Use this order instead:
0 onactivate > self > door > open
4000 onactivate > self > door > close
0 onplayertouch self > cancelevents
1000 onplayertouch > self > door > close