PHPackages                             discoverygarden/dgi\_fixity - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. discoverygarden/dgi\_fixity

ActiveDrupal-module[Utility &amp; Helpers](/categories/utility)

discoverygarden/dgi\_fixity
===========================

v1.4.3(3mo ago)13.6k—6.3%5[2 PRs](https://github.com/discoverygarden/dgi_fixity/pulls)GPL-2.0-or-laterPHP

Since May 25Pushed 3mo ago7 watchersCompare

[ Source](https://github.com/discoverygarden/dgi_fixity)[ Packagist](https://packagist.org/packages/discoverygarden/dgi_fixity)[ RSS](/packages/discoverygarden-dgi-fixity/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (25)Used By (0)

Fixity
======

[](#fixity)

Introduction
------------

[](#introduction)

Perform periodic fixity checks on selected files.

This module defines a new content entity type `fixity_check`. This entity is used as an audit trail for fixity checks performed on a related `file` entity. Wherein the revisions of the `fixity_check` record the results of previous checks against that `file` entity.

This modules requires and enforces the following constraints on `fixity_check`entities:

- **Must** be related to a `file`
- `file` relations **must** be unique
- `file` relation **cannot** be changed after creation
- `performed` and `state` properties **cannot** be modified after creation.

Users with the permission `Administer Fixity Checks` can:

- Manually perform checks
- Manually remove `fixity_check` entities and their revisions
- Manually mark files as requiring periodic checks
- Generate `fixity_check` entities for all previously existing files

Users with the permission `View Fixity Checks` can:

- View fixity audit log of Media entities

A `cron` hook is setup to automatically mark files as *requiring* periodic checks. As well as performing those checks on a regular basis. Email notifications can be configured to alert the selected user of the status of all performed checks on a regular basis or only when an error occurs.

Requirements
------------

[](#requirements)

This module requires the following modules/libraries:

- [filehash](https://www.drupal.org/project/filehash)

Configuration
-------------

[](#configuration)

The module can be configured at `admin/config/fixity`.

Drush
-----

[](#drush)

A number of drush commands come bundled with this module.

```
$ drush dgi_fixity:clear --help
Sets the periodic check flag to FALSE for all files.
```

```
$ drush dgi_fixity:generate --help
Creates a fixity_check entity for all previously created files.
```

```
$ drush dgi_fixity:check --help
Perform fixity checks on files.

Options:
  --fids[=FIDS] Comma separated list of file identifiers, or a path to a file containing file identifiers.
                The file should have each fid separated by a new line. If not specified the modules settings
                for sources is used to determine which files to check.
  --force       Skip time elapsed threshold check when processing files.
```

Installation
------------

[](#installation)

Install as usual, see [this](https://www.drupal.org/docs/extending-drupal/installing-modules) for further information.

Additionally after this module is first enabled, you will need to generate `fixity_check` entities for all pre-existing `file` entities. This does not require that the checks are performed, only that one `fixity_check` entity exists for every applicable `file` entity in the system.

This can be done with `drush`:

```
drush dgi_fixity:generate
```

Or via the admin form on the page `admin/config/fixity/generate`.

Troubleshooting/Issues
----------------------

[](#troubleshootingissues)

Having problems or solved a problem? Contact [discoverygarden](http://support.discoverygarden.ca).

Maintainers/Sponsors
--------------------

[](#maintainerssponsors)

Current maintainers:

- [discoverygarden](http://support.discoverygarden.ca)

Sponsors:

- [CTDA: Connecticut Digital Archive](https://lib.uconn.edu/find/connecticut-digital-archive/)

Development
-----------

[](#development)

If you would like to contribute to this module create an issue, pull request and or contact [discoverygarden](http://support.discoverygarden.ca).

License
-------

[](#license)

[GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt)

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance81

Actively maintained with recent releases

Popularity26

Limited adoption so far

Community24

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor3

3 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~71 days

Recently: every ~128 days

Total

20

Last Release

98d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ed79bbc35ed0aaee2f603c6f16885fb01e203941eea0cd63013f9f6185df6c30?d=identicon)[adam-vessey](/maintainers/adam-vessey)

![](https://www.gravatar.com/avatar/49d799e416ff30e90b07d1b7b6a487dfe945ae884c53747de4724439965d7904?d=identicon)[lutaylor](/maintainers/lutaylor)

![](https://www.gravatar.com/avatar/454136e389341c2a9c22dfba3107e09e2f8653807185bb213c5272efa9b93864?d=identicon)[willtp87](/maintainers/willtp87)

---

Top Contributors

[![nchiasson-dgi](https://avatars.githubusercontent.com/u/53783039?v=4)](https://github.com/nchiasson-dgi "nchiasson-dgi (19 commits)")[![adam-vessey](https://avatars.githubusercontent.com/u/607975?v=4)](https://github.com/adam-vessey "adam-vessey (15 commits)")[![nigelgbanks](https://avatars.githubusercontent.com/u/487373?v=4)](https://github.com/nigelgbanks "nigelgbanks (14 commits)")[![chrismacdonaldw](https://avatars.githubusercontent.com/u/31731869?v=4)](https://github.com/chrismacdonaldw "chrismacdonaldw (13 commits)")[![willtp87](https://avatars.githubusercontent.com/u/688918?v=4)](https://github.com/willtp87 "willtp87 (4 commits)")[![Prashant-bd](https://avatars.githubusercontent.com/u/149510496?v=4)](https://github.com/Prashant-bd "Prashant-bd (4 commits)")[![seth-shaw-asu](https://avatars.githubusercontent.com/u/108362375?v=4)](https://github.com/seth-shaw-asu "seth-shaw-asu (3 commits)")[![JojoVes](https://avatars.githubusercontent.com/u/19390668?v=4)](https://github.com/JojoVes "JojoVes (3 commits)")[![ruebot](https://avatars.githubusercontent.com/u/218561?v=4)](https://github.com/ruebot "ruebot (2 commits)")[![lutaylor](https://avatars.githubusercontent.com/u/2863794?v=4)](https://github.com/lutaylor "lutaylor (1 commits)")[![bibliophileaxe](https://avatars.githubusercontent.com/u/18718388?v=4)](https://github.com/bibliophileaxe "bibliophileaxe (1 commits)")[![jordandukart](https://avatars.githubusercontent.com/u/1337738?v=4)](https://github.com/jordandukart "jordandukart (1 commits)")[![MorganDawe](https://avatars.githubusercontent.com/u/3580299?v=4)](https://github.com/MorganDawe "MorganDawe (1 commits)")

---

Tags

checksumdrupaldrupal-8drupal-9drupal-modulefixityislandora

### Embed Badge

![Health badge](/badges/discoverygarden-dgi-fixity/health.svg)

```
[![Health](https://phpackages.com/badges/discoverygarden-dgi-fixity/health.svg)](https://phpackages.com/packages/discoverygarden-dgi-fixity)
```

###  Alternatives

[delight-im/str

Convenient object-oriented operations on strings

68336.2k2](/packages/delight-im-str)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
