PHPackages                             discoverygarden/embargo - 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. [Security](/categories/security)
4. /
5. discoverygarden/embargo

ActiveDrupal-module[Security](/categories/security)

discoverygarden/embargo
=======================

A module for managing embargo policies with access restrictions on content

v1.7.5(1mo ago)0560↓85.7%6[4 issues](https://github.com/discoverygarden/embargo/issues)[1 PRs](https://github.com/discoverygarden/embargo/pulls)GPL-2.0-or-laterPHPCI failing

Since Feb 21Pushed 1mo ago5 watchersCompare

[ Source](https://github.com/discoverygarden/embargo)[ Packagist](https://packagist.org/packages/discoverygarden/embargo)[ Docs](https://github.com/discoverygarden/embargo)[ RSS](/packages/discoverygarden-embargo/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependencies (6)Versions (27)Used By (0)

Embargo
=======

[](#embargo)

Embargo content indefinitely or till specified date, limiting access to specific users and/or IP addresses.

> This module is intended to be a successor to

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

[](#installation)

Install as [usual](https://www.drupal.org/docs/extending-drupal/installing-modules).

### Migrating from `embargoes`

[](#migrating-from-embargoes)

Migrations exist in the `migrate_embargoes_to_embargo` module for migrating from `embargoes`'s entities onto `embargo`'s. See [the module's docs for more info](modules/migrate_embargoes_to_embargo/README.md).

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

[](#configuration)

Configuration options can be set at `admin/config/content/embargo`, including a contact email and notification message.

Embargoes can be managed at `admin/content/embargo`.

To add an IP range for use on embargoes, navigate to `admin/content/embargo/range` and click 'Add IP range'. Ranges created via this method can then be used as IP address whitelists when creating embargoes. This [CIDR to IPv4 Conversion utility](https://www.ipaddressguide.com/cidr)can be helpful in creating valid CIDR IP ranges.

### `search_api` processor(s)

[](#search_api-processors)

We have multiple `search_api` processors which attempt to constrain search results based on the effects of embargoes on the entities represented by search results, including:

- `embargo_processor` ("Embargo access (deprecated)")
    - Adds additional properties to the indexed rows, requiring additional index maintenance on mutation of the entities under consideration, but should theoretically work with any `search_api` backend
- `embargo_join_process` ("Embargo access, join-wise")
    - Requires Solr/Solarium-compatible index, and indexing of embargo entities in the same index as the node/media/files to be search, tracking necessary info and performing [Solr joins](https://solr.apache.org/guide/solr/latest/query-guide/join-query-parser.html)to constrain results

Typically, only one should be used in any particular index.

### Embargo Notification Block Configuration

[](#embargo-notification-block-configuration)

The Embargo Notifications Block provided by this module can be placed like any other Block, and it will only be visible if there is an Embargo entity associated with the content being viewed because otherwise it has nothing to display. For general information about managing and placing Blocks, see Drupal community documentation such as [Managing Blocks](https://www.drupal.org/docs/core-modules-and-themes/core-modules/block-module/managing-blocks)

There is also a "Node is Embargoed" Condition provided by this module that can be used to set Block visibility for any Blocks based on the embargoed status of the node being viewed:

- "Always trigger regardless of embargo status"
- "All embargoes on node"
- "Current embargoes on node (ignore expired)"
- "Active embargoes on node (ignore bypassed)"

If you would like the Embargo Notifications Block to stop displaying when a timed Embargo expires, you would want to set the "Node is Embargoed" block visibility condition to `Current embargoes on node (ignore expired)` or `Active embargoes on node (ignore bypassed)`, depending on whether you want the block displayed for users who have access to bypass the given Embargo.

Usage
-----

[](#usage)

### Applying an embargo

[](#applying-an-embargo)

An embargo can be applied to an existing node by clicking the "Embargoes" tab on a node, or navigating to `embargoes/node/{node_id}`. From here, an embargo can be applied if it doesn't already exist, and existing embargoes can be modified or removed.

Known Issues/FAQ
----------------

[](#known-issuesfaq)

- Embargoed items show up in search results
    - Enable one of our `search_api` processors to handle applying embargo restrictions.
- "Embargo access, join-wise" does not show up as an available processor
    - Ensure embargo entities are being indexed in the given index.
    - Ensure that eligible node/media/files entities are being indexed in the given index.

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

[](#troubleshootingissues)

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

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

[](#maintainerssponsors)

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

Attribution
-----------

[](#attribution)

This module is heavily based on and includes contributions from [discoverygarden/embargoes](https://github.com/discoverygarden/embargoes) which was forked from [fsulib](https://github.com/fsulib/embargoes) authored by [Bryan J. Brown](https://github.com/bryjbrown).

License
-------

[](#license)

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

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance90

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community23

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 67.8% of commits — single point of failure

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 ~58 days

Recently: every ~173 days

Total

22

Last Release

48d 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

[![adam-vessey](https://avatars.githubusercontent.com/u/607975?v=4)](https://github.com/adam-vessey "adam-vessey (135 commits)")[![nchiasson-dgi](https://avatars.githubusercontent.com/u/53783039?v=4)](https://github.com/nchiasson-dgi "nchiasson-dgi (29 commits)")[![Prashant-bd](https://avatars.githubusercontent.com/u/149510496?v=4)](https://github.com/Prashant-bd "Prashant-bd (12 commits)")[![willtp87](https://avatars.githubusercontent.com/u/688918?v=4)](https://github.com/willtp87 "willtp87 (9 commits)")[![bibliophileaxe](https://avatars.githubusercontent.com/u/18718388?v=4)](https://github.com/bibliophileaxe "bibliophileaxe (4 commits)")[![JojoVes](https://avatars.githubusercontent.com/u/19390668?v=4)](https://github.com/JojoVes "JojoVes (3 commits)")[![nigelgbanks](https://avatars.githubusercontent.com/u/487373?v=4)](https://github.com/nigelgbanks "nigelgbanks (2 commits)")[![lutaylor](https://avatars.githubusercontent.com/u/2863794?v=4)](https://github.com/lutaylor "lutaylor (1 commits)")[![dmoses](https://avatars.githubusercontent.com/u/494152?v=4)](https://github.com/dmoses "dmoses (1 commits)")[![chrismacdonaldw](https://avatars.githubusercontent.com/u/31731869?v=4)](https://github.com/chrismacdonaldw "chrismacdonaldw (1 commits)")[![rosiel](https://avatars.githubusercontent.com/u/1943338?v=4)](https://github.com/rosiel "rosiel (1 commits)")[![jordandukart](https://avatars.githubusercontent.com/u/1337738?v=4)](https://github.com/jordandukart "jordandukart (1 commits)")

---

Tags

access-controldrupaldrupal-moduleembargo

### Embed Badge

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

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

###  Alternatives

[phpids/phpids

PHPIDS (PHP-Intrusion Detection System) is a simple to use, well structured, fast and state-of-the-art security layer for your PHP based web application

791150.0k2](/packages/phpids-phpids)[paragonie/ecc

PHP Elliptic Curve Cryptography library

25866.3k44](/packages/paragonie-ecc)[nicobleiler/php-passphrase

Passphrase generator with Laravel integration, inspired by Bitwarden. Uses the EFF long word list by default with support for custom wordlists.

4912.6k](/packages/nicobleiler-php-passphrase)[dwgebler/encryption

Encryption wrapper for PHP using libsodium — simple API for symmetric and asymmetric encryption, password hashing, digital signing, and message authentication.

317.5k](/packages/dwgebler-encryption)

PHPackages © 2026

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