BlobDataEscape.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Rules;
  3. use Illuminate\Contracts\Validation\Rule;
  4. use App\Http\Traits\BoardTrait;
  5. use App\Models\BoardMeta;
  6. use DOMDocument;
  7. class BlobDataEscape implements Rule
  8. {
  9. use BoardTrait;
  10. protected BoardMeta $boardMeta;
  11. /**
  12. * Create a new rule instance.
  13. *
  14. * @return void
  15. */
  16. public function __construct(int $boardID)
  17. {
  18. $this->boardMeta = $this->boardMeta($boardID);
  19. }
  20. /**
  21. * Determine if the validation rule passes.
  22. *
  23. * @param string $attribute
  24. * @param mixed $value
  25. * @return bool
  26. */
  27. public function passes($attribute, $value)
  28. {
  29. $doc = new DOMDocument();
  30. $doc->loadHTML($value);
  31. $count = trim(strlen($doc->documentElement->textContent));
  32. return ($count < $this->boardMeta->item('comment_max_length', 0));
  33. }
  34. /**
  35. * Get the validation error message.
  36. *
  37. * @return string
  38. */
  39. public function message()
  40. {
  41. return sprintf(":attribute은 최대 %s 글자 입력 가능합니다.", $this->boardMeta->item('comment_max_length', 0));
  42. }
  43. }