I work shifts, including weekends, nights, bank holidays, etc. But we have a rota that we know 3 months in advance and we have a rule that shifts cannot be changed with less than 2 weeks notice, unless you agree to it (and you are allowed to decline). If they don't adhere to the rules, we have a union that will enforce it with management.
We do have some people that have agreed to a contract that means they can be given 48hrs notice of a shift, but they get paid an extra 10% of their salary to live with the unpredictability of this and they can book "Protected Days Off", ie if you have something planned you notify them, then they can't book you to work on those days.
Sounds like he needs to a) check his contract and b)consult a union.
It's definately poor management when they turn around and tell someone they have to work nights for the next 6 weeks starting tomorrow.
But it might be unavoidable, ie if the person who was meant to be working the nightshifts had an accident or is seriously ill. There's nothing you can do, work still has to be done.
At my work, if that happened, they would ask everyone to volunteer for overtime to cover the shifts.