Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
ea9366a9ce | |||
0432861e95 | |||
1243eef2d2 | |||
b4898abd5b | |||
c02263f373 | |||
b34a79068c | |||
00aa79cb1e | |||
96cd17c3e2 | |||
96214d55a0 | |||
fbb8229c3e | |||
a693e0b9c0 | |||
0636367e79 | |||
7537261387 | |||
38c1e569e6 | |||
4290aed9ce | |||
13809aeaa3 | |||
9903a6163d | |||
c88d716dfc | |||
714512ca15 | |||
081a6abbb0 | |||
6003a0d397 | |||
6f4b1722bf |
@ -1,7 +1,9 @@
|
||||
/.git
|
||||
/.github
|
||||
/assets
|
||||
/dist
|
||||
/test
|
||||
/vendor
|
||||
/.distignore
|
||||
/.editorconfig
|
||||
/.gitattributes
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1,5 +1,6 @@
|
||||
/.github export-ignore
|
||||
/assets export-ignore
|
||||
/dist export-ignore
|
||||
/test export-ignore
|
||||
.distignore export-ignore
|
||||
.gitattributes export-ignore
|
||||
|
5
.github/workflows/test.yml
vendored
5
.github/workflows/test.yml
vendored
@ -5,7 +5,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php: [ '5.6', '7.4', '8.0', '8.1', '8.2', '8.3' ]
|
||||
php: [ '5.6', '7.4', '8.0', '8.2', '8.4' ]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
@ -15,6 +15,7 @@ jobs:
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
coverage: xdebug
|
||||
tools: composer
|
||||
- name: Install
|
||||
run: composer install --no-interaction
|
||||
@ -23,7 +24,7 @@ jobs:
|
||||
composer test
|
||||
sed -i "s#<file name=\"${GITHUB_WORKSPACE}#<file name=\"/github/workspace#g" tests-clover.xml
|
||||
- name: Analyze with SonarCloud
|
||||
if: matrix.php == '8.2'
|
||||
if: matrix.php == '8.2' && env.SONAR_TOKEN != ''
|
||||
uses: sonarsource/sonarcloud-github-action@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
23
.github/workflows/wordpress-plugin-check.yml
vendored
Normal file
23
.github/workflows/wordpress-plugin-check.yml
vendored
Normal 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 +6 README.md > README.md.tmp && mv README.md.tmp README.md
|
||||
rsync -rc --exclude-from=.distignore ./ ./dist/statify-blacklist --delete --delete-excluded
|
||||
|
||||
- name: Check WP plugin
|
||||
uses: wordpress/plugin-check-action@v1
|
||||
with:
|
||||
build-dir: ./dist/statify-blacklist
|
33
README.md
33
README.md
@ -1,23 +1,25 @@
|
||||
[](https://github.com/stklcode/statify-blacklist/actions/workflows/test.yml?query=branch%3Astable)
|
||||
[](https://sonarcloud.io/dashboard?id=stklcode%3Astatify-blacklist)
|
||||
[](https://packagist.org/packages/stklcode/statify-blacklist)
|
||||
[](https://github.com/stklcode/statify-blacklist/actions/workflows/test.yml)
|
||||
[](https://sonarcloud.io/summary/new_code?id=stklcode%3Astatify-blacklist)
|
||||
[](https://packagist.org/packages/stklcode/statify-blacklist)
|
||||
[](https://github.com/stklcode/statify-blacklist/blob/stable/LICENSE.md)
|
||||
|
||||
# Statify Filter #
|
||||
* Contributors: Stefan Kalscheuer
|
||||
* Contributors: stklcode
|
||||
* Requires at least: 4.7
|
||||
* Tested up to: 6.4
|
||||
* Tested up to: 6.8
|
||||
* Requires PHP: 5.5
|
||||
* Stable tag: 1.7.0
|
||||
* Stable tag: 1.7.2
|
||||
* License: GPLv2 or later
|
||||
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
Filter extension for the famous Statify WordPress plugin.
|
||||
|
||||
## Description ##
|
||||
A filter extension for the famous [Statify](https://wordpress.org/plugins/statify/) WordPress plugin.
|
||||
|
||||
This plugin adds customizable filters to Statify to allow blocking of referer spam or internal interactions.
|
||||
|
||||
### Features ##
|
||||
### Features ###
|
||||
|
||||
#### Referer Filter ####
|
||||
Add a list of domains (for simplicity only second-level, e.g. _example.com_ which blocks _everything.example.com_).
|
||||
@ -93,11 +95,26 @@ Same for IPv6 prefixes like _2001:db8:a0b:12f0::/64_.
|
||||
|
||||
## Upgrade Notice ##
|
||||
|
||||
### 1.7.2 ###
|
||||
This is a bugfix release to restore the manual cleanup function that was broken since 1.7.0.
|
||||
|
||||
### 1.7.1 ###
|
||||
This is a service release with minor corrections. Recommended for all users. Tested up to 6.5.
|
||||
|
||||
### 1.7.0 ###
|
||||
This is a service release with primarily internal rework. Tested up to 6.4 and PHP 8.3.
|
||||
|
||||
|
||||
## Changelog ##
|
||||
## Changelog
|
||||
|
||||
### 1.7.2 / 06.06.2024 ###
|
||||
* Restore manual database cleanup functionality
|
||||
|
||||
### 1.7.1 / 24.03.2024 ###
|
||||
* Fix HTML syntax for checkboxes on settings page
|
||||
* Simplify some internal control structures
|
||||
* Add plugin dependency to Statify
|
||||
* Declared compatibility with WordPress 6.5
|
||||
|
||||
### 1.7.0 / 11.03.2024 ###
|
||||
* Internal rework of plugin settings
|
||||
|
36
assets/blueprints/blueprint.json
Normal file
36
assets/blueprints/blueprint.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
|
||||
"landingPage": "/wp-admin/options-general.php?page=statify-blacklist",
|
||||
"features": {
|
||||
"networking": true
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"step": "login",
|
||||
"username": "admin",
|
||||
"password": "password"
|
||||
},
|
||||
{
|
||||
"step": "installPlugin",
|
||||
"pluginData": {
|
||||
"resource": "wordpress.org/plugins",
|
||||
"slug": "statify"
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": "activatePlugin",
|
||||
"pluginPath": "statify/statify.php"
|
||||
},
|
||||
{
|
||||
"step": "installPlugin",
|
||||
"pluginData": {
|
||||
"resource": "wordpress.org/plugins",
|
||||
"slug": "statify-blacklist"
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": "activatePlugin",
|
||||
"pluginPath": "statify-blacklist/statify-blacklist.php"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "stklcode/statify-blacklist",
|
||||
"version": "1.7.0",
|
||||
"version": "1.7.2",
|
||||
"description": "A filter extension for the famous Statify WordPress plugin",
|
||||
"keywords": [
|
||||
"wordpress",
|
||||
@ -19,16 +19,16 @@
|
||||
"type": "wordpress-plugin",
|
||||
"require": {
|
||||
"php": ">=5.5",
|
||||
"composer/installers": "~v1.12|~v2.2"
|
||||
"composer/installers": "~v1.12|~v2.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^v1.0",
|
||||
"phpunit/phpunit": "^5|^6|^7|^8|^9",
|
||||
"phpunit/php-code-coverage": "*",
|
||||
"slowprog/composer-copy-file": "~0.3",
|
||||
"squizlabs/php_codesniffer": "^3.9",
|
||||
"squizlabs/php_codesniffer": "^3.12",
|
||||
"phpcompatibility/phpcompatibility-wp": "^2.1",
|
||||
"wp-coding-standards/wpcs": "^3.0"
|
||||
"wp-coding-standards/wpcs": "^3.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test-all": [
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @since 1.7.0
|
||||
*/
|
||||
|
||||
// Quit if accessed directly..
|
||||
// Quit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
@ -170,6 +170,27 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h1><?php esc_html_e( 'Statify Filter', 'statify-blacklist' ); ?></h1>
|
||||
<?php
|
||||
if ( isset( $_SERVER['REQUEST_METHOD'] ) && 'POST' === $_SERVER['REQUEST_METHOD'] && ! empty( $_POST['cleanup'] ) ) {
|
||||
// Database cleanup requested.
|
||||
if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'statify-blacklist-options' ) ) {
|
||||
// Nonce verification successful, proceed with cleanup.
|
||||
StatifyBlacklist_Admin::cleanup_database();
|
||||
?>
|
||||
<div class="notice notice-success is-dismissible">
|
||||
<p><?php esc_html_e( 'Database cleanup successful', 'statify-blacklist' ); ?></p>
|
||||
</div>
|
||||
<?php
|
||||
} else {
|
||||
// Nonce verification failed.
|
||||
?>
|
||||
<div class="notice notice-error is-dismissible">
|
||||
<p><?php esc_html_e( 'Database cleanup request failed', 'statify-blacklist' ); ?></p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<form id="statify-settings" method="post" action="options.php">
|
||||
<?php
|
||||
@ -178,7 +199,8 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
submit_button();
|
||||
?>
|
||||
<hr>
|
||||
<input class="button-secondary" type="submit" name="cleanUp"
|
||||
<input class="button-secondary" type="submit" name="cleanup"
|
||||
formaction=""
|
||||
value="<?php esc_html_e( 'CleanUp Database', 'statify-blacklist' ); ?>"
|
||||
onclick="return confirm('<?php echo esc_js( __( 'Do you really want to apply filters to database? This cannot be undone.', 'statify-blacklist' ) ); ?>');">
|
||||
<p class="description">
|
||||
@ -208,7 +230,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
<fieldset>
|
||||
<legend class="screen-reader-text"><?php esc_html_e( 'Activate live filter', 'statify-blacklist' ); ?></legend>
|
||||
<label for="statifyblacklist-referer-active">
|
||||
<input id="statifyblacklist-referer-active" name="statify-blacklist[referer][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['referer']['active'], 1 ); ?>">
|
||||
<input id="statifyblacklist-referer-active" name="statify-blacklist[referer][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['referer']['active'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
<p class="description">
|
||||
@ -228,7 +250,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
<fieldset>
|
||||
<legend class="screen-reader-text"><?php esc_html_e( 'CronJob execution', 'statify-blacklist' ); ?></legend>
|
||||
<label for="statifyblacklist-referer-cron">
|
||||
<input id="statifyblacklist-referer-cron" name="statify-blacklist[referer][cron]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['referer']['cron'], 1 ); ?>">
|
||||
<input id="statifyblacklist-referer-cron" name="statify-blacklist[referer][cron]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['referer']['cron'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
<p class="description">
|
||||
@ -295,7 +317,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
<fieldset>
|
||||
<legend class="screen-reader-text"><?php esc_html_e( 'Activate live filter', 'statify-blacklist' ); ?></legend>
|
||||
<label for="statifyblacklist-target-active">
|
||||
<input id="statifyblacklist-target-active" name="statify-blacklist[target][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['target']['active'], 1 ); ?>">
|
||||
<input id="statifyblacklist-target-active" name="statify-blacklist[target][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['target']['active'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
<p class="description">
|
||||
@ -315,7 +337,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
<fieldset>
|
||||
<legend class="screen-reader-text"><?php esc_html_e( 'CronJob execution', 'statify-blacklist' ); ?></legend>
|
||||
<label for="statifyblacklist-target-cron">
|
||||
<input id="statifyblacklist-target-cron" name="statify-blacklist[target][cron]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['target']['cron'], 1 ); ?>">
|
||||
<input id="statifyblacklist-target-cron" name="statify-blacklist[target][cron]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['target']['cron'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
<p class="description">
|
||||
@ -377,7 +399,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
<fieldset>
|
||||
<legend class="screen-reader-text"><?php esc_html_e( 'Activate live filter', 'statify-blacklist' ); ?></legend>
|
||||
<label for="statifyblacklist-ip-active">
|
||||
<input id="statifyblacklist-ip-active" name="statify-blacklist[ip][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['ip']['active'], 1 ); ?>">
|
||||
<input id="statifyblacklist-ip-active" name="statify-blacklist[ip][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['ip']['active'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
<p class="description">
|
||||
@ -414,7 +436,7 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
public static function option_ua_active() {
|
||||
?>
|
||||
<label for="statifyblacklist-ua-active">
|
||||
<input id="statifyblacklist-ua-active" name="statify-blacklist[ua][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['ua']['active'], 1 ); ?>">
|
||||
<input id="statifyblacklist-ua-active" name="statify-blacklist[ua][active]" type="checkbox" value="1" <?php checked( StatifyBlacklist::$options['ua']['active'], 1 ); ?>>
|
||||
<?php esc_html_e( 'Activate', 'statify-blacklist' ); ?>
|
||||
</label>
|
||||
|
||||
@ -575,14 +597,13 @@ class StatifyBlacklist_Settings extends StatifyBlacklist {
|
||||
* @since 1.7.0
|
||||
*/
|
||||
private static function sanitize_target_options( &$options ) {
|
||||
$target_given = $options['blacklist'];
|
||||
$target_invalid = array();
|
||||
$target_given = $options['blacklist'];
|
||||
$target_sanitized = $target_given;
|
||||
if ( StatifyBlacklist::MODE_REGEX === $options['regexp'] || StatifyBlacklist::MODE_REGEX_CI === $options['regexp'] ) {
|
||||
$target_sanitized = $target_given;
|
||||
// Check regular expressions.
|
||||
$target_invalid = self::sanitize_regex( $target_given );
|
||||
} else {
|
||||
$target_sanitized = $target_given;
|
||||
$target_invalid = array();
|
||||
}
|
||||
$options['blacklist'] = $target_sanitized;
|
||||
|
||||
|
@ -89,9 +89,6 @@ class StatifyBlacklist_System extends StatifyBlacklist {
|
||||
|
||||
if ( function_exists( 'get_sites' ) ) {
|
||||
$sites = get_sites();
|
||||
} elseif ( function_exists( 'wp_get_sites' ) ) {
|
||||
// phpcs:ignore WordPress.WP.DeprecatedFunctions.wp_get_sitesFound -- Legacy support for WP < 4.6.
|
||||
$sites = wp_get_sites();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@ -189,7 +186,7 @@ class StatifyBlacklist_System extends StatifyBlacklist {
|
||||
);
|
||||
} elseif ( ! isset( $options['ua']['blacklist'] ) ) {
|
||||
$options['ua']['blacklist'] = array();
|
||||
} elseif ( isset( $options['ua'] ) ) {
|
||||
} else {
|
||||
// User agent strings got stored incorrectly in 1.6.0 - luckily the version was not updated, either.
|
||||
$options['ua']['blacklist'] = array_flip( $options['ua']['blacklist'] );
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "statify-blacklist",
|
||||
"version": "1.7.0",
|
||||
"version": "1.7.2",
|
||||
"description": "A filter extension for the famous Statify WordPress plugin",
|
||||
"author": "Stefan Kalscheuer",
|
||||
"license": "GPL-2.0+"
|
||||
|
@ -7,14 +7,17 @@
|
||||
* @license GPL-2.0+
|
||||
*
|
||||
* @wordpress-plugin
|
||||
* Plugin Name: Statify Filter
|
||||
* Plugin URI: https://wordpress.org/plugins/statify-blacklist/
|
||||
* Description: Extension for the Statify plugin to add customizable filters. (formerly "Statify Blacklist)
|
||||
* Version: 1.7.0
|
||||
* Author: Stefan Kalscheuer (@stklcode)
|
||||
* Author URI: https://www.stklcode.de
|
||||
* Text Domain: statify-blacklist
|
||||
* License: GPLv2 or later
|
||||
* Plugin Name: Statify Filter
|
||||
* Plugin URI: https://wordpress.org/plugins/statify-blacklist/
|
||||
* Description: Extension for the Statify plugin to add customizable filters. (formerly "Statify Blacklist")
|
||||
* Version: 1.7.2
|
||||
* Requires at least: 4.7
|
||||
* Requires PHP: 5.5
|
||||
* Requires Plugins: statify
|
||||
* Author: Stefan Kalscheuer (@stklcode)
|
||||
* Author URI: https://www.stklcode.de
|
||||
* Text Domain: statify-blacklist
|
||||
* License: GPLv2 or later
|
||||
*
|
||||
* Statify Filter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
Loading…
x
Reference in New Issue
Block a user