# Publication Period Add-on

**URL:** <https://discourse.getcockpit.com/t/publication-period-add-on/184>\
**Category:** Addons\
**Created:** [July 29, 2018, 9:02pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184 "2018-07-29T21:02:00Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![pauloamgomes](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/pauloamgomes/32/48_2.png) [@pauloamgomes](https://discourse.getcockpit.com/u/pauloamgomes)\
**Post date:** [July 29, 2018, 9:02pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/1 "2018-07-29T21:02:00Z")

</div>

Taking in consideration the questions in [https://discourse.getcockpit.com/t/delayed-publication/165](https://discourse.getcockpit.com/t/delayed-publication/165) created a new add-on that may help on the situations we need to set one or more collections entries only available in a particular day or period.

> **[pauloamgomes/Cockpit-PublicationPeriod](https://github.com/pauloamgomes/Cockpit-PublicationPeriod)**
>
> This Cockpit CMS addon extends Cockpit CMS core functionality by introducing the possibility to limit the collection entries based on an Publication Period field - pauloamgomes/Cockpit-PublicationP...

---

<div class="post-metadata">

**Author:** ![artur](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/artur/32/4_2.png) [@artur](https://discourse.getcockpit.com/u/artur)\
**Post date:** [August 15, 2018, 9:17pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/2 "2018-08-15T21:17:30Z")

</div>

One improvement:

use the `collections.find.before` event and extend the filter option

Greets,  
Artur

---

<div class="post-metadata">

**Author:** ![pauloamgomes](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/pauloamgomes/32/48_2.png) [@pauloamgomes](https://discourse.getcockpit.com/u/pauloamgomes)\
**Post date:** [August 16, 2018, 12:35pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/3 "2018-08-16T12:35:59Z")

</div>

Humm, not sure if got it, on the collections.find.before don’t have access to the collection entries!

---

<div class="post-metadata">

**Author:** ![artur](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/artur/32/4_2.png) [@artur](https://discourse.getcockpit.com/u/artur)\
**Post date:** [August 16, 2018, 1:28pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/4 "2018-08-16T13:28:08Z")

</div>

you don’t have to, you extend the filter option to let the db do the filtering:

```auto
$app->on('collections.find.before', function ($name, &$options) use ($app) {

  // Get the collection.
  $collection = $this->module('collections')->collection($name);

  foreach ($collection['fields'] as $field) {

    if ($field['type'] == 'publicationperiod') {

      $name = $field['name'];

      $options['filter']['$or'] = [
         ["{$name}" => ['$exists' => false]],
         ["{$name}" => ''],
         ["{$name}" => ['$gte' => DATE, '$lte' => DATE]]
      ];      

      break;
    }
  }
});

```

---

<div class="post-metadata">

**Author:** ![pauloamgomes](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/pauloamgomes/32/48_2.png) [@pauloamgomes](https://discourse.getcockpit.com/u/pauloamgomes)\
**Post date:** [August 16, 2018, 10:40pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/5 "2018-08-16T22:40:24Z")

</div>

Ok, will check, it seems a clever way

---

<div class="post-metadata">

**Author:** ![WarrenBee](https://avatars.discourse-cdn.com/v4/letter/w/c5a1d2/32.png) [@WarrenBee](https://discourse.getcockpit.com/u/WarrenBee)\
**Post date:** [July 26, 2019, 3:26am UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/6 "2019-07-26T03:26:06Z")

</div>

I tried this today, but it doesn’t seem to be working. Whenever I use this field, the collections using the field don’t return any entry data. I’ve tried leaving it empty, using a date from the past, and selecting a past date with a future end date.

Any suggestions?

---

<div class="post-metadata">

**Author:** ![pauloamgomes](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/pauloamgomes/32/48_2.png) [@pauloamgomes](https://discourse.getcockpit.com/u/pauloamgomes)\
**Post date:** [July 26, 2019, 8:04am UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/7 "2019-07-26T08:04:18Z")

</div>

Are you using Mongodb or sqlite?

---

<div class="post-metadata">

**Author:** ![WarrenBee](https://avatars.discourse-cdn.com/v4/letter/w/c5a1d2/32.png) [@WarrenBee](https://discourse.getcockpit.com/u/WarrenBee)\
**Post date:** [July 26, 2019, 5:17pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/8 "2019-07-26T17:17:57Z")

</div>

> [@pauloamgomes](#):
>
> sqlite

I’m currently using sqlite

---

<div class="post-metadata">

**Author:** ![pauloamgomes](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.getcockpit.com/pauloamgomes/32/48_2.png) [@pauloamgomes](https://discourse.getcockpit.com/u/pauloamgomes)\
**Post date:** [July 27, 2019, 10:24pm UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/9 "2019-07-27T22:24:40Z")

</div>

Yep, for sqlite wasn’t working, should be ok now

---

<div class="post-metadata">

**Author:** ![WarrenBee](https://avatars.discourse-cdn.com/v4/letter/w/c5a1d2/32.png) [@WarrenBee](https://discourse.getcockpit.com/u/WarrenBee)\
**Post date:** [July 28, 2019, 2:56am UTC](https://discourse.getcockpit.com/t/publication-period-add-on/184/10 "2019-07-28T02:56:15Z")

</div>

Wow, thanks so much! I really appreciate your help!
