123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace app\models;
- use Yii;
- /**
- * This is the model class for table "comments_filter".
- *
- * @property int $id
- * @property string $title
- * @property string $uid1
- * @property string $uid2
- * @property string $ftext
- * @property string $fname
- * @property string $active
- */
- class CommentsFilter extends \yii\db\ActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return 'comments_filter';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [[ 'active', 'title'], 'required'],
- [['ftext', 'fname', 'active', 'title'], 'string'],
- [['uid1'], 'string', 'max' => 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;
- }
- }
|