private function prepareAlias($alias) { if ($this->transliterate) { $alias = TransliteratorHelper::process($alias, '', 'en'); } $alias = preg_replace('/[^a-zа-яё0-9\\/\\s\\-]+/iu', '', trim(strtolower($alias))); $alias = str_replace(' ', '-', $alias); return $alias; }
private function prepareAlias($alias) { $alias = TransliteratorHelper::process($alias, '', 'en'); $s = [' ', ',', '"', '\'', '`', 'ʹ', '(', ')']; $r = ['-', '', '', '', '', '', '', '']; return strtolower(str_replace($s, $r, $alias)); }
public function saveFile($event, $insert = false) { $this->_data(); if (!is_dir($this->dir)) { mkdir($this->dir, 0777); } foreach ($this->fields as $fieldName) { if (isset($this->styles[$fieldName])) { foreach ($this->styles[$fieldName] as $style) { if (!is_dir($this->dir . '/' . $style)) { mkdir($this->dir . '/' . $style, 0775); } } } } foreach ($this->fields as $fieldName) { $rule = $this->getRule($fieldName); $files = UploadedFile::getInstances($this->owner, $fieldName); if (isset($rule['maxFiles'])) { unset($rule['maxFiles']); } foreach ($files as $file) { $_model = new \common\models\File(); $_model->rule = $rule; $_model->file = $file; if ($_model->validate()) { $this->recount = true; $delta = Yii::$app->db->createCommand('SELECT MAX(delta) FROM {{%file}} file WHERE nid=:nid AND model=:model AND field=:field', [':nid' => $this->id, ':model' => $this->model, ':field' => $fieldName])->queryScalar(); $delta = is_null($delta) ? 0 : $delta + 1; $search = [' ', ',', '\'', '`', 'ʹ', '(', ')']; $replace = ['-', '', '', '', '', '', '']; $tname = str_replace($search, $replace, TransliteratorHelper::process($_model->file->baseName)); $fileName = time() . '_' . $tname . '.' . $_model->file->extension; $fileSize = $_model->file->size; $fileType = $_model->file->type; $_model->file->saveAs($this->dir . '/' . $fileName); $_model->file = ''; $_model->nid = $this->id; $_model->field = $fieldName; $_model->mimetype = $fileType; $_model->size = $fileSize; $_model->model = $this->model; $_model->filename = $fileName; $_model->path = $this->path; $_model->delta = $delta; $_model->save(); /* * Создание стилей изображений * */ if (isset($this->styles[$fieldName])) { foreach ($this->styles[$fieldName] as $style) { $sizes = explode('x', $style); $quality = 100; Image::thumbnail($this->dir . '/' . $fileName, $sizes[0], $sizes[1], ManipulatorInterface::THUMBNAIL_INSET)->save($this->dir . '/' . $style . '/' . $fileName, ['quality' => $quality]); } } } else { //$errors = $_model->errors; //print_r($errors); //exit("A"); } } } $counts = Yii::$app->db->createCommand('SELECT COUNT(id) c,field FROM {{%file}} file WHERE nid=:nid AND model=:model GROUP BY field', [':nid' => $this->id, ':model' => $this->model])->queryAll(); foreach ($counts as $count) { if (isset($this->count_fields[$count['field']]) && $this->owner->{$this->count_fields[$count['field']]} != $count['c']) { $field = $this->count_fields[$count['field']]; $table = $this->owner->tableName(); Yii::$app->db->createCommand('UPDATE {{%' . $table . '}} ' . $table . ' SET ' . $field . '=' . $count['c'] . ' WHERE id = ' . $this->owner->id)->execute(); } } }