4 Commits

Author SHA1 Message Date
80946232ca prepare release of v1.2.3 (#29)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-02-04 18:23:28 +01:00
313159c74a fix: escape ticker ID in shortcode output (#28)
Ticker ID is user input and may contain literally anything. While this
is properly escaped in the internal query, we should also escape it in
the generated HTML output.
2025-02-04 18:16:30 +01:00
a0573a326c declare compatibility with WordPress 6.7 2025-02-04 18:16:21 +01:00
bfd27d5f49 update dev-dependencies and ci environment 2025-02-04 18:14:11 +01:00
11 changed files with 76 additions and 26 deletions

View File

@ -14,11 +14,11 @@ steps:
depends_on: depends_on:
- composer-install - composer-install
- name: node-install - name: node-install
image: node:18 image: node:22
commands: commands:
- npm install - npm install
- name: lint-assets - name: lint-assets
image: node:20 image: node:22
commands: commands:
- npx eslint scripts/block.js - npx eslint scripts/block.js
- npx eslint scripts/liveticker.js - npx eslint scripts/liveticker.js
@ -26,4 +26,3 @@ steps:
- npx stylelint styles/liveticker.css - npx stylelint styles/liveticker.css
depends_on: depends_on:
- node-install - node-install

View File

@ -7,25 +7,34 @@ jobs:
matrix: matrix:
include: include:
- php: '8.3' - php: '8.3'
wordpress: '6.4' wordpress: '6.6'
- php: '8.2' - php: '8.2'
wordpress: '6.3' wordpress: '6.4'
- php: '8.1' - php: '8.1'
wordpress: '6.1' wordpress: '6.2'
- php: '8.0' - php: '8.0'
wordpress: '6.0'
- php: '7.4'
wordpress: '5.9' wordpress: '5.9'
- php: '5.6' - php: '5.6'
wordpress: '4.7' wordpress: '4.7'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install SVN
run: |
if ! command -v svn > /dev/null; then
sudo apt-get update
sudo apt-get install -y subversion
fi
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: ${{ matrix.php }} php-version: ${{ matrix.php }}
coverage: xdebug
tools: composer tools: composer
- name: Setup DB - name: Setup DB
run: sudo /etc/init.d/mysql start run: sudo sudo systemctl start mysql.service
- name: Setup WP - name: Setup WP
run: bash bin/install-wp-tests.sh wordpress root root localhost "${{ matrix.wordpress }}" run: bash bin/install-wp-tests.sh wordpress root root localhost "${{ matrix.wordpress }}"
- name: Install - name: Install
@ -44,9 +53,9 @@ jobs:
php-version: '8.2' php-version: '8.2'
tools: composer tools: composer
- name: Setup Node - name: Setup Node
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '20' node-version: '22'
- name: Install - name: Install
run: | run: |
composer install --no-interaction composer install --no-interaction
@ -65,7 +74,8 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Analyze with SonarCloud - name: Analyze with SonarCloud
uses: sonarsource/sonarcloud-github-action@master if: env.SONAR_TOKEN != ''
uses: sonarsource/sonarcloud-github-action@v3
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

View File

@ -13,7 +13,7 @@ jobs:
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: '8.0' php-version: '8.2'
tools: composer tools: composer
- name: Install - name: Install
run: composer install --no-interaction run: composer install --no-interaction

View File

@ -0,0 +1,23 @@
name: Plugin check
on:
push:
branches: [ 'stable', 'release/*' ]
pull_request:
branches: [ 'stable' ]
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Package plugin
run: |
mkdir -p ./dist
tail -n +7 README.md > README.md.tmp && mv README.md.tmp README.md
rsync -rc --exclude-from=.distignore ./ ./dist/stklcode-liveticker --delete --delete-excluded
- name: Check WP plugin
uses: wordpress/plugin-check-action@v1
with:
build-dir: ./dist/stklcode-liveticker

View File

@ -14,7 +14,7 @@ jobs:
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: '7.4' php-version: '8.2'
tools: composer tools: composer
- name: Install - name: Install
run: composer install --no-interaction run: composer install --no-interaction

View File

@ -9,9 +9,9 @@
* Contributors: Stefan Kalscheuer * Contributors: Stefan Kalscheuer
* Tags: liveticker, feed, rss * Tags: liveticker, feed, rss
* Requires at least: 4.7 * Requires at least: 4.7
* Tested up to: 6.4 * Tested up to: 6.7
* Requires PHP: 5.6 * Requires PHP: 5.6
* Stable tag: 1.2.2 * Stable tag: 1.2.3
* License: GPLv2 or later * License: GPLv2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.html * License URI: http://www.gnu.org/licenses/gpl-2.0.html
@ -80,7 +80,12 @@ caching time of 12 hours obviously makes no sense.
## Changelog ## Changelog
### 1.2.2 - 2023-03-02 ### 1.2.3 - 2025-02-04
* Escape ticker ID in shortcode output
* Tested with WP 6.7
### 1.2.2 - 2024-03-02
* Update use of deprecated WP core functions * Update use of deprecated WP core functions
* Extend output sanitization * Extend output sanitization

View File

@ -22,6 +22,17 @@ download() {
curl -s "$1" > "$2"; curl -s "$1" > "$2";
elif [ `which wget` ]; then elif [ `which wget` ]; then
wget -nv -O "$2" "$1" wget -nv -O "$2" "$1"
else
echo "Error: Neither curl nor wget is installed."
exit 1
fi
}
# Check if svn is installed
check_svn_installed() {
if ! command -v svn > /dev/null; then
echo "Error: svn is not installed. Please install svn and try again."
exit 1
fi fi
} }
@ -64,6 +75,7 @@ install_wp() {
if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
mkdir -p $TMPDIR/wordpress-trunk mkdir -p $TMPDIR/wordpress-trunk
rm -rf $TMPDIR/wordpress-trunk/* rm -rf $TMPDIR/wordpress-trunk/*
check_svn_installed
svn export --quiet https://core.svn.wordpress.org/trunk $TMPDIR/wordpress-trunk/wordpress svn export --quiet https://core.svn.wordpress.org/trunk $TMPDIR/wordpress-trunk/wordpress
mv $TMPDIR/wordpress-trunk/wordpress/* $WP_CORE_DIR mv $TMPDIR/wordpress-trunk/wordpress/* $WP_CORE_DIR
else else
@ -92,7 +104,7 @@ install_wp() {
tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR
fi fi
download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php download https://raw.githubusercontent.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
} }
install_test_suite() { install_test_suite() {
@ -108,6 +120,7 @@ install_test_suite() {
# set up testing suite # set up testing suite
mkdir -p $WP_TESTS_DIR mkdir -p $WP_TESTS_DIR
rm -rf $WP_TESTS_DIR/{includes,data} rm -rf $WP_TESTS_DIR/{includes,data}
check_svn_installed
svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
fi fi

View File

@ -1,6 +1,6 @@
{ {
"name": "stklcode/stklcode-liveticker", "name": "stklcode/stklcode-liveticker",
"version": "1.2.2", "version": "1.2.3",
"description": "A simple Liveticker for Wordpress.", "description": "A simple Liveticker for Wordpress.",
"keywords": [ "keywords": [
"wordpress", "wordpress",

View File

@ -26,7 +26,7 @@ class SCLiveticker {
* *
* @var string OPTIONS * @var string OPTIONS
*/ */
const VERSION = '1.2.2'; const VERSION = '1.2.3';
/** /**
* Options tag. * Options tag.
@ -232,7 +232,7 @@ class SCLiveticker {
$output = '<div class="wp-block-scliveticker-ticker'; $output = '<div class="wp-block-scliveticker-ticker';
if ( 1 === self::$options['enable_ajax'] ) { if ( 1 === self::$options['enable_ajax'] ) {
$output .= ' sclt-ajax" ' $output .= ' sclt-ajax" '
. 'data-sclt-ticker="' . $ticker . '" ' . 'data-sclt-ticker="' . esc_attr( $ticker ) . '" '
. 'data-sclt-limit="' . $limit . '" ' . 'data-sclt-limit="' . $limit . '" '
. 'data-sclt-last="' . $last; . 'data-sclt-last="' . $last;
} }
@ -242,9 +242,9 @@ class SCLiveticker {
if ( $show_feed ) { if ( $show_feed ) {
$feed_link = get_post_type_archive_feed_link( 'scliveticker_tick' ) . ''; $feed_link = get_post_type_archive_feed_link( 'scliveticker_tick' ) . '';
if ( false === strpos( $feed_link, '&' ) ) { if ( false === strpos( $feed_link, '&' ) ) {
$feed_link .= '?scliveticker_ticker=' . $ticker; $feed_link .= '?scliveticker_ticker=' . rawurlencode( $ticker );
} else { } else {
$feed_link .= '&scliveticker_ticker=' . $ticker; $feed_link .= '&scliveticker_ticker=' . rawurlencode( $ticker );
} }
$output .= '<a href="' . esc_attr( $feed_link ) . '">Feed</a>'; $output .= '<a href="' . esc_attr( $feed_link ) . '">Feed</a>';
} }

View File

@ -1,13 +1,13 @@
{ {
"name": "stklcode-liveticker", "name": "stklcode-liveticker",
"version": "1.2.2", "version": "1.2.3",
"description": "A simple Liveticker for Wordpress.", "description": "A simple Liveticker for Wordpress.",
"author": "Stefan Kalscheuer", "author": "Stefan Kalscheuer",
"license": "GPL-2.0+", "license": "GPL-2.0+",
"devDependencies": { "devDependencies": {
"@wordpress/eslint-plugin": "^17", "@wordpress/eslint-plugin": "^22",
"@wordpress/stylelint-config": "^21", "@wordpress/stylelint-config": "^23",
"eslint": "^8", "eslint": "^8",
"stylelint": "^14" "stylelint": "^16"
} }
} }

View File

@ -9,7 +9,7 @@
* @wordpress-plugin * @wordpress-plugin
* Plugin Name: Liveticker (by stklcode) * Plugin Name: Liveticker (by stklcode)
* Description: A simple Liveticker for WordPress. * Description: A simple Liveticker for WordPress.
* Version: 1.2.2 * Version: 1.2.3
* Author: Stefan Kalscheuer * Author: Stefan Kalscheuer
* Author URI: https://www.stklcode.de * Author URI: https://www.stklcode.de
* Text Domain: stklcode-liveticker * Text Domain: stklcode-liveticker