public function current($content)
{
/** @var Request $request */
$request = $this->app['request'];
$requestUri = $request->getRequestUri();
$routeParams = $request->get('_route_params');
// If passed a string, and it is in the route.
if (is_string($content) && in_array($content, $routeParams)) {
return true;
}
if (is_array($content) && isset($content['link'])) {
$linkToCheck = $content['link'];
} elseif ($content instanceof \Bolt\Legacy\Content) {
$linkToCheck = $content->link();
} else {
$linkToCheck = (string) $content;
}
// check against Request Uri
if ($requestUri === $linkToCheck) {
return true;
}
// No contenttypeslug or slug -> not 'current'
if (empty($routeParams['contenttypeslug']) || empty($routeParams['slug'])) {
return false;
}
// check against simple content.link
if ('/' . $routeParams['contenttypeslug'] . '/' . $routeParams['slug'] === $linkToCheck) {
return true;
}
if (!isset($content['contenttype'])) {
return false;
}
// if the current requested page is for the same slug or singularslug.
$ct = $content['contenttype'];
if ($routeParams['contenttypeslug'] === $ct['slug'] || $routeParams['contenttypeslug'] === $ct['singular_slug']) {
// …and the slugs should match.
return $routeParams['slug'] === $content['slug'];
}
return false;
}
public function testCurrentFalse() { $app = $this->getApp(); $app->flush(); $this->addDefaultUser($app); $this->addSomeContent(); $request = (new Request())->create('/gum-tree/koala'); $request->query->set('_route_params', ['zone' => 'frontend', 'slug' => 'koala', 'contenttypeslug' => 'gum-tree']); $app['request'] = $request; $handler = new RecordHandler($app); $content = ['slug' => 'clippy']; $result = $handler->current($content); $this->assertFalse($result); }