PHPackages                             firebrandhq/silverstripe-hail - 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. firebrandhq/silverstripe-hail

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

firebrandhq/silverstripe-hail
=============================

Silverstripe 4 plugin to integrate with Hail (https://get.hail.to)

5.0.6(1y ago)41.7k42BSD-3-ClausePHPPHP ^8.1CI failing

Since Feb 15Pushed 6mo ago3 watchersCompare

[ Source](https://github.com/firebrandhq/silverstripe-hail)[ Packagist](https://packagist.org/packages/firebrandhq/silverstripe-hail)[ RSS](/packages/firebrandhq-silverstripe-hail/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (7)Versions (98)Used By (2)

[![Hail.to](docs/images/hail-logo.png "hail.to")](docs/images/hail-logo.png)

Hail.to Integration for SilverStripe 4
======================================

[](#hailto-integration-for-silverstripe-4)

Silverstripe 4 module to integrate with Hail ()

If you need this module for SilverStripe 3 please refer to [this branch](https://github.com/firebrandhq/silverstripe-hail/tree/2.x).

❗ **If you are getting errors while fetching, please update to 4.2 version**

Features
--------

[](#features)

- Display Hail content inside your SilverStripe website
- Ready to use with Bootstrap 4.1 styles and templates
- Video and Image header for articles and publications
- Hail Page
- TinyMCE plugin
- Configurable
- Simplified code base
- Emojis support as an option
- SEO friendly
- OpenGraph integration, [see OpenGraph Support section](#opengraph-support)
- Silverstripe Elemental integration, [see SilverStripe Elemental Support section](#silverstripe-elemental-support)
- And more...

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

[](#requirements)

- [PHP ^7.1](https://secure.php.net/)
- [SilverStripe ^4.4](https://www.silverstripe.org/download)
- [guzzlehttp/guzzle ^6.3](https://github.com/guzzle/guzzle)
- [silverstripe/environmentcheck ^2.0](https://github.com/silverstripe/silverstripe-environmentcheck)
- [symfony/console ^4.2](https://github.com/symfony/console)
- Access to create cronjob (optional)
- jQuery and Bootstrap 4+ (included), [see jQuery and Boostrap requirements](#jquery-and-bootstrap-requirements)

For SilverStripe 4.1 to 4.3 use version 4.2.1

Upgrade from older versions
---------------------------

[](#upgrade-from-older-versions)

This module has been re written for SilverStripe 4 and includes breaking changes compared to previous version. Please perform a fresh install if you are upgrading from previous versions by removing and re installing the module.

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

[](#installation)

**Run the following command:**

```
composer require firebrandhq/silverstripe-hail "^4"
```

**(Optional) Enable Emojis Support (has to be done before doing the dev/build):**

[See Emojis Support configuration](#emojis-support)

**Install Silverstripe Sake:**

```
cd your-webroot/
sudo ./vendor/bin/sake installsake
```

*Please ensure sake is using php ^7.1*

**Perform a dev/build**

**Add the following lines (adapt them to your environment) to your crontab:**

**You need to add those jobs to the cronjob of the user running your webserver (example on Ubuntu with apache2: sudo crontab -e -u www-data)**

```
* * * * * cd /your-webroot/ && /usr/local/bin/sake dev/tasks/hail-fetch-queue
*/5 * * * * cd /your-webroot/ && /usr/local/bin/sake dev/tasks/hail-check-status
0 * * * * cd /your-webroot/ && /usr/local/bin/sake dev/tasks/hail-fetch-recurring
```

You can adapt the frequency of the hail-fetch-recurring job to your needs, it will always fetch up until previous fetch

#### Authorize Silverstripe to fetch from Hail:

[](#authorize-silverstripe-to-fetch-from-hail)

1. Go to hail.to and signin, then go to your Developer Settings () and create a new application (Add new button)
2. Add the generated Hail Client ID and Client Secret to your .env file:

    ```
    HAIL_CLIENT_ID=[CLIENTID]
    HAIL_CLIENT_SECRET=[CLIENTSECRET]

    ```
3. Go to SilverStripe admin settings page (/admin/settings/), then on the Hail tab
4. Copy the Callback URL
5. Back to the Hail Developer Settings, Click "Add new" in the redirect URI section and paste the Callback URL
6. You are now ready to authorize your Hail application, go back to the SilverStripe Admin settings and click the "Authorise SilverStripe to Access Hail" button.
7. After the authorization process is complete, you will be able to select the Hail Organisation(s) you want to fetch content from in the Admin Settings of SilverStripe.
8. (Optional) You can globally exclude content with specific Public or Private tags in the Admin Settings of SilverStripe
9. Save your Admin Settings

You can now either wait for your cron job to fetch the content or force a full fetch from the Hail menu in SilverStripe CMS using the Fetch button (top left in the page).

jQuery and Bootstrap requirements
---------------------------------

[](#jquery-and-bootstrap-requirements)

We include jQuery 3.3.1 and Bootstrap 4.1 (javascript and css) in our Hail Page and Hail Articles by default.

If you need to include your own jQuery and/or Bootstrap (If you compiled Bootstrap from source or want to include those globally for example), simply block our requirement(s) by adding one or all the following to your PageController init() function:

```
protected function init()
{
    parent::init();
    // You can include any CSS or JS required by your project here.
    // See: https://docs.silverstripe.org/en/developer_guides/templates/requirements/

    \SilverStripe\View\Requirements::block('firebrandhq/silverstripe-hail: thirdparty/bootstrap/styles/bootstrap.min.css');
    \SilverStripe\View\Requirements::block('firebrandhq/silverstripe-hail: thirdparty/jquery/js/jquery.min.js');
    \SilverStripe\View\Requirements::block('firebrandhq/silverstripe-hail: thirdparty/bootstrap/js/bootstrap.bundle.min.js');
}
```

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

[](#configuration)

The following yml configuration options are available for override:

**Hail API Client configuration:**

- BaseApiUrl: Base URL of the Hail API
- AuthorizationUrl: Full URL of the Hail authorization
- RefreshRate: Time after which a Hail Object is considered outdated
- EnableEmojiSupport: See [Emojis Support configuration](#emojis-support)
- OnlyFetchPublishedObjects: By default the Hail module only fetches published objects, you can change this behavior by setting this value to false

*Default configuration:*

```
Firebrand\Hail\Api\Client:
  BaseApiUrl: 'https://hail.to/api/v1/'
  AuthorizationUrl: 'https://hail.to/oauth/authorise'
  RefreshRate: 86400
  EnableEmojiSupport: false
  OnlyFetchPublishedObjects: true
```

**Hail Page Controller configuration:**

- UseDefaultCss: true / false Enables the default styles on Hail Pages and articles (Using Bootstrap 4.1)

*Default configuration:*

```
Firebrand\Hail\Pages\HailPageController:
  UseDefaultCss: true
```

**Hail Recurring Fetch Task configuration:**

- Emails: Fetching errors will be sent to the following email list (comma separated), put to false if you want to disable the emails

*Default configuration:*

```
Firebrand\Hail\Tasks\FetchRecurringTask:
  Emails: ''
```

**In order to override those values you need to add a new yml file into your mysite/\_config/ folder, specifying that your configuration needs to be included after Hail's.**

*Example yml config file:*

```
---
Name: 'myhailconfig'
After:
    - '#hail-config'
---
Firebrand\Hail\Api\Client:
  EnableEmojiSupport: true
Firebrand\Hail\Tasks\FetchRecurringTask:
  Emails: 'developers@mycompany.com'
---
```

Usage
-----

[](#usage)

Once everything is configured and your Hail content is fetched you can create a Hail Page in the SilverStripe CMS to display the content on your website. The configuration of the Hail Page should be self explanatory, see screenshots below:

Hail Page configuration:

[![Hail Page config](docs/images/screen-1.PNG "Hail Page Config")](docs/images/screen-1.PNG)

Once configured and published your Hail Page should look like this (using default styles and templates):

[![Hail Page](docs/images/screen-2.PNG "Hail Page")](docs/images/screen-2.PNG)

Emojis Support
--------------

[](#emojis-support)

**IMPORTANT:** Enabling Emojis Support will change the charset and collation of your SilverStripe database to **utf8mb4** and **utf8mb4\_general\_ci** respectively.

utf8mb4 is backward compatible with utf8 so it should work with any existing or new database, we still chose to disable the feature to avoid imposing this change.

To enable Emojis support please add the following to your SilverStripe yml (following the example below) config and perform a dev/build.

*Example yml config file:*

```
---
Name: 'myhailconfig'
After:
    - '#hail-config'
---
Firebrand\Hail\Api\Client:
  EnableEmojiSupport: true
---
```

OpenGraph Support
-----------------

[](#opengraph-support)

Open Graph support is now directly included in this module, provided you use [Tractorcow's module for OG](https://github.com/tractorcow/silverstripe-opengraph)

If you wish to modify our OG implementation for Hail pages / articles, you can use [SilverStripe injection](https://docs.silverstripe.org/en/4/developer_guides/extending/injector/) to do so.

SilverStripe Elemental Support
------------------------------

[](#silverstripe-elemental-support)

We offer a pre built SilverStripe Elemental block (Hail Carousel) for you to use:

[See Hail Elemental module for installation instructions](https://github.com/firebrandhq/silverstripe-hail-elemental/)

Contributing
------------

[](#contributing)

[See CONTRIBUTING.md](CONTRIBUTING.md)

Versioning
----------

[](#versioning)

This library follows [Semver](http://semver.org). According to Semver, you will be able to upgrade to any minor or patch version of this library without any breaking changes to the public API. Semver also requires that we clearly define the public API for this library.

All methods, with `public` visibility, are part of the public API. All other methods are not part of the public API. Where possible, we'll try to keep `protected` methods backwards-compatible in minor/patch versions, but if you're overriding methods then please test your work before upgrading.

Reporting Issues
----------------

[](#reporting-issues)

Please [create an issue](https://github.com/firebrandhq/silverstripe-hail/issues) for any bugs you've found, or features you're missing.

###  Health Score

48

—

FairBetter than 93% of packages

Maintenance51

Moderate activity, may be stable

Popularity21

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity88

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 84.6% 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 ~38 days

Recently: every ~127 days

Total

94

Last Release

208d ago

Major Versions

2.2.0 → 4.4.12020-05-21

4.5.2 → 5.0.02023-02-13

2.2.2 → 5.0.12023-09-12

2.x-dev → 4.5.32024-03-11

4.5.3 → 5.0.52024-03-11

PHP version history (2 changes)4.0.4PHP ^7.1

5.0.1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/eb656fdb4734a2490b0b88295b5d35f59e0ee709611ed7b7b0fdbc33eaad2c82?d=identicon)[firebrandhq](/maintainers/firebrandhq)

---

Top Contributors

[![marc-firebrand](https://avatars.githubusercontent.com/u/33405402?v=4)](https://github.com/marc-firebrand "marc-firebrand (143 commits)")[![maxime-rainville](https://avatars.githubusercontent.com/u/1168676?v=4)](https://github.com/maxime-rainville "maxime-rainville (11 commits)")[![nlbryson](https://avatars.githubusercontent.com/u/2559758?v=4)](https://github.com/nlbryson "nlbryson (9 commits)")[![tauap](https://avatars.githubusercontent.com/u/25443413?v=4)](https://github.com/tauap "tauap (3 commits)")[![gregfirebrand](https://avatars.githubusercontent.com/u/125224032?v=4)](https://github.com/gregfirebrand "gregfirebrand (2 commits)")[![louis-firebrand](https://avatars.githubusercontent.com/u/42984300?v=4)](https://github.com/louis-firebrand "louis-firebrand (1 commits)")

---

Tags

hailsilverstripesilverstripe-hailsilverstripecontent newsHail

### Embed Badge

![Health badge](/badges/firebrandhq-silverstripe-hail/health.svg)

```
[![Health](https://phpackages.com/badges/firebrandhq-silverstripe-hail/health.svg)](https://phpackages.com/packages/firebrandhq-silverstripe-hail)
```

###  Alternatives

[spatie/laravel-export

Create a static site bundle from a Laravel app

674146.0k6](/packages/spatie-laravel-export)[oro/platform

Business Application Platform (BAP)

645143.5k115](/packages/oro-platform)[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

5.1k5.2k](/packages/shlinkio-shlink)[silverstripe/userforms

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code

1371.1M85](/packages/silverstripe-userforms)[altis/local-server

Local Server module for Altis

18221.6k3](/packages/altis-local-server)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46302.4k9](/packages/symbiote-silverstripe-advancedworkflow)

PHPackages © 2026

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