Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 /**
  * Добавить послание из 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;
 }
Exemplo n.º 3
0
 /**
  * @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 [];
 }