2017 © Pedro PelΓ‘ez
 

yii2-extension yii2-activity-logger

Tools to store user activity log for Yii2

image

lav45/yii2-activity-logger

Tools to store user activity log for Yii2

  • Monday, July 30, 2018
  • by LAV45
  • Repository
  • 1 Watchers
  • 8 Stars
  • 342 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 12 Versions
  • 43 % Grown

The README.md

yii2-activity-logger

yii2-activity-logger Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π° сайтС. Когда Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ Π½Π°Π΄ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ большС Π΄Π²ΡƒΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π΅ всСгда понятно ΠΊΡ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π·Π°Ρ‡Π΅ΠΌ сдСлал измСнСния Π² описаниС ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΡƒΠ±Ρ€Π°Π» ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈΠ· ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ» нСпонятного ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΡƒΠ΄Π°Π»ΠΈΠ» ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° Π·Π° ΡƒΡΠ΅Ρ€Π΄Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Latest Stable Version License Total Downloads, (*1)

Установка Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

~$ composer require --prefer-dist lav45/yii2-activity-logger

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ MigrateController, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… источников. Π’ настройках консольного окруТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:, (*2)

return [
    'controllerMap' => [
        'migrate' => [
            'class' => \yii\console\controllers\MigrateController::class,
            'migrationPath' => [
                '@app/migrations',
                '@vendor/lav45/yii2-activity-logger/migrations',
            ],
        ],
    ],
];

ЗапускаСм ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, (*3)

~$ yii migrate

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», (*4)

return [
    'modules' => [
        /**
         * ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для просмотра Π»ΠΎΠ³ΠΎΠ²
         */
        'logger' => [
            'class' => \lav45\activityLogger\modules\Module::class,

            // Бписок ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ
            'entityMap' => [
                'news' => 'common\models\News',
 Β  Β  Β  Β  Β  Β ],
 Β  Β  Β  Β ]
    ],
    'components' => [
        /**
         * ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ управляСт Π»ΠΎΠ³Π°ΠΌΠΈ
         */
        'activityLogger' => [
            'class' => \lav45\activityLogger\Manager::class,

            // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для PROD вСрсии
            'enabled' => YII_ENV_PROD,

            // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° `\yii\web\User`
            'user' => 'user',

            // ПолС для отобраТСния ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
            'userNameAttribute' => 'username',

            // ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ пСрСсСчСния userId Ссли Ρƒ вас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ авторизуСтся нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… сущностСй 
            'userIdPrefix' => 'u',

            // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π»ΠΎΠ³ΠΎΠ² `\lav45\activityLogger\StorageInterface`
            'storage' => 'activityLoggerStorage',
        ],

        /**
         * ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ управляСт Π»ΠΎΠ³Π°ΠΌΠΈ
         */
        'activityLoggerStorage' => [
            'class' => \lav45\activityLogger\DbStorage::class,

            // Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ хранится Π»ΠΎΠ³ΠΈ
            'tableName' => '{{%activity_log}}',

            // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° `\yii\db\Connection`
            'db' => 'db',
        ],
    ]
];

ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх Π»ΠΎΠ³ записСй ΠΌΠΎΠΆΠ½Π° Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Yii::$container Для удобства этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ bootstrap.php, (*5)

Yii::$container->set(\lav45\activityLogger\LogMessageDTO::class, [
    'env' => 'console', // ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ дСйствиС
    'userId' => 'console',
    'userName' => 'Droid R2-D2',
]);

Бсылки для просмотра Π»ΠΎΠ³ΠΎΠ²

// На этой страницС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π»ΠΎΠ³ΠΈ
Url::toRoute(['/logger/default/index']);

// На этой страницС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ дСйствий ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ Π³ΠΎ `$id`
Url::toRoute(['/logger/default/index', 'userId' => 1]);

// На этой страницС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ дСйствий для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² "news"
Url::toRoute(['/logger/default/index', 'entityName' => 'news']);

// На этой страницС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ дСйствий для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² "news" с "id" => 1
Url::toRoute(['/logger/default/index', 'entityName' => 'news', 'entityId' => 1]);

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования для ActiveRecord ΠΌΠΎΠ΄Π΅Π»ΠΈ

/**
 * @mixin \lav45\activityLogger\ActiveLogBehavior
 */
class News extends ActiveRecord
{
    // РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    public function transactions()
    {
        return [
            ActiveRecord::SCENARIO_DEFAULT => ActiveRecord::OP_ALL,
        ];
    }

