Error message

  • Deprecated function: Return type of Aws\HandlerList::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 32 of /var/www/html/vendor/aws/aws-sdk-php/src/HandlerList.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of & Aws\Endpoint\Partition::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Aws\Credentials\Credentials implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in include() (line 8 of /var/www/html/vendor/aws/aws-sdk-php/src/Credentials/Credentials.php).
  • Deprecated function: Return type of Aws\Command::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of & Aws\Command::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Result::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of & Aws\Result::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
×

News

The Final Day Of The Championship Was Better Than Anything That Happened In The Premier League

Sports announcers often use cliches like "you can't write a script like that" or "that was a Hollywood ending" when describing a particularly unpredictable and exciting game.

On Wednesday, the EFL Championship took the script, ripped it up, taped it back together, wrote 20 more pages, ripped it up again, then burned it for good measure.

Coming into the last day of the season, three teams were competing for one automatic promotion place, three others were pushing for two spots in the promotion playoffs and seven clubs were battling to avoid relegation. All 12 matches were played concurrently on Wednesday, but even after the final whistle blew on the season, there was still uncertainty about the results. 

But to fully appreciate the improbability of the final day dramatics, first we have to rewind a couple of months. Fasten your seat belt, and please, keep your hands inside the ride at all times.

With 31 of 46 matches played, lowly Luton Town sat in last place, a full nine points from safety. Just a week later, Barnsley found itself in an identical position. 

Brentford, despite the best goal differential in the league, was fourth, a full ten points behind West Brom when league play was postponed after 37 matches. Nottingham Forest was securely in a playoff spot and sitting in fifth (third through sixth make the playoffs). Also, Wigan was financially solvent (more on that later).

Now fast forward to mid-July. There are just two games left in the season. Luton Town and Barnsley have both been in good form since league play resumed, slowly decreasing the gap between the teams above them, but still stuck in the relegation zone.

After 21st-place Charlton drew to start the weekend, Luton knew it needed to make up ground, and that it did. Cue the late-game melodramatics:

While a draw wouldn't have relegated Luton, Barnsley needed a win just to keep its survival hopes alive. After pressing all game against Nottingham Forest, Barnsley finally broke through in the third minute of injury time, sending the bench into a frenzy:

Despite the defeat, Forest was still in fifth heading into the final day. It led seventh-place Swansea by three points and had a five-point superiority in goal differential (this will be important soon). 

While Forest were sputtering, promotion rivals Brentford proved unstoppable, having won all eight matches since the restart. After a surprise West Brom defeat, Brentford knew a victory would move it into an automatic promotion spot.

The Bees traveled north to face a Stoke team with nearly nothing to play for, then proceeded to lose for the first time since 2013 (actually it was since February, but they just seemed so unstoppable).

This set up a historic final day of the season. 

The key match was Brentford vs. Barnsley, which had crucial implications at both ends of the table. Barnsley needed a win and some help elsewhere to achieve a miraculous survival, while Brentford needed a better result than West Brom to attain automatic promotion. 

In Luton, the hometown Hatters started poorly, conceding against Blackburn Rovers after just ten minutes. There were multiple scenarios that could see Luton stay in the league, but none of them included losing. 

Around the league, it seemed that goals were coming in at an absurd rate and the permutations of the league table were changing by the minute. Managers had one eye of the match and one eye on the scoreboard, knowing that a goal elsewhere could drastically alter their team's fate.

After going down early, Luton mounted a strong response, scoring two own goals off of set pieces to obtain the lead before halftime (who says commentators can't show emotion?). 

Relegation rivals Barnsley also nicked a first half goal to give the underdogs a surprise lead lead.

Despite positive first halves, both sides had to turn away aggressive second half comebacks. Luton spent the last 20 minutes valiantly defended a 3-2 lead over Blackburn, much of which involved defenders punting the ball high into the Kenilworth Road grandstand and praying. 

When the final whistle finally came, the Hatters were safe, and they celebrated like they had won the league title. You have to love it:

In Brentford, Barnsley had its hands full with a Bees team that desperately pushed for promotion. Brentford dominated the second half, and when Josh da Silva equalized in the 73rd minute, Barnsley seemed destined for League One. But a draw wouldn't help either side, so both teams continued to push for an all-important second goal.

Multiple times the ball seemed destined for the back of the Brentford net, only for a Barnsley body to claw it away. Then, in second half injury time, the unthinkable happened.

A rare foray in the Brentford box saw Barnsley's Cauley Woodrow play a low cross across the six yard area and Clark Odour was on hand to tap it in at the back post. You simply cannot write this:

Pending results from elsewhere, Barnsley was safe.

While Barnsley was given little chance at survival, Nottingham Forest were all but expected to clinch a playoff spot, needing only a draw against Stoke or for Swansea to drop points against Reading. With both matches tied at one midway through the second half, Swansea's playoff hopes seemed dead (you get where this is going though). 

Suddenly, everything changed. Swansea had a prolific final 30 minutes, scoring three goals, while Forest fell apart defensively and allowed "mighty" Stoke to score three times. Both matches ended 4-1.

Not only did Swansea win and Forest lose, but the Swans overcame the -5 goal differential, with Wayne Routledge's goal for Swansea tying the sides on goal differential, and then Forest conceding a tragic late own goal that knocked it out of the playoffs.

You almost feel bad for Forest with the season it has experienced:

Now you can add a 90'+6' own goal to this quartet of calamities:

What a finish to the season.

Actually, it's not quite finished though. You may have noticed that this table still has Barnsley relegated, or you remembered the aside I made about Wigan earlier.

Wigan was placed in financial administration on July 1, meaning it is unable to pay its outstanding debts. It faces a punishment of a 12-point deduction, which would take the club from 13th down to 23rd. The club is scheduled to make an appeal July 31, but it is an unfortunate epilogue after such an exciting final day.

But, in a season where anything can, and has, happened, there is only one thing you can say about the EFL Championship: it ain't over 'til it's over.

Videos you might like