That's a lot of money for a guy who torn his knee up last year and has not proven anything yet. He has not proven how he will play after the surgery. His career stats prior to last year don't warrant this type of contract.
He should not be getting anything more than 2 years at $5mil per year until he proves he is worthy of something higher.
Even with the salary cap teams make some absolutely stupid signings.