PHPackages                             d3yii2/d3activity - 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. d3yii2/d3activity

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

d3yii2/d3activity
=================

Activity registry

0424PHP

Since Jan 15Pushed 5mo ago3 watchersCompare

[ Source](https://github.com/d3yii2/d3activity)[ Packagist](https://packagist.org/packages/d3yii2/d3activity)[ RSS](/packages/d3yii2-d3activity/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (5)Used By (0)

[![Yii2](https://camo.githubusercontent.com/d6b0929173e28cc627430d2519ca1853466a70f37395877eaf4820cb3e1e1909/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506f77657265645f62792d5969695f4672616d65776f726b2d677265656e2e7376673f7374796c653d666c6174)](https://www.yiiframework.com/)

Activity registry
=================

[](#activity-registry)

Registre models activities and get activity lists

Features
--------

[](#features)

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

[](#installation)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

Either run

```
$ composer require d3yii2/d3activity "*"

```

or add

```
"d3yii2/d3activity": "*"

```

to the `require` section of your `composer.json` file.

DB
--

[](#db)

[![DB strukture](https://github.com/d3yii2/d3activity/raw/master/doc/DB.png)](https://github.com/d3yii2/d3activity/blob/master/doc/DB.png)

Defining component
------------------

[](#defining-component)

Register and list

```
    'components' => [
        'activityList' => [
            'class' => 'd3yii2\d3activity\components\D3ActivityList',
            'sysCompanyId' => static function () {
                return \Yii::$app->SysCmp->getActiveCompanyId();
            },
            'models' => [
                [
                    'class' => 'd3modules\d3invoices\models\InvInvoice',
                    'detailClass' => 'd3modules\d3invoices\components\InvInvoiceD3Activity'
                ]
            ],
        ],
        'activityRegistar' => [
            'class' => 'd3yii2\d3activity\components\DbActivityRegistar',
            'sysCompanyId' => static function () {
                return \Yii::$app->SysCmp->getActiveCompanyId();
            },
            'userId' => static function () {
                return \Yii::$app->user->id;
            }

        ],
    ]
```

Emailing last activities for some companies

```
 'components' =>
    [
        'activityEmail' => [
            'class' => 'd3yii2\d3activity\components\DailyActivityNotification',
            /** filter activities by models */
            'activityModelClassNames' => [
                'd3yii2\d3pop3\models\D3pop3Email',
                'dektrium\user\models\User',
            ],
            'fromMail' => 'net@irekini.lv',
            /** limitation for comanies.  */
            'sysCompaniesEmails' => [62 => 'uldis@weberp.lv'],
            'companyName' => static function(int $companyId) {
                if (!$company = \yii2d3\d3persons\models\D3cCompany::findOne($companyId)) {
                    return null;
                }
                return $company->name;
            },
            'subject' => 'Company {sysCompanyName} activities'
        ],
    ]
```

Emailing last activities for multiple companies

```
 'components' =>
    [
        'activityEmail' => [
            'class' => 'd3yii2\d3activity\components\DailyActivityNotification',
            /** filter activities by models */
            'activityModelClassNames' => [
                'd3yii2\d3pop3\models\D3pop3Email',
                'dektrium\user\models\User',
            ],
            'fromMail' => 'net@irekini.lv',
            /** limitation for comanies.  */
            //'sysCompaniesIds' => [62],
            'companyName' => static function(int $companyId) {
                if (!$company = \yii2d3\d3persons\models\D3cCompany::findOne($companyId)) {
                    return null;
                }
                return $company->name;
            },
            'getCompanyEmail' => static function(int $companyId) {
                    $sql = '
                SELECT
                    u.email
                FROM
                    user u
                    LEFT OUTER JOIN auth_assignment aa
                      ON aa.user_id = u.id
                WHERE
                    aa.sys_company_id = :id
                    AND aa.item_name = :item_name
                    LIMIT 1
                ';

                    $param = [
                        ':id' => $companyId,
                        ':item_name' => 'CompanyOwner',
                    ];

                    return Yii::$app
                        ->getDb()
                        ->createCommand($sql, $param)
                        ->queryColumn();
            },
            'subject' => 'Company {sysCompanyName} activities'
        ],
    ]
```

Usage
-----

[](#usage)

Registr eactivity

```
    Yii::$app
        ->activityRegistar
        ->registerModel(
            $model,
            $this->route,
            ArrayHelper::filter($deliveryModel->attributes,[
                'recipient_person'
            ])
        );
```

Get activity record list

```
        $sysModelIdA = SysModelsDictionary::getIdByClassName(TestModel::class);
        $sysModelIdB = SysModelsDictionary::getIdByClassName(self::TEST_CLASS_NAME);
        Yii::$app->activityList->filter = [ActivityConfig::PARTNER_ID => 44];
        $list = Yii::$app
            ->activityList
            ->getDescList([$sysModelIdA,$sysModelIdB]);
```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance48

Moderate activity, may be stable

Popularity14

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 Bus Factor1

Top contributor holds 76.1% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/542187ba859514d10d0952dca77df8ea889a9651b249d0b5b513da791fd2919b?d=identicon)[uldisn](/maintainers/uldisn)

---

Top Contributors

[![uldisn](https://avatars.githubusercontent.com/u/3525344?v=4)](https://github.com/uldisn "uldisn (35 commits)")[![VairisO](https://avatars.githubusercontent.com/u/9198246?v=4)](https://github.com/VairisO "VairisO (11 commits)")

### Embed Badge

![Health badge](/badges/d3yii2-d3activity/health.svg)

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

###  Alternatives

[gornymedia/laravel-shortcodes

Laravel shortcodes package

2339.5k](/packages/gornymedia-laravel-shortcodes)

PHPackages © 2026

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