Mumbai
Account created on 4 August 2019, over 6 years ago
#

Merge Requests

More

Recent comments

🇮🇳India vishal.kadam Mumbai

1. merge is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

2. FILE: better_taxonomy.module

Since the module is declared compatible with Drupal 10.2, removing the function implementing the hook is not possible. The function still needs to be defined, but it calls the method defined by the service class, as described in Support for object oriented hook implementations using autowired services (Backwards-compatible Hook implementation for Drupal versions from 10.1 to 11.0).

🇮🇳India vishal.kadam Mumbai

Rest seems fine to me.

Please wait for other reviewers and Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

1. FILE: tmgmt_tolgee.module and modules/tmgmt_tolgee_reverse_sync/tmgmt_tolgee_reverse_sync.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

2. FILE: tmgmt_tolgee.module

\Drupal::messenger()->addError($e->getMessage());

The first argument passed to MessengerInterface::addError(), MessengerInterface::addMessage(), MessengerInterface::addStatus(), and MessengerInterface::addWarning() must be a translatable string which uses placeholders.

3. FILE: css/tmgmt_tolgee.admin.css

Remove the empty file.

4. FILE: src/Plugin/tmgmt/Translator/TolgeeTranslator.php

  /**
   * The HTTP client.
   *
   * @var \GuzzleHttp\ClientInterface
   */
  protected ClientInterface $client;

  /**
   * The key repository.
   *
   * @var \Drupal\key\KeyRepositoryInterface
   */
  protected KeyRepositoryInterface $keyRepository;

  /**
   * The file system service.
   *
   * @var \Drupal\Core\File\FileSystemInterface
   */
  protected FileSystemInterface $fileSystem;

  /**
   * The format manager.
   *
   * @var \Drupal\Component\Plugin\PluginManagerInterface
   */
  protected PluginManagerInterface $formatManager;

  /**
   * The state service.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected StateInterface $state;

  /**
   * Constructs a TolgeeTranslator object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \GuzzleHttp\ClientInterface $client
   *   The HTTP client.
   * @param \Drupal\key\KeyRepositoryInterface $key_repository
   *   The key repository.
   * @param \Drupal\Core\File\FileSystemInterface $file_system
   *   The file system service.
   * @param \Drupal\Component\Plugin\PluginManagerInterface $format_manager
   *   The format manager.
   * @param \Drupal\Core\State\StateInterface $state
   *   The state service.
   */
  public function __construct(
    array $configuration,
    string $plugin_id,
    $plugin_definition,
    ClientInterface $client,
    KeyRepositoryInterface $key_repository,
    FileSystemInterface $file_system,
    PluginManagerInterface $format_manager,
    StateInterface $state
  ) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->client = $client;
    $this->keyRepository = $key_repository;
    $this->fileSystem = $file_system;
    $this->formatManager = $format_manager;
    $this->state = $state;
  }

