diff --git a/src/Commands/NodeRevisionDeleteCommands.php b/src/Commands/NodeRevisionDeleteCommands.php index 0a8c8ecf8a23c2c96de99140870c9f620fcc812b..5b22faf9dbec53f7d674f6d0e940f4e87d8f7552 100644 --- a/src/Commands/NodeRevisionDeleteCommands.php +++ b/src/Commands/NodeRevisionDeleteCommands.php @@ -267,11 +267,11 @@ class NodeRevisionDeleteCommands extends DrushCommands { $config->set('node_revision_delete_when_to_delete_time', $node_revision_delete_when_to_delete_time); $config->save(); + $time = $this->nodeRevisionDelete->getTimeNumberString($time) == 1 ? $time['singular'] : $time['plural']; // We need to update the max_number in the existing content type // configuration if the new value is lower than the actual. $this->nodeRevisionDelete->updateTimeMaxNumberConfig('when_to_delete', $max_number); - $time = $this->nodeRevisionDelete->getTimeNumberString($max_number, $time); $message = dt('<info>The maximum inactivity time was set to @max_number @time.</info>', ['@max_number' => $max_number, '@time' => $time]); $this->writeln($message); } @@ -279,9 +279,8 @@ class NodeRevisionDeleteCommands extends DrushCommands { // Getting the values from the config. $node_revision_delete_when_to_delete_time = $config->get('node_revision_delete_when_to_delete_time'); $max_number = $node_revision_delete_when_to_delete_time['max_number']; - $time = $node_revision_delete_when_to_delete_time['time']; + $time = $this->nodeRevisionDelete->getTimeNumberString($time) == 1 ? $time['singular'] : $time['plural']; - $time = $this->nodeRevisionDelete->getTimeNumberString($max_number, $time); $message = dt('<info>The maximum inactivity time is: @max_number @time.</info>', ['@max_number' => $max_number, '@time' => $time]); $this->writeln($message); } @@ -322,9 +321,9 @@ class NodeRevisionDeleteCommands extends DrushCommands { // We need to update the max_number in the existing content type // configuration if the new value is lower than the actual. $this->nodeRevisionDelete->updateTimeMaxNumberConfig('minimum_age_to_delete', $max_number); + $time = $this->nodeRevisionDelete->getTimeNumberString($time) == 1 ? $time['singular'] : $time['plural']; // Is singular or plural? - $time = $this->nodeRevisionDelete->getTimeNumberString($max_number, $time); $message = dt('<info>The maximum time for the minimum age was set to @max_number @time.</info>', ['@max_number' => $max_number, '@time' => $time]); $this->writeln($message); } @@ -332,10 +331,9 @@ class NodeRevisionDeleteCommands extends DrushCommands { // Getting the values from the config. $node_revision_delete_minimum_age_to_delete_time = $config->get('node_revision_delete_minimum_age_to_delete_time'); $max_number = $node_revision_delete_minimum_age_to_delete_time['max_number']; - $time = $node_revision_delete_minimum_age_to_delete_time['time']; + $time = $this->nodeRevisionDelete->getTimeNumberString($time) == 1 ? $time['singular'] : $time['plural']; // Is singular or plural? - $time = $this->nodeRevisionDelete->getTimeNumberString($max_number, $time); $message = dt('<info>The maximum time for the minimum age is: @max_number @time.</info>', ['@max_number' => $max_number, '@time' => $time]); $this->writeln($message); } diff --git a/src/NodeRevisionDelete.php b/src/NodeRevisionDelete.php index 15852b594efd14453694e28287699389525d534d..d42bd86284e2f543b955373bbb4589c238e234d6 100644 --- a/src/NodeRevisionDelete.php +++ b/src/NodeRevisionDelete.php @@ -132,19 +132,16 @@ class NodeRevisionDelete implements NodeRevisionDeleteInterface { // Getting the config. $config_name_time = $this->configFactory->get($this->configurationFileName)->get('node_revision_delete_' . $config_name . '_time'); // Is singular or plural? - $time = $this->getTimeNumberString($number, $config_name_time['time']); + $time = $this->getTimeNumberString($config_name_time['time']); // Return the time string for the $config_name parameter. $result = ''; switch ($config_name) { case 'minimum_age_to_delete': - $result = $number . ' ' . $time; + $result = $number . ' ' . ($number == 1 ? $time['singular'] : $time['plural']); break; case 'when_to_delete': - $result = $this->t('After @number @time of inactivity', [ - '@number' => $number, - '@time' => $time, - ]); + $result = $this->formatPlural($number, "After 1 {$time['singular']} of inactivity", "After @count {$time['plural']} of inactivity"); break; } @@ -154,7 +151,7 @@ class NodeRevisionDelete implements NodeRevisionDeleteInterface { /** * {@inheritdoc} */ - public function getTimeNumberString(string $number, string $time): TranslatableMarkup { + public function getTimeNumberString(string $time): array { // Time options. $time_options = [ 'days' => [ @@ -171,7 +168,7 @@ class NodeRevisionDelete implements NodeRevisionDeleteInterface { ], ]; - return $number == 1 ? $time_options[$time]['singular'] : $time_options[$time]['plural']; + return $time_options[$time]; } /** diff --git a/src/NodeRevisionDeleteInterface.php b/src/NodeRevisionDeleteInterface.php index 3a79ebba28bcf3b4978852b9e2b09be6382a9a93..03baf762d853cb588af64042e2bdd276ac384e5b 100644 --- a/src/NodeRevisionDeleteInterface.php +++ b/src/NodeRevisionDeleteInterface.php @@ -74,15 +74,13 @@ interface NodeRevisionDeleteInterface { /** * Return the time option in singular or plural. * - * @param string $number - * The number. * @param string $time * The time option (days, weeks or months). * - * @return \Drupal\Core\StringTranslation\TranslatableMarkup - * The singular or plural value for the time. + * @return array + * The singular and plural for the time. */ - public function getTimeNumberString(string $number, string $time): TranslatableMarkup; + public function getTimeNumberString(string $time): array; /** * Return the list of candidate nodes for node revision delete. diff --git a/tests/src/Unit/NodeRevisionDeleteTest.php b/tests/src/Unit/NodeRevisionDeleteTest.php index cd7114911dc56de75f85d31e98ff91158df5a0a8..59f224b9549728f958370f98adc03e92f9050f96 100644 --- a/tests/src/Unit/NodeRevisionDeleteTest.php +++ b/tests/src/Unit/NodeRevisionDeleteTest.php @@ -245,19 +245,21 @@ class NodeRevisionDeleteTest extends UnitTestCase { /** * Tests the getTimeNumberString() method. * - * @param int $expected - * The expected result from calling the function. - * @param string $number - * The number. * @param string $time * The time option (days, weeks or months). + * @param array $expected + * The expected result from calling the function. * * @covers ::getTimeNumberString * @dataProvider providerGetTimeNumberString */ - public function testGetTimeNumberString($expected, $number, $time) { + public function testGetTimeNumberString($time, array $expected) { // Testing the method. - $this->assertEquals($expected, $this->nodeRevisionDelete->getTimeNumberString($number, $time)); + $this->assertEquals($expected['singular'], $this->nodeRevisionDelete + ->getTimeNumberString($time)['singular']->getUntranslatedString()); + + $this->assertEquals($expected['plural'], $this->nodeRevisionDelete + ->getTimeNumberString($time)['plural']->getUntranslatedString()); } /** @@ -266,24 +268,33 @@ class NodeRevisionDeleteTest extends UnitTestCase { * @return array * An array of arrays, each containing: * - 'expected' - Expected return from getTimeNumberString(). - * - 'number' - The number. * - 'time' - The time option (days, weeks or months). * * @see testGetTimeNumberString() */ public function providerGetTimeNumberString() { // Days. - $tests['day singular'] = ['day', 1, 'days']; - $tests['day plural 1'] = ['days', 2, 'days']; - $tests['day plural 2'] = ['days', 10, 'days']; + $tests['days'] = [ + 'days', [ + 'singular' => 'day', + 'plural' => 'days', + ], + ]; // Weeks. - $tests['week singular'] = ['week', 1, 'weeks']; - $tests['week plural 1'] = ['weeks', 2, 'weeks']; - $tests['week plural 2'] = ['weeks', 10, 'weeks']; + $tests['weeks'] = [ + 'weeks', [ + 'singular' => 'week', + 'plural' => 'weeks', + ], + ]; // Months. - $tests['month singular'] = ['month', 1, 'months']; - $tests['month plural 1'] = ['months', 2, 'months']; - $tests['month plural 2'] = ['months', 10, 'months']; + $tests['months'] = [ + 'months', + [ + 'singular' => 'month', + 'plural' => 'months', + ], + ]; return $tests; }