110 lines
3.5 KiB
PHP
110 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace app\models;
|
|
|
|
use app\models\parsed\CartInterface;
|
|
use app\models\parsed\CartModel;
|
|
use yii\db\ActiveRecord;
|
|
|
|
/**
|
|
* Class _Base
|
|
* @package app\models
|
|
* @property $media_key
|
|
* @property $id
|
|
* @property $is_active
|
|
*/
|
|
class _Base extends ActiveRecord
|
|
{
|
|
public static function DOMAIN()
|
|
{
|
|
return \Yii::$app->params['media_server'];
|
|
}
|
|
|
|
public function getTableName() {
|
|
return self::getTableSchema()->name;
|
|
}
|
|
|
|
/**
|
|
* @param $object_key
|
|
* @param $rez
|
|
* @return string|null
|
|
*/
|
|
public function getSrcOfSingleImage($object_key, $rez = null, $default = null)
|
|
{
|
|
if ($this->media_key) {
|
|
/** @var FileCms $image */
|
|
$image = $this->hasOne(FileCms::class, ['media_key' => 'media_key'])
|
|
->where(['object_key' => $object_key])->orderBy(['order_index' => SORT_ASC])->one();
|
|
if ($image) {
|
|
$ready = self::DOMAIN() . '/_files/ready/' . $this->media_key . '/' . $image->object_key . '/' . $rez . '/' . $image->file_name;
|
|
if ($rez && $this->check_image_url($ready)) {
|
|
return $ready;
|
|
} else {
|
|
return self::DOMAIN() . '/_files/raw/' . $this->media_key . '/' . $image->object_key . '/' . $image->file_name;
|
|
}
|
|
}
|
|
}
|
|
return $default;
|
|
}
|
|
|
|
/**
|
|
* @param $object_key
|
|
* @param $rez
|
|
* @return array
|
|
*/
|
|
public function getSrcOfMultipleImages($object_key, $rez = null)
|
|
{
|
|
$srcArr = [];
|
|
if ($this->media_key) {
|
|
$images = $this->hasMany(FileCms::class, ['media_key' => 'media_key'])
|
|
->where(['object_key' => $object_key])->orderBy(['order_index' => SORT_ASC])->all();
|
|
/** @var FileCms $image */
|
|
foreach ($images as $image) {
|
|
if ($image) {
|
|
$ready = self::DOMAIN() . '/_files/ready/' . $this->media_key . '/' . $image->object_key . '/' . $rez . '/' . $image->file_name;
|
|
if ($rez && $this->check_image_url($ready)) {
|
|
$srcArr[] = $ready;
|
|
} else {
|
|
$srcArr[] = self::DOMAIN() . '/_files/raw/' . $this->media_key . '/' . $image->object_key . '/' . $image->file_name;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $srcArr;
|
|
}
|
|
|
|
|
|
private function check_image_url($image_url) {
|
|
$headers = @get_headers($image_url);
|
|
if ($headers && strpos($headers[0], '200 OK') !== false) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* @param $object_key
|
|
* @param $rez
|
|
* @return string
|
|
*/
|
|
public function getSrcOfFirstImage($object_key, $rez = null)
|
|
{
|
|
if ($this->media_key) {
|
|
$image = $this->hasMany(FileCms::class, ['media_key' => 'media_key'])
|
|
->where(['object_key' => $object_key])->orderBy(['order_index' => SORT_ASC])->one();
|
|
/** @var FileCms $image */
|
|
if ($image) {
|
|
$ready = self::DOMAIN() . '/_files/ready/' . $this->media_key . '/' . $image->object_key . '/' . $rez . '/' . $image->file_name;
|
|
if ($rez && $this->check_image_url($ready)) {
|
|
return $ready;
|
|
} else {
|
|
return self::DOMAIN() . '/_files/raw/' . $this->media_key . '/' . $image->object_key . '/' . $image->file_name;
|
|
}
|
|
}
|
|
}
|
|
return '/_public/images/empty.png';
|
|
}
|
|
}
|