FILE: src/Service/TolgeeSynchronizer.php

  protected $entityTypeManager;
  protected $logger;
  protected $messenger;

  public function __construct(EntityTypeManagerInterface $entity_type_manager, LoggerChannelFactoryInterface $logger_factory, MessengerInterface $messenger) {
    $this->entityTypeManager = $entity_type_manager;
    $this->logger = $logger_factory->get('tmgmt_tolgee');
    $this->messenger = $messenger;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

5. FILE: modules/tmgmt_tolgee_reverse_sync/src/TolgeePusher.php

          /*
          $this->loggerFactory->get('tmgmt_tolgee_reverse_sync')->info(
            'Push Success to NS @ns: k=@key', ['@ns' => $namespace, '@key' => $payload['key']]
          );
          */

Remove commented code.

6. FILE: modules/tmgmt_tolgee_reverse_sync/src/Form/ReverseSyncSettingsForm.php

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.

🇮🇳India vishal.kadam Mumbai

1. FILE: auto_taxonomy_menu.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

/**
 * @file
 * Module file for Auto Taxonomy Menu.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

2. FILE: src/Hook/AutoTaxonomyMenuHooks.php

Since the module is declared compatible with Drupal 11.0, removing the function implementing the hook from .module file is not possible. The function still needs to be defined, but it calls the method defined by the service class, as described in Support for object oriented hook implementations using autowired services (Backwards-compatible Hook implementation for Drupal versions from 10.1 to 11.0).

3. FILE: src/Hook/AutoTaxonomyMenuHooks.php

  /**
   * The database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected $database;

  /**
   * The entity field manager.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected $entityFieldManager;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The request stack.
   *
   * @var \Symfony\Component\HttpFoundation\RequestStack
   */
  protected $requestStack;

  /**
   * The logger factory.
   *
   * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
   */
  protected $loggerFactory;

  /**
   * The messenger.
   *
   * @var \Drupal\Core\Messenger\MessengerInterface
   */
  protected $messenger;

  /**
   * The router builder.
   *
   * @var \Drupal\Core\Routing\RouteBuilderInterface
   */
  protected $routerBuilder;

  /**
   * Constructs a new AutoTaxonomyMenuHooks object.
   *
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection.
   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
   *   The entity field manager.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
   *   The request stack.
   * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_factory
   *   The logger factory.
   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
   *   The messenger.
   * @param \Drupal\Core\Routing\RouteBuilderInterface $router_builder
   *   The router builder.
   */
  public function __construct(
    Connection $database,
    EntityFieldManagerInterface $entity_field_manager,
    EntityTypeManagerInterface $entity_type_manager,
    RequestStack $request_stack,
    LoggerChannelFactoryInterface $logger_factory,
    MessengerInterface $messenger,
    RouteBuilderInterface $router_builder,
  ) {
    $this->database = $database;
    $this->entityFieldManager = $entity_field_manager;
    $this->entityTypeManager = $entity_type_manager;
    $this->requestStack = $request_stack;
    $this->loggerFactory = $logger_factory;
    $this->messenger = $messenger;
    $this->routerBuilder = $router_builder;
  }

FILE: src/Plugin/Derivative/AutoTaxonomyMenuLink.php

  /**
   * Database connection.
   *
   * @var \Drupal\Core\Database\Connection database
   */
  protected Connection $database;

  /**
   * The logger factory.
   *
   * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
   */
  protected $loggerFactory;

  /**
   * Constructs plugin instance.
   *
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection.
   * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_factory
   *   The logger factory.
   */
  public function __construct(Connection $database, LoggerChannelFactoryInterface $logger_factory) {
    $this->database = $database;
    $this->loggerFactory = $logger_factory;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

4. FILE: src/Plugin/Derivative/AutoTaxonomyMenuLink.php

$logger->debug("Processing menu item: " . $record->menu_link_id);

$logger->debug("Adding term: " . $term->name);

$logger->warning("Could not create the link $term->name \n {$ex->getMessage()}");

The $message parameter passed to the LoggerInterface methods must be a literal string that uses placeholders. It's not a translatable string returned from t()/$this->t(), a string concatenation, a value returned from a function/method, nor a variable containing an exception object.

🇮🇳India vishal.kadam Mumbai

Thank you for applying!

Please read Review process for security advisory coverage: What to expect for more details and Security advisory coverage application checklist to understand what reviewers look for. Tips for ensuring a smooth review gives some hints for a smoother review.

The important notes are the following.

  • If you have not done it yet, you should enable GitLab CI for the project and fix the PHP_CodeSniffer errors/warnings it reports.
  • For the time this application is open, only your commits are allowed.
  • The purpose of this application is giving you a new drupal.org role that allows you to opt projects into security advisory coverage, either projects you already created, or projects you will create. The project status will not be changed by this application; once this application is closed, you will be able to change the project status from Not covered to Opt into security advisory coverage. This is possible only 14 days after the project is created.

    Keep in mind that once the project is opted into security advisory coverage, only Security Team members may change coverage.
  • Only the person who created the application will get the permission to opt projects into security advisory coverage. No other person will get the same permission from the same application; that applies also to co-maintainers/maintainers of the project used for the application.
  • We only accept an application per user. If you change your mind about the project to use for this application, or it is necessary to use a different project for the application, please update the issue summary with the link to the correct project and the issue title with the project name and the branch to review.

To the reviewers

Please read How to review security advisory coverage applications , Application workflow , What to cover in an application review , and Tools to use for reviews .

The important notes are the following.

  • It is preferable to wait for a project moderator before posting the first comment on newly created applications. Project moderators will do some preliminary checks that are necessary before any change on the project files is suggested.
  • Reviewers should show the output of a CLI tool only once per application.
  • It may be best to have the applicant fix things before further review.

For new reviewers, I would also suggest to first read In which way the issue queue for coverage applications is different from other project queues .

🇮🇳India vishal.kadam Mumbai

I have reviewed your posts and confirmed the account.

🇮🇳India vishal.kadam Mumbai

Hello Tanishq, and a warm welcome to the Drupal community!

You can contribute to drupal.org without having the role.

The 'confirmed' role is for users that contribute to this website. In this case, you've not contributed any content except this post, so there is no content to review. Postponing for now, after you have posted some content on Drupal.org.

You can add a comment to this issue to request a new review in order to get 'confirmed' or you will get that automatically.

Please visit the Become a confirmed user page for information.

Here is a list of resources that will assist you in making helpful contributions:

🇮🇳India vishal.kadam Mumbai

Fix the warnings/errors reported by PHP_CodeSniffer. (see attached changelogify-phpcs-issues.txt)

🇮🇳India vishal.kadam Mumbai

This is not required. However, it is better if the module does not depend on Drupal versions that are no longer supported. Keeping the current approach is acceptable to maintain compatibility with versions below 10.3.

🇮🇳India vishal.kadam Mumbai

1. FILE: better_taxonomy.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .
It would require increasing the minimum Drupal 10 version supported, but Drupal 10.1 is no longer supported.

2. FILE: src/BTFormsService.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * Class constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   */
  public function __construct(EntityTypeManagerInterface $entityTypeManager) {
    $this->entityTypeManager = $entityTypeManager;
  }

FILE: src/BTService.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The request stack.
   *
   * @var \Symfony\Component\HttpFoundation\RequestStack
   */
  protected RequestStack $requestStack;

  /**
   * The entity field manager service.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected EntityFieldManagerInterface $entityFieldManager;

  /**
   * The term list builder.
   */
  protected EntityListBuilderInterface $termListBuilder;

  /**
   * Class constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
   *   The request stack.
   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entityFieldManager
   *   The entity field manager service.
   */
  public function __construct(
    EntityTypeManagerInterface $entityTypeManager,
    RequestStack $requestStack,
    EntityFieldManagerInterface $entityFieldManager,
  ) {
    $this->entityTypeManager = $entityTypeManager;
    $this->requestStack = $requestStack;
    $this->entityFieldManager = $entityFieldManager;
    $this->termListBuilder = $entityTypeManager->getListBuilder('taxonomy_term');

  }

FILE: src/Form/AddMultipleForm.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The Better taxonomy utils service.
   *
   * @var \Drupal\better_taxonomy\BTService
   */
  protected BTService $betterTaxonomyService;

  /**
   * The Better taxonomy forms service.
   *
   * @var \Drupal\better_taxonomy\BTFormsService
   */
  protected BTFormsService $betterTaxonomyFormsService;

  /**
   * Class constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   * @param \Drupal\better_taxonomy\BTService $betterTaxonomyService
   *   The Better taxonomy utils service.
   * @param \Drupal\better_taxonomy\BTFormsService $betterTaxonomyFormsService
   *   The Better taxonomy forms service.
   */
  public function __construct(
    EntityTypeManagerInterface $entityTypeManager,
    BTService $betterTaxonomyService,
    BTFormsService $betterTaxonomyFormsService,
  ) {
    $this->entityTypeManager = $entityTypeManager;
    $this->betterTaxonomyService = $betterTaxonomyService;
    $this->betterTaxonomyFormsService = $betterTaxonomyFormsService;
  }

FILE: src/Form/CoreOverviewTerms.php

  /**
   * The module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The renderer.
   *
   * @var \Drupal\Core\Render\RendererInterface
   */
  protected RendererInterface $renderer;

  /**
   * The entity repository.
   *
   * @var \Drupal\Core\Entity\EntityRepositoryInterface
   */
  protected EntityRepositoryInterface $entityRepository;

  /**
   * The pager manager.
   *
   * @var \Drupal\Core\Pager\PagerManagerInterface
   */
  protected PagerManagerInterface $pagerManager;

  /**
   * The entity type manager.
   *
   * @var \Drupal\better_taxonomy\BTService
   */
  protected BTService $betterTaxonomyService;

  /**
   * The core overview terms form.
   *
   * @var \Drupal\taxonomy\Form\OverviewTerms
   */
  protected OverviewTerms $coreClass;

  /**
   * Constructs an OverviewTerms object.
   *
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler
   *   The module handler.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   * @param \Drupal\Core\Render\RendererInterface $renderer
   *   The renderer.
   * @param \Drupal\Core\Entity\EntityRepositoryInterface $entityRepository
   *   The entity repository.
   * @param \Drupal\Core\Pager\PagerManagerInterface $pagerManager
   *   Pager manager service.
   * @param \Drupal\better_taxonomy\BTService $betterTaxonomyService
   *   The Better taxonomy utils service.
   */
  public function __construct(
    ModuleHandlerInterface $moduleHandler,
    EntityTypeManagerInterface $entityTypeManager,
    RendererInterface $renderer,
    EntityRepositoryInterface $entityRepository,
    PagerManagerInterface $pagerManager,
    BTService $betterTaxonomyService,
  ) {
    $this->moduleHandler = $moduleHandler;
    $this->entityTypeManager = $entityTypeManager;
    $this->renderer = $renderer;
    $this->entityRepository = $entityRepository;
    $this->pagerManager = $pagerManager;
    $this->betterTaxonomyService = $betterTaxonomyService;
    $this->coreClass = new OverviewTerms($moduleHandler, $entityTypeManager, $renderer, $entityRepository, $pagerManager);
  }

FILE: src/Form/DeleteAllForm.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * Vocabulary to delete all terms.
   *
   * @var \Drupal\taxonomy\VocabularyInterface
   */
  protected VocabularyInterface $taxonomyVocabulary;

  /**
   * Class constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   */
  public function __construct(EntityTypeManagerInterface $entityTypeManager) {
    $this->entityTypeManager = $entityTypeManager;
  }

FILE: src/Form/DeleteAllForm.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The current route match.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $routeMatch;

  /**
   * The form builder.
   *
   * @var \Drupal\Core\Form\FormBuilderInterface
   */
  protected FormBuilderInterface $formBuilder;

  /**
   * Class constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   * @param \Drupal\Core\Routing\RouteMatchInterface $routeMatch
   *   The current route match.
   * @param \Drupal\Core\Form\FormBuilderInterface $formBuilder
   *   The form builder.
   */
  public function __construct(
    EntityTypeManagerInterface $entityTypeManager,
    RouteMatchInterface $routeMatch,
    FormBuilderInterface $formBuilder,
  ) {
    $this->entityTypeManager = $entityTypeManager;
    $this->routeMatch = $routeMatch;
    $this->formBuilder = $formBuilder;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

3. FILE: src/Form/AddMultipleForm.php and src/Form/DeleteAllForm.php

$this->messenger()->addMessage($message);

The first argument passed to MessengerInterface::addError(), MessengerInterface::addMessage(), MessengerInterface::addStatus(), and MessengerInterface::addWarning() must be a translatable string which uses placeholders.

🇮🇳India vishal.kadam Mumbai

1. 2.3.1, 2.2.1, 2.1.1, 1.0.2, and 1.0.1 are wrong names for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

2. FILE: messages.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

  switch ($type) {
    case 'success':
    case 'status':
      $messenger->addStatus($formatted_message);
      break;

    case 'warning':
      $messenger->addWarning($formatted_message);
      break;

    case 'error':
      $messenger->addError($formatted_message);
      break;

    case 'info':
    default:
      $messenger->addMessage($formatted_message);
      break;
  }

The first argument passed to MessengerInterface::addError(), MessengerInterface::addMessage(), MessengerInterface::addStatus(), and MessengerInterface::addWarning() must be a translatable string which uses placeholders.

🇮🇳India vishal.kadam Mumbai

As a side note: These applications do not require that new releases are created after reviews, since a review could ask for a change that is not backward compatible with the existing releases.

🇮🇳India vishal.kadam Mumbai

1. FILE: README.md

The README file is missing the required sections - Requirements, Installation, and Configuration.

2. FILE: src/Form/TailwindPrefixForm.php

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.
For this change, it is necessary to require at least Drupal 10.3, but that is not an issue, since Drupal 10.2.x is no longer supported.

3. FILE: src/Form/TailwindPrefixForm.php

  /**
   * Render cache backend.
   *
   * @var \Drupal\Core\Cache\CacheBackendInterface
   */
  protected CacheBackendInterface $cacheRender;

  /**
   * Dynamic page cache backend.
   *
   * @var \Drupal\Core\Cache\CacheBackendInterface
   */
  protected CacheBackendInterface $cacheDynamicPage;

  /**
   * Page cache backend.
   *
   * @var \Drupal\Core\Cache\CacheBackendInterface
   */
  protected CacheBackendInterface $cachePage;

  /**
   * Constructs a TailwindPrefixForm object.
   *
   * @param \Drupal\Core\Cache\CacheBackendInterface $cacheRender
   *   Render cache service.
   * @param \Drupal\Core\Cache\CacheBackendInterface $cacheDynamicPage
   *   Dynamic page cache service.
   * @param \Drupal\Core\Cache\CacheBackendInterface $cachePage
   *   Page cache service.
   */
  public function __construct(
    CacheBackendInterface $cacheRender,
    CacheBackendInterface $cacheDynamicPage,
    CacheBackendInterface $cachePage,
  ) {
    $this->cacheRender = $cacheRender;
    $this->cacheDynamicPage = $cacheDynamicPage;
    $this->cachePage = $cachePage;
  }

FILE: src/Twig/TailwindMergeClassesTwigExtension.php

  /**
   * Service instance used for merging Tailwind classes.
   *
   * @var \Drupal\tailwind_merge_classes\Service\TailwindMergeService
   */
  public $tailwindMergeService;

  /**
   * Constructs the Twig extension.
   *
   * @param \Drupal\tailwind_merge_classes\Service\TailwindMergeService $service
   *   Tailwind merge service injected via dependency injection.
   */
  public function __construct(TailwindMergeService $service) {
    $this->tailwindMergeService = $service;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

🇮🇳India vishal.kadam Mumbai

If you changed what has been reported, please change the status to Needs review. In this way, reviewers will know everything has been changed and can be reviewed again.

🇮🇳India vishal.kadam Mumbai

1. main branch is still present. It needs to be deleted.

2. FILE: changelogify.module

Since the module is declared compatible with Drupal 10.3, removing the function implementing the hook is not possible. The function still needs to be defined, but it calls the method defined by the service class, as described in Support for object oriented hook implementations using autowired services (Backwards-compatible Hook implementation for Drupal versions from 10.1 to 11.0).

3. I don't see a .gitlab-ci.yml file.

🇮🇳India vishal.kadam Mumbai

If you changed what has been reported, please change the status to Needs review. In this way, reviewers will know everything has been changed and can be reviewed again.

🇮🇳India vishal.kadam Mumbai

Releases should not be created after each review done here, since a review could ask for a change that is not backward compatible with the existing releases.

🇮🇳India vishal.kadam Mumbai

1. FILE: changelogify.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

It would require increasing the minimum Drupal 10 version supported, but Drupal 10.1 is no longer supported.

/**
 * @file
 * Primary module hooks for Changelogify.
 */

Drupal does not have primary and secondary hooks. Instead of that, it is preferable to use the usual description: “Hook implementations for the [module name] module”, where [module name] is the name of the module given in its .info.yml file.

2. FILE: src/EventManager.php

    /**
     * The entity type manager.
     */
    protected EntityTypeManagerInterface $entityTypeManager;

    /**
     * The current user.
     */
    protected AccountProxyInterface $currentUser;

    /**
     * The time service.
     */
    protected TimeInterface $time;

    /**
     * Constructs an EventManager.
     */
    public function __construct(
        EntityTypeManagerInterface $entity_type_manager,
        AccountProxyInterface $current_user,
        TimeInterface $time
    ) {
        $this->entityTypeManager = $entity_type_manager;
        $this->currentUser = $current_user;
        $this->time = $time;
    }

FILE: src/ReleaseGenerator.php

    /**
     * The entity type manager.
     */
    protected EntityTypeManagerInterface $entityTypeManager;

    /**
     * The event manager.
     */
    protected EventManagerInterface $eventManager;

    /**
     * The current user.
     */
    protected AccountProxyInterface $currentUser;

    /**
     * The time service.
     */
    protected TimeInterface $time;

    /**
     * Constructs a ReleaseGenerator.
     */
    public function __construct(
        EntityTypeManagerInterface $entity_type_manager,
        EventManagerInterface $event_manager,
        AccountProxyInterface $current_user,
        TimeInterface $time
    ) {
        $this->entityTypeManager = $entity_type_manager;
        $this->eventManager = $event_manager;
        $this->currentUser = $current_user;
        $this->time = $time;
    }

FILE: src/Controller/DashboardController.php

    /**
     * The event manager.
     */
    protected EventManagerInterface $eventManager;

    /**
     * Constructs a DashboardController.
     */
    public function __construct(EventManagerInterface $event_manager)
    {
        $this->eventManager = $event_manager;
    }

FILE: src/Form/GenerateReleaseForm.php

    /**
     * The release generator.
     */
    protected ReleaseGeneratorInterface $releaseGenerator;

    /**
     * Constructs a GenerateReleaseForm.
     */
    public function __construct(ReleaseGeneratorInterface $release_generator)
    {
        $this->releaseGenerator = $release_generator;
    }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

3. FILE: src/Entity/ChangelogifyEvent.php and src/Entity/ChangelogifyRelease.php

* @ContentEntityType(

Projects that are compatible with Drupal 10 or higher versions should use attributes instead of annotations. This means requiring at least Drupal 10.3, but this is not an issue, considering that the minimum supported Drupal version is now Drupal 10.4.9.

4. FILE: src/Form/ReleaseForm.php

$this->messenger()->addStatus($message);

The first argument passed to MessengerInterface::addError(), MessengerInterface::addMessage(), MessengerInterface::addStatus(), and MessengerInterface::addWarning() must be a translatable string which uses placeholders.

5. FILE: src/Form/SettingsForm.php

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.
For this change, it is necessary to require at least Drupal 10.3, but that is not an issue, since Drupal 10.2.x is no longer supported.

6. Fix the warnings/errors reported by PHP_CodeSniffer. (see attached changelogify-phpcs-issues.txt )

NOTE: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

🇮🇳India vishal.kadam Mumbai

Regarding point 2 in comment #4 📌 [D10/D11] Security advisory coverage application: Changelogify Needs review ,

2. There is No release on drupal.org.

A release is not required. Reviewers always verify the code directly from the branch.

🇮🇳India vishal.kadam Mumbai

Rest seems fine to me.

Please wait for other reviewers and Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

Releases are not deleted after they are created. It is not possible to unpublish them either, since the form element to publish a release node is disabled.

🇮🇳India vishal.kadam Mumbai

1. FILE: lightgallery_formatter.libraries.yml and modules/lightgallery_formatter_preview/lightgallery_formatter_preview.libraries.yml

version: VERSION

VERSION is only used by Drupal core modules. Contributed modules should use a literal string that does not change with the Drupal core version a site is using.

2. FILE: src/LightgalleryPluginBase.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * Constructs a LightgalleryPluginBase object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   */
  public function __construct(
    array $configuration,
    $plugin_id,
    $plugin_definition,
    EntityTypeManagerInterface $entity_type_manager,
  ) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->setConfiguration($configuration);
  }

FILE: src/Form/LightgalleryProfileForm.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The extension path resolver.
   *
   * @var \Drupal\Core\Extension\ExtensionPathResolver
   */
  protected $extensionPathResolver;

  /**
   * The module extension list.
   *
   * @var \Drupal\Core\Extension\ModuleExtensionList
   */
  protected $moduleExtensionList;

  /**
   * The app root path.
   *
   * @var string
   */
  protected $appRoot;

  /**
   * The module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * The preview builder service (if available).
   *
   * @var \Drupal\lightgallery_formatter_preview\PreviewBuilder|null
   */
  protected $previewBuilder;

  /**
   * The LightGallery plugin manager.
   *
   * @var \Drupal\lightgallery_formatter\LightgalleryPluginManager
   */
  protected LightgalleryPluginManager $pluginManager;

  /**
   * Constructs a new LightgalleryProfileForm object.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Extension\ExtensionPathResolver $extension_path_resolver
   *   The extension path resolver.
   * @param \Drupal\Core\Extension\ModuleExtensionList $module_extension_list
   *   The module extension list.
   * @param string $app_root
   *   The app root path.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler.
   * @param \Drupal\lightgallery_formatter\LightgalleryPluginManager $plugin_manager
   *   The LightGallery plugin manager.
   */
  public function __construct(
    EntityTypeManagerInterface $entity_type_manager,
    ExtensionPathResolver $extension_path_resolver,
    ModuleExtensionList $module_extension_list,
    string $app_root,
    ModuleHandlerInterface $module_handler,
    LightgalleryPluginManager $plugin_manager,
  ) {
    $this->entityTypeManager = $entity_type_manager;
    $this->extensionPathResolver = $extension_path_resolver;
    $this->moduleExtensionList = $module_extension_list;
    $this->appRoot = $app_root;
    $this->moduleHandler = $module_handler;
    $this->pluginManager = $plugin_manager;
  }

FILE: modules/lightgallery_formatter_preview/src/PreviewBuilder.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The state service.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected $state;

  /**
   * The file URL generator.
   *
   * @var \Drupal\Core\File\FileUrlGeneratorInterface
   */
  protected $fileUrlGenerator;

  /**
   * Constructs a PreviewBuilder object.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\State\StateInterface $state
   *   The state service.
   * @param \Drupal\Core\File\FileUrlGeneratorInterface $file_url_generator
   *   The file URL generator.
   */
  public function __construct(
    EntityTypeManagerInterface $entity_type_manager,
    StateInterface $state,
    FileUrlGeneratorInterface $file_url_generator,
  ) {
    $this->entityTypeManager = $entity_type_manager;
    $this->state = $state;
    $this->fileUrlGenerator = $file_url_generator;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

🇮🇳India vishal.kadam Mumbai

Rest seems fine to me.

Please wait for other reviewers and Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

Reported changes needs to be committed in the review branch i.e. 1.0.x.

It would also be better not to create new branches: Reviewers could need to check again all the files, to understand which changes has been done in the new branch.

🇮🇳India vishal.kadam Mumbai

1. FILE: README.txt

Remove README.txt since README.md is present.

2. FILE: trace_mail_log.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

It would require increasing the minimum Drupal 10 version supported, but Drupal 10.1 is no longer supported.

/**
 * @file
 * Module file for trace_mail_log.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

3. FILE: src/MailManagerDecorator.php

  /**
   * The decorated mail manager.
   */
  protected MailManagerInterface $innerMailManager;

  /**
   * The mail log service.
   */
  protected MailLogService $mailLogService;

  /**
   * Constructs a MailManagerDecorator.
   *
   * @param \Drupal\Core\Mail\MailManagerInterface $inner_mail_manager
   *   The decorated mail manager.
   * @param \Drupal\trace_mail_log\Service\MailLogService $mail_log_service
   *   The mail log service.
   */
  public function __construct(
    MailManagerInterface $inner_mail_manager,
    MailLogService $mail_log_service,
  ) {
    $this->innerMailManager = $inner_mail_manager;
    $this->mailLogService = $mail_log_service;
  }

FILE: src/MailerDecorator.php

  /**
   * The decorated mailer service.
   */
  protected MailerInterface $innerMailer;

  /**
   * The event dispatcher.
   */
  protected EventDispatcherInterface $eventDispatcher;

  /**
   * The messenger service.
   */
  protected MessengerInterface $messenger;

  /**
   * Constructs a MailerDecorator.
   *
   * @param \Drupal\symfony_mailer\MailerInterface $inner_mailer
   *   The decorated mailer service.
   * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
   *   The event dispatcher.
   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
   *   The messenger service.
   * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
   *   The string translation service.
   */
  public function __construct(
    MailerInterface $inner_mailer,
    EventDispatcherInterface $event_dispatcher,
    MessengerInterface $messenger,
    TranslationInterface $string_translation,
  ) {
    $this->innerMailer = $inner_mailer;
    $this->eventDispatcher = $event_dispatcher;
    $this->messenger = $messenger;
    $this->setStringTranslation($string_translation);
  }

FILE: src/Controller/DashboardController.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The purge service.
   */
  protected PurgeService $purgeService;

  /**
   * The date formatter service.
   */
  protected DateFormatterInterface $dateFormatter;

  /**
   * Constructs a DashboardController.
   */
  public function __construct(
    Connection $database,
    PurgeService $purge_service,
    DateFormatterInterface $date_formatter,
    ConfigFactoryInterface $config_factory,
  ) {
    $this->database = $database;
    $this->purgeService = $purge_service;
    $this->dateFormatter = $date_formatter;
    $this->configFactory = $config_factory;
  }

FILE: src/Controller/ExportController.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The date formatter service.
   */
  protected DateFormatterInterface $dateFormatter;

  /**
   * Constructs an ExportController.
   */
  public function __construct(Connection $database, DateFormatterInterface $date_formatter) {
    $this->database = $database;
    $this->dateFormatter = $date_formatter;
  }

FILE: src/Controller/MailLogController.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The file system service.
   */
  protected FileSystemInterface $fileSystem;

  /**
   * The pager manager.
   */
  protected PagerManagerInterface $pagerManager;

  /**
   * The date formatter service.
   */
  protected DateFormatterInterface $dateFormatter;

  /**
   * Constructs a MailLogController.
   */
  public function __construct(
    Connection $database,
    FileSystemInterface $file_system,
    PagerManagerInterface $pager_manager,
    DateFormatterInterface $date_formatter,
    ConfigFactoryInterface $config_factory,
  ) {
    $this->database = $database;
    $this->fileSystem = $file_system;
    $this->pagerManager = $pager_manager;
    $this->dateFormatter = $date_formatter;
    $this->configFactory = $config_factory;
  }

FILE: src/EventSubscriber/MailerEventSubscriber.php

  /**
   * The mail log service.
   */
  protected MailLogService $mailLogService;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * Constructs a MailerEventSubscriber.
   */
  public function __construct(
    MailLogService $mail_log_service,
    ConfigFactoryInterface $config_factory,
  ) {
    $this->mailLogService = $mail_log_service;
    $this->configFactory = $config_factory;
  }

FILE: src/EventSubscriber/QueueEventSubscriber.php

  /**
   * The mail log service.
   */
  protected MailLogService $mailLogService;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * Constructs a QueueEventSubscriber.
   */
  public function __construct(
    MailLogService $mail_log_service,
    ConfigFactoryInterface $config_factory,
  ) {
    $this->mailLogService = $mail_log_service;
    $this->configFactory = $config_factory;
  }

FILE: src/Form/DeleteAllForm.php

  /**
   * The purge service.
   */
  protected PurgeService $purgeService;

  /**
   * Constructs a DeleteAllForm.
   */
  public function __construct(PurgeService $purge_service) {
    $this->purgeService = $purge_service;
  }

FILE: src/Form/DeleteEntryForm.php

  /**
   * The purge service.
   */
  protected PurgeService $purgeService;

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The date formatter service.
   */
  protected DateFormatterInterface $dateFormatter;

  /**
   * Constructs a DeleteEntryForm.
   */
  public function __construct(PurgeService $purge_service, Connection $database, DateFormatterInterface $date_formatter) {
    $this->purgeService = $purge_service;
    $this->database = $database;
    $this->dateFormatter = $date_formatter;
  }

FILE: src/Service/MailLogService.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The file system service.
   */
  protected FileSystemInterface $fileSystem;

  /**
   * The logger.
   */
  protected LoggerInterface $logger;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The time service.
   */
  protected TimeInterface $time;

  /**
   * The UUID service.
   */
  protected UuidInterface $uuid;

  /**
   * Constructs a MailLogService.
   */
  public function __construct(
    Connection $database,
    FileSystemInterface $file_system,
    LoggerChannelFactoryInterface $logger_factory,
    ConfigFactoryInterface $config_factory,
    TimeInterface $time,
    UuidInterface $uuid,
  ) {
    $this->database = $database;
    $this->fileSystem = $file_system;
    $this->logger = $logger_factory->get('trace_mail_log');
    $this->configFactory = $config_factory;
    $this->time = $time;
    $this->uuid = $uuid;
  }

FILE: src/Service/PurgeService.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The file system service.
   */
  protected FileSystemInterface $fileSystem;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The logger.
   */
  protected LoggerInterface $logger;

  /**
   * Constructs a PurgeService.
   */
  public function __construct(
    Connection $database,
    FileSystemInterface $file_system,
    ConfigFactoryInterface $config_factory,
    LoggerChannelFactoryInterface $logger_factory,
  ) {
    $this->database = $database;
    $this->fileSystem = $file_system;
    $this->configFactory = $config_factory;
    $this->logger = $logger_factory->get('trace_mail_log');
  }

FILE: src/Service/WebformEmailStatusService.php

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The memory cache service.
   */
  protected CacheBackendInterface $memoryCache;

  /**
   * Constructs a WebformEmailStatusService.
   *
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection.
   * @param \Drupal\Core\Cache\CacheBackendInterface $memory_cache
   *   The memory cache service.
   */
  public function __construct(Connection $database, CacheBackendInterface $memory_cache) {
    $this->database = $database;
    $this->memoryCache = $memory_cache;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

4. FILE: src/Controller/DashboardController.php, src/Controller/ExportController.php

Since that class does not use methods from the parent class, it does not need to use ControllerBase as parent class. Controllers do not need to have a parent class; as long as they implement \Drupal\Core\DependencyInjection\ContainerInjectionInterface, they are fine.

5. FILE: src/Form/SettingsForm.php

ConfigFormBase::__construct() needs to be called. Since its parameters changed in Drupal 10.2, the project cannot be compatible with all the Drupal 10 releases and Drupal 11; it needs to require at least Drupal 10.2.

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.
For this change, it is necessary to require at least Drupal 10.3, but that is not an issue, since Drupal 10.2.x is no longer supported.

🇮🇳India vishal.kadam Mumbai

FILE: bulk_paragraphs.module

Since the module is declared compatible with Drupal 10.2, removing the function implementing the hook is not possible. The function still needs to be defined, but it calls the method defined by the service class, as described in Support for object oriented hook implementations using autowired services (Backwards-compatible Hook implementation for Drupal versions from 10.1 to 11.0).

🇮🇳India vishal.kadam Mumbai

1. 1.1.1 is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

2. Fix the warnings/errors reported by PHP_CodeSniffer. (See attached basic_ads-phpcs-issue.txt )

NOTE: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

🇮🇳India vishal.kadam Mumbai

Remember to change status, when the project is ready to be reviewed. In this queue, projects are only reviewed when the status is Needs review.

🇮🇳India vishal.kadam Mumbai

I am changing priority as per Issue priorities .

🇮🇳India vishal.kadam Mumbai

I am changing priority as per Issue priorities .

🇮🇳India vishal.kadam Mumbai

I am changing priority as per Issue priorities .

🇮🇳India vishal.kadam Mumbai

Without content to review, this request can only be closed. Feel free to re-open it after posting content on drupal.org, committing code in a project, or creating a merge request for a project, for example.

🇮🇳India vishal.kadam Mumbai

Without content to review, this request can only be closed. Feel free to re-open it after posting content on drupal.org, committing code in a project, or creating a merge request for a project, for example.

🇮🇳India vishal.kadam Mumbai

Without content to review, this request can only be closed. Feel free to re-open it after posting content on drupal.org, committing code in a project, or creating a merge request for a project, for example.

🇮🇳India vishal.kadam Mumbai

Without content to review, this request can only be closed. Feel free to re-open it after posting content on drupal.org, committing code in a project, or creating a merge request for a project, for example.

🇮🇳India vishal.kadam Mumbai

Without content to review, this request can only be closed. Feel free to re-open it after posting content on drupal.org, committing code in a project, or creating a merge request for a project, for example.

🇮🇳India vishal.kadam Mumbai

The account has been already confirmed.

🇮🇳India vishal.kadam Mumbai

I am closing this issue since there have not been replies to my previous comment, where I asked for the complete stack trace information, after more than five weeks.

🇮🇳India vishal.kadam Mumbai

1. main is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

main will be a supported branch in future, but for the moment it is better not to use it. It is not wrong, but it is not completely supported on drupal.org.

2. FILE: bulk_paragraphs.module

For a new module that aims to be compatible with Drupal 10/11, it is expected it implements hooks as class methods as described in Support for object oriented hook implementations using autowired services .

/**
 * @file
 * Main module file for the Bulk Paragraphs module.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

🇮🇳India vishal.kadam Mumbai

I have confirmed the account based on module project contribution.

🇮🇳India vishal.kadam Mumbai

I have published 🐛 BigPipe placeholders with identical IDs are not all replaced Active and confirmed the account.

🇮🇳India vishal.kadam Mumbai

Rest seems fine to me.

Please wait for other reviewers and Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

Remember to change status, when the project is ready to be reviewed. In this queue, projects are only reviewed when the status is Needs review.

🇮🇳India vishal.kadam Mumbai

Rest seems fine to me.

Please wait for other reviewers and Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

1. main is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

main will be a supported branch in future, but for the moment it is better not to use it.

2. FILE: editor_advanced_table.info.yml

# Information added by Drupal.org packaging script on 2025-11-23
version: '1.0.0'
project: 'editor_advanced_table'
datestamp: 1763874920

Remove these lines from the info file, it will be added by drupal.org packaging automatically.

🇮🇳India vishal.kadam Mumbai

1. master is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

2. FILE: site_config.info.yml, modules/site_config_jsonapi/site_config_jsonapi.info.yml, modules/site_config_rest/site_config_rest.info.yml

package: Custom

This line is used by custom modules created for specific sites. It is not a package name used for projects hosted on drupal.org.

3. FILE: site_config.info.yml

core_version_requirement: ^9 || ^10 || ^11

FILE: modules/site_config_jsonapi/site_config_jsonapi.info.yml, modules/site_config_rest/site_config_rest.info.yml

core_version_requirement: ^9 || ^10

A new project should not declare itself compatible with a Drupal release that is no longer supported. No site should be using Drupal 8 nor Drupal 9, and people should not be encouraged to use those Drupal releases.

4. FILE: src/SiteConfigPluginBase.php, src/Service/SiteConfigService.php, modules/site_config_jsonapi/src/Resource/SiteConfigBaseResource.php

\Drupal::logger('site_config')->error($e->getMessage());

The $message parameter passed to the LoggerInterface methods must be a literal string that uses placeholders. It's not a translatable string returned from t()/$this->t(), a string concatenation, a value returned from a function/method, nor a variable containing an exception object.

5. Fix the warnings/errors reported by PHP_CodeSniffer.

Note: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml site_config/

FILE: site_config/README.md
--------------------------------------------------------------------------------
FOUND 4 ERRORS AND 7 WARNINGS AFFECTING 10 LINES
--------------------------------------------------------------------------------
  3 | WARNING | [ ] Line exceeds 80 characters; contains 274 characters
  8 | WARNING | [ ] Line exceeds 80 characters; contains 102 characters
 10 | WARNING | [ ] Line exceeds 80 characters; contains 91 characters
 24 | WARNING | [ ] Line exceeds 80 characters; contains 115 characters
 28 | WARNING | [ ] Line exceeds 80 characters; contains 151 characters
 32 | WARNING | [ ] Line exceeds 80 characters; contains 85 characters
 45 | ERROR   | [ ] Missing short description in doc comment
 75 | WARNING | [ ] Line exceeds 80 characters; contains 169 characters
 75 | ERROR   | [x] Perl-style comments are not allowed; use "// Comment" instead
 77 | ERROR   | [x] Perl-style comments are not allowed; use "// Comment" instead
 79 | ERROR   | [x] Perl-style comments are not allowed; use "// Comment" instead
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 3 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/src/Form/SettingsForm.php
--------------------------------------------------------------------------------
FOUND 7 ERRORS AFFECTING 7 LINES
--------------------------------------------------------------------------------
  18 | ERROR | [ ] Missing short description in doc comment
  23 | ERROR | [ ] Missing short description in doc comment
  28 | ERROR | [ ] Missing short description in doc comment
  29 | ERROR | [x] Do not append variable name "$blockManager" to the type declaration in a member variable comment
  34 | ERROR | [ ] Missing short description in doc comment
  47 | ERROR | [x] Missing function doc comment
 108 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found 3
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 3 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/src/SiteConfigPluginBase.php
--------------------------------------------------------------------------------
FOUND 20 ERRORS AND 5 WARNINGS AFFECTING 22 LINES
--------------------------------------------------------------------------------
  23 | ERROR   | [ ] Missing short description in doc comment
  28 | ERROR   | [ ] Missing short description in doc comment
  33 | ERROR   | [ ] Missing short description in doc comment
  38 | ERROR   | [ ] Missing short description in doc comment
  43 | ERROR   | [ ] Missing short description in doc comment
  48 | ERROR   | [ ] Missing short description in doc comment
  68 | ERROR   | [x] Missing function doc comment
  82 | ERROR   | [ ] Missing short description in doc comment
  83 | ERROR   | [ ] Description for the @return value is missing
  92 | ERROR   | [ ] Description for the @return value is missing
 128 | WARNING | [ ] Line exceeds 80 characters; contains 90 characters
 129 | WARNING | [ ] t() calls should be avoided in classes, use \Drupal\Core\StringTranslation\StringTranslationTrait and $this->t() instead
 137 | WARNING | [ ] t() calls should be avoided in classes, use \Drupal\Core\StringTranslation\StringTranslationTrait and $this->t() instead
 155 | WARNING | [ ] Line exceeds 80 characters; contains 94 characters
 156 | WARNING | [ ] t() calls should be avoided in classes, use \Drupal\Core\StringTranslation\StringTranslationTrait and $this->t() instead
 181 | ERROR   | [x] Case breaking statements must be followed by a single blank line
 198 | ERROR   | [x] Expected 1 space before "|"; 0 found
 198 | ERROR   | [x] Expected 1 space after "|"; 0 found
 210 | ERROR   | [x] Space after closing parenthesis of function call prohibited
 210 | ERROR   | [x] Space found before semicolon; expected ");" but found ") ;"
 218 | ERROR   | [x] Expected 1 space before "|"; 0 found
 218 | ERROR   | [x] Expected 1 space after "|"; 0 found
 228 | ERROR   | [x] Expected 1 blank line after function; 2 found
 240 | ERROR   | [x] Case breaking statements must be followed by a single blank line
 275 | ERROR   | [x] Visibility must be declared on method "getOptions"
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 11 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/src/SiteConfigInterface.php
--------------------------------------------------------------------------------
FOUND 10 ERRORS AFFECTING 8 LINES
--------------------------------------------------------------------------------
 24 | ERROR | [x] Expected 1 blank line after function; 2 found
 51 | ERROR | [ ] Missing parameter comment
 53 | ERROR | [ ] Description for the @return value is missing
 55 | ERROR | [x] Expected 1 blank line after function; 2 found
 61 | ERROR | [ ] Missing parameter comment
 61 | ERROR | [ ] Missing parameter type
 63 | ERROR | [ ] Description for the @return value is missing
 65 | ERROR | [x] Visibility must be declared on method "getOptions"
 65 | ERROR | [x] Expected 1 blank line after function; 0 found
 66 | ERROR | [x] The closing brace for the interface must have an empty line before it
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/src/Service/SiteConfigService.php
--------------------------------------------------------------------------------
FOUND 21 ERRORS AND 4 WARNINGS AFFECTING 19 LINES
--------------------------------------------------------------------------------
   8 | ERROR   | [x] Missing class doc comment
  10 | ERROR   | [ ] Missing short description in doc comment
  15 | ERROR   | [ ] Missing short description in doc comment
  16 | ERROR   | [ ] Missing parameter comment
  25 | ERROR   | [ ] Description for the @return value is missing
  37 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
  47 | ERROR   | [ ] Missing parameter comment
  49 | ERROR   | [ ] Description for the @return value is missing
  62 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
  70 | ERROR   | [ ] Missing parameter comment
  70 | ERROR   | [ ] Missing parameter type
  71 | ERROR   | [ ] Missing parameter comment
  71 | ERROR   | [ ] Missing parameter type
  72 | ERROR   | [ ] Missing parameter comment
  72 | ERROR   | [ ] Missing parameter type
  74 | ERROR   | [ ] Description for the @return value is missing
  86 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
  94 | ERROR   | [ ] Missing parameter comment
  94 | ERROR   | [ ] Missing parameter type
  95 | ERROR   | [ ] Missing parameter comment
  95 | ERROR   | [ ] Missing parameter type
  96 | ERROR   | [ ] Missing parameter comment
  96 | ERROR   | [ ] Missing parameter type
  98 | ERROR   | [ ] Description for the @return value is missing
 110 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_rest/site_config_rest.install
--------------------------------------------------------------------------------
FOUND 5 ERRORS AND 1 WARNING AFFECTING 5 LINES
--------------------------------------------------------------------------------
 1 | ERROR   | [x] The PHP open tag must be followed by exactly one blank line
 2 | ERROR   | [x] You must use "/**" style comments for a file comment
 3 | ERROR   | [x] No space found before comment text; expected "// /**" but found "///**"
 6 | ERROR   | [x] No space found before comment text; expected "// function site_config_rest_uninstall() {" but found "//function site_config_rest_uninstall() {"
 8 | WARNING | [ ] There must be no blank line following an inline comment
 8 | ERROR   | [x] No space found before comment text; expected "// }" but found "//}"
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_rest/src/Plugin/rest/resource/SiteConfigItemResource.php
--------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
--------------------------------------------------------------------------------
 16 | ERROR | [x] Additional blank lines found at end of doc comment
 19 | ERROR | [x] Missing function doc comment
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_rest/src/Plugin/rest/resource/SiteConfigListResource.php
--------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
--------------------------------------------------------------------------------
 16 | ERROR | [x] Additional blank lines found at end of doc comment
 19 | ERROR | [x] Missing function doc comment
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_rest/src/Plugin/rest/resource/SiteConfigResourceBase.php
--------------------------------------------------------------------------------
FOUND 9 ERRORS AFFECTING 7 LINES
--------------------------------------------------------------------------------
 18 | ERROR | [x] Additional blank lines found at end of doc comment
 21 | ERROR | [ ] Missing short description in doc comment
 22 | ERROR | [x] Data types in @var tags need to be fully namespaced
 26 | ERROR | [ ] Parameter $siteConfigService is not described in comment
 80 | ERROR | [x] The abstract declaration must precede the visibility declaration
 80 | ERROR | [x] Missing function doc comment
 85 | ERROR | [ ] Missing parameter comment
 85 | ERROR | [ ] Missing parameter type
 87 | ERROR | [ ] Description for the @return value is missing
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_jsonapi/src/Resource/SiteConfigBaseResource.php
--------------------------------------------------------------------------------
FOUND 20 ERRORS AND 5 WARNINGS AFFECTING 23 LINES
--------------------------------------------------------------------------------
   5 | WARNING | [x] Unused use statement
  11 | WARNING | [x] Unused use statement
  12 | WARNING | [x] Unused use statement
  13 | WARNING | [x] Unused use statement
  30 | ERROR   | [ ] Missing short description in doc comment
  31 | ERROR   | [x] Data types in @var tags need to be fully namespaced
  35 | ERROR   | [ ] Missing short description in doc comment
  40 | ERROR   | [ ] Missing short description in doc comment
  45 | ERROR   | [ ] Parameter $entityTypeManager is not described in comment
  48 | ERROR   | [ ] Missing parameter comment
  49 | ERROR   | [ ] Missing parameter comment
  82 | ERROR   | [x] The abstract declaration must precede the visibility declaration
  95 | ERROR   | [ ] Missing parameter comment
  97 | ERROR   | [ ] Description for the @return value is missing
 109 | ERROR   | [x] Case breaking statements must be followed by a single blank line
 114 | ERROR   | [x] Case breaking statements must be followed by a single blank line
 124 | ERROR   | [x] Expected newline after closing brace
 124 | ERROR   | [x] Use "elseif" in place of "else if"
 139 | ERROR   | [x] Expected 1 space after FUNCTION keyword; 0 found
 146 | ERROR   | [ ] Parameter $entity is not described in comment
 149 | ERROR   | [ ] Missing parameter comment
 149 | ERROR   | [ ] Doc comment for parameter $values does not match actual variable name $entity
 151 | ERROR   | [ ] Description for the @return value is missing
 166 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
 173 | ERROR   | [x] Expected 1 newline at end of file; 2 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 12 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_jsonapi/src/Resource/SiteConfigItemResource.php
--------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
--------------------------------------------------------------------------------
 30 | ERROR | [x] Functions must not contain multiple empty lines in a row; found 2 empty lines
 67 | ERROR | [x] Expected 1 newline at end of file; 2 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_jsonapi/src/Resource/SiteConfigListResource.php
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 65 | ERROR | [x] Expected 1 newline at end of file; 2 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: site_config/modules/site_config_jsonapi/site_config_jsonapi.routing.yml
--------------------------------------------------------------------------------
FOUND 0 ERRORS AND 2 WARNINGS AFFECTING 2 LINES
--------------------------------------------------------------------------------
  6 | WARNING | Open page callback found, please add a comment before the line why there is no access restriction
 12 | WARNING | Open page callback found, please add a comment before the line why there is no access restriction
--------------------------------------------------------------------------------
🇮🇳India vishal.kadam Mumbai

FILE: config_guardian.module

Since the module is declared compatible with Drupal 10.2, removing the function implementing the hook is not possible. The function still needs to be defined, but it calls the method defined by the service class, as described in Support for object oriented hook implementations using autowired services (Backwards-compatible Hook implementation for Drupal versions from 10.1 to 11.0).

🇮🇳India vishal.kadam Mumbai

I have published 🐛 LogicException in Speech-To-Text Generation Explorer Active and confirmed the account.

🇮🇳India vishal.kadam Mumbai

Rest looks good to me.

Please wait for a Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

Remember to change status, when the project is ready to be reviewed. In this queue, projects are only reviewed when the status is Needs review.

🇮🇳India vishal.kadam Mumbai

1 file change is pending

FILE: src/Plugin/EntitySplitterBase.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The entity field manager.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected EntityFieldManagerInterface $entityFieldManager;

  /**
   * Generic processor that abstracts common migration steps.
   *
   * @var \Drupal\entity_splitter\Processing\EntitySplitterProcessor
   */
  protected EntitySplitterProcessor $processor;

  /**
   * The entity migration processor.
   *
   * @var \Drupal\entity_splitter\Processing\EntitySplitterProcessor
   */
  protected EntitySplitterProcessor $entitySplitterProcessor;

  /**
   * The logger.
   *
   * @var \Drupal\Core\Logger\LoggerChannelInterface
   */
  protected LoggerChannelInterface $logger;

  /**
   * Construct an entity migration base.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
   *   The entity field manager.
   * @param \Drupal\entity_splitter\Processing\EntitySplitterProcessor $entity_splitter_processor
   *   The entity migration processor.
   * @param \Drupal\Core\Logger\LoggerChannelInterface $logger
   *   The logger channel.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, EntitySplitterProcessor $entity_splitter_processor, LoggerChannelInterface $logger) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->entityFieldManager = $entity_field_manager;
    $this->entitySplitterProcessor = $entity_splitter_processor;
    $this->logger = $logger;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

🇮🇳India vishal.kadam Mumbai

Rest looks good to me.

Please wait for a Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

Rest looks good to me.

Please wait for a Project Moderator to take a look and if everything goes fine, you will get the role.

🇮🇳India vishal.kadam Mumbai

1. FILE: README.md

The README file is missing the required sections - Project name, Requirements, Installation, and Configuration.

2. FILE: README.txt

Remove README.txt since README.md is present.

3. FILE: event_to_calendar.info.yml

package: Custom

This line is used by custom modules created for specific sites. It is not a package name used for projects hosted on drupal.org.

4. FILE: event_to_calendar.module

For a new module that aims to be compatible with Drupal 10 and Drupal 11, I would rather implement hooks as class methods as described in Support for object oriented hook implementations using autowired services .
It would require increasing the minimum Drupal 10 version supported, but Drupal 10.1 is no longer supported.

/**
 * @file
 * Contains event_to_calendar.module.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

5. FILE: css/styles.css

#event-to-calendar-modal .modal-header button.close{
    -webkit-appearance: none;
    border: none;
    background: none;
    margin: 0;
    padding: 0;
    border-radius: 0px;
    border-bottom: 1px solid #e5e5e5;
    border-left: 1px solid #e5e5e5;
    height: 2.625rem;
    position: absolute;
    right: 0;
    top: 0;
    transition: .25s;
    width: 2.625rem;
}

Code needs to be correctly indented. Drupal uses two spaces for indentation, not four spaces or tabs.

6. FILE: templates/event-to-calendar.html.twig

Twig code needs to be correctly indented. Drupal uses two spaces for indentation, not four spaces or tabs.

<button type="button" id="event-to-calendar-btn" class="btn btn-primary" data-toggle="modal" data-target="#event-to-calendar-modal">
	Add to calendar
</button>
					<legend class="calendar-subscribe-label">Select the calendar service that you would like to link:</legend>/code>

<code>									<span class="calendar-service-text">Google</span>

<span class="calendar-service-text">Exchange</span>

<span class="calendar-service-text">Apple</span>

<span class="calendar-service-text">Yahoo</span>

<span class="calendar-service-text">Outlook</span>

<span class="calendar-service-text">Android</span>

<span class="calendar-service-text">RSS</span>

<span class="calendar-service-text-inline">Excel</span>

<span class="calendar-service-text-inline">Other</span>

Strings shown in the user interface must be translatable. That holds true also for strings used in template files.

{# @todo: Add Event to Calendar modal make it through js file and make it work. #}
<script>
	document.addEventListener('DOMContentLoaded', function () {
document.querySelector('#event-to-calendar-btn').addEventListener('click', function () {
document.querySelector('#event-to-calendar-modal').style.display = 'block';
});

document.querySelectorAll('#event-to-calendar-modal .close').forEach(function (closeBtn) {
closeBtn.addEventListener('click', function () {
document.querySelector('#event-to-calendar-modal').style.display = 'none';
});
});
});
</script>


{# @todo: Add Event to Calendar modal make it through css file and make it work. #}

<style>
	/* Modal container */
	.calendar-subscribe-modal {
		background-color: #ffffff;
		padding: 20px;
		box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); /* Soft shadow */
	}

	/* Modal header */
	.calendar-subscribe-header {
		position: relative;
		color: #333;
		font-size: 1.625rem;
		font-weight: 700;
		margin: 0;
	}

	.calendar-grid {
		display: grid;
		grid-template-columns: repeat(4, 1fr); /* 4 services per row */
		justify-items: center;
		text-align: center;
	}

	.calendar-subscribe-service {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		border: 1px solid #e5e5e5;
		min-width: -webkit-fill-available;
		padding: 15px;
	}

	.calendar-subscribe-service:hover {
		background-color: #f2f2f2;
	}

	.calendar-service-link {
		text-decoration: none;
		color: #000; /* You can adjust the color */
		display: flex;
		flex-direction: column;
		align-items: center;
		font-weight: normal;
		font-size: 16px;
	}

	.calendar-service-image {
		margin-bottom: 10px;
	}

	.calendar-service-text {
		font-size: 18px;
	}

	.calendar-subscribe-label {
		font-size: 16px;
	}

	#event-to-calendar-modal .modal-header button.close {
		-webkit-appearance: none;
		border: none;
		background: none;
		margin: 0;
		padding: 0;
		border-radius: 0;
		border-bottom: 1px solid #e5e5e5;
		border-left: 1px solid #e5e5e5;
		height: 2.625rem;
		position: absolute;
		right: 0;
		top: 0;
		transition: 0.25s;
		width: 2.625rem;
	}


	.calendar-service-link {
		text-decoration: none;
		display: flex;
		align-items: center;
	}

	.calendar-subscribe-service-group {
		width: 100%;
	}

	.calendar-service-image-inline {
		margin-right: 10px;
	}

	.calendar-service-text-inline {
		font-size: 18px;
		display: inline-block;
	}
  @media (max-width: 767px) {
    .calendar-subscribe-header{
      font-size: 1.25rem !important;
    }
    .calendar-grid{
      grid-template-columns: repeat(2, 1fr);
    }
      #event-to-calendar-modal .top-sm-auto
    {
      top: auto !important;
    }
    #event-to-calendar-modal .start-sm-auto{
      left: auto !important;
    }
    #event-to-calendar-modal .translate-sm-none{
      transform: none !important;
    }
  }

  @media (max-width: 992px) {
    .calendar-grid{
      grid-template-columns: repeat(3, 1fr);
    }
  }

</style>

Move all scripts (JavaScript) and styles (CSS) into a library and attach them. See the process here .

6. FILE: src/Controller/EventToCalendarController.php

  /**
   * The configuration factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) {
    $this->configFactory = $config_factory;
    $this->entityTypeManager = $entity_type_manager;
  }

The parent class already has properties and methods for the entity type manager, and the configuration object. There is no need to redefine properties for the same purpose; instead, the parent class methods should be used.

7. FILE: src/Plugin/Block/AddToCalendarBlock.php

* @Block(

Projects that are compatible with Drupal 10 or higher versions should use attributes instead of annotations. This means requiring at least Drupal 10.3, but this is not an issue, considering that the minimum supported Drupal version is now Drupal 10.4.9.

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The configuration factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * Constructs a new AddToCalendarBlock.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The configuration factory.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->configFactory = $config_factory;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

8. Fix the warnings/errors reported by PHP_CodeSniffer.

Note: I would suggest enabling GitLab CI for the project, use the default phpcs.xml.dist file that comes from the GitLab Templates project, and fix what it reports for PHP_CodeSniffer errors/warnings. Chances are that the reported errors/warnings will be different, but it is what GitLab CI reports that should be fixed.

phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml event_to_calendar/

FILE: event_to_calendar/README.md
----------------------------------------------------------------------
FOUND 0 ERRORS AND 12 WARNINGS AFFECTING 12 LINES
----------------------------------------------------------------------
  7 | WARNING | Line exceeds 80 characters; contains 328 characters
 10 | WARNING | Line exceeds 80 characters; contains 89 characters
 11 | WARNING | Line exceeds 80 characters; contains 89 characters
 12 | WARNING | Line exceeds 80 characters; contains 122 characters
 13 | WARNING | Line exceeds 80 characters; contains 90 characters
 14 | WARNING | Line exceeds 80 characters; contains 92 characters
 15 | WARNING | Line exceeds 80 characters; contains 88 characters
 16 | WARNING | Line exceeds 80 characters; contains 84 characters
 21 | WARNING | Line exceeds 80 characters; contains 93 characters
 22 | WARNING | Line exceeds 80 characters; contains 88 characters
 25 | WARNING | Line exceeds 80 characters; contains 183 characters
 33 | WARNING | Line exceeds 80 characters; contains 112 characters
----------------------------------------------------------------------

FILE: event_to_calendar/src/Plugin/Block/AddToCalendarBlock.php
--------------------------------------------------------------------------------
FOUND 0 ERRORS AND 4 WARNINGS AFFECTING 4 LINES
--------------------------------------------------------------------------------
 74 | WARNING | \Drupal calls should be avoided in classes, use dependency injection instead
 96 | WARNING | Unused variable $start_date.
 97 | WARNING | Unused variable $end_date.
 98 | WARNING | Unused variable $location.
--------------------------------------------------------------------------------

FILE: event_to_calendar/src/Form/EventToCalendarConfigForm.php
--------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------
 34 | WARNING | \Drupal calls should be avoided in classes, use dependency injection instead
--------------------------------------------------------------------------------

FILE: event_to_calendar/src/Controller/EventToCalendarController.php
--------------------------------------------------------------------------------
FOUND 3 ERRORS AND 2 WARNINGS AFFECTING 5 LINES
--------------------------------------------------------------------------------
 140 | WARNING | \Drupal calls should be avoided in classes, use dependency injection instead
 164 | WARNING | \Drupal calls should be avoided in classes, use dependency injection instead
 257 | ERROR   | String concat is not required here; use a single string instead
 301 | ERROR   | String concat is not required here; use a single string instead
 345 | ERROR   | String concat is not required here; use a single string instead
--------------------------------------------------------------------------------
🇮🇳India vishal.kadam Mumbai

1. main is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

main will be a supported branch in future, but for the moment it is better not to use it. It is not wrong, but it is not completely supported on drupal.org.

2. FILE: README.md

The README file is missing the required sections - Requirements.

3. FILE: glidejs.module

/**
 * @file
 * This is the base module file.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

4. FILE: templates/views-view-style-glide.html.twig

Twig code needs to be correctly indented. Drupal uses two spaces for indentation, not four spaces or tabs.

5. FILE: src/Plugin/views/style/GlideStyle.php

* @ViewsStyle(

Projects that are compatible with Drupal 10 or higher versions should use attributes instead of annotations. This means requiring at least Drupal 10.3, but this is not an issue, considering that the minimum supported Drupal version is now Drupal 10.4.9.

🇮🇳India vishal.kadam Mumbai

1. FILE: composer.json

  "require": {
    "drupal/core": "^10.2 || ^11"

As a side note, it is not necessary to add the Drupal core requirements in the /composer.json/ file: The Drupal.org Composer Façade will add them.

2. FILE: config_guardian.module

For a new module that aims to be compatible with Drupal 10 and Drupal 11, I would rather implement hooks as class methods as described in Support for object oriented hook implementations using autowired services .

/**
 * @file
 * Primary module hooks for Config Guardian module.
 */

Drupal does not have primary and secondary hooks. Instead of that, it is preferable to use the usual description: “Hook implementations for the [module name] module”, where [module name] is the name of the module given in its .info.yml file.

3. FILE: src/Commands/ConfigGuardianCommands.php

  /**
   * The snapshot manager service.
   *
   * @var \Drupal\config_guardian\Service\SnapshotManagerService
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The config analyzer service.
   *
   * @var \Drupal\config_guardian\Service\ConfigAnalyzerService
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * The rollback engine service.
   *
   * @var \Drupal\config_guardian\Service\RollbackEngineService
   */
  protected RollbackEngineService $rollbackEngine;

  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ConfigAnalyzerService $config_analyzer,
    RollbackEngineService $rollback_engine,
  ) {
    parent::__construct();
    $this->snapshotManager = $snapshot_manager;
    $this->configAnalyzer = $config_analyzer;
    $this->rollbackEngine = $rollback_engine;
  }

FILE: src/Controller/ActivityController.php

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * Constructs an ActivityController object.
   */
  public function __construct(ActivityLoggerService $activity_logger) {
    $this->activityLogger = $activity_logger;
  }

FILE: src/Controller/AjaxController.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The config analyzer.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * Constructs an AjaxController object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ConfigAnalyzerService $config_analyzer,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->configAnalyzer = $config_analyzer;
  }

