Skip to content

Commit 4b939f6

Browse files
committed
Merge upstream/master into comlink-deprecation branch
Resolve conflicts: - TeleHealthCalendarController: keep CalendarUtils import from master, drop bogus 'The' import - TelehealthGlobalConfig: keep OEGlobalsBag usage from PR over raw $GLOBALS access - PHPStan baselines: regenerated with composer phpstan-baseline
2 parents a92bcac + d718953 commit 4b939f6

File tree

2,869 files changed

+432621
-56063
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,869 files changed

+432621
-56063
lines changed

.codespell-ignore-words.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ grp
4141
inout
4242
inpt
4343
insid
44-
interpretter
4544
keypair
4645
marge
4746
mis
@@ -117,5 +116,4 @@ esy
117116
hightlight
118117
occurance
119118
seperator
120-
uncomplete
121119
vlaue

.composer-require-checker.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"symbol-whitelist": [
3+
"ADODB_mysqli_log",
34
"AmcItemizedActionData",
45
"Application\\Model\\ApplicationTable",
56
"BillingExport",
@@ -13,6 +14,7 @@
1314
"IS_WINDOWS",
1415
"Installer\\Controller\\InstallerController",
1516
"Installer\\Model\\InstModuleTable",
17+
"iamcal\\SQLParser",
1618
"Omnipay\\Common\\CreditCard",
1719
"Omnipay\\Omnipay",
1820
"OpenEMR\\Common\\Utils\\Error",
@@ -36,6 +38,7 @@
3638
"display_layout_tabs_data",
3739
"edi_generate_id",
3840
"edih_271_codes",
41+
"eob_process_era_callback_check",
3942
"era_callback_check",
4043
"fetchEvents",
4144
"fixDate",
@@ -52,7 +55,6 @@
5255
"getPatientFullNameAsString",
5356
"getRegistryEntryByDirectory",
5457
"getSmokeCodes",
55-
"getSqlLastError",
5658
"getUserSetting",
5759
"get_db",
5860
"get_patient_balance",

.github/actionlint.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
self-hosted-runner:
2+
# Labels of self-hosted runner in array of strings.
3+
labels: []
4+
5+
# Configuration variables in array of strings defined in your repository or
6+
# organization. `null` means disabling configuration variables check.
7+
# Empty array means no configuration variable is allowed.
8+
config-variables:
9+
10+
# Configuration for file paths. The keys are glob patterns to match to file
11+
# paths relative to the repository root. The values are the configurations for
12+
# the file paths. Note that the path separator is always '/'.
13+
# The following configurations are available.
14+
#
15+
# "ignore" is an array of regular expression patterns. Matched error messages
16+
# are ignored. This is similar to the "-ignore" command line option.
17+
paths:
18+
.github/workflows/database-version.yml:
19+
# SC2016 warns about $ and backticks in single quotes not expanding.
20+
# We intentionally use single quotes for literal markdown output.
21+
ignore:
22+
- SC2016
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Setup PHP and Composer
2+
description: Sets up PHP, configures Composer caching, and installs dependencies
3+
4+
inputs:
5+
php-version:
6+
description: PHP version to install
7+
required: true
8+
coverage:
9+
description: Coverage driver (none, xdebug, pcov)
10+
required: false
11+
default: none
12+
extensions:
13+
description: PHP extensions to install (comma-separated)
14+
required: false
15+
default: ''
16+
tools:
17+
description: Tools to install (comma-separated, e.g., cs2pr, phpcs)
18+
required: false
19+
default: ''
20+
skip-composer-install:
21+
description: Skip Composer cache and install steps
22+
required: false
23+
default: 'false'
24+
25+
runs:
26+
using: composite
27+
steps:
28+
- name: Setup PHP
29+
uses: shivammathur/setup-php@v2
30+
with:
31+
php-version: ${{ inputs.php-version }}
32+
coverage: ${{ inputs.coverage }}
33+
extensions: ${{ inputs.extensions }}
34+
tools: ${{ inputs.tools }}
35+
36+
- name: Get composer cache directory
37+
if: inputs.skip-composer-install != 'true'
38+
id: composer-cache
39+
shell: bash
40+
run: echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT"
41+
42+
- name: Cache Composer dependencies
43+
if: inputs.skip-composer-install != 'true'
44+
uses: actions/cache@v5
45+
with:
46+
path: ${{ steps.composer-cache.outputs.dir }}
47+
key: ${{ runner.os }}-composer-${{ inputs.php-version }}-${{ hashFiles('**/composer.lock') }}
48+
restore-keys: |
49+
${{ runner.os }}-composer-${{ inputs.php-version }}-
50+
${{ runner.os }}-composer-
51+
52+
- name: Install Composer dependencies
53+
if: inputs.skip-composer-install != 'true'
54+
shell: bash
55+
run: composer install --prefer-dist --no-progress
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"owner": "phpcs",
5+
"pattern": [
6+
{
7+
"regexp": "^(.+):(\\d+):(\\d+): (error|warning) - (.+)$",
8+
"file": 1,
9+
"line": 2,
10+
"column": 3,
11+
"severity": 4,
12+
"message": 5
13+
}
14+
]
15+
}
16+
]
17+
}

