Download the PHP package oxid-esales/consistency-check-tool without Composer

On this page you can find all versions of the php package oxid-esales/consistency-check-tool. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package consistency-check-tool

OXID eShop Consistency Check Component

Development Latest Version PHP Version

Quality Gate Status Coverage Technical Debt

The OXID eSales Consistency Check component is a flexible tool designed to perform various consistency checks on your eShop. It helps maintain shop performance and data hygiene by identifying and resolving data inconsistencies.

Current capabilities include:

This component ensures that your eShop remains optimized by helping you clean up unnecessary data while keeping track of all changes.

Features

Image Management

SEO URL Management

Compatibility

This component assumes you have OXID eShop Compilation version 7.6.0 installed.

Installation

To install this component in your OXID eShop environment, use Composer:

Development installation

The installation instructions below are shown for the current SDK for shop 7.6. Make sure your system meets the requirements of the SDK.

  1. Ensure all docker containers are down to avoid port conflicts

  2. Clone the SDK for the new project

  3. Clone the repository to the source directory

  4. Run the recipe to setup the development environment

You should be able to access the shop with http://localhost.local and the admin panel with http://localhost.local/admin (credentials: [email protected] / admin)

Usage

The tool provides several commands for managing unused images.

Move Unused Images

Move unused images to a specific directory (e.g., /backup/images)

When specifying a destination folder for moving images, note that paths are relative to the shop root.

For example:

Delete Unused Images

Permanently delete unused images:

Dry Run Mode

To perform a dry-run (simulate the move without making changes):

Verbose Output (-v)

To view detailed logs of affected files (e.g., which images would be deleted or moved), you can pass the -v flag along with your command:

When -v is enabled, the command displays relevant entries from the consistency check log file directly in the console output. This is especially useful for shop owners who want to inspect which images are impacted before taking action.

Filter by Entity Type (optional)

Process specific entity types (e.g., product, category, manufacturer):

If this parameter is not set the application perform actions on all images.

SEO URL Commands

Check Unused SEO URLs

Detect SEO URLs where the target object no longer exists in the database:

Export results to CSV file:

Check Duplicate SEO URLs

Detect SEO URLs with collision suffixes (e.g., URLs ending with -oxid):

The command reads the collision suffix from shop configuration (sSEOuprefix). You can override it:

Export results to CSV:

Delete SEO URLs from CSV

Delete SEO URLs listed in a previously exported CSV file:

Use --dry-run to preview deletions without making changes:

Recommended workflow:

  1. Run check command to see results in console
  2. Run check command with --export to generate CSV
  3. Review the CSV file and remove any rows you want to keep

    Note: Each row is deleted by its unique combination of OXOBJECTID, OXSHOPID, and OXLANG. You can filter the CSV to delete URLs for specific shops or languages only.

  4. Run delete command with --dry-run to preview
  5. Run delete command to perform actual deletion

Export by Filter

Export data matching specific filter criteria to CSV files.

Usage

Available Filters

Filter Description
deprecated-credentials Exports every user whose password hash is not native $2y$ Bcrypt and is not empty. The CSV surfaces both deprecated/unsupported hashes (security risk) and externally-produced Bcrypt hashes (informational audit trail for imports from non-PHP systems).

Example: deprecated-credentials filter

Output file: export/deprecated-credentials-{timestamp}.csv

The exported CSV includes:

credential_status values

Value Meaning Recommended action
deprecated SHA512 — older shop hashing scheme Force password reset / re-hash on next login
unsupported MD5 — very old, broken Force password reset
supported Bcrypt $2a$ / $2b$ — externally produced (Java BCrypt, OpenBSD, modern non-PHP libraries, manual imports). Cryptographically equivalent to $2y$ and accepted transparently by PHP's password_verify(). No action needed. Informational only — surfaces accounts imported from non-PHP backends.
unknown Any other format — argon2, scrypt, custom hash plugin, garbled data Investigate manually.
not_set Empty password hash — account cannot log in via password Filtered out at the database level and never appears in the export. Listed here only for completeness of the CredentialStatus enum.

When to expect each status:

Privacy: minimal export by design

The CSV contains only the user_id (OXID database key) — no email, name, or other personal data. This is intentional: the file can be shared, archived, or attached to tickets without leaking PII. To contact flagged users, look up OXUSERNAME from the oxuser table separately via the user_id column.

Subshop scope

The export covers users from all shops in an Enterprise Edition installation. There is no shop-id column on purpose:

If you have a specific reason to slice differently, implement your own FilterInterface using the tag-based extension mechanism described in "Extending: Creating Custom Filters" below.

Logs

All operations, including moved and deleted images, are logged in:

This log file helps you track the changes and verify actions performed by the tool.

Customizable parameters

There are several parameters in the services.yaml that can be customized for the module:

Path parameters (app.log_file_path, app.export_directory_path) support both relative and absolute paths:

⚠️ Configure the export directory before first use

With the default app.export_directory_path: 'export', output files land at <shop>/source/export/<filename>.csv — a directory inside the web document root. The shop's global source/.htaccess denies common sensitive extensions (.log, .tpl, .ini, .pem, etc.) but does not cover .csv, and source/export/ has no dedicated .htaccess. Files written there are reachable via https://<your-shop>/export/<filename>.csv as static content. Although the consistency-check CSVs are privacy-minimal (user_id only, no PII), they still expose lists of accounts plus activity dates.

Before running export commands in production, either:

This applies to every feature writing to source/export/, not just this tool.

To modify the parameters, create the configurable_services.yaml file in the var/configuration folder as described in the Documentation, and overwrite the parameters you want to change. Ex.:

Custom file paths for images

If you are using custom directory paths for storing images (products, categories, manufacturers), overwrite the services defined in src/ImageManager/Entity/services.yaml by using the same procedure described in the Documentation for service overriding - use already mentioned configurable_services.yaml file in the var/configuration folder.:

Example override for product images:

Testing

Linting, syntax check, static analysis

Unit/Integration tests

Extending: Creating Custom Filters

You can create custom filters for the export-by-filter command to export any data matching your criteria.

Step 1: Create Filter Class

Implement OxidEsales\ConsistencyCheck\ExportByFilter\Filter\FilterInterface in your module.

See interface at src/ExportByFilter/Filter/FilterInterface.php.

Step 2: Register Filter Service

Add to your module's services.yaml with the oe.consistency_check.export_filter tag:

Step 3: Use Your Filter

For a complete example, see the DeprecatedCredentialsFilter implementation in src/ExportByFilter/Filter/Credentials/.

Troubleshooting

Log directory does not exist

By default, the tool uses log/oe_consistency_check.log relative to the OXID eShop source directory. If the log directory does not exist, you may encounter an error like:

To resolve this, either:


All versions of consistency-check-tool with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
league/csv Version ^9.27
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package oxid-esales/consistency-check-tool contains the following files

Loading the files please wait ...