FILE: src/Controller/AnalysisController.php

  /**
   * The config analyzer.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * Constructs an AnalysisController object.
   */
  public function __construct(ConfigAnalyzerService $config_analyzer) {
    $this->configAnalyzer = $config_analyzer;
  }

FILE: src/Controller/ConfigSyncController.php

  /**
   * The config sync service.
   */
  protected ConfigSyncService $configSync;

  /**
   * Constructs a ConfigSyncController object.
   */
  public function __construct(ConfigSyncService $config_sync) {
    $this->configSync = $config_sync;
  }

FILE: src/Controller/DashboardController.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The config analyzer.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * Constructs a DashboardController object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ConfigAnalyzerService $config_analyzer,
    ActivityLoggerService $activity_logger,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->configAnalyzer = $config_analyzer;
    $this->activityLogger = $activity_logger;
  }

FILE: src/Controller/DependencyGraphController.php

  /**
   * The config analyzer.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * Constructs a DependencyGraphController object.
   */
  public function __construct(
    ConfigAnalyzerService $config_analyzer,
  ) {
    $this->configAnalyzer = $config_analyzer;
  }

FILE: src/Controller/SnapshotController.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * Constructs a SnapshotController object.
   */
  public function __construct(SnapshotManagerService $snapshot_manager) {
    $this->snapshotManager = $snapshot_manager;
  }

