255], [[ 'uid2'], 'string', 'max' => 64], [['title', 'uid1', 'uid2', 'ftext', 'fname'], 'filter', 'filter' => 'trim', 'skipOnArray' => true], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'title' => 'Название фильтра', 'uid1' => 'По ip', 'uid2' => 'По UserAgent', 'ftext' => 'текстовая маска', 'fname' => 'текстовая маска', 'active' => 'Active', ]; } /** * {@inheritdoc} */ public static function test( $model ) { $sql = Yii::$app->db->createCommand("select * from ".self::tableName()." where active = 'Y' ")->queryAll(\PDO::FETCH_CLASS); foreach( $sql as $item ){ if( $item->uid1 && $item->uid2 ) { if( $item->uid1 == $model->ip_address && $item->uid2 == md5($model->user_agent) ) return 'ip и UA под фильтром: '.$item->title; } elseif ( $item->uid1 ) { if( $item->uid1 == $model->ip_address ) return 'ip под фильтром: '.$item->title; } elseif ( $item->uid2 ) { if( $item->uid2 == md5($model-> user_agent) ) return 'UA под фильтром: '.$item->title; } elseif ( $item->fname != '' ) { if( $item->fname == $model->fakename ) return 'ник под фильтром: '.$item->title; } elseif ( $item->ftext != '' ) { $pat = str_replace( '_', '.+', $item->ftext ); if( preg_match( '|.*'.$pat.'.*|', $model->message ) ) return 'фильтр: '.$item->title; } } return true; } }