From 924734b8a422fa8df59ad5bf172e51ad619a7ccd Mon Sep 17 00:00:00 2001 From: Brandon Shipley Date: Tue, 17 Mar 2026 02:01:07 -0700 Subject: [PATCH] code quality improvements + add boolean in a ctive link helper to check if url is active without displaying link --- composer.json | 2 +- phpstan.neon | 2 ++ src/Controller/AppController.php | 4 +-- src/View/Helper/ActiveLinkHelper.php | 27 +++++++++++-------- .../View/Helper/ActiveLinkHelperTest.php | 2 +- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index 4ca05e3..c222728 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ } ], "require": { - "php": ">=8.1", + "php": ">=8.2", "cakephp/cakephp": "^5.0" }, "require-dev": { diff --git a/phpstan.neon b/phpstan.neon index b251d7d..2e0bbb2 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -8,3 +8,5 @@ parameters: bootstrapFiles: - tests/bootstrap.php treatPhpDocTypesAsCertain: false + ignoreErrors: + - identifier: trait.unused diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index 4e3d4e7..584e73f 100644 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -3,7 +3,7 @@ declare(strict_types=1); namespace CheeseCake\Controller; -use App\Controller\AppController as BaseController; +use Cake\Controller\Controller; -class AppController extends BaseController { +class AppController extends Controller { } diff --git a/src/View/Helper/ActiveLinkHelper.php b/src/View/Helper/ActiveLinkHelper.php index e274d7f..d16d76b 100644 --- a/src/View/Helper/ActiveLinkHelper.php +++ b/src/View/Helper/ActiveLinkHelper.php @@ -5,12 +5,15 @@ namespace CheeseCake\View\Helper; use Cake\Routing\Router; use Cake\View\Helper; +use Cake\View\Helper\HtmlHelper; /** * ActiveLink helper + * + * @property HtmlHelper $Html */ class ActiveLinkHelper extends Helper { - + /** * Default configuration. * @@ -42,12 +45,12 @@ class ActiveLinkHelper extends Helper { if (!array_key_exists('target', $options) || !$currentUrl) { return $this->Html->link($title, $url, $options); } + $target = $options['target']; - $activeClass = $options['activeClass'] ?? $this->getConfig('activeClass'); - - unset($options['target']); - unset($options['activeClass']); - + $activeClass = $options['activeClass'] ?? $this->getConfig('activeClass'); + unset($options['target']); + unset($options['activeClass']); + if (is_string($target)) { return $this->_linkFromStringTarget($currentUrl, $target, $title, $url, $activeClass, $options); } @@ -78,7 +81,7 @@ class ActiveLinkHelper extends Helper { } $options['class'] = $this->_addClass($options, $activeClass); - + return $this->Html->link($title, $url, $options); } @@ -113,18 +116,20 @@ class ActiveLinkHelper extends Helper { /** * @param array $providedOptions + * @param string $toAdd * * @return string */ protected function _addClass(array $providedOptions, string $toAdd): string { return array_key_exists('class', $providedOptions) ? $providedOptions['class'] . ' ' . $toAdd : $toAdd; } - - /** + + /** * @param array $current * @param string $targetString * @param string $title * @param array|string|null $url + * @param string $activeClass * @param array $options * * @return string @@ -138,8 +143,8 @@ class ActiveLinkHelper extends Helper { return $this->Html->link($title, $url, $options); } - - /** + + /** * @param array $current * @param array $targetUrl * diff --git a/tests/TestCase/View/Helper/ActiveLinkHelperTest.php b/tests/TestCase/View/Helper/ActiveLinkHelperTest.php index 7481dca..124e8cd 100644 --- a/tests/TestCase/View/Helper/ActiveLinkHelperTest.php +++ b/tests/TestCase/View/Helper/ActiveLinkHelperTest.php @@ -108,7 +108,7 @@ class ActiveLinkHelperTest extends TestCase { // matches specific controller action $specificActionResult = $helper->link('goto', ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], [ 'target' => ['controller' => 'Events', 'action' => 'index'], - 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], + 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'activeClass' => 'awesome-active-class', 'class' => 'link-class', ]);