Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 private function prepareAlias($alias)
 {
     $alias = TransliteratorHelper::process($alias, '', 'en');
     $s = [' ', ',', '"', '\'', '`', 'ʹ', '(', ')'];
     $r = ['-', '', '', '', '', '', '', ''];
     return strtolower(str_replace($s, $r, $alias));
 }
Exemplo n.º 3
0
 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();
         }
     }
 }