FILE: src/EventSubscriber/ConfigEventSubscriber.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * The settings service.
   */
  protected SettingsService $settings;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * Constructs a ConfigEventSubscriber object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ActivityLoggerService $activity_logger,
    SettingsService $settings,
    ConfigFactoryInterface $config_factory,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->activityLogger = $activity_logger;
    $this->settings = $settings;
    $this->configFactory = $config_factory;
  }

FILE: src/Form/ConfigExportForm.php

  /**
   * The config sync service.
   */
  protected ConfigSyncService $configSync;

  /**
   * The snapshot manager service.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The activity logger service.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * Constructs a ConfigExportForm object.
   */
  public function __construct(
    ConfigSyncService $config_sync,
    SnapshotManagerService $snapshot_manager,
    ActivityLoggerService $activity_logger,
  ) {
    $this->configSync = $config_sync;
    $this->snapshotManager = $snapshot_manager;
    $this->activityLogger = $activity_logger;
  }

FILE: src/Form/ConfigImportForm.php

  /**
   * The config sync service.
   */
  protected ConfigSyncService $configSync;

  /**
   * Constructs a ConfigImportForm object.
   */
  public function __construct(ConfigSyncService $config_sync) {
    $this->configSync = $config_sync;
  }

FILE: src/Form/RollbackForm.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The rollback engine.
   */
  protected RollbackEngineService $rollbackEngine;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * The snapshot data.
   */
  protected ?array $snapshot = NULL;

  /**
   * Constructs a RollbackForm object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    RollbackEngineService $rollback_engine,
    ActivityLoggerService $activity_logger,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->rollbackEngine = $rollback_engine;
    $this->activityLogger = $activity_logger;
  }

FILE: src/Form/SnapshotCreateForm.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * Constructs a SnapshotCreateForm object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ActivityLoggerService $activity_logger,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->activityLogger = $activity_logger;
  }

FILE: src/Form/SnapshotDeleteForm.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * Constructs a SnapshotDeleteForm object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ActivityLoggerService $activity_logger,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->activityLogger = $activity_logger;
  }

FILE: src/Form/SnapshotImportForm.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The activity logger.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * The rollback engine.
   */
  protected RollbackEngineService $rollbackEngine;

  /**
   * Constructs a SnapshotImportForm object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ActivityLoggerService $activity_logger,
    RollbackEngineService $rollback_engine,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->activityLogger = $activity_logger;
    $this->rollbackEngine = $rollback_engine;
  }

FILE: src/Service/ActivityLoggerService.php

  /**
   * The entity type manager.
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The current user.
   */
  protected AccountProxyInterface $currentUser;

  /**
   * The request stack.
   */
  protected RequestStack $requestStack;

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The time service.
   */
  protected TimeInterface $time;

  /**
   * The cache tags invalidator.
   */
  protected CacheTagsInvalidatorInterface $cacheTagsInvalidator;

  /**
   * Constructs an ActivityLoggerService object.
   */
  public function __construct(
    EntityTypeManagerInterface $entity_type_manager,
    AccountProxyInterface $current_user,
    RequestStack $request_stack,
    Connection $database,
    TimeInterface $time,
    CacheTagsInvalidatorInterface $cache_tags_invalidator,
  ) {
    $this->entityTypeManager = $entity_type_manager;
    $this->currentUser = $current_user;
    $this->requestStack = $request_stack;
    $this->database = $database;
    $this->time = $time;
    $this->cacheTagsInvalidator = $cache_tags_invalidator;
  }

