<commit_before>Cms компонент хранилище (storage)
=====================

В cms по умолчанию есть компонент storage хранилище. Его можно конфигурировать от проекта к проекту. 
Этот компонент позволяет хранить файлы в зависимости от того, как он сконфигурирован, например, на удаленном сервере (по умолчанию локально).

Примеры:
------

### 1) Загрузка файла

```php
$storageFile = Yii::$app->storage->upload($file, [
    "name"          => "Название файла в DB",
    "original_name" => "Оригинальное название файла"
    ......
]);


//$storageFile может цеплять с другим сущьностям у которых есть поведение HasFiles
```

Вот параметры этого метода

```php
/**
 *
 * Загрузить файл в хранилище, добавить в базу, вернуть модель StorageFile
 *
 * @param UploadedFile|string $file    объект UploadedFile или rootPath до файла локально
 * @param array $data
 * @param null $clusterId
 * @return StorageFile
 * @throws Exception
 */
public function upload($file, $data = [], $clusterId = null)
{
.....
```

### 2) Привязка файла к модели

```php
//Publication должна иметь поведение HasFiles
$model = Publication::findOne(['id' => 10]);
$storageFile->linkToModel($model);
```

### 3) Привязка файла к определенной группе файлов модели<commit_msg>Обновил описание<commit_after>Cms компонент хранилище (storage)
=====================

В cms по умолчанию есть компонент storage хранилище. Его можно конфигурировать от проекта к проекту. 
Этот компонент позволяет хранить файлы в зависимости от того, как он сконфигурирован, например, на удаленном сервере (по умолчанию локально).

Примеры:
------

### 1) Загрузка файла

```php
$storageFile = Yii::$app->storage->upload($file, [
    "name"          => "Название файла в DB",
    "original_name" => "Оригинальное название файла"
    ......
]);


//$storageFile может цеплять с другим сущьностям у которых есть поведение HasFiles
```

Вот параметры этого метода

```php
/**
 *
 * Загрузить файл в хранилище, добавить в базу, вернуть модель StorageFile
 *
 * @param UploadedFile|string|File $file    объект UploadedFile или File или rootPath до файла локально или http:// путь к файлу (TODO:: доделать)
 * @param array $data                       данные для сохранения в базу
 * @param null $clusterId                   идентификатор кластера по умолчанию будет выбран первый из конфигурации
 * @return StorageFile
 * @throws Exception
 */
public function upload($file, $data = [], $clusterId = null)
{
.....
```

### 2) Привязка файла к модели

```php
//Publication должна иметь поведение HasFiles
$model = Publication::findOne(['id' => 10]);
$storageFile->linkToModel($model);
```

### 3) Привязка файла к определенной группе файлов модели
{'fraction_non_alphanumeric': 0.13149047441165485, 'fraction_numerical': 0.0037355248412401943, 'mean_word_length': 4.024390243902439, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5201586', 'n_tokens_mistral': 1015, 'n_tokens_neox': 1106, 'n_words': 281}