    public function behaviors()
    {
        return [
            [
                'class' => \lav45\activityLogger\ActiveLogBehavior::class,

                // Если Π½Π΅ΠΎΠ±Ρ…Π°Π΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стандартноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `entityName`
                'getEntityName' => function () {
                    return static::tableName();
                },
                // Если Π½Π΅ΠΎΠ±Ρ…Π°Π΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стандартноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `entityId`
                'getEntityId' => function () {
                    return $this->getPrimaryKey();
                }
                /** 
                 * Π’ случаях ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ActiveLogBehavior Π΄Π΅Π»Π°Ρ‚ΡŒ подпись с понятным Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.
                 * Если Π½Π° страницС выводятся история измСнСния всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ,  
                 * Ρ‚ΠΎ нСвсСгда понятно Ρƒ ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнился статут, дСнь роТдСния ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅
                 */
                'beforeSaveMessage' => function ($data) {
                    return ['attribute' => 'custom data'] + $data;
                }

                // Бписок ΠΏΠΎΠ»Π΅ΠΉ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ слСТСниС
                'attributes' => [
                    // ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ поля ( string|int|bool )
                    'name',

                    // Поля Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² спискС.
                    // Π² Π΄Π°Π½Π½ΠΎΠΌ случаС `$model->getStatusList()[$model->status]`
                    'status' => [
                        'list' => 'statusList',
                    ],

                    // ПолС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся `id` связи с Π΄Ρ€ΡƒΠ³ΠΎΠΉ модСлью
                    'template_id' => [
                        'relation' => 'template',
                        // ПолС ΠΈΠ· связанной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использовано Π² качСствС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ значСния
                        'attribute' => 'name',
                    ],
                ]
            ],
            [
                /**
                 * Π’ случаях ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ для всСх Π»ΠΎΠ³ΠΎΠ² Π΄Π΅Π»Π°Ρ‚ΡŒ подпись с понятным Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.
                 * Если Π½Π° страницС выводятся история измСнСния всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ,  
                 * Ρ‚ΠΎ нСвсСгда понятно Ρƒ ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнился статут, дСнь роТдСния ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅
                 */
                'class' => \lav45\activityLogger\LogInfoBehavior::class,
                'template' => '{username} ({profile.email})',
            ],
        ];
    }

    /**
     * Если Π½Π΅ΠΎΠ±Ρ…Π°Π΄ΠΈΠΌΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±ΠΎΠ°ΠΆΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
     * МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ `\yii\i18n\Formatter`
     * ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
     * @return array
     */
    public function attributeFormats()
    {
        return [
            // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Yii::$app->formatter->asDatetime($value);
            'published_at' => 'datetime',

            // МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° 
            'is_published' => function($value) {
                return Yii::$app->formatter->asBoolean($value);
            },

            // Если Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ ссылку Π½Π° Π½Π΅Ρ‘
            'image' => function($value) {
                if (empty($value)) { return null; }

                $url = "https://cdn.site.com/img/{$value}";
                return Html::a($value, $url, ['target' => '_blank']);
            }
        ];
    }

    /**
     * Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ `\lav45\activityLogger\ActiveLogBehavior` Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС
     * [[ActiveLogBehavior::EVENT_BEFORE_SAVE_MESSAGE]] - ΠΏΠ΅Ρ€Π΅Π΄ записью Π»ΠΎΠ³ΠΎΠ²
     * [[ActiveLogBehavior::EVENT_AFTER_SAVE_MESSAGE]] - послС записи логов
     */
    public function init()
    {
        parent::init();

        // РСгистрируСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий
        $this->on(ActiveLogBehavior::EVENT_BEFORE_SAVE_MESSAGE, 
            function (\lav45\activityLogger\MessageEvent $event) {
                // Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² список Π»ΠΎΠ³ΠΎΠ² свою ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ
                $event->logData[] = 'Reset password';
            });

        $this->on(ActiveLogBehavior::EVENT_AFTER_SAVE_MESSAGE, 
            function (\yii\base\Event $event) {
                // КакиС-Ρ‚ΠΎ дСйствия послС записи Π»ΠΎΠ³ΠΎΠ²
            });
    }

    /*
     * Π’ мСсто рСгистрации события Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Π°ΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ вмСсто события
     */

    /**
     * Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² мСсто события [[ActiveLogBehavior::EVENT_BEFORE_SAVE_MESSAGE]]
     * @return array
     */
    public function beforeSaveMessage($data)
    {
        // Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² список Π»ΠΎΠ³ΠΎΠ² свою ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ
        $data[] = 'Reset password';

        // ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³Π°Ρ… для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° `password_hash`
        $data['password_hash'] = 'Reset password';

        return $data;
    }

