PHPackages                             trms/carousel - 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. [API Development](/categories/api)
4. /
5. trms/carousel

ActiveLibrary[API Development](/categories/api)

trms/carousel
=============

A PHP package to access Tightrope Media Systems' Carousel Software API

v0.0.5(8y ago)454MITPHP

Since Sep 15Pushed 8y ago3 watchersCompare

[ Source](https://github.com/trms/carousel-api-php)[ Packagist](https://packagist.org/packages/trms/carousel)[ RSS](/packages/trms-carousel/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (6)Dependencies (6)Versions (7)Used By (0)

[![CircleCI build badge](https://camo.githubusercontent.com/790e10aeae46b98cc6c911875b06b1747633145b6280e5ef3ec34e80126243d8/68747470733a2f2f636972636c6563692e636f6d2f67682f74726d732f6361726f7573656c2d6170692d7068702e7376673f7374796c653d736869656c6426636972636c652d746f6b656e3d3a636972636c652d746f6b656e)](https://circleci.com/gh/trms/carousel-api-php.svg?style=shield&circle-token=:circle-token)[![License](https://camo.githubusercontent.com/04254f7ea14341cc87922f8b950160b2dc5df7099032c2f0f28e9c03eac525e8/68747470733a2f2f706f7365722e707567782e6f72672f74726d732f6361726f7573656c2f6c6963656e7365)](https://packagist.org/packages/trms/carousel)[![Total Downloads](https://camo.githubusercontent.com/766dd3f1630524f3f63ac5dd7f0aca0b51c424cbd8cb2dd6ee0bcfa534041077/68747470733a2f2f706f7365722e707567782e6f72672f74726d732f6361726f7573656c2f646f776e6c6f616473)](https://packagist.org/packages/trms/carousel)[![Latest Stable Version](https://camo.githubusercontent.com/1abee664c2d30a09ebaf604090bf3ea2cd4cafcfee45704a9f4d0774a067610e/68747470733a2f2f706f7365722e707567782e6f72672f74726d732f6361726f7573656c2f76657273696f6e)](https://packagist.org/packages/trms/carousel)![Code Climate](https://camo.githubusercontent.com/4f49783929b3be3acbe99d7c8fa378fd57631bb545e0bd90b00c9a19954be2d9/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636c696d6174652f6769746875622f74726d732f6361726f7573656c2d6170692d7068702e737667)

PHP Package for the Carousel API
================================

[](#php-package-for-the-carousel-api)

This package is designed to be a fluent interface for Tightrope Media Systems' Carousel API. For more information on TRMS and the Carousel software please visit [www.trms.com](https://www.trms.com).

Carousel API
------------

[](#carousel-api)

This package requires ownership of Carousel software version 7 or greater. General information about the Carousel API can be found on your carousel server at `your_carousel_server/carouselapi`.

Package Installation
--------------------

[](#package-installation)

This package should be installed with composer and requires PHP 7+

```
composer install trms/carousel
```

[Examples](#basic-usage-examples)
---------------------------------

[](#examples)

[Servers &amp; Requests](#servers-and-requests)
-----------------------------------------------

[](#servers--requests)

[The Server Instance](#api)

[Model Requests](#modelrequest)

[File Upload Requests](#fileuploadrequest)

[Bulletin Order Requests](#bulletinorderrequest)

[Carousel Models](#models)
--------------------------

[](#carousel-models)

[Templates](#template)

[Bulletins](#bulletin)

[Bulletin &amp; Template Blocks](#bulletinblock)

[Groups](#group)

[Media](#media)

[Zones](#zone)

[Tags](#tags)

[Bulletin Sorting](#bulletin-sorting)

[Thrown Exceptions](#exceptions)
--------------------------------

[](#thrown-exceptions)

Basic Usage Examples
--------------------

[](#basic-usage-examples)

### Creating a server instance

[](#creating-a-server-instance)

Server methods that return more than one object will return a [collection](https://github.com/tightenco/collect), which can be treated like an array.

```
use TRMS\Carousel\Server\API;

$server = new Server();
$server->connect('http://my_carousel_server.com', 'username', 'password');
```

### Requesting Carousel Resources

[](#requesting-carousel-resources)

All of the requests for Carousel resources are created by instantiating a `ModelRequest` with the appropriate `Model` class name and passing that to the server's `get` method. Passing an array of parameters to the `ModelRequest` is also important so that your query is limited to the items you want to get.

For example, to get a set of bulletins in a given zone:

```
use TRMS\Carousel\Requests\ModelRequest;
use TRMS\Carousel\Models\Bulletin;

$request = new ModelRequest(Bulletin::class, ['ZoneID'=>'5','IsDeleted'=>false]);
$bulletins = $server->get($request);
```

### Saving a Resource

[](#saving-a-resource)

New or existing resources can be saved by passing them to the `save` method on a server instance.

```
use TRMS\Carousel\Models\BulletinTag;

$new_tag = new BulletinTag(['TagName'=>'My New Tag']);
$server->save($new_tag);
```

### Creating a Bulletin From A Template

[](#creating-a-bulletin-from-a-template)

Usually you will be creating new bulletins from existing templates. More information on [Templates](#template) can be found below. Please note that **all bulletins must belong to a group** and this group must be created and related to the bulletin first when saving a newly created bulletin. More information on this can be found in the section on [Bulletins](#bulletin) below.

```
use TRMS\Carousel\Requests\ModelRequest;
use TRMS\Carousel\Models\Bulletin;
use TRMS\Carousel\Models\Group;
use TRMS\Carousel\Models\Template;

$templates = $server->get(new ModelRequest(Template::class, ['ZoneID'=>'5','IsDeleted'=>false]));
$template = $templates->first(); // the server returns a Laravel Collection.
$bulletin = Bulletin::fromTemplate($templates->first());
// here you would likely modify the bulletin's 'Blocks' to alter content
$group = new Group(['ZoneID'=>'5']);
$server->save($group);
$bulletin->setGroup($group);
$server->save($bulletin);
```

### Creating Content from File Uploads

[](#creating-content-from-file-uploads)

You can create new Media and Bulletins by uploading a file to the Carousel Server. This is done by instantiating a `FileUploadRequest` with the appropriate `Model` class name and an array of parameters passed to the request. `ZoneID` is required. You will then add the files you wish to upload by chaining `addFile` methods and then pass the request to the server's `upload` method. This will return an array of models, one for each file that was added.

```
use TRMS\Carousel\Request\FileUploadRequest;
use TRMS\Carousel\Model\Media;

$request = new FileUploadRequest(Media::class, ['ZoneID'=>'5']);
$request->addFile('/path/to/local/file.jpg')->addFile('http://path/to/remote/file');

$media = $server->upload($request);
```

Entities
========

[](#entities)

Servers and Requests
--------------------

[](#servers-and-requests)

### API

[](#api)

`TRMS\Carousel\Server\API`

This represents the Carousel server itself

#### Methods

[](#methods)

MethodParametersReturnsDescriptionconnectserver origin, username, passwordself - chainableConnect to the server with a url and authentication information. be sure to include the scheme (ie:http://)whoAmInoneUser ObjectGets the currently connected user.getModelRequestModel or Collection of ModelsGet a specified resource or set of resources from the serversaveModelnullSave a modeldeleteModelnullDelete a model. Note that most resources in Carousel are soft deleted on the server and the result will be the property `IsDeleted` will be set to true.uploadFileUploadRequestCollection of ModelsUpload a file or set of files to the server to create content with.### ModelRequest

[](#modelrequest)

`TRMS\Carousel\Requests\ModelRequest`

Model requests are used to get models from the server.

#### Methods

[](#methods-1)

MethodParametersReturnsDescriptionconstructorModel ClassName, associative arrayRequest ObjectPass this the class name of the Model you would like to retrieve (ie: Bulletin::class) and an associative array of values to filter the request with. (ie: either \[id=&gt;'some\_id\_value'\] or \['ZoneID'=&gt;'5',IsDeleted=&gt;false\])### FileUploadRequest

[](#fileuploadrequest)

`TRMS\Carousel\Requests\FileUploadRequest`

File upload requests are used to post images video or audio to the server in order to create content with it either as Media assets or as Bulletins.

#### Methods

[](#methods-2)

MethodParametersReturnsDescriptionconstructorModel ClassName, associative arrayRequest ObjectPass this the class name of the Model you would like to retrieve (ie: Bulletin::class) and an associative array that determines the values to create the resource with. (ie: \['ZoneID'=&gt;'5'\]) (currently only ZoneID is supported and its also required)addFilestringself - chainableThe URL or file path of the file to upload to the server### BulletinOrderRequest

[](#bulletinorderrequest)

`TRMS\Carousel\Requests\BulletinOrderRequest`

Bulletin order requests are used to get the Group/Bulletin order for a given Zone. A ZoneID is required as a parameter when creating the request. For more information see the section on [bulletin sorting](#bulletin-sorting) below.

#### Methods

[](#methods-3)

MethodParametersReturnsDescriptionconstructorassociative arrayRequest ObjectPass this an associative array of values to filter the request with. (ie:\['ZoneID'=&gt;'5'\])Models
------

[](#models)

MethodParametersReturnsDescriptionconstructorassociative arrayselfConstructor for the class, properties passed to it will be used to define the Model.savenonenoneThis is a convenience method for saving previously persisted models. For newly instantiated models this function will throw a `CarouselModelException`. Use the API's `save` method to save new models.deletenonenoneThis is a convenience method for deleting previously persisted models. For newly instantiated models this function will throw a `CarouselModelException`.### Bulletin

[](#bulletin)

`TRMS\Carousel\Models\Bulletin`

A Bulletin is a piece of content displayed in Carousel. The closest analogy would be a slide in a power point deck.

#### Methods

[](#methods-4)

MethodParametersReturnsDescriptionfromTemplate (static)Template ObjectBulletin ObjectCreate a new unsaved bulletin from a template.resolvePartialnonenoneResolves partial bulletins by getting them by id from the server. See the property `PartialBulletin` for more information. This function is called when trying to save partial bulletins.**Relationships**setBackgroundMedia Objectself - chainableSets the background Media to be used in this model.getBackgroundnoneMedia ObjectGets the related background Media model.addBlockBlock Objectself - chainableAdd a Block relationship to the model.removeBlockBlock Objectself - chainableRemove a Block relationship from the model.setGroupGroup Objectself - chainableSets the Group for this bulletingetGroupnoneGroup ObjectGets the group for this bulletinaddTagTag Objectself - chainableAdd a Tag relationship to the model.removeTagTag Objectself - chainableRemove a Tag relationship from the model.setUserUser Objectself - chainableSets the User to be used in this model.getUsernoneUser ObjectGets the related User model.**Scheduling**resetSchedulednoneself - chainableResets the `DateTimeOn` and `DateTimeOff` to today and `IsScheduled` to false.setScheduleDateTime, DateTimeself - chainableSets the `DateTimeOn` and `DateTimeOff` propertiessetDateTimeOnDateTimeself - chainableSets the `DateTimeOn` property.setDateTimeOffDateTimeself - chainableSets the `DateTimeOff` property.resetCycleTimesnoneself - chainableResets the `CycleTimeOn` and `CycleTimeOff` to be 'on all day'.setCycleTimesDateTime, DateTimeself - chainableSets the `CycleTimeOn` and `CycleTimeOff` properties.setCycleTimeOnDateTimeself - chainableSets the `CycleTimeOn` property.setCycleTimeOffDateTimeself - chainableSets the `CycleTimeOff` property.setDaysOnAllboolean (default true)self - chainableSets display property for all days.setDaysOnWeekendboolean (default true)self - chainableSets display property for weekends.setDaysOnWeekdaysboolean (default true)self - chainableSets display property for weekdays.setDaysOn{Dayname}boolean (default true)self - chainableSets display property for a single day of the week (ie: `setDaysOnSaturday()`).#### Properties

[](#properties)

PropertytypeDescriptionidstringThis is set by the server and not editable.BlocksarrayAn array of Block objectsDescriptionstringThe description of the BulletinDwellTimeintHow long the bulletin displays each rotation.UseSystemDwellTimebooleanShould the system decide how long this bulletin displays each rotation, if false use the defined dwell time.IsAlertbooleanIs this Bulletin an alert bulletin? Alerts will override any non-alert content in a zone.IsDeletedbooleanSoft deletion property, soft deleted bulletins will be cleaned up and permanently deleted after a time.IsScheduledbooleanDoes this bulletin respect the DateTimeOn and DateTimeOff valuesDateTimeOnstringThe date and time the bulletin will begin playing. (there are helper methods for setting this value)DateTimeOffstringThe date and time the bulletin will stop playing. (there are helper methods for setting this value)CycleTimeOnstringThe time the bulletin will begin playing each day it is scheduled Only the time portion of this is used by the server. (there are helper methods for setting this value)CycleTimeOffstringThe time the bulletin will stop playing each day it is scheduled Only the time portion of this is used by the server. (there are helper methods for setting this value)WeekdayOnOffintA bit-field representation of the days of the week that this bulletin will play during its schedule. (there are helper methods for setting this value)WeekdayOnOffDescriptionstring (read only)A human readable representation of the WeekdayOnOff value.IsRepeatingbooleanDoes this bulletin repeat playback every Nth bulletin.RepeatIntervalintHow often a repeating bulletin repeats.LastUpdatestringDate and time of the last rendering of this bulletin.LastErrorstringThe last error encountered when rendering this bulletinPartialBulletinboolean (read only)Getting bulletins from the server via any query other than `id` will result in a partial bulletin. Partial bulletins do not contain some relationship data including Blocks and many of the properties for dynamic bulletins, if you need to act on these properties call `resolvePartial()` in order to get those properties from the server.Statusenumerable (read only)One of the following values: Current, Queued, Hold, Old, Saved, Current-Null (no dynamic content), Current-ErrorTagsarrayAn Array of Tag ObjectsTrackImpressionsbooleanShould the service track each time this bulletin is played on a playerImpressionCountintThe number of times a tracked bulletin has played on a playerTypeenumerableThe type of bulletin, Bulletins created from templates are `Standard`. There are several dynamic Bulletin types that all have their own set of properties related to the dynamic content. (future updates may outline these better)PreviewImageUrlstringA low resolution rendering of the templateFullImageUrlstringA full resolution rendering of the template### Template

[](#template)

`TRMS\Carousel\Models\Template`

A template is the starting point for a standard Bulletin and is comprised of a background image and a series of content Blocks.

#### Methods

[](#methods-5)

MethodParametersReturnsDescriptionsetBackgroundMedia Objectself - chainableSets the background Media to be used in this modelgetBackgroundnoneMedia ObjectGets the related background Media modeladdBlockBlock Objectself - chainableAdd a Block relationship to the modelremoveBlockBlock Objectself - chainableRemove a Block relationship from the modelsetUserUser Objectself - chainableSets the User to be used in this modelgetUsernoneUser ObjectGets the related User modelsetZoneZone Objectself - chainableSets the Zone to be used in this modelgetZonenoneZone ObjectGets the related Zone model#### Properties

[](#properties-1)

PropertytypeDescriptionidstringThis is set by the server and not editable.NamestringThe name of the templateTagsarrayAn Array of Tag ObjectsIsPublicbooleanIs this template viewable by all users in the Carousel UIBlocksarrayAn array of Block objectsPreviewImageUrlstringA low resolution rendering of the templateFullImageUrlstringA full resolution rendering of the template### BulletinBlock

[](#bulletinblock)

`TRMS\Carousel\Models\BulletinBlock`

A BulletinBlock is an area of content within a `Bulletin` or a `Template`. Blocks can be `Text`, `Picture`, `Video`, or `WebPicture`. Text blocks are just that, blocks containing text. Picture and Video blocks will take a Media Object. WebPicture blocks take the URL of an image. There are many properties on a block some of which apply to only one of the four `BlockType`s. Many have several properties that are used to make an effect, like a drop shadow or a text glow.

#### Methods

[](#methods-6)

MethodParametersReturnsDescriptionsetMediaMedia Objectself - chainableSets the Media to be used in this model and sets the `blockType` to the corresponding Media type.getMedianoneMedia ObjectGets the related Media model.#### Properties

[](#properties-2)

PropertytypeDescriptionBlockTypeenumerableIndicates the type of the block: `Rectangle`, `Ellipse`, `Text`, `Picture`, `WebPicture`, `Video`NamestringThe name of the block**Size and Position**XintThe x coordinate of the upper left corner of the block.YintThe y coordinate of the upper left corner of the block.WidthintThe width in pixels of the block.HeightintThe height in pixels of the block.RotateDegrees:intThe rotation of the block in degrees**Text Basic**TextstringThe text to be displayed in a text blockAutoSizeTextbooleanIf the block should auto size the text to fill the available block. If false the `TextSize` will be usedTextSizeintThe font size in points**Text Style**TextFontstringThe font name of an installed font. (this is a relationship, getting the installed fonts is not currently supported in this package)TextBoldbooleanBold stylingTextItalicbooleanItalic stylingTextStrikeoutbooleanStrikeout stylingTextUnderlinebooleanUnderline styling**Text Color**TextColorcss color valueThe text colorTextColorOpacityfloat 0-1The opacity of the text**Text Alignment**TextHorizAlignmentenumerableThe horizontal alignment of the text: `Near`,`Far`,`Center`TextVertAlignmentenumerableThe horizontal alignment of the text: `Near`,`Far`,`Center`TextRightToLeftbooleanDraw the text right to leftTextWrapbooleanShould the text line wrap**Text Gradient Fill**TextGradientbooleanEnable text gradientTextGradientColorcss color valueThe color of the gradientTextGradientModeenumerableThe direction of the gradient: `Horizontal`,`Vertical`,`ForwardDiagonal`,`BackwardDiagonal`TextGradientOpacityfloat 0-1The opacity of the gradient**Text Stroke**TextOutlinebooleanEnable text strokeTextOutlineColorcss color valueThe color of the strokeTextOutlineOpacityfloat 0-1The opacity of the stroke**Text Drop Shadow**TextShadowbooleanEnable text shadowTextShadowColorcss color valueThe color of the shadowTextShadowDepthintValue in pixels of the shadow depthTextShadowOpacityfloat 0-1The opacity of the shadow**Text Glow**TextGlowbooleanEnable text glowTextGlowColorcss color valueThe color of the text glow**Block Color Fill**RectColorcss color valueThe background fill of the blockRectColorOpacityfloat 0-1The opacity of the fill**Block Gradient**RectGradientbooleanRectGradientColorcss color valueThe color of the gradientRectGradientModeenumerableThe direction of the gradient: `Horizontal`,`Vertical`,`ForwardDiagonal`,`BackwardDiagonal`RectGradientOpacityfloat 0-1The opacity of the gradient**Block Stroke**RectOutlinebooleanEnable block strokeRectOutlineColorcss color valueThe color of the strokeRectOutlineWidthintThe width in pixels of the strokeRectOutlineOpacityfloat 0-1The opacity of the stroke**Block Drop Shadow**RectShadowbooleanEnable block shadowRectShadowColorcss color valueThe color of the shadowRectShadowDepthintValue in pixels of the shadow depthRectShadowOpacityfloat 0-1The opacity of the shadow**Block Reflection**ReflectionbooleanEnable block reflectionReflectionOffsetintValue in pixels of the reflection offsetReflectionHeightintValue in pixels of the reflection heightReflectionOpacityfloat 0-1The opacity of the reflection**Picture Block**HorizAlignmentenumerableThe horizontal position of the image in the block: `Left`,`Center`,`Right`VertAlignmentenumerableThe vertical position of the image in the block: `Top`,`Center`,`Bottom`MaintainAspectRatiobooleanShould the image stretch to fill the block**Web Picture Block**ImageURLstringURL of a remote image asset### Group

[](#group)

`TRMS\Carousel\Models\Group`

A group is a container for Bulletins that allows for easier viewing sorting and ordering. Of important note is that every Bulletin is contained in a Group and must have a saved Group assigned before saving. (full support of editing groups is a work in progress for this package.)

#### Methods

[](#methods-7)

MethodParametersReturnsDescriptionsetZoneZone Objectself - chainableSets the Zone to be used in this modelgetZonenoneZone ObjectGets the related Zone model#### Properties

[](#properties-3)

PropertytypeDescriptionidstringThis is set by the server and not editable.DescriptionstringThe name of the GroupBulletinsarrayAn array of Bulletin Objects### Media

[](#media)

`TRMS\Carousel\Models\Media`

Media represents audio, video images and backgrounds to be used in Bulletins and Templates. This content is Zone specific for Carousel UI users. When uploading backgrounds the media type must be specified or the system will assume that it is an image. Backgrounds should also be sized for the Zone they are intended for to avoid distorting the image. Video content should be mp4.

#### Methods

[](#methods-8)

MethodParametersReturnsDescriptionsetUserUser Objectself - chainableSets the User to be used in this modelgetUsernoneUser ObjectGets the related User modeladdTagTag Objectself - chainableAdd a Tag relationship to the model.removeTagTag Objectself - chainableRemove a Tag relationship from the model.setZoneZone Objectself - chainableSets the Zone to be used in this modelgetZonenoneZone ObjectGets the related Zone model#### Properties

[](#properties-4)

PropertytypeDescriptionidstringThis is set by the server and not editable.NamestringThe name of the MediaTypeenumerableThe type of media it is: `Background`,`Picture`,`Sound`,`Video`TagsarrayAn Array of Tag ObjectsIsDeletedbooleanSoft deletion property, soft deleted media will remain on the system until no Bulletins or Templates use it.IsPublicbooleanIs this media viewable by all users in the Carousel UIPreviewImageUrlstringA low resolution rendering of the Media. For video and audio this is simply an icon.FullUrlstringThe url of the asset### Zone

[](#zone)

`TRMS\Carousel\Models\Zone`

A Zone is an area of real estate on screen where bulletins are displayed. The screen (Channel) can be comprised of one or more Zones.

#### Methods

[](#methods-9)

MethodParametersReturnsDescriptionaddTagZoneTag Objectself - chainableAdd a Tag relationship to the modelremoveTagZoneTag Objectself - chainableRemove a Tag relationship from the model#### Properties

[](#properties-5)

PropertytypeDescriptionidstringThis is set by the server and not editable.AlertsActiveboolean (read only)Are there active alerts in this zone.DaylightSavingsbooleanIs daylight savings time respectedDefaultTransitionstringthe id of the default transition used in this zone (future updates may make this a model relationship)DescriptionstringThe description of the Zone.ExcludedWordsstringA comma separated list of words that shouldnt be allowed to be shown in the Zone.ForceMonitorOnbooleanShould the monitor be forced on during full screen alerts.GraphicsHeightintegerThe height of the Zone in pixelsGraphicsWidthintegerThe width of the Zone in pixelsPacingfloatA number from 0 to 1 that represents the relative pacing of bulletins when the system decides dwell time.TagsarrayAn array of ZoneTag objectsTimezoneIDstringThe id of the timezone used by this Zone (future updates may make this a model relationship)ZoneNamestringThe name of the ZoneZoneTypeenumerableThe zone type: 'Bulletin','Crawl' or 'FullAlert'. More information can be found in Carousel HelpTags
----

[](#tags)

Tags are metadata that can be added to the associated model. They are used for searching and sorting content in Carousel.

### BulletinTag

[](#bulletintag)

`TRMS\Carousel\Models\BulletinTag`

### MediaTag

[](#mediatag)

`TRMS\Carousel\Models\MediaTag`

### ZoneTag

[](#zonetag)

`TRMS\Carousel\Models\ZoneTag`

#### Methods

[](#methods-10)

#### Properties

[](#properties-6)

PropertytypeDescriptionidstringThis is set by the server and not editable.TagNamestringThe text of the tagBulletin Sorting
----------------

[](#bulletin-sorting)

These objects are used for ordering the Bulletins in a Zone.

### BulletinOrder

[](#bulletinorder)

`TRMS\Carousel\Models\BulletinOrder`

This represents the order of the Groups in a Zone. Each BulletinOrderEntry represents a Group. The order of the `OrderEntries` array will be the order of the Groups in the Zone.

#### Properties

[](#properties-7)

PropertytypeDescriptionidstringThis is set by the server and not editable.OrderEntriesarrayAn ordered array of BulletinOrderEntry objects. Their order represents the order of Groups in a Zone.### BulletinOrderEntry

[](#bulletinorderentry)

`TRMS\Carousel\Models\BulletinOrderEntry`

This represents a Group and the order of its Bulletins. The order of the `Bulletins` array will be the order of the Bulletins in the Group.

#### Properties

[](#properties-8)

PropertytypeDescriptionidstringThis is set by the server and not editable.BulletinsarrayAn ordered array of Bulletin ids. Their order represents the order of Bulletins in the Group.Exceptions
----------

[](#exceptions)

You can expect the following exceptions to be thrown if things go off the rails with the server, or if you attempt to do things that are unsupported or not allowed.

`TRMS\Carousel\Exceptions\CarouselAPIException``TRMS\Carousel\Exceptions\CarouselModelException``TRMS\Carousel\Exceptions\CarouselRequestException`

###  Health Score

27

—

LowBetter than 46% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~27 days

Total

6

Last Release

3118d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5841416?v=4)[Seth Phillips](/maintainers/sethphillips)[@sethphillips](https://github.com/sethphillips)

---

Top Contributors

[![sethphillips](https://avatars.githubusercontent.com/u/5841416?v=4)](https://github.com/sethphillips "sethphillips (41 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/trms-carousel/health.svg)

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.9k556.2M21.3k](/packages/laravel-framework)[statamic/cms

The Statamic CMS Core Package

4.9k3.8M1.1k](/packages/statamic-cms)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3661.3M49](/packages/tencentcloud-tencentcloud-sdk-php)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

353.6k](/packages/eslazarev-wildberries-sdk)[lion/bundle

Lion-framework configuration and initialization package

132.4k5](/packages/lion-bundle)[files.com/files-php-sdk

Files.com PHP SDK

2482.9k](/packages/filescom-files-php-sdk)

PHPackages © 2026

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