FILE: src/Service/ConfigAnalyzerService.php

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The active config storage.
   */
  protected StorageInterface $activeStorage;

  /**
   * The sync config storage.
   */
  protected StorageInterface $syncStorage;

  /**
   * The module handler.
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The config manager.
   */
  protected ConfigManagerInterface $configManager;

  /**
   * Constructs a ConfigAnalyzerService object.
   */
  public function __construct(
    ConfigFactoryInterface $config_factory,
    StorageInterface $active_storage,
    StorageInterface $sync_storage,
    ModuleHandlerInterface $module_handler,
    ConfigManagerInterface $config_manager,
  ) {
    $this->configFactory = $config_factory;
    $this->activeStorage = $active_storage;
    $this->syncStorage = $sync_storage;
    $this->moduleHandler = $module_handler;
    $this->configManager = $config_manager;
  }

FILE: src/Service/ConfigSyncService.php

  /**
   * The active config storage.
   */
  protected StorageInterface $activeStorage;

  /**
   * The sync config storage.
   */
  protected StorageInterface $syncStorage;

  /**
   * The config manager.
   */
  protected ConfigManagerInterface $configManager;

  /**
   * The typed config manager.
   */
  protected TypedConfigManagerInterface $typedConfigManager;

  /**
   * The lock backend.
   */
  protected LockBackendInterface $lock;

  /**
   * The event dispatcher.
   */
  protected EventDispatcherInterface $eventDispatcher;

  /**
   * The module handler.
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The module installer.
   */
  protected ModuleInstallerInterface $moduleInstaller;

  /**
   * The theme handler.
   */
  protected ThemeHandlerInterface $themeHandler;

  /**
   * The module extension list.
   */
  protected ModuleExtensionList $moduleExtensionList;

  /**
   * The theme extension list.
   */
  protected ThemeExtensionList $themeExtensionList;

  /**
   * The config analyzer service.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * The activity logger service.
   */
  protected ActivityLoggerService $activityLogger;

  /**
   * The snapshot manager service.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * Constructs a ConfigSyncService object.
   */
  public function __construct(
    StorageInterface $active_storage,
    StorageInterface $sync_storage,
    ConfigManagerInterface $config_manager,
    TypedConfigManagerInterface $typed_config_manager,
    LockBackendInterface $lock,
    EventDispatcherInterface $event_dispatcher,
    ModuleHandlerInterface $module_handler,
    ModuleInstallerInterface $module_installer,
    ThemeHandlerInterface $theme_handler,
    ModuleExtensionList $module_extension_list,
    ThemeExtensionList $theme_extension_list,
    ConfigAnalyzerService $config_analyzer,
    ActivityLoggerService $activity_logger,
    SnapshotManagerService $snapshot_manager,
  ) {
    $this->activeStorage = $active_storage;
    $this->syncStorage = $sync_storage;
    $this->configManager = $config_manager;
    $this->typedConfigManager = $typed_config_manager;
    $this->lock = $lock;
    $this->eventDispatcher = $event_dispatcher;
    $this->moduleHandler = $module_handler;
    $this->moduleInstaller = $module_installer;
    $this->themeHandler = $theme_handler;
    $this->moduleExtensionList = $module_extension_list;
    $this->themeExtensionList = $theme_extension_list;
    $this->configAnalyzer = $config_analyzer;
    $this->activityLogger = $activity_logger;
    $this->snapshotManager = $snapshot_manager;
  }

