News.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace manager\models;
  3. use Yii;
  4. use app\forks\galleryManager\GalleryBehavior;
  5. use yii\helpers\ArrayHelper;
  6. class News extends \app\models\News
  7. {
  8. public function rules()
  9. {
  10. return ArrayHelper::merge(parent::rules(),[
  11. [['meta_title'], 'titleLimit'],
  12. ]);
  13. }
  14. public function titleLimit($attr){
  15. if($this->dt_cr>'2023-01-04 00:00:00' && mb_strlen($this->meta_title)>80){
  16. // $this->addError($attr,'Заголовок у новостей после третьего января 2023 максимум 80 символов');
  17. }
  18. }
  19. public function behaviors()
  20. {
  21. return [
  22. 'galleryBehavior' => [
  23. 'class' => GalleryBehavior::className(),
  24. 'type' => 'product',
  25. 'extension' => 'webp',
  26. 'directory' => Yii::getAlias('@webroot') . '/images/product/gallery',
  27. 'url' => Yii::getAlias('@web') . '/images/product/gallery',
  28. 'versions' => [
  29. 'small' => function ($img) {
  30. /** @var \Imagine\Image\ImageInterface $img */
  31. return $img
  32. ->copy()
  33. ->thumbnail(new \Imagine\Image\Box(200, 200));
  34. },
  35. 'medium' => function ($img) {
  36. /** @var \Imagine\Image\ImageInterface $img */
  37. $dstSize = $img->getSize();
  38. $maxWidth = 800;
  39. if ($dstSize->getWidth() > $maxWidth) {
  40. $dstSize = $dstSize->widen($maxWidth);
  41. }
  42. return $img
  43. ->copy()
  44. ->resize($dstSize);
  45. },
  46. ]
  47. ]
  48. ];
  49. }
  50. /**
  51. * @return \yii\db\ActiveQuery
  52. */
  53. public function getGalleries()
  54. {
  55. return $this->hasMany(Gallery::class,['post_id'=>'id']);
  56. }
  57. public function save($runValidation = true, $attributeNames = null)
  58. {
  59. return parent::save($runValidation, $attributeNames);
  60. }
  61. }