Skip to content

Commit 4e9e00f

Browse files
authored
Merge pull request #3 from itk-dev/feature/drupal-10-compatibility
Feature/drupal 10 compatibility
2 parents 2ccbcea + 48dd092 commit 4e9e00f

File tree

10 files changed

+270
-18
lines changed

10 files changed

+270
-18
lines changed

.github/workflows/pr.yaml

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
on: pull_request
2+
name: PR Review
3+
jobs:
4+
changelog:
5+
runs-on: ubuntu-latest
6+
name: Changelog should be updated
7+
strategy:
8+
fail-fast: false
9+
steps:
10+
- name: Checkout
11+
uses: actions/checkout@v2
12+
with:
13+
fetch-depth: 2
14+
15+
- name: Git fetch
16+
run: git fetch
17+
18+
- name: Check that changelog has been updated.
19+
run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
20+
21+
test-composer-files:
22+
name: Validate composer
23+
runs-on: ubuntu-latest
24+
strategy:
25+
matrix:
26+
php-versions: [ '8.1' ]
27+
dependency-version: [ prefer-lowest, prefer-stable ]
28+
steps:
29+
- uses: actions/checkout@master
30+
- name: Setup PHP, with composer and extensions
31+
uses: shivammathur/setup-php@v2
32+
with:
33+
php-version: ${{ matrix.php-versions }}
34+
extensions: json
35+
coverage: none
36+
tools: composer:v2
37+
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
38+
- name: Get composer cache directory
39+
id: composer-cache
40+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
41+
- name: Cache dependencies
42+
uses: actions/cache@v2
43+
with:
44+
path: ${{ steps.composer-cache.outputs.dir }}
45+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
46+
restore-keys: ${{ runner.os }}-composer-
47+
- name: Validate composer files
48+
run: |
49+
composer validate --strict composer.json
50+
# Check that dependencies resolve.
51+
composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction
52+
53+
php-check-coding-standards:
54+
name: PHP - Check Coding Standards
55+
runs-on: ubuntu-latest
56+
strategy:
57+
matrix:
58+
php-versions: [ '8.1' ]
59+
dependency-version: [ prefer-lowest, prefer-stable ]
60+
steps:
61+
- uses: actions/checkout@master
62+
- name: Setup PHP, with composer and extensions
63+
uses: shivammathur/setup-php@v2
64+
with:
65+
php-version: ${{ matrix.php-versions }}
66+
extensions: json
67+
coverage: none
68+
tools: composer:v2
69+
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
70+
- name: Get composer cache directory
71+
id: composer-cache
72+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
73+
- name: Cache dependencies
74+
uses: actions/cache@v2
75+
with:
76+
path: ${{ steps.composer-cache.outputs.dir }}
77+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
78+
restore-keys: ${{ runner.os }}-composer-
79+
- name: Install Dependencies
80+
run: |
81+
composer install --no-interaction --no-progress
82+
- name: PHPCS
83+
run: |
84+
composer coding-standards-check/phpcs
85+
86+
php-code-analysis:
87+
name: PHP code analysis
88+
runs-on: ubuntu-latest
89+
strategy:
90+
matrix:
91+
php-versions: [ '8.1' ]
92+
steps:
93+
- uses: actions/checkout@master
94+
- name: Setup PHP, with composer and extensions
95+
uses: shivammathur/setup-php@v2
96+
with:
97+
php-version: ${{ matrix.php-versions }}
98+
extensions: json, gd
99+
coverage: none
100+
tools: composer:v2
101+
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
102+
- name: Get composer cache directory
103+
id: composer-cache
104+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
105+
- name: Cache dependencies
106+
uses: actions/cache@v2
107+
with:
108+
path: ${{ steps.composer-cache.outputs.dir }}
109+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
110+
restore-keys: ${{ runner.os }}-composer-
111+
- name: drupal-check
112+
run: |
113+
# We need a Drupal project to run drupal-check (cf. https://github.com/mglaman/drupal-check#usage)
114+
# Install Drupal
115+
composer --no-interaction create-project drupal/recommended-project:^10 drupal
116+
# Copy our module source code into the Drupal module folder.
117+
mkdir -p drupal/web/modules/contrib/os2forms_user_field_lookup
118+
cp -r os2forms_user_field_lookup.* composer.json src drupal/web/modules/contrib/os2forms_user_field_lookup
119+
120+
composer --working-dir=drupal --no-interaction config minimum-stability dev
121+
122+
# Allow all plugins
123+
composer --working-dir=drupal config --no-plugins allow-plugins true
124+
125+
# Add our module as a composer repository.
126+
composer --working-dir=drupal --no-interaction config --append repositories.itk-dev/os2forms_user_field_lookup path web/modules/contrib/os2forms_user_field_lookup
127+
# Restore Drupal composer repository.
128+
# composer --working-dir=drupal --no-interaction config --append repositories.drupal composer https://packages.drupal.org/8
129+
130+
# Make Drupal 10 compatible
131+
composer --working-dir=drupal --no-interaction require psr/http-message:^1.0
132+
composer --working-dir=drupal --no-interaction require 'mglaman/composer-drupal-lenient'
133+
composer --working-dir=drupal config --no-plugins --merge --json extra.drupal-lenient.allowed-list '["drupal/coc_forms_auto_export", "drupal/webform_node_element"]'
134+
135+
# Require our module.
136+
composer --working-dir=drupal --no-interaction require 'itk-dev/os2forms_user_field_lookup:*'
137+
138+
# Check code
139+
composer --working-dir=drupal --no-interaction require --dev drupal/core-dev
140+
cd drupal/web/modules/contrib/os2forms_user_field_lookup
141+
# Remove our non-dev dependencies to prevent duplicated Drupal installation
142+
# PHP Fatal error: Cannot redeclare drupal_get_filename() (previously declared in /home/runner/work/os2forms_user_field_lookup/os2forms_user_field_lookup/drupal/web/modules/contrib/os2forms_user_field_lookup/vendor/drupal/core/includes/bootstrap.inc:190) in /home/runner/work/os2forms_user_field_lookup/os2forms_user_field_lookup/drupal/web/core/includes/bootstrap.inc on line 190
143+
# Use sed to remove the "require" property in composer.json
144+
sed -i '/^\s*"require":/,/^\s*}/d' composer.json
145+
composer --no-interaction install
146+
composer code-analysis

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!-- markdownlint-disable MD024 -->
2+
# Changelog
3+
4+
All notable changes to this project will be documented in this file.
5+
6+
See [keep a changelog](https://keepachangelog.com/en/1.0.0/) for information
7+
about writing changes to this log.
8+
9+
## [Unreleased]
10+
11+
## [1.1.0] 2024-09-12
12+
13+
- Drupal 10 compatibility.
14+
- Added GitHub Actions.
15+
16+
## [1.0.0]
17+
18+
- Initial version
19+
20+
[Unreleased]: https://github.com/itk-dev/os2forms_user_field_lookup/compare/1.1.0...HEAD
21+
[1.1.0]: https://github.com/itk-dev/os2forms_user_field_lookup/compare/1.0.0...1.1.0
22+
[1.0.0]: https://github.com/itk-dev/os2forms_user_field_lookup/releases/tag/1.0.0

composer.json

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,60 @@
1111
],
1212
"minimum-stability": "dev",
1313
"prefer-stable": true,
14+
"repositories": [
15+
{
16+
"type": "composer",
17+
"url": "https://packages.drupal.org/8"
18+
}
19+
],
20+
"require": {
21+
"os2forms/os2forms": "^3.13"
22+
},
1423
"require-dev": {
24+
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.2",
1525
"drupal/coder": "^8.3",
16-
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1"
26+
"mglaman/drupal-check": "^1.4"
27+
},
28+
"config": {
29+
"sort-packages": true,
30+
"allow-plugins": {
31+
"dealerdirect/phpcodesniffer-composer-installer": true,
32+
"zaporylie/composer-drupal-optimizations": true,
33+
"cweagans/composer-patches": true,
34+
"simplesamlphp/composer-module-installer": true
35+
}
36+
},
37+
"extra": {
38+
"patches": {
39+
"drupal/webform_node_element": {
40+
"3290637 - Automated Drupal 10 compatibility fixes": "https://www.drupal.org/files/issues/2023-05-12/webform_node_element_d10-3290637-11.patch"
41+
}
42+
},
43+
"drupal-lenient": {
44+
"allowed-list": [
45+
"drupal/coc_forms_auto_export",
46+
"drupal/webform_node_element"
47+
]
48+
}
1749
},
1850
"scripts": {
19-
"coding-standards-check": "phpcs --standard=phpcs.xml.dist",
20-
"coding-standards-apply": "phpcbf --standard=phpcs.xml.dist"
51+
"code-analysis/drupal-check": [
52+
"vendor/bin/drupal-check --deprecations --analysis --exclude-dir=vendor *.* src"
53+
],
54+
"code-analysis": [
55+
"@code-analysis/drupal-check"
56+
],
57+
"coding-standards-check/phpcs": [
58+
"vendor/bin/phpcs --standard=phpcs.xml.dist"
59+
],
60+
"coding-standards-check": [
61+
"@coding-standards-check/phpcs"
62+
],
63+
"coding-standards-apply/phpcs": [
64+
"vendor/bin/phpcbf --standard=phpcs.xml.dist"
65+
],
66+
"coding-standards-apply": [
67+
"@coding-standards-apply/phpcs"
68+
]
2169
}
2270
}

os2forms_user_field_lookup.info.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@ name: OS2Forms User Field Lookup
22
type: module
33
description: Use user field data in webforms.
44
package: OS2Forms
5-
core: 8.x
6-
core_version_requirement: ^8 || ^9
5+
core_version_requirement: ^9 || ^10
6+
dependencies:
7+
- drupal:webform
8+
- os2forms:os2forms

os2forms_user_field_lookup.module

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,33 @@ use Drupal\os2forms_user_field_lookup\WebformElementHelper;
1212
* Implements hook_webform_element_default_properties_alter().
1313
*
1414
* @see WebformElementHelper::alterDefaultProperties()
15+
*
16+
* @phpstan-param array<string, mixed> $properties
17+
* @phpstan-param array<string, mixed> $definition
1518
*/
16-
function os2forms_user_field_lookup_webform_element_default_properties_alter(array &$properties, array &$definition) {
19+
function os2forms_user_field_lookup_webform_element_default_properties_alter(array &$properties, array &$definition): void {
1720
Drupal::service(WebformElementHelper::class)->alterDefaultProperties($properties, $definition);
1821
}
1922

2023
/**
2124
* Implements hook_webform_element_translatable_properties_alter().
2225
*
2326
* @see WebformElementHelper::alterTranslatableProperties()
27+
*
28+
* @phpstan-param array<string, mixed> $properties
29+
* @phpstan-param array<string, mixed> $definition
2430
*/
25-
function os2forms_user_field_lookup_webform_element_translatable_properties_alter(array &$properties, array &$definition) {
31+
function os2forms_user_field_lookup_webform_element_translatable_properties_alter(array &$properties, array &$definition): void {
2632
Drupal::service(WebformElementHelper::class)->alterTranslatableProperties($properties, $definition);
2733
}
2834

2935
/**
3036
* Implements hook_webform_element_configuration_form_alter().
3137
*
3238
* @see WebformElementHelper::alterConfigurationForm()
39+
*
40+
* @phpstan-param array<string, mixed> $form
3341
*/
34-
function os2forms_user_field_lookup_webform_element_configuration_form_alter(&$form, FormStateInterface $form_state) {
42+
function os2forms_user_field_lookup_webform_element_configuration_form_alter(&$form, FormStateInterface $form_state): void {
3543
Drupal::service(WebformElementHelper::class)->alterConfigurationForm($form, $form_state);
3644
}

src/Element/UserFieldElement.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ class UserFieldElement extends Textfield {
1313

1414
/**
1515
* {@inheritDoc}
16+
*
17+
* @phpstan-param array<string, mixed> $element
18+
* @phpstan-return array<string, mixed>
1619
*/
17-
public static function preRenderTextfield($element) {
20+
public static function preRenderTextfield($element): array {
1821
$element = parent::preRenderTextfield($element);
1922
static::setAttributes($element, ['os2forms-user-field-lookup']);
2023

src/Element/UserFieldElementCheckbox.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ class UserFieldElementCheckbox extends Checkbox {
1313

1414
/**
1515
* {@inheritDoc}
16+
*
17+
* @phpstan-param array<string, mixed> $element
18+
* @phpstan-return array<string, mixed>
1619
*/
17-
public static function preRenderCheckbox($element) {
20+
public static function preRenderCheckbox($element): array {
1821
$element = parent::preRenderCheckbox($element);
1922
// @see https://stackoverflow.com/a/6905050
2023
$element['#attributes']['onclick'] = 'return false';

src/Plugin/WebformElement/UserFieldElement.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
namespace Drupal\os2forms_user_field_lookup\Plugin\WebformElement;
44

55
use Drupal\Component\Utility\NestedArray;
6-
use Drupal\webform\Plugin\WebformElement\TextField;
76
use Drupal\Core\Form\FormStateInterface;
7+
use Drupal\webform\Plugin\WebformElement\TextField;
88

99
/**
1010
* User field element.
@@ -20,6 +20,8 @@ class UserFieldElement extends TextField {
2020

2121
/**
2222
* {@inheritdoc}
23+
*
24+
* @phpstan-return array<string, mixed>
2325
*/
2426
protected function defineDefaultProperties() {
2527
return [
@@ -29,8 +31,11 @@ protected function defineDefaultProperties() {
2931

3032
/**
3133
* {@inheritdoc}
34+
*
35+
* @phpstan-param array<string, mixed> $element
36+
* @phpstan-param array<string, mixed> $form
3237
*/
33-
public function alterForm(array &$element, array &$form, FormStateInterface $form_state) {
38+
public function alterForm(array &$element, array &$form, FormStateInterface $form_state): void {
3439
if ($fieldName = $element['#os2forms_user_field_lookup_field_name'] ?? NULL) {
3540
if ($this->currentUser->isAuthenticated()) {
3641
/** @var \Drupal\user\Entity\User $user */

src/Plugin/WebformElement/UserFieldElementCheckbox.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class UserFieldElementCheckbox extends Checkbox {
2020

2121
/**
2222
* {@inheritdoc}
23+
*
24+
* @phpstan-return array<string, mixed>
2325
*/
2426
protected function defineDefaultProperties() {
2527
return [
@@ -29,8 +31,11 @@ protected function defineDefaultProperties() {
2931

3032
/**
3133
* {@inheritdoc}
34+
*
35+
* @phpstan-param array<string, mixed> $element
36+
* @phpstan-param array<string, mixed> $form
3237
*/
33-
public function alterForm(array &$element, array &$form, FormStateInterface $form_state) {
38+
public function alterForm(array &$element, array &$form, FormStateInterface $form_state): void {
3439
if ($fieldName = $element['#os2forms_user_field_lookup_field_name'] ?? NULL) {
3540
if ($this->currentUser->isAuthenticated()) {
3641
/** @var \Drupal\user\Entity\User $user */

0 commit comments

Comments
 (0)