FILE: src/Service/RollbackEngineService.php

  /**
   * The snapshot manager.
   */
  protected SnapshotManagerService $snapshotManager;

  /**
   * The config analyzer.
   */
  protected ConfigAnalyzerService $configAnalyzer;

  /**
   * The settings service.
   */
  protected SettingsService $settings;

  /**
   * The config storage (active).
   */
  protected StorageInterface $configStorage;

  /**
   * The sync config storage.
   */
  protected StorageInterface $syncStorage;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The config manager.
   */
  protected ConfigManagerInterface $configManager;

  /**
   * The event dispatcher.
   */
  protected EventDispatcherInterface $eventDispatcher;

  /**
   * The lock backend.
   */
  protected LockBackendInterface $lock;

  /**
   * The typed config manager.
   */
  protected TypedConfigManagerInterface $typedConfigManager;

  /**
   * The module handler.
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The module installer.
   */
  protected ModuleInstallerInterface $moduleInstaller;

  /**
   * The theme handler.
   */
  protected ThemeHandlerInterface $themeHandler;

  /**
   * The string translation.
   */
  protected TranslationInterface $stringTranslation;

  /**
   * The logger.
   *
   * @var \Psr\Log\LoggerInterface
   */
  protected $logger;

  /**
   * Constructs a RollbackEngineService object.
   */
  public function __construct(
    SnapshotManagerService $snapshot_manager,
    ConfigAnalyzerService $config_analyzer,
    StorageInterface $config_storage,
    StorageInterface $sync_storage,
    ConfigFactoryInterface $config_factory,
    ConfigManagerInterface $config_manager,
    EventDispatcherInterface $event_dispatcher,
    LockBackendInterface $lock,
    TypedConfigManagerInterface $typed_config_manager,
    ModuleHandlerInterface $module_handler,
    ModuleInstallerInterface $module_installer,
    ThemeHandlerInterface $theme_handler,
    TranslationInterface $string_translation,
    LoggerChannelFactoryInterface $logger_factory,
    SettingsService $settings,
  ) {
    $this->snapshotManager = $snapshot_manager;
    $this->configAnalyzer = $config_analyzer;
    $this->configStorage = $config_storage;
    $this->syncStorage = $sync_storage;
    $this->configFactory = $config_factory;
    $this->configManager = $config_manager;
    $this->eventDispatcher = $event_dispatcher;
    $this->lock = $lock;
    $this->typedConfigManager = $typed_config_manager;
    $this->moduleHandler = $module_handler;
    $this->moduleInstaller = $module_installer;
    $this->themeHandler = $theme_handler;
    $this->stringTranslation = $string_translation;
    $this->logger = $logger_factory->get('config_guardian');
    $this->settings = $settings;
  }

