public function insert() { /** @var \app\services\GetArticle\ExtractorInterface $extractor */ $extractor = null; switch ($this->provider) { case 'verhosvet': $extractor = new \app\services\GetArticle\Verhosvet($this->url); break; case 'youtube': $extractor = new \app\services\GetArticle\YouTube($this->url); break; } if (is_null($extractor)) { throw new Exception('Не верный extractor'); } $row = $extractor->extract(); $articleObject = Article::insert(['header' => $row['header'], 'content' => $row['content'], 'description' => $row['description'], 'source' => $this->url, 'id_string' => Str::rus2translit($row['header']), 'date_insert' => gmdate('YmdHis'), 'tree_node_id_mask' => (new BitMask($this->tree_node_id_mask))->getMask()]); $this->id = $articleObject->getId(); $image = $row['image']; $imageContent = file_get_contents($image); $imageUrl = parse_url($image); $pathInfo = pathinfo($imageUrl['path']); $pathInfo['extension']; $fields = \cs\Widget\FileUpload2\FileUpload::save(File::content($imageContent), $pathInfo['extension'], ['image', 'Картинка', 0, 'string', 'widget' => [FileUpload::className(), ['options' => ['small' => \app\services\GsssHtml::$formatIcon]]]], $this); $articleObject->update($fields); return true; }
/** * Добавить послание из GetArticle * * @param \app\services\GetArticle\ExtractorInterface $extractor * * @return static * @throws \yii\base\Exception */ public static function insertExtractorInterface($extractor) { $row = $extractor->extract(); if (is_null($row['header'])) { throw new Exception('Нет заголовка'); } if ($row['header'] == '') { throw new Exception('Нет заголовка'); } if (is_null($row['description'])) { throw new Exception('Нет описания'); } if ($row['description'] == '') { throw new Exception('Нет описания'); } $fields = ['header' => $row['header'], 'content' => $row['content'], 'description' => $row['description'], 'source' => $extractor->getUrl(), 'id_string' => Str::rus2translit($row['header']), 'date_insert' => gmdate('YmdHis'), 'date' => gmdate('Ymd'), 'img' => '']; $articleObject = self::insert($fields); $model = new \app\models\Form\Chenneling(); $model->id = $articleObject->getId(); $image = $row['image']; if ($image) { try { $imageContent = file_get_contents($image); $imageUrl = parse_url($image); $pathInfo = pathinfo($imageUrl['path']); $pathInfo['extension']; $fields = FileUpload::save(File::content($imageContent), $pathInfo['extension'], ['img', 'Картинка', 0, 'string', 'widget' => [FileUpload::className(), ['options' => ['small' => \app\services\GsssHtml::$formatIcon]]]], $model); $articleObject->update($fields); } catch (\Exception $e) { } } return $articleObject; }
/** * @param array $field * @param \cs\base\BaseForm $model * * @return array поля для обновления в БД */ public static function onUpdate($field, $model) { $fieldName = $field[BaseForm::POS_DB_NAME]; $v = $model->{$fieldName}; $isDelete = false; $hasFile = false; $hasUrl = false; if (ArrayHelper::getValue(Yii::$app->request->post(), $model->formName() . '.' . $fieldName . '-is_delete', 0) == 1) { $isDelete = true; } $fileModel = $v['file']; if (!is_null($fileModel)) { if ($fileModel->error == 0) { $hasFile = true; } } if ($v['url'] != '') { $hasUrl = true; } $choose = ''; if ($isDelete == false && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == false && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($isDelete == true && $hasUrl == false && $hasFile == false) { $choose = 'delete'; } if ($isDelete == true && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == true && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == true && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == false && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($choose == 'delete') { $row = $model->getRow(); $dbValue = ArrayHelper::getValue($row, $fieldName, ''); if ($dbValue != '') { // удалить старые файлы $f = new SitePath($dbValue); $f->deleteFile(); } return [$fieldName => '']; } if ($choose == 'url') { try { $data = file_get_contents($v['url']); } catch (\Exception $e) { $data = ''; } if ($data == '') { return []; } $file = File::content($data); $url = new \cs\services\Url($v['url']); $extension = $url->getExtension('jpg'); return self::save($file, $extension, $field, $model); } if ($choose == 'file') { $file = File::path($fileModel->tempName); $extension = $fileModel->extension; return self::save($file, $extension, $field, $model); } return []; }