yii2-statistics
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
-
Π‘Π±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΡ.
-
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ.
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ IP Π°Π΄ΡΠ΅ΡΡ.
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ Π±ΠΎΡΠΎΠ²
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ
-
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΡΡΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Basic Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Composer
composer require vladbara705/yii2-statistics
ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΠ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ php yii statistics/init
Π Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
-
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
-
ΠΡΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ php yii migrate --migrationPath=@vendor/vladbara705/yii2-statistics/src/migrations
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² 'statistics' Π² common/config/params.php (advanced) ΠΈΠ»ΠΈ config/params.php (basic):
...
'statistics' => [
'blackListIp' => [127.0.0.1, ...],
'trackRobots' => true, // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false
'statisticsRoute' => 'statistics/test', // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ statistics
'enablePage' => false, // ΠΏΠΎ ΡΠΌΠΎΠ»Π°Π½ΠΈΡ false, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ
'authData' => ['admin' => 'admin'], // ΠΏΠΎ ΡΠΌΠΎΠ»Π°ΡΠ½ΠΈΡ null, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ 'authentication' => true - Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ
'authentication' => true, // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false
'timezoneUTC' => 5 // ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΡΠ°Ρ
, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎ-Π±Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ°ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΅, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 0
// Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π² ΠΠ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΏΠΎ UTC.
],
...
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ:
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ behaviors Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΡ Π·Π° Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ:
public function behaviors()
{
return [
'statistics' => [
'class' => \vladbara705\statistics\behaviors\Statistics::class,
'actions' => ['index', 'contact'],
'type' => ['type', 'exraType'], // Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (ΠΊΡΡΠ³Π»Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°) Ρ ΡΠΈΠΏΠΎΠΌ type ΠΈ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ extraType (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ).
//'type' => ['type1'] ΠΈΠ»ΠΈ 'type' => 'type1' | Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (ΡΡΠΎΠ»Π±ΡΠ°ΡΠ°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°) Ρ ΡΠΈΠΏΠΎΠΌ type1 (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ).
'uniqueUser' => true // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π·Π° Π΄Π΅Π½Ρ
],
...
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
$this->attachBehavior('statistics', [
'class' => \vladbara705\statistics\behaviors\Statistics::class,
'actions' => [$this->action->id],
'type' => ['type', 'exraType'], // Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (ΠΊΡΡΠ³Π»Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°) Ρ ΡΠΈΠΏΠΎΠΌ type ΠΈ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ extraType (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ).
//'type' => ['type1'] ΠΈΠ»ΠΈ 'type' => 'type1' | Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (ΡΡΠΎΠ»Π±ΡΠ°ΡΠ°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°) Ρ ΡΠΈΠΏΠΎΠΌ type1 (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ).
'uniqueUser' => true // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π·Π° Π΄Π΅Π½Ρ
]);