FILE: src/Service/SettingsService.php

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * Constructs a SettingsService object.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The config factory.
   */
  public function __construct(ConfigFactoryInterface $config_factory) {
    $this->configFactory = $config_factory;
  }

FILE: src/Service/SnapshotManagerService.php

  /**
   * The entity type manager.
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The active config storage.
   */
  protected StorageInterface $configStorage;

  /**
   * The sync config storage.
   */
  protected StorageInterface $syncStorage;

  /**
   * The config factory.
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The event dispatcher.
   */
  protected EventDispatcherInterface $eventDispatcher;

  /**
   * The current user.
   */
  protected AccountProxyInterface $currentUser;

  /**
   * The logger.
   *
   * @var \Psr\Log\LoggerInterface
   */
  protected $logger;

  /**
   * The settings service.
   */
  protected SettingsService $settings;

  /**
   * The database connection.
   */
  protected Connection $database;

  /**
   * The UUID generator.
   */
  protected UuidInterface $uuid;

  /**
   * The time service.
   */
  protected TimeInterface $time;

  /**
   * The cache tags invalidator.
   */
  protected CacheTagsInvalidatorInterface $cacheTagsInvalidator;

  /**
   * Constructs a SnapshotManagerService object.
   */
  public function __construct(
    EntityTypeManagerInterface $entity_type_manager,
    StorageInterface $config_storage,
    StorageInterface $sync_storage,
    ConfigFactoryInterface $config_factory,
    EventDispatcherInterface $event_dispatcher,
    AccountProxyInterface $current_user,
    LoggerChannelFactoryInterface $logger_factory,
    SettingsService $settings,
    Connection $database,
    UuidInterface $uuid,
    TimeInterface $time,
    CacheTagsInvalidatorInterface $cache_tags_invalidator,
  ) {
    $this->entityTypeManager = $entity_type_manager;
    $this->configStorage = $config_storage;
    $this->syncStorage = $sync_storage;
    $this->configFactory = $config_factory;
    $this->eventDispatcher = $event_dispatcher;
    $this->currentUser = $current_user;
    $this->logger = $logger_factory->get('config_guardian');
    $this->settings = $settings;
    $this->database = $database;
    $this->uuid = $uuid;
    $this->time = $time;
    $this->cacheTagsInvalidator = $cache_tags_invalidator;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

4. FILE: src/Controller/ActivityController.php, src/Controller/DashboardController.php

Since that class does not use methods from the parent class, it does not need to use ControllerBase as parent class. Controllers do not need to have a parent class; as long as they implement \Drupal\Core\DependencyInjection\ContainerInjectionInterface, they are fine.

5. FILE: src/Form/SettingsForm.php

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.
For this change, it is necessary to require at least Drupal 10.3, but that is not an issue, since Drupal 10.2.x is no longer supported.

🇮🇳India vishal.kadam Mumbai

FILE: search_api_sqlite.permissions.yml

Remove empty file.

🇮🇳India vishal.kadam Mumbai

The typical path to confirm users usually involves reviewing content you created on this site. In this case, you just created this issue, so there is no content to review.

I am postponing this issue. After you posted some content on Drupal.org, you may want to add a comment to this issue to request a new review.

🇮🇳India vishal.kadam Mumbai

The 'confirmed' role is not required for helping out with translation.

To translate Drupal, locate the relevant language team(s) here;
https://localize.drupal.org/translate/languages

To translate the Drupal core, see. https://localize.drupal.org/translate/drupal_core

🇮🇳India vishal.kadam Mumbai

1. The project is missing a README.md file that follows the template suggested in README.md template .

2. FILE: src/EntitySplitterActions.php

  /**
   * The plugin manager.
   *
   * @var \Drupal\entity_splitter\EntitySplitterManager
   */
  private EntitySplitterManager $pluginManager;

  /**
   * The logger channel.
   *
   * @var \Drupal\Core\Logger\LoggerChannelInterface
   */
  private LoggerChannelInterface $logger;

  /**
   * The file system.
   *
   * @var \Drupal\Core\File\FileSystemInterface
   */
  private FileSystemInterface $fileSystem;

  /**
   * The YAML reader.
   *
   * @var \Drupal\entity_splitter\Mapping\YamlMappingReader
   */
  private YamlMappingReader $yamlReader;

  /**
   * The field group mapper.
   *
   * @var \Drupal\entity_splitter\Mapping\FieldGroupMapper
   */
  private FieldGroupMapper $fieldGroupMapper;

  /**
   * Constructs an entity splitter actions object.
   *
   * @param \Drupal\entity_splitter\EntitySplitterManager $plugin_manager
   *   The plugin manager.
   * @param \Drupal\Core\File\FileSystemInterface $file_system
   *   The file system.
   * @param \Drupal\entity_splitter\Mapping\YamlMappingReader $yaml_reader
   *   The yaml reader.
   * @param \Drupal\entity_splitter\Mapping\FieldGroupMapper $field_group_mapper
   *   The field group mapper.
   * @param \Drupal\Core\Logger\LoggerChannelInterface $logger
   *   The logger.
   */
  public function __construct(EntitySplitterManager $plugin_manager, FileSystemInterface $file_system, YamlMappingReader $yaml_reader, FieldGroupMapper $field_group_mapper, LoggerChannelInterface $logger) {
    $this->pluginManager = $plugin_manager;
    $this->fileSystem = $file_system;
    $this->yamlReader = $yaml_reader;
    $this->fieldGroupMapper = $field_group_mapper;
    $this->logger = $logger;
  }

FILE: src/Commands/EntitySplitterCommands.php

  /**
   * The entity migration runner.
   *
   * @var \Drupal\entity_splitter\EntitySplitterActions
   */
  protected EntitySplitterActions $actions;

  /**
   * Construct the entity migration commands.
   *
   * @param \Drupal\entity_splitter\EntitySplitterActions $actions
   *   The actions (run / migrate).
   */
  public function __construct(EntitySplitterActions $actions) {
    parent::__construct();
    $this->actions = $actions;
  }

FILE: src/Mapping/FieldGroupMapper.php

  /**
   * The module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * Constructs a field group mapper.
   *
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The config factory.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   */
  public function __construct(
    ModuleHandlerInterface $module_handler,
    ConfigFactoryInterface $config_factory,
    EntityTypeManagerInterface $entity_type_manager,
  ) {
    $this->moduleHandler = $module_handler;
    $this->configFactory = $config_factory;
    $this->entityTypeManager = $entity_type_manager;
  }

FILE: src/Plugin/EntitySplitterBase.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The entity field manager.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected EntityFieldManagerInterface $entityFieldManager;

  /**
   * Generic processor that abstracts common migration steps.
   *
   * @var \Drupal\entity_splitter\Processing\EntitySplitterProcessor
   */
  protected EntitySplitterProcessor $processor;

  /**
   * The entity migration processor.
   *
   * @var \Drupal\entity_splitter\Processing\EntitySplitterProcessor
   */
  protected EntitySplitterProcessor $entitySplitterProcessor;

  /**
   * The logger.
   *
   * @var \Drupal\Core\Logger\LoggerChannelInterface
   */
  protected LoggerChannelInterface $logger;

  /**
   * Construct an entity migration base.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
   *   The entity field manager.
   * @param \Drupal\entity_splitter\Processing\EntitySplitterProcessor $entity_splitter_processor
   *   The entity migration processor.
   * @param \Drupal\Core\Logger\LoggerChannelInterface $logger
   *   The logger channel.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, EntitySplitterProcessor $entity_splitter_processor, LoggerChannelInterface $logger) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->entityFieldManager = $entity_field_manager;
    $this->entitySplitterProcessor = $entity_splitter_processor;
    $this->logger = $logger;
  }

FILE: src/Plugin/QueueWorker/EntitySplitterDataMigrationQueue.php

  /**
   * The delay interval equal to 15 minutes.
   */
  const int DELAY_INTERVAL = 900;

  /**
   * The entity type manager service.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The entity splitter actions.
   *
   * @var \Drupal\entity_splitter\EntitySplitterActions
   */
  protected EntitySplitterActions $entitySplitterActions;

  /**
   * The entity splitter processor.
   *
   * @var \Drupal\entity_splitter\Processing\EntitySplitterProcessor
   */
  protected EntitySplitterProcessor $entitySplitterProcessor;

  /**
   * The logger interface.
   *
   * @var \Psr\Log\LoggerInterface
   */
  protected LoggerInterface $logger;

  /**
   * Constructs a new class instance.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin ID for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   Entity type manager service.
   * @param \Drupal\entity_splitter\EntitySplitterActions $entity_splitter_actions
   *   Entity splitter actions.
   * @param \Drupal\entity_splitter\Processing\EntitySplitterProcessor $entity_splitter_processor
   *   Entity splitter processor.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntitySplitterActions $entity_splitter_actions, EntitySplitterProcessor $entity_splitter_processor) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->entitySplitterActions = $entity_splitter_actions;
    $this->entitySplitterProcessor = $entity_splitter_processor;
    $this->logger = $this->getLogger('entity_splitter');
  }

FILE: src/Processing/EntitySplitterProcessor.php

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The entity field manager.
   *
   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
   */
  protected EntityFieldManagerInterface $entityFieldManager;

  /**
   * The module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * The queue.
   *
   * @var \Drupal\Core\Queue\QueueInterface
   */
  protected QueueInterface $queue;

  /**
   * The language manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected LanguageManagerInterface $languageManager;

  /**
   * The logger.
   *
   * @var \Drupal\Core\Logger\LoggerChannelInterface
   */
  protected LoggerChannelInterface $logger;

  /**
   * Construct a processor.
   */
  public function __construct(
    EntityTypeManagerInterface $entity_type_manager,
    EntityFieldManagerInterface $entity_field_manager,
    ModuleHandlerInterface $module_handler,
    QueueFactory $queue_factory,
    LanguageManagerInterface $language_manager,
    LoggerChannelInterface $logger,
  ) {
    $this->entityTypeManager = $entity_type_manager;
    $this->entityFieldManager = $entity_field_manager;
    $this->moduleHandler = $module_handler;
    $this->queue = $queue_factory->get('entity_splitter_field_data_migration');
    $this->languageManager = $language_manager;
    $this->logger = $logger;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

🇮🇳India vishal.kadam Mumbai

1. main is a wrong name for a branch and should be removed. Release branch names always end with the literal .x as described in Release branches .

main will be a supported branch in future, but for the moment it is better not to use it. It is not wrong, but it is not completely supported on drupal.org.

2. FILE: LICENSE

Projects hosted on drupal.org are licensed under GPLv2+, the same license used from Drupal core. If you are licensing a project under a different license, it cannot he hosted on drupal.org. More details are given in Drupal Git Contributor Agreement & Repository Usage Policy .

All code that is a derivative work of Drupal (typically PHP code, including but not limited to: core patches, modules, themes, etc) committed to Drupal.org's git repository is licensed as GPL version 2.0 and later (official short identifier: “GPL-2.0-or-later”). This means that the code is licensed under GPLv2, and there exists an option that allows downstream recipients to re-license the code to be under a later version of GPL.

For code licensed under GPLv3, see See I want to release my work under GPL version 3 or under GPL version 2-only. Can I do so and host it on Drupal.org?

No. You can release your work under any GPL version 2 or later compatible license. However, you may only check it into Drupal's Git repositories if you are releasing it under the same license as Drupal itself, that is GPL version 2 or later, allowing users to choose between the terms of the GPL version 2 or the terms in any new versions as updated by the FSF. If you are unable or unwilling to do so, do not check it into a Drupal Git repository.

3. FILE: README.md

The README file is missing the required sections - Requirements and Configuration.

4. FILE: README.txt

Remove README.txt since README.md is present.

5. FILE: basic_ads.module

/**
 * @file
 * Contains basic_ads.module.
 */

The usual description for a .module file is “Hook implementations for the [module name] module”, where [module name] is the module name given in the .info.yml file.

6. FILE: css/basic_ads.css

Remove emptyy file.

7. FILE: js/ad-tracking.js and templates/node--basic-ad.html.twig

Code needs to be correctly indented. Drupal uses two spaces for indentation, not four spaces or tabs.

8. FILE: src/Form/BasicAdsSettingsForm.php

ConfigFormBase::__construct() needs to be called. Since its parameters changed in Drupal 10.2, the project cannot be compatible with all the Drupal 10 releases and Drupal 11; it needs to require at least Drupal 10.2.

With Drupal 10 and Drupal 11, there is no longer need to use #default_value for each form element, when the parent class is ConfigFormBase: It is sufficient to use #config_target, as in the following code.

    $form['image_toolkit'] = [
      '#type' => 'radios',
      '#title' => $this->t('Select an image processing toolkit'),
      '#config_target' => 'system.image:toolkit',
      '#options' => [],
    ];

Using that code, it is no longer needed to save the configuration values in the form submission handler: The parent class will take care of that.
For this change, it is necessary to require at least Drupal 10.3, but that is not an issue, since Drupal 10.2.x is no longer supported.

🇮🇳India vishal.kadam Mumbai

FILE: file_access_via_webform.info.yml

dependencies:
  - drupal:webform

The dependencies follow the format <project name>:<module name>. What used for the Webform module is not correct.

🇮🇳India vishal.kadam Mumbai

1. FILE: camera_capture.info.yml

package: Custom

This line is used by custom modules created for specific sites. It is not a package name used for projects hosted on drupal.org.

2. Fix the warnings/errors reported by PHP_CodeSniffer.

Note: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml camera_capture/

FILE: camera_capture/camera_capture.routing.yml
-------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------
 7 | ERROR | [x] Expected 1 newline at end of file; 0 found
-------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
-------------------------------------------------------------------------------

FILE: camera_capture/camera_capture.info.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AND 1 WARNING AFFECTING 2 LINES
--------------------------------------------------------------------------------
 1 | WARNING | [ ] Remove "version" from the info file, it will be added by drupal.org packaging automatically
 6 | ERROR   | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: camera_capture/src/Form/CameraCaptureForm.php
--------------------------------------------------------------------------------
FOUND 9 ERRORS AND 4 WARNINGS AFFECTING 12 LINES
--------------------------------------------------------------------------------
   8 | WARNING | [ ] There must be no blank line following an inline comment
   8 | ERROR   | [x] Comments may not appear after statements
 148 | ERROR   | [ ] Doc comment short description must start with a capital letter
 149 | ERROR   | [ ] Doc comment short description must be on a single line, further text should be a separate paragraph
 174 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
 179 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
 182 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
 183 | ERROR   | [x] TRUE, FALSE and NULL must be uppercase; expected "FALSE" but found "false"
 189 | ERROR   | [x] TRUE, FALSE and NULL must be uppercase; expected "FALSE" but found "false"
 198 | ERROR   | [x] TRUE, FALSE and NULL must be uppercase; expected "TRUE" but found "true"
 211 | ERROR   | [x] TRUE, FALSE and NULL must be uppercase; expected "FALSE" but found "false"
 219 | ERROR   | [x] TRUE, FALSE and NULL must be uppercase; expected "TRUE" but found "true"
 233 | ERROR   | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------
🇮🇳India vishal.kadam Mumbai

I have confirmed the account based on module project contribution.

🇮🇳India vishal.kadam Mumbai

I have published 📌 Addok API URL migration Active and confirmed the account.

🇮🇳India vishal.kadam Mumbai

Remember to change status, when the project is ready to be reviewed. In this queue, projects are only reviewed when the status is Needs review.

🇮🇳India vishal.kadam Mumbai

Hello, and a warm welcome to the Drupal community!

I have published your comment on forum Unable to install new modules and confirmed the account.

Here is a list of resources that will assist you in making helpful contributions:

🇮🇳India vishal.kadam Mumbai

@wouters_f I have updated the module to implement using "AI (Artificial Intelligence)" module and added it in ecosystem.

🇮🇳India vishal.kadam Mumbai

1. FILE: README.md

The README file is missing the required section - Requirements.

2. FILE: secure_password_reset_log.module

/**
 * @file
 * Primary module hooks for secure_password_reset_log module.
 */

Drupal does not have primary and secondary hooks. Instead of that, it is preferable to use the usual description: “Hook implementations for the [module name] module”, where [module name] is the name of the module given in its .info.yml file.

3. FILE: src/Controller/LogController.php

  /**
   * The database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected Connection $database;

  /**
   * The flood control service.
   *
   * @var \Drupal\Core\Flood\FloodInterface
   */
  protected FloodInterface $flood;

  /**
   * The date formatter service.
   *
   * @var \Drupal\Core\Datetime\DateFormatterInterface
   */
  protected DateFormatterInterface $dateFormatter;

  /**
   * The page cache kill switch.
   *
   * @var \Drupal\Core\PageCache\ResponsePolicy\KillSwitch
   */
  protected KillSwitch $killSwitch;

  /**
   * Constructs a LogController object.
   *
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection.
   * @param \Drupal\Core\Flood\FloodInterface $flood
   *   The flood control service.
   * @param \Drupal\Core\Datetime\DateFormatterInterface $dateFormatter
   *   The date formatter service.
   * @param \Drupal\Core\PageCache\ResponsePolicy\KillSwitch $killSwitch
   *   The page cache kill switch.
   */
  public function __construct(Connection $database, FloodInterface $flood, DateFormatterInterface $dateFormatter, KillSwitch $killSwitch) {
    $this->database = $database;
    $this->flood = $flood;
    $this->dateFormatter = $dateFormatter;
    $this->killSwitch = $killSwitch;
  }

FILE: src/EventSubscriber/PasswordResetSubscriber.php

  /**
   * The current user service.
   *
   * @var \Drupal\Core\Session\AccountProxyInterface
   */
  protected AccountProxyInterface $currentUser;

  /**
   * The database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected Connection $database;

  /**
   * The flood control service.
   *
   * @var \Drupal\Core\Flood\FloodInterface
   */
  protected FloodInterface $flood;

  /**
   * The config factory service.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected ConfigFactoryInterface $configFactory;

  /**
   * Constructs a new PasswordResetSubscriber object.
   *
   * @param \Drupal\Core\Session\AccountProxyInterface $current_user
   *   The current user service.
   * @param \Drupal\Core\Database\Connection $database
   *   The database connection.
   * @param \Drupal\Core\Flood\FloodInterface $flood
   *   The flood control service.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The config factory service.
   * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
   *   The string translation service.
   */
  public function __construct(
    AccountProxyInterface $current_user,
    Connection $database,
    FloodInterface $flood,
    ConfigFactoryInterface $config_factory,
    TranslationInterface $string_translation,
  ) {
    $this->currentUser = $current_user;
    $this->database = $database;
    $this->flood = $flood;
    $this->configFactory = $config_factory;
    $this->setStringTranslation($string_translation);
  }

FILE: src/Form/ClearLogsForm.php

  /**
   * Database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected Connection $database;

  /**
   * Constructs the ClearLogsForm.
   */
  public function __construct(Connection $database) {
    $this->database = $database;
  }

FILE: src/Form/DeleteLogForm.php

  /**
   * Database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected Connection $database;

  /**
   * Constructs the DeleteLogForm.
   */
  public function __construct(Connection $database) {
    $this->database = $database;
  }

FILE: src/Plugin/views/field/DeleteLogLink.php

  /**
   * The current user account service.
   *
   * @var \Drupal\Core\Session\AccountInterface
   */
  protected $currentUser;

  /**
   * Constructs a new DeleteLogLink object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin ID for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin definition.
   * @param \Drupal\Core\Session\AccountInterface $current_user
   *   The current user account service.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->currentUser = $current_user;
  }

New modules, which are compatible with Drupal 10 and higher versions are expected to include type declarations in property definitions, and use constructor property promotion.

4. FILE: src/Plugin/views/field/DeleteLogLink.php

* @ViewsField("secure_password_reset_log_delete_link")

FILE: src/Plugin/views/field/UserStatus.php

* @ViewsField("secure_password_reset_log_user_status")

Projects that are compatible with Drupal 10 or higher versions should use attributes instead of annotations.

5. Fix the warnings/errors reported by PHP_CodeSniffer.

Note: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml secure_password_reset_log/

FILE: secure_password_reset_log/secure_password_reset_log.info.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 7 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/README.md
-------------------------------------------------------------------------
FOUND 1 ERROR AND 3 WARNINGS AFFECTING 4 LINES
-------------------------------------------------------------------------
   9 | WARNING | [ ] Line exceeds 80 characters; contains 266 characters
  11 | WARNING | [ ] Line exceeds 80 characters; contains 168 characters
  33 | WARNING | [ ] Line exceeds 80 characters; contains 113 characters
 157 | ERROR   | [x] Expected 1 newline at end of file; 0 found
-------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
-------------------------------------------------------------------------

FILE: secure_password_reset_log/config/install/secure_password_reset_log.settings.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 2 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/src/Form/ClearLogsForm.php
--------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------
 70 | WARNING | Possible useless method overriding detected
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/src/EventSubscriber/PasswordResetSubscriber.php
--------------------------------------------------------------------------------
FOUND 1 ERROR AND 2 WARNINGS AFFECTING 3 LINES
--------------------------------------------------------------------------------
 119 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
 179 | ERROR   | [x] Expected 1 space before "?"; 2 found
 182 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/secure_password_reset_log.module
--------------------------------------------------------------------------------
FOUND 2 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------
 14 | WARNING | [ ] Line exceeds 80 characters; contains 84 characters
 14 | ERROR   | [x] Comments may not appear after statements
 14 | ERROR   | [x] Inline comments must end in full-stops, exclamation marks, question marks, colons, or closing parentheses
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/secure_password_reset_log.routing.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 39 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: secure_password_reset_log/secure_password_reset_log.install
--------------------------------------------------------------------------------
FOUND 1 ERROR AND 1 WARNING AFFECTING 2 LINES
--------------------------------------------------------------------------------
 1 | ERROR   | [x] Missing file doc comment
 3 | WARNING | [x] Unused use statement
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------
🇮🇳India vishal.kadam Mumbai

1. The project is missing a README.md file that follows the template suggested in README.md template .

2. Fix the warnings/errors reported by PHP_CodeSniffer.

Note: I would suggest enabling GitLab CI for the project, follow the Drupal Association .gitlab-ci.yml template and fix the PHP_CodeSniffer errors/warnings it reports.

phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml entity_add_another/

FILE: entity_add_another/entity_add_another.permissions.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 7 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: entity_add_another/entity_add_another.module
--------------------------------------------------------------------------------
FOUND 40 ERRORS AND 3 WARNINGS AFFECTING 41 LINES
--------------------------------------------------------------------------------
  1 | ERROR   | [x] Missing file doc comment
  6 | WARNING | [x] Unused use statement
  7 | WARNING | [x] Unused use statement
  9 | ERROR   | [x] There must be one blank line after the last USE statement; 2 found;
 15 | ERROR   | [ ] All functions defined in a module file must be prefixed with the module's name, found "ekc_add_another_help" but expected
    |         |     "entity_add_another_ekc_add_another_help"
 15 | ERROR   | [x] Expected 1 blank line before function; 2 found
 16 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 17 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 6
 19 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 21 | ERROR   | [x] Whitespace found at end of line
 26 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 28 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 29 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 6
 30 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 32 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 33 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 34 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 6
 35 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 36 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 37 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 38 | ERROR   | [x] Whitespace found at end of line
 39 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
 40 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 41 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 42 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 43 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 45 | WARNING | [ ] Line exceeds 80 characters; contains 85 characters
 45 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 46 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 47 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 48 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 49 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 50 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 10
 51 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 53 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 54 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 55 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 56 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 57 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 58 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 59 | ERROR   | [x] Line indented incorrectly; expected 6 spaces, found 12
 60 | ERROR   | [x] Line indented incorrectly; expected 4 spaces, found 8
 61 | ERROR   | [x] Line indented incorrectly; expected 2 spaces, found 4
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 41 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: entity_add_another/config/schema/entity_add_another.schema.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 10 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: entity_add_another/src/Form/EntityAddAnotherSettingsForm.php
--------------------------------------------------------------------------------
FOUND 2 ERRORS AND 1 WARNING AFFECTING 3 LINES
--------------------------------------------------------------------------------
  41 | ERROR   | [x] Whitespace found at end of line
  55 | ERROR   | [x] Whitespace found at end of line
 102 | WARNING | [ ] \Drupal calls should be avoided in classes, use dependency injection instead
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

FILE: entity_add_another/entity_add_another.info.yml
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 6 | ERROR | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------
Production build 0.71.5 2024