    /**
     * Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² мСсто события [[ActiveLogBehavior::EVENT_AFTER_SAVE_MESSAGE]]
     */
    public function afterSaveMessage()
    {
        // КакиС-Ρ‚ΠΎ дСйствия послС записи Π»ΠΎΠ³ΠΎΠ²
    }
}

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для очистки Π»ΠΎΠ³ΠΎΠ²

Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. Если Π²Ρ‹ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π»ΠΎΠ³ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот ΠΏΡƒΠ½ΠΊΡ‚., (*6)

return [
    'controllerMap' => [
        'logger' => [
            'class' => \lav45\activityLogger\console\DefaultController::class
        ]
    ],
];

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старыС Π»ΠΎΠ³ΠΈ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:, (*7)

~$ yii logger/clean --old-than=1y
# => Deleted 5 record(s) from the activity log.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

  • --entity-id, -eid: string. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, (*8)

  • --entity-name, -e: string. ПсСвдоним ΠΈΠΌΠ΅Π½ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, (*9)

  • --user-id, -uid: string. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» дСйствиС, (*10)

  • --log-action, -a: string. ДСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, (*11)

  • --env: string. Π‘Ρ€Π΅Π΄Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ дСйствиС, (*12)

  • --old-than, -o: string. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π΄Π°Π½Π½Ρ‹Ρ…, (*13)

    ДопустимыС значСния:, (*14)

    • 1h - ΡΡ‚Π°Ρ€ΡˆΠ΅ 1 часа
    • 2d - ΡΡ‚Π°Ρ€ΡˆΠ΅ 2 Π΄Π½Π΅ΠΉ
    • 3m - ΡΡ‚Π°Ρ€ΡˆΠ΅ 3-Ρ… мСсяцСв
    • 4y - ΡΡ‚Π°Ρ€ΡˆΠ΅ 4 Π»Π΅Ρ‚.

Π ΡƒΡ‡Π½ΠΎΠ΅ использованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ²

ΠŸΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡΡ Π² Ρ‚Π΅Ρ… случаях ΠΊΠΎΠ³Π΄Π° Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ActiveRecord ΠΌΠΎΠ΄Π΅Π»ΠΈ. НапримСр ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², скачивании Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π° с внСшним API, Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСсса Ρ€Π°Π±ΠΎΡ‚Ρ‹ консольного ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ Ρ‚.Π΄, (*15)

use lav45\activityLogger\LogMessageDTO;

$message = Yii::createObject([
    'class' => LogMessageDTO::class,

    // имя сущности
    'entityName' => 'user',

    // id сущности с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ производится дСйствиС
    'entityId' => 10,

    // ДСйствиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСйчас выполняСтся
    'action' => 'download',

    // тСкст с описаниСм дСйствия
    'data' => ['export data'],
]);

Yii::$app->activityLogger->log($message);

Когда Π² Π»ΠΎΠ³Π°Ρ… Π½ΡƒΠΆΠ½Π° ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ запись со списком Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… дСйствий ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ LogCollection, (*16)

use lav45\activityLogger\LogCollection;

$collection = new LogCollection(Yii::$app->activityLogger, 'entityName');

/**
 * ДобавляСм всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ записи
 */
$collection->addMessage('Created: 100');
$collection->addMessage('Updated: 100500');
$collection->addMessage('Deleted: 5');

/**
 * БохраняСм всС собранныС сообщСниС ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ запись Π² Π»ΠΎΠ³Π°Ρ…
 * Посли записи список Π»ΠΎΠ³ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π΅Π½
 */
$collection->push(); // => true

ВСстированиС

~$ docker build --pull --build-arg UID=$(id -u) --build-arg GID=$(id -g) --rm -t php74-test .
~$ ./container composer update --prefer-dist
~$ ./container vendor/bin/phpunit

Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΈ

Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» LICENSE.md., (*17)

The Versions

30/07 2018

dev-master

9999999-dev https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

15/06 2018

1.6.0

1.6.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

06/04 2018

1.5.3

1.5.3.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

11/03 2018

1.5.2

1.5.2.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

09/03 2018

1.5.1

1.5.1.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

04/03 2018

dev-test

dev-test https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Alexey Loban

logger log extension yii2 activity logger

04/03 2018

1.5.0

1.5.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger

14/01 2018

1.4.0

1.4.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger

10/01 2018

1.3.0

1.3.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger

03/01 2018

1.2.0

1.2.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger

14/12 2017

1.1.0

1.1.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger

09/12 2017

1.0.0

1.0.0.0 https://github.com/LAV45/yii2-activity-logger

Tools to store user activity log for Yii2

  Sources   Download

BSD-3-Clause

The Requires

 

by Alexey Loban

logger log extension yii2 activity logger