CommentsFilter.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\models;
  3. use Yii;
  4. /**
  5. * This is the model class for table "comments_filter".
  6. *
  7. * @property int $id
  8. * @property string $title
  9. * @property string $uid1
  10. * @property string $uid2
  11. * @property string $ftext
  12. * @property string $fname
  13. * @property string $active
  14. */
  15. class CommentsFilter extends \yii\db\ActiveRecord
  16. {
  17. /**
  18. * {@inheritdoc}
  19. */
  20. public static function tableName()
  21. {
  22. return 'comments_filter';
  23. }
  24. /**
  25. * {@inheritdoc}
  26. */
  27. public function rules()
  28. {
  29. return [
  30. [[ 'active', 'title'], 'required'],
  31. [['ftext', 'fname', 'active', 'title'], 'string'],
  32. [['uid1'], 'string', 'max' => 255],
  33. [[ 'uid2'], 'string', 'max' => 64],
  34. [['title', 'uid1', 'uid2', 'ftext', 'fname'], 'filter', 'filter' => 'trim', 'skipOnArray' => true],
  35. ];
  36. }
  37. /**
  38. * {@inheritdoc}
  39. */
  40. public function attributeLabels()
  41. {
  42. return [
  43. 'id' => 'ID',
  44. 'title' => 'Название фильтра',
  45. 'uid1' => 'По ip',
  46. 'uid2' => 'По UserAgent',
  47. 'ftext' => 'текстовая маска',
  48. 'fname' => 'текстовая маска',
  49. 'active' => 'Active',
  50. ];
  51. }
  52. /**
  53. * {@inheritdoc}
  54. */
  55. public static function test( $model )
  56. {
  57. $sql = Yii::$app->db->createCommand("select * from ".self::tableName()." where active = 'Y' ")->queryAll(\PDO::FETCH_CLASS);
  58. foreach( $sql as $item ){
  59. if( $item->uid1 && $item->uid2 ) {
  60. if( $item->uid1 == $model->ip_address && $item->uid2 == md5($model->user_agent) ) return 'ip и UA под фильтром: '.$item->title;
  61. }
  62. elseif ( $item->uid1 ) {
  63. if( $item->uid1 == $model->ip_address ) return 'ip под фильтром: '.$item->title;
  64. }
  65. elseif ( $item->uid2 ) {
  66. if( $item->uid2 == md5($model-> user_agent) ) return 'UA под фильтром: '.$item->title;
  67. }
  68. elseif ( $item->fname != '' ) {
  69. if( $item->fname == $model->fakename ) return 'ник под фильтром: '.$item->title;
  70. }
  71. elseif ( $item->ftext != '' ) {
  72. $pat = str_replace( '_', '.+', $item->ftext );
  73. if( preg_match( '|.*'.$pat.'.*|', $model->message ) ) return 'фильтр: '.$item->title;
  74. }
  75. }
  76. return true;
  77. }
  78. }