148 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace common\models;
 | 
						|
 | 
						|
use Yii;
 | 
						|
use yii\base\ErrorException;
 | 
						|
use yii\base\Exception;
 | 
						|
use yii\helpers\Html;
 | 
						|
 | 
						|
/**
 | 
						|
 * This is the model class for table "fields_value_new".
 | 
						|
 *
 | 
						|
 * @property int $id
 | 
						|
 * @property int $field_id
 | 
						|
 * @property int $item_id
 | 
						|
 * @property int $item_type
 | 
						|
 * @property int $order
 | 
						|
 * @property string $value
 | 
						|
 * @property string $option
 | 
						|
 * @property string $type_file
 | 
						|
 */
 | 
						|
class FieldsValueNew extends \yii\db\ActiveRecord
 | 
						|
{
 | 
						|
    const TYPE_PROFILE = 0;
 | 
						|
    const TYPE_PROJECT = 1;
 | 
						|
    const TYPE_COMPANY = 2;
 | 
						|
    const TYPE_BALANCE = 3;
 | 
						|
    const TYPE_NOTE = 4;
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public static function tableName()
 | 
						|
    {
 | 
						|
        return 'fields_value_new';
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function rules()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [['field_id', 'item_id', 'item_type'], 'required'],
 | 
						|
            [['field_id', 'item_id', 'item_type', 'order'], 'integer'],
 | 
						|
            [['value', 'type_file'], 'string'],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function attributeLabels()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'id' => 'ID',
 | 
						|
            'field_id' => 'Field ID',
 | 
						|
            'item_id' => 'Item ID',
 | 
						|
            'item_type' => 'Item Type',
 | 
						|
            'order' => 'Order',
 | 
						|
            'value' => 'Value',
 | 
						|
            'type_file' => 'Тип файла'
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return \yii\db\ActiveQuery
 | 
						|
     */
 | 
						|
    public function getField()
 | 
						|
    {
 | 
						|
        return $this->hasOne(AdditionalFields::class, ['id' => 'field_id']);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * get value for view
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getValue()
 | 
						|
    {
 | 
						|
        $test = $this->type_file === 'file' ? $this->getFileValue() : $this->getTextValue();
 | 
						|
        return $test;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    private function getFileValue()
 | 
						|
    {
 | 
						|
        $filename = $this->getFileName();
 | 
						|
        $filePath = Yii::getAlias('@frontend/web' . $this->value);
 | 
						|
        if ($this->isImage()) {
 | 
						|
            $imageHTML = Html::img($this->value, ['width' => '200px', 'alt' => $filename]);
 | 
						|
            $downloadLinkHTML = ' (' . Html::a('Скачать', $this->value, ['target' => '_blank', 'download' => $filename]) . ')';
 | 
						|
            $result = $imageHTML . $downloadLinkHTML;
 | 
						|
        } else {
 | 
						|
            $result = $filename . ' (' . Html::a('Скачать', $this->value, ['target' => '_blank', 'download' => $filename]) . ')';
 | 
						|
        }
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    private function getTextValue()
 | 
						|
    {
 | 
						|
        return $this->value;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return mixed|string
 | 
						|
     */
 | 
						|
    public function getFileName()
 | 
						|
    {
 | 
						|
        if ($this->type_file === 'file') {
 | 
						|
            $explode = explode('/', $this->value);
 | 
						|
            $filename = array_pop($explode);
 | 
						|
            return $filename;
 | 
						|
        }
 | 
						|
        return $this->value;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * File is image?
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function isImage()
 | 
						|
    {
 | 
						|
        if ($this->type_file === 'text') {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        try {
 | 
						|
            $mime = mime_content_type(Yii::getAlias('@frontend/web' . $this->value));
 | 
						|
        } catch (ErrorException $e) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $extension = explode('/', $mime)['0'];
 | 
						|
        if (($extension === 'image') || $extension === 'application') {
 | 
						|
            return true;
 | 
						|
        } else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
}
 |