.github/workflows/api-docs.yml

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,51 +25,46 @@ jobs:
2525
php-version: ['8.2']
2626
name: API Docs Freshness Check
2727
steps:
28-
- name: "Checkout Code"
28+
- name: Checkout Code
2929
uses: actions/checkout@v6
3030
with:
3131
fetch-depth: 0
3232

33-
- name: "Setup PHP"
34-
uses: shivammathur/setup-php@v2
33+
- name: Setup PHP and Composer
34+
uses: ./.github/actions/setup-php-composer
3535
with:
3636
php-version: ${{ matrix.php-version }}
37-
coverage: none
3837

39-
- name: "Get composer cache directory"
40-
id: composer-cache
41-
run: echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT"
42-
43-
- name: "Composer Cache"
44-
uses: actions/cache@v5
45-
with:
46-
path: ${{ steps.composer-cache.outputs.dir }}
47-
key: ${{ runner.os }}-composer-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
48-
restore-keys: |
49-
${{ runner.os }}-composer-${{ matrix.php-version }}-
50-
${{ runner.os }}-composer-
51-
52-
- name: "Composer Install"
53-
run: composer install --prefer-dist --no-progress
54-
55-
- name: "Refresh API Documentation"
38+
- name: Refresh API Documentation
5639
run: php bin/console openemr:create-api-documentation --skip-globals
5740

5841
# If after docs regeneration there are any diff - that means docs are not in sync with new API code changes
59-
- name: "Check Docs Freshness"
42+
- name: Check Docs Freshness
6043
run: |
6144
if git diff --quiet; then
6245
echo "✅ The API documentation is in sync with the code"
6346
echo "# ✅ The API documentation is in sync with the code" >> "$GITHUB_STEP_SUMMARY"
6447
echo "\`openemr-api.yaml\` is in sync with your changes" >> "$GITHUB_STEP_SUMMARY"
6548
exit 0
6649
fi
67-
echo "⚠️ The API documentation is not in sync with the code — see the Job Summary for next steps."
50+
echo '⚠️ The API documentation is not in sync with the code — see the Job Summary for next steps.'
51+
# shellcheck disable=SC2016
6852
{
69-
echo "# ⚠️ The API documentation is not in sync with the code"
70-
echo "Looks like \`openemr-api.yaml\` is not in sync with your changes."
71-
echo "Please, run:"
72-
echo "\`php bin/console openemr:create-api-documentation --skip-globals\`"
73-
echo "and push updated \`openemr-api.yaml\` file into your PR"
53+
echo '# ⚠️ The API documentation is not in sync with the code'
54+
echo 'Looks like `openemr-api.yaml` is not in sync with your changes.'
55+
echo
56+
echo '## Option 1: Download the updated file'
57+
echo 'Download `openemr-api.yaml` from the **Artifacts** section of this workflow run and commit it to your PR.'
58+
echo
59+
echo '## Option 2: Regenerate locally'
60+
echo 'Run `php bin/console openemr:create-api-documentation --skip-globals` and push the updated file.'
7461
} >> "$GITHUB_STEP_SUMMARY"
7562
exit 1
63+
64+
- name: Upload updated API docs
65+
if: failure()
66+
uses: actions/upload-artifact@v7
67+
with:
68+
name: openemr-api-yaml
69+
path: swagger/openemr-api.yaml
70+
retention-days: 14

.github/workflows/codecov-notify.yml

Lines changed: 0 additions & 74 deletions
This file was deleted.

.github/workflows/composer-require-checker.yml

