Files
laravel-cision-feed/readme.md
T
mathiaspalmqvist 392aec8529
Fix PHP code style issues / php-code-styling (push) Waiting to run
PHPStan / phpstan (push) Waiting to run
run-tests / P8.3 - L11.* - prefer-lowest - ubuntu-latest (push) Waiting to run
run-tests / P8.3 - L11.* - prefer-stable - ubuntu-latest (push) Waiting to run
run-tests / P8.4 - L11.* - prefer-lowest - ubuntu-latest (push) Waiting to run
run-tests / P8.4 - L11.* - prefer-stable - ubuntu-latest (push) Waiting to run
run-tests / P8.3 - L12.* - prefer-lowest - ubuntu-latest (push) Waiting to run
run-tests / P8.3 - L12.* - prefer-stable - ubuntu-latest (push) Waiting to run
run-tests / P8.4 - L12.* - prefer-lowest - ubuntu-latest (push) Waiting to run
run-tests / P8.4 - L12.* - prefer-stable - ubuntu-latest (push) Waiting to run
dependabot-auto-merge / dependabot (pull_request_target) Skipped
Fix packaging, timezone handling and HTML cleaning bugs
- Replace symfony 7.4.x-dev constraints with stable ranges so the
  package installs with minimum-stability stable
- Add the Cision facade referenced in composer.json and a config file
  (slug, timezone); the constructor now falls back to config('cision.slug')
- Convert feed timestamps with a real timezone instead of a hardcoded +2h,
  which was off by an hour during winter time
- Return false from fetchContent() when the request fails or the page
  has no article/heading, instead of throwing
- Fix italic paragraph detection, which never matched
- Fix literal '\n' in HtmlCleaner whitespace cleanup
- Normalize empty feed elements to empty strings
- Update README and add tests for the above
2026-11-11 20:37:05 +01:00

110 lines
3.1 KiB
Markdown

# Laravel Cision Feed
[![Latest Version on Packagist](https://img.shields.io/packagist/v/mattitjaab/laravel-cision-feed.svg?style=flat-square)](https://packagist.org/packages/mattitjaab/laravel-cision-feed)
[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/mattitjaab/laravel-cision-feed/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/mattitjaab/laravel-cision-feed/actions?query=workflow%3Arun-tests+branch%3Amain)
[![GitHub Code Style Action Status](https://img.shields.io/github/actions/workflow/status/mattitjaab/laravel-cision-feed/fix-php-code-style-issues.yml?branch=main&label=code%20style&style=flat-square)](https://github.com/mattitjaab/laravel-cision-feed/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)
[![Total Downloads](https://img.shields.io/packagist/dt/mattitjaab/laravel-cision-feed.svg?style=flat-square)](https://packagist.org/packages/mattitjaab/laravel-cision-feed)
A Laravel package for retrieving and parsing data from [Cision News](https://news.cision.com/se). Fetch press releases, financial reports, media posts, and structured article content using a simple and expressive API.
---
## Features
- Retrieve Cision RSS feeds by type (Press, News, Financial, Media)
- Parse article pages and extract clean structured HTML
- Automatically handles encoding, formatting, and clean-up of content
- Fully testable and extensible
---
## Installation
```bash
composer require mattitjaab/laravel-cision-feed
```
Set your Cision newsroom slug in your `.env`:
```
LARAVEL_CISION_FEED_SLUG=your-cision-slug
```
Optionally publish the config file:
```bash
php artisan vendor:publish --tag="laravel-cision-feed-config"
```
Feed timestamps (`created_at`) are converted to `Europe/Stockholm` by default. Override with `LARAVEL_CISION_FEED_TIMEZONE`.
---
## Usage
```php
use Mattitja\Cision\Cision;
$cision = new Cision(); // uses config('cision.slug')
$cision = new Cision('other-company'); // or pass a slug explicitly
// Fetch RSS entries
$items = $cision->press(); // or ->news(), ->financial(), ->media()
// Fetch full content for a specific article
$article = $cision->fetchContent('https://news.cision.com/se/example-company/r/your-article-slug,c1234567');
echo $article['header']; // Article headline
echo $article['published_at']; // ISO timestamp
echo $article['content']; // Clean HTML
```
Or use the facade:
```php
use Mattitja\Cision\Facades\Cision;
$items = Cision::press();
```
All methods return `false` if the request fails or the response cannot be parsed.
---
## Testing
```bash
composer test
```
---
## Changelog
See [CHANGELOG](CHANGELOG.md) for recent changes.
---
## Contributing
Contributions are welcome! Please open an issue or pull request.
---
## Security
If you discover any security-related issues, please refer to our [security policy](../../security/policy).
---
## Credits
- [Mattitja AB](https://github.com/MattitjaAB)
- [All Contributors](../../contributors)
---
## License
The MIT License (MIT). See [LICENSE](LICENSE.md) for details.