reviewer-1.2.x-dev/tests/modules/reviewer_test/src/Plugin/reviewer/Task/TestLinkTextNotTrimmedTask.php
tests/modules/reviewer_test/src/Plugin/reviewer/Task/TestLinkTextNotTrimmedTask.php
<?php
declare(strict_types=1);
namespace Drupal\reviewer_test\Plugin\reviewer\Task;
use Drupal\reviewer\Attribute\Task;
use Drupal\reviewer\Reviewer\Result\ResultInterface;
use Drupal\reviewer\Reviewer\Task\FixableInterface;
/**
* Task for testing the Reviewer UI.
*/
#[Task(id: 'link_text_not_trimmed_test_task')]
final class TestLinkTextNotTrimmedTask extends TestBaseTask implements FixableInterface {
/**
* {@inheritdoc}
*/
public function check(): ResultInterface {
$results = $this->createCollection();
foreach ($this->getDisplays() as $display) {
foreach ($display->getComponents() as $field => $settings) {
if (
isset($settings['type'])
&& $settings['type'] === 'link'
) {
$results->add($this->createCheckResult(
$settings['settings']['trim_length'] === NULL,
"Full link text for $field in view mode {$display->getMode()} is output.",
"Link text for $field in view mode {$display->getMode()} is trimmed to {$settings['settings']['trim_length']} characters.",
"{$display->getMode()}.$field",
));
}
}
}
return $results;
}
/**
* {@inheritdoc}
*/
public function fix(): ResultInterface {
foreach ($this->getDisplays() as $display) {
$updated = FALSE;
foreach ($display->getComponents() as $field => $settings) {
if (
isset($settings['type'])
&& $settings['type'] === 'link'
&& $settings['settings']['trim_length'] !== NULL
) {
$settings['settings']['trim_length'] = NULL;
$display->setComponent($field, $settings);
$updated = TRUE;
}
}
if ($updated) {
$display->save();
}
}
return $this->createFixResult(
$this->check()->getStatus(),
"Fixed all trimmed link text.",
"Failed to fix trimmed link text.",
);
}
}
