Skip to content

Commit 439e5d9

Browse files
committed
Merge remote-tracking branch 'origin/gsoc-workflow' into gsoc-workflow-dileep
2 parents 1c38d65 + 763db2d commit 439e5d9

File tree

356 files changed

+6200
-3016
lines changed

Some content is hidden

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

356 files changed

+6200
-3016
lines changed

.github/workflows/ci.yml

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
name: CI Joomla
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
9+
cancel-in-progress: true
10+
11+
jobs:
12+
composer:
13+
name: Install PHP dependencies
14+
runs-on: ubuntu-latest
15+
container: joomlaprojects/docker-images:php8.4
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: actions/cache@v4
19+
id: cache-php
20+
with:
21+
path: libraries/vendor
22+
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
23+
- name: Install PHP dependencies
24+
if: steps.cache-php.outputs.cache-hit != 'true'
25+
run: |
26+
git config --global --add safe.directory $GITHUB_WORKSPACE
27+
composer config --global home
28+
composer validate --no-check-all --strict
29+
composer install --no-progress --ignore-platform-reqs
30+
31+
npm:
32+
name: Install JS/CSS dependencies and build assets
33+
runs-on: ubuntu-latest
34+
container: joomlaprojects/docker-images:php8.4
35+
needs: [composer]
36+
steps:
37+
- uses: actions/setup-node@v4
38+
with:
39+
node-version: latest
40+
- uses: actions/checkout@v4
41+
- uses: actions/cache@v4
42+
id: cache-assets
43+
with:
44+
path: |
45+
node_modules
46+
media
47+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json', 'build/media_source/**', 'administrator/components/com_media/resources/**') }}
48+
- uses: actions/cache/restore@v4
49+
with:
50+
path: libraries/vendor
51+
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
52+
- name: Build assets
53+
if: steps.cache-assets.outputs.cache-hit != 'true'
54+
run: npm ci --unsafe-perm
55+
56+
code-style-php:
57+
name: Check PHP code style
58+
runs-on: ubuntu-latest
59+
container: joomlaprojects/docker-images:php8.4
60+
needs: [composer]
61+
strategy:
62+
matrix:
63+
command: ['php-cs-fixer fix -vvv --dry-run --diff', 'phpcs --extensions=php -p --standard=ruleset.xml .']
64+
steps:
65+
- uses: actions/checkout@v4
66+
- uses: actions/cache/restore@v4
67+
with:
68+
path: libraries/vendor
69+
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
70+
- name: Check PHP code style
71+
env:
72+
PHP_CS_FIXER_IGNORE_ENV: true
73+
run: ./libraries/vendor/bin/${{ matrix.command }}
74+
75+
code-style-js-css:
76+
name: Check Javascript & CSS code style
77+
runs-on: ubuntu-latest
78+
container: joomlaprojects/docker-images:php8.4
79+
needs: [composer, npm]
80+
strategy:
81+
matrix:
82+
check: ['lint:js', 'lint:testjs', 'lint:css']
83+
steps:
84+
- uses: actions/setup-node@v4
85+
with:
86+
node-version: latest
87+
- uses: actions/checkout@v4
88+
- uses: actions/cache/restore@v4
89+
with:
90+
path: |
91+
node_modules
92+
media
93+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json', 'build/media_source/**', 'administrator/components/com_media/resources/**') }}
94+
- name: Check code style
95+
run: npm run ${{ matrix.check }}
96+
97+
phpstan:
98+
name: Run PHPstan
99+
runs-on: ubuntu-latest
100+
container: joomlaprojects/docker-images:php8.4
101+
needs: [code-style-php]
102+
steps:
103+
- uses: actions/checkout@v4
104+
- uses: actions/cache/restore@v4
105+
with:
106+
path: libraries/vendor
107+
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
108+
- name: Run PHPstan
109+
run: |
110+
./libraries/vendor/bin/phpstan --error-format=github || :
111+
112+
tests-unit:
113+
name: Run Unit tests
114+
runs-on: ubuntu-latest
115+
container: joomlaprojects/docker-images:php${{ matrix.php_version }}
116+
needs: [code-style-php]
117+
strategy:
118+
matrix:
119+
php_version: ['8.1', '8.2', '8.3', '8.4']
120+
steps:
121+
- uses: actions/checkout@v4
122+
- uses: actions/cache/restore@v4
123+
with:
124+
path: libraries/vendor
125+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
126+
- name: Run Unit tests
127+
run: ./libraries/vendor/bin/phpunit --testsuite Unit
128+
129+
tests-integration:
130+
name: Run integration tests
131+
runs-on: ubuntu-latest
132+
container: joomlaprojects/docker-images:php${{ matrix.php_version }}
133+
needs: [code-style-php]
134+
strategy:
135+
matrix:
136+
php_version: ['8.1', '8.2', '8.3', '8.4']
137+
config: ['phpunit.xml.dist', 'phpunit-pgsql.xml.dist']
138+
steps:
139+
- uses: actions/checkout@v4
140+
- name: Start LDAP container
141+
uses: docker://docker
142+
with:
143+
args: docker run -d --name openldap --network ${{ job.container.network }} --network-alias openldap -e "LDAP_ADMIN_USERNAME=admin" -e "LDAP_ADMIN_PASSWORD=adminpassword" -e "LDAP_USERS=customuser" -e "LDAP_PASSWORDS=custompassword" -e "LDAP_ENABLE_TLS=yes" -e "LDAP_TLS_CERT_FILE=/certs/openldap.crt" -e "LDAP_TLS_KEY_FILE=/certs/openldap.key" -e "LDAP_TLS_CA_FILE=/certs/CA.crt" -e "BITNAMI_DEBUG=true" -e "LDAP_CONFIG_ADMIN_ENABLED=yes" -e "LDAP_CONFIG_ADMIN_USERNAME=admin" -e "LDAP_CONFIG_ADMIN_PASSWORD=configpassword" -v "${{ github.workspace }}/tests/certs/openldap.crt":"/certs/openldap.crt" -v "${{ github.workspace }}/tests/certs/openldap.key":"/certs/openldap.key" -v "${{ github.workspace }}/tests/certs/CA.crt":"/certs/CA.crt" bitnami/openldap:latest
144+
- uses: actions/cache/restore@v4
145+
with:
146+
path: libraries/vendor
147+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
148+
- name: Run Integration tests
149+
run: |
150+
sleep 3
151+
./libraries/vendor/bin/phpunit --testsuite Integration --configuration ${{ matrix.config }}
152+
- name: Stop LDAP container
153+
uses: docker://docker
154+
with:
155+
args: docker kill openldap
156+
services:
157+
mysql:
158+
image: mariadb
159+
env:
160+
MARIADB_USER: joomla_ut
161+
MARIADB_PASSWORD: joomla_ut
162+
MARIADB_ROOT_PASSWORD: joomla_ut
163+
MARIADB_DATABASE: test_joomla
164+
postgres:
165+
image: postgres:12-alpine
166+
env:
167+
POSTGRES_USER: root
168+
POSTGRES_PASSWORD: joomla_ut
169+
POSTGRES_DB: test_joomla
170+
171+
tests-system-prepare:
172+
name: Prepare system tests
173+
runs-on: ubuntu-latest
174+
container: joomlaprojects/docker-images:cypress8.4
175+
needs: [composer, npm]
176+
env:
177+
CYPRESS_VERIFY_TIMEOUT: 100000
178+
steps:
179+
- uses: actions/checkout@v4
180+
- uses: actions/cache/restore@v4
181+
with:
182+
path: |
183+
node_modules
184+
media
185+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json', 'build/media_source/**', 'administrator/components/com_media/resources/**') }}
186+
- uses: actions/cache@v4
187+
id: cache-cypress
188+
with:
189+
path: |
190+
/root/.cache/Cypress
191+
/github/home/.cache/Cypress
192+
key: ${{ runner.os }}-cypress-${{ hashFiles('package-lock.json') }}
193+
- name: Install Cypress dependencies
194+
if: steps.cache-cypress.outputs.cache-hit != 'true'
195+
run: |
196+
npx cypress install
197+
npx cypress verify
198+
199+
tests-system:
200+
name: Run system tests
201+
runs-on: ubuntu-latest
202+
container: joomlaprojects/docker-images:cypress${{ matrix.config.php_version }}
203+
needs: [tests-system-prepare]
204+
strategy:
205+
matrix:
206+
browser: ['chrome', 'edge']
207+
config:
208+
- php_version: '8.4'
209+
test_group: cmysqlmax
210+
db_engine: mysqli
211+
db_host: mysql
212+
- php_version: '8.1'
213+
test_group: cmysql
214+
db_engine: mysqli
215+
db_host: mysql
216+
- php_version: '8.1'
217+
test_group: cpostgres
218+
db_engine: pgsql
219+
db_host: postgres
220+
- php_version: '8.4'
221+
test_group: cpostgresmax
222+
db_engine: pgsql
223+
db_host: postgres
224+
env:
225+
JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK: 1
226+
steps:
227+
- uses: actions/checkout@v4
228+
- uses: actions/cache/restore@v4
229+
with:
230+
path: libraries/vendor
231+
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
232+
- uses: actions/cache/restore@v4
233+
with:
234+
path: |
235+
node_modules
236+
media
237+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json', 'build/media_source/**', 'administrator/components/com_media/resources/**') }}
238+
- uses: actions/cache/restore@v4
239+
with:
240+
path: |
241+
/root/.cache/Cypress
242+
/github/home/.cache/Cypress
243+
key: ${{ runner.os }}-cypress-${{ hashFiles('package-lock.json') }}
244+
- name: Run System tests
245+
run: bash tests/System/entrypoint.sh "$(pwd)" ${{ matrix.config.test_group }} ${{ matrix.config.db_engine }} ${{ matrix.config.db_host }} ${{ matrix.browser }}
246+
- name: Archive test results results
247+
uses: actions/upload-artifact@v4
248+
if: always()
249+
with:
250+
name: system-test-output
251+
path: tests/System/output
252+
if-no-files-found: ignore
253+
services:
254+
mysql:
255+
image: mariadb
256+
env:
257+
MARIADB_USER: joomla_ut
258+
MARIADB_PASSWORD: joomla_ut
259+
MARIADB_ROOT_PASSWORD: joomla_ut
260+
MARIADB_DATABASE: test_joomla
261+
postgres:
262+
image: postgres:12-alpine
263+
env:
264+
POSTGRES_USER: root
265+
POSTGRES_PASSWORD: joomla_ut
266+
POSTGRES_DB: test_joomla

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ Do you want to improve Joomla?
7070
--------------------
7171
* Where to [request a feature](https://issues.joomla.org)?
7272
* How do you [report a bug](https://docs.joomla.org/Special:MyLanguage/Filing_bugs_and_issues) on the [Issue Tracker](https://issues.joomla.org)?
73+
* How to [submit code](https://manual.joomla.org/docs/get-started/git/) to the Joomla CMS using a Pull Request?
7374
* Get Involved: Joomla! is community developed software. [Join the community](https://volunteers.joomla.org).
7475
* Documentation for [Developers](https://manual.joomla.org/).
7576
* Documentation for [Web designers](https://docs.joomla.org/Special:MyLanguage/Web_designers).

README.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ The Joomla! 6.0 branch is under heavy development and not all links in this docu
6969
12- Do you want to improve Joomla?
7070
* Where to request a feature? https://issues.joomla.org
7171
* How do you report a bug? https://docs.joomla.org/Special:MyLanguage/Filing_bugs_and_issues
72+
* How to submit code to the Joomla CMS using a Pull Request? https://manual.joomla.org/docs/get-started/git/
7273
* Get Involved: Joomla! is a community developed software. Join the community at https://volunteers.joomla.org
7374
* Documentation for Developers: https://manual.joomla.org/
7475
* Documentation for Web designers: https://docs.joomla.org/Special:MyLanguage/Web_designers

administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -144,26 +144,6 @@ public static function loadTranslationFiles($extension)
144144
$cache[$extension] = true;
145145
}
146146

147-
/**
148-
* Get parameters to be
149-
*
150-
* @param string $context The context of the content
151-
*
152-
* @return mixed An object contains content type parameters, or null if not found
153-
*
154-
* @since 3.9.0
155-
*
156-
* @deprecated 4.3 will be removed in 6.0
157-
* Use the action log config model instead
158-
* Example: Factory::getApplication()->bootComponent('actionlogs')->getMVCFactory()
159-
* ->createModel('ActionlogConfig', 'Administrator')->getLogContentTypeParams($context);
160-
*/
161-
public static function getLogContentTypeParams($context)
162-
{
163-
return Factory::getApplication()->bootComponent('actionlogs')->getMVCFactory()
164-
->createModel('ActionlogConfig', 'Administrator')->getLogContentTypeParams($context);
165-
}
166-
167147
/**
168148
* Get human readable log message for a User Action Log
169149
*

administrator/components/com_actionlogs/src/Model/ActionlogModel.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ protected function sendNotificationEmails($messages, $username, $context)
163163
$m = [];
164164
$m['extension'] = Text::_($extension);
165165
$m['message'] = ActionlogsHelper::getHumanReadableLogMessage($message);
166-
$m['date'] = HTMLHelper::_('date', $message->log_date, 'Y-m-d H:i:s T', 'UTC');
166+
$tzOffset = Factory::getApplication()->get('offset');
167+
$m['date'] = HTMLHelper::_('date', $message->log_date, 'Y-m-d H:i:s T', $tzOffset);
167168
$m['username'] = $username;
168169
$temp[] = $m;
169170

0 commit comments

Comments
 (0)