PHPackages                             msx-developer/portal - 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. msx-developer/portal

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

msx-developer/portal
====================

Pacote simples para listagem dos dados de um portal

v1.5.13(5mo ago)1139MITPHPPHP &gt;=7.1

Since Nov 6Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/msx-developer/portal)[ Packagist](https://packagist.org/packages/msx-developer/portal)[ RSS](/packages/msx-developer-portal/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (2)Versions (38)Used By (0)

Msx Portal
==========

[](#msx-portal)

Descrição
---------

[](#descrição)

O projeto Msx Portal fornece uma maneira simples e eficiente de interagir com o Msx Portal. Essa biblioteca permite que você recupere e manipule facilmente dados do portal.

Instalação
----------

[](#instalação)

Para instalar a biblioteca do Msx Portal, execute o seguinte comando em seu terminal:

```
composer require msx-developer/portal --with-dependencies
```

Configurar
----------

[](#configurar)

Adicione no arquivo ENV com as configurações de conexão de banco de dados e do elasticsearch

```
DB_MSX_CONNECTION=mysql
DB_MSX_HOST=localhost
DB_MSX_PORT=3306
DB_MSX_DATABASE=portal_db
DB_MSX_USERNAME=user
DB_MSX_PASSWORD=pass
DB_MSX_PORTAL=1
DB_MSX_URL_ADMIN=http://admin.local/

DB_MSX_ELASTICSEARCH_HOST=localhost
DB_MSX_ELASTICSEARCH_PORT=9200
DB_MSX_ELASTICSEARCH_PASSWORD=pass
DB_MSX_ELASTICSEARCH_USER=user
DB_MSX_ELASTICSEARCH_PREFIX=client_

```

Exemplo de uso
--------------

[](#exemplo-de-uso)

Este exemplo cria uma nova instância da classe PortalController e a usa para recuperar uma lista de materias, no caso a de id 1159146. Os dados resultantes são armazenados na variável $map.

```
$portal = new \Msx\Portal\Controllers\PortalController();
$map = $portal->getMaterias([1159146]);
```

No exemplo abaixo um site é listado contendo os dados do mesmo, suas seções e as matérias das seções

```
$cod_site = 278;
$portal = new \Msx\Portal\Controllers\PortalController();
$dados_site = $portal->getSites($cod_site);
$secoes_site = $portal->getSecoes($cod_site);
foreach ($secoes_site as $key => $value)
    $secoes_site[$key]['noticias'] = $portal->getMateriasSesit($value['cd_sesit']);
```

Habilitando o fivelive, para tal, as funções usadas serão:

- Barra de botões da notícias, parametro é o array com os dados de uma notícia

```
{!! $fivelive::fivelive($noticia) !!}
```

- Barra edição do texto da notícia, para o parâmetro do nome do campo os valores são: ds\_matia\_titlo, ds\_matia\_assun, ds\_matia\_chape, ds\_marep\_titlo

```
{!! $fivelive::fivelive($noticia, "ds_matia_titlo") !!}
```

- Atributos de imagem para edição via fivelive, os parâmetros são: código da mídia, o array das mídias da matéria e o código da publicação da notícia

```
{{ $fivelive::getMidia($midia['cd_midia'], $midias, ($noticia['cd_publi'] ?? null) ) }}
```

Exemplo completo com a implementação dos itens listados acima:

```

{!! $fivelive::fivelive($noticia) !!}

        @if($noticia['cd_midia'] != "" && isset($noticia['midmas'][$noticia['cd_midia']]))
        @php
            $midias = $noticia['midmas'][$noticia['cd_midia']]['midias'];
            $midia = isset($midias['480x320']) ? $midias['480x320'] : end($midias);
        @endphp

        @endif

            {!! $fivelive::fivelive($noticia, "ds_matia_assun") !!}

            {!! $fivelive::fivelive($noticia, "ds_matia_titlo") !!}

         {!! $fivelive::fivelive($noticia, "ds_matia_chape") !!}

            {{ date('d/m/Y H:i', strtotime($noticia['dt_matia_publi'])) }}

```

- Para habilitar os scripts que tornam a barra de botões funcionais são necessários a exibição dos dos atributos listados abaixo:

    - Na tag head do html

    ```
    {!! $site['fivelive']['scriptTop'] !!}
    ```

    - Antes do fim da tag body

    ```
    {!! $site['fivelive']['scriptBottom'] !!}
    ```

    - Exemplo completo

    ```
    //site.blade.php
    @extends('layout.news')

    @section('content')

    @if( isset($secoes) && is_array($secoes) && count($secoes) > 0)
        @foreach($secoes as $secao){{dd($secao);}}

        @if(isset($fivelive))
        {!! $fivelive::fivelive($secao) !!}
        @endif
        {{$secao['nm_sesit']}}

        @endforeach
    @endif

    @endsection

    @section('scriptTop')
    @if(isset($site) && isset($site['fivelive']))
    {!! $site['fivelive']['scriptTop'] !!}
    @endif
    @endsection

    @section('scriptBottom')
    @if(isset($site) && isset($site['fivelive']))
    {!! $site['fivelive']['scriptBottom'] !!}
    @endif
    @endsection
    ```

    ```

    DOCTYPE html>

        {{ config('app.name') }}

        @yield('scriptTop')

        @yield('content')
        @yield('scriptBottom')

    ```

    Funções de busca de matérias com dados do elasticsearch:

    - Busca geral por termos

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    // termo buscado
    $texto = $request->input('q');
    $parametros = ['q' => $texto];
    $materias = $search->busca($parametros);
    ```

    - Busca geral por tags

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    //texto contendo as tags divididas por ','
    $tags = $request->input('tags');
    $parametros = ['q' => $tags];
    $materias = $search->tags($parametros);
    ```

    - Busca geral por autor

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    //texto contendo os autores divididos por ','
    $autores = $request->input('autores');
    $parametros = ['q' => $autores];
    $materias = $search->autor($parametros);
    ```

    - Busca por tags relacionadas a um matéria

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    //texto contendo as tags da matéria divididas por ','
    $tags = $request->input('tags');
    //identificador da matéria
    $id = $request->input('id');
    $parametros = ['q' => $autores, 'cd_matia' => $id];
    $materias = $search->related($parametros);
    ```

    - Outros filtros relacionados as funções acima

    ```
    //Nome do site
    $site = $request->input('site');
    //Identidicador do site
    $idSite = $request->input('id');
    //Número da página
    $page = $request->input('page');
    //Quantidade de itens por página
    $site = $request->input('size');

    $parametros = [
        'ds_site' => $site,
        'cd_site' => $cd_site,
        'qtd' => $size,
        'page' => $page
    ];
    ```

    - Exemplo completo

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    $size = 30; //padrão 10
    $requestData = $request->all();

    $q = $requestData['q'];
    $cd_site = $requestData['site'] ?? null;
    $page = $requestData['page'] ?? 1;
    $cd_matia = $requestData['id'] ?? null;

    $parametros = compact('q', 'cd_site', 'page', 'cd_matia');

    $materias = [];

    if ($request->is('search/*')) {
        $materias = $search->busca($parametros);
    }

    if ($request->is('tags/*')) {
        $materias = $search->tags($parametros);
    }

    if ($request->is('autor/*')) {
        $materias = $search->autor($parametros);
    }

    if ($request->is('related/*')) {
        $materias = $search->related($parametros);
    }
    ```

    Função de busca de mídias com dados do elasticsearch:

    - Busca por pasta

    ```
    use Msx\Portal\Controllers\SearchController;
    $search = new SearchController();

    // id da pasta de mídias
    $id = $request->input('id');
    $charges = $search->midia(['cd_fldmd' => $id]);
    ```

    Funções para listagem de notícias via xml

    - Dependência: como existem xml's que é formatado via .xsl, adicionar o sitemap.xml na pasta public (raíz da navegação)
    - sitemap de notícias recentes (/sitemap.xml)

    ```
    Route::get('sitemap.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => $type ?? 'sitemap'];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('sitemap');
    ```

    - sitemap de notícias recentes no formato para googlenews (/sitemap-news.xml)

    ```
    Route::get('sitemap-news.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => $type ?? 'googlenews'];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('googlenews');
    ```

    - sitemap de notícias recentes (/sitemap-rss.xml)

    ```
    Route::get('sitemap-rss.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => $type ?? 'rss'];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('rss');
    ```

    - sitemap index de sitemaps de notícias (/sitemap-index.xml)

    ```
    Route::get('sitemap-index.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => $type ?? 'index'];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('index');
    ```

    - sitemap index de sitemaps de notícias com paginação (/sitemap-index-(\[0-9\]\*).xml)

    ```
    Route::get('/sitemap/map/{page}.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => $type ?? 'index'];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->where('page', '[0-9]+')->name('indexmap');
    ```

    - sitemap de notícias por site recentes (/(.\*)/sitemap.xml)

    ```
    Route::get('/{site}/sitemap.xml', function (Request $request) {
        $type = $request->input('type');
        $params = ['type' => 'sitemap', 'site' => $site];
        $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
        return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->where('site', '.+')->name('sitemapSite');
    ```

    - sitemap de notícias do dia (/sitemap-day.xml)

    ```
    Route::get('sitemap-day.xml', function (Request $request) {
       $type = $request->input('type');
       $params = ['type' => 'sitemap', 'date' => 'today'];
       $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
       return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('sitemapDay');
    ```

    - sitemap de notícias das últimas 48 horas (/sitemap-yesterday.xml)

    ```
    Route::get('sitemap-yesterday.xml', function (Request $request) {
       $type = $request->input('type');
       $params = ['type' => 'sitemap', 'date' => 'yesterday'];
       $xmlContent = (new \Msx\Portal\Controllers\SitemapController())->sitemap($params);
       return response($xmlContent, 200)->header('Content-Type', 'application/xml; charset=utf-8');
    })->name('sitemapYesterday');
    ```

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance71

Regular maintenance activity

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.7% 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 ~10 days

Recently: every ~33 days

Total

37

Last Release

165d ago

PHP version history (2 changes)v1.0PHP &gt;=7.4

v1.1.1PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/cd171f7e95eb8fafe357379a657fdfc78a4fe7fc8f9d95d5d5b842c432e94fbf?d=identicon)[MSX Contents](/maintainers/MSX%20Contents)

---

Top Contributors

[![Igor-Boldt](https://avatars.githubusercontent.com/u/56409984?v=4)](https://github.com/Igor-Boldt "Igor-Boldt (12 commits)")[![alopesfivecom](https://avatars.githubusercontent.com/u/87090912?v=4)](https://github.com/alopesfivecom "alopesfivecom (2 commits)")

### Embed Badge

![Health badge](/badges/msx-developer-portal/health.svg)

```
[![Health](https://phpackages.com/badges/msx-developer-portal/health.svg)](https://phpackages.com/packages/msx-developer-portal)
```

###  Alternatives

[honeybee/honeybee

Library for implementing CQRS driven, event-sourced and distributed architectures.

222.1k4](/packages/honeybee-honeybee)

PHPackages © 2026

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