Lines changed: 3 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -33,102 +33,15 @@ concurrency:
3333
jobs:
3434
composer-require-checker:
3535
runs-on: ubuntu-24.04
36-
strategy:
37-
matrix:
38-
php-version:
39-
- '8.2'
40-
composer-require-checker-version:
41-
- 4.16.1
4236
steps:
4337
- name: Checkout Code
4438
uses: actions/checkout@v6
4539

4640
- name: Setup PHP
47-
uses: shivammathur/setup-php@v2
41+
uses: ./.github/actions/setup-php-composer
4842
with:
49-
php-version: ${{ matrix.php-version }}
43+
php-version: '8.2'
5044
extensions: bcmath, calendar, ctype, curl, dom, fileinfo, filter, gd, iconv, imagick, intl, json, ldap, libxml, mbstring, mysqli, openssl, pdo, pdo_mysql, phar, session, simplexml, soap, sockets, sodium, tokenizer, xml, xmlreader, xmlwriter, xsl, zip, zlib
51-
coverage: none
52-
53-
- name: Get composer cache directory
54-
id: composer-cache
55-
run: |
56-
{
57-
printf 'dir='
58-
composer config cache-files-dir
59-
} >> "$GITHUB_OUTPUT"
60-
61-
##
62-
# These are reused a bunch so it's neater to collect them here
63-
- name: Collect cache keys
64-
id: cache-keys
65-
run: |
66-
{
67-
echo 'vendor=${{ runner.os }}-vendor-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}'
68-
echo 'composer=${{ runner.os }}-composer-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}'
69-
} >> "$GITHUB_OUTPUT"
70-
71-
- name: Restore vendor artifacts
72-
id: vendor-cache-restore
73-
uses: actions/cache/restore@v5
74-
with:
75-
key: ${{ steps.cache-keys.outputs.vendor }}
76-
path: vendor/
77-
restore-keys: |
78-
${{ runner.os }}-vendor-${{ matrix.php-version }}-
79-
${{ runner.os }}-vendor-
80-
81-
- name: Check vendor artifacts cache
82-
id: vendor-cache-check
83-
run: |
84-
key='${{ steps.cache-keys.outputs.vendor }}'
85-
matched='${{ steps.vendor-cache-restore.outputs.cache-matched-key }}'
86-
if [[ $key = "$matched" ]]; then
87-
echo hit=true
88-
else
89-
echo hit=false
90-
fi >> "$GITHUB_OUTPUT"
91-
92-
- name: Restore composer downloads
93-
id: composer-cache-restore
94-
if: ${{ steps.vendor-cache-check.outputs.hit != 'true' }}
95-
uses: actions/cache/restore@v5
96-
with:
97-
key: ${{ steps.cache-keys.outputs.composer }}
98-
path: ${{ steps.composer-cache.outputs.dir }}
99-
restore-keys: |
100-
${{ runner.os }}-composer-${{ matrix.php-version }}-
101-
${{ runner.os }}-composer-
102-
103-
- name: Composer Install
104-
if: ${{ steps.vendor-cache-check.outputs.hit != 'true' }}
105-
run: composer install --prefer-dist --no-progress
106-
107-
- name: Save composer cache
108-
if: ${{ steps.vendor-cache-check.outputs.hit != 'true' }}
109-
uses: actions/cache/save@v5
110-
with:
111-
key: ${{ runner.os }}-composer-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
112-
path: ${{ steps.composer-cache.outputs.dir }}
113-
114-
- name: Save vendor artifacts
115-
if: ${{ steps.vendor-cache-check.outputs.hit != 'true' }}
116-
uses: actions/cache/save@v5
117-
with:
118-
key: ${{ runner.os }}-vendor-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
119-
path: vendor/
120-
121-
- name: Download Composer Require Checker
122-
run: |
123-
version=${{ matrix.composer-require-checker-version }}
124-
echo "Downloading composer-require-checker version: $version"
125-
curl -fsSLo composer-require-checker.phar "https://github.com/maglnet/ComposerRequireChecker/releases/download/${version}/composer-require-checker.phar"
12645

12746
- name: Run Composer Require Checker
128-
shell: bash
129-
run: |
130-
if [[ -f .composer-require-checker.json ]]; then
131-
php composer-require-checker.phar check --config-file=.composer-require-checker.json composer.json
132-
else
133-
php composer-require-checker.phar check composer.json
134-
fi
47+
run: composer require-checker

0 commit comments

Comments
 (0)