Пример #1
0
 public function insert($fieldsCols = NULL)
 {
     $extractorConfig = Collection::find($this->provider);
     if (is_null($extractorConfig)) {
         throw new Exception('Не верный extractor');
     }
     $extractorClass = $extractorConfig['class'];
     /** @var \app\services\GetArticle\ExtractorInterface $extractor */
     $extractor = new $extractorClass($this->url);
     $articleObject = Chenneling::insertExtractorInterface($extractor);
     $articleObject->update(['tree_node_id_mask' => (new BitMask($this->tree_node_id_mask))->getMask()]);
     return true;
 }
 public function actionIndex()
 {
     if (count(Yii::$app->request->post()) > 0) {
         $formValues = Yii::$app->request->post((new Investigator())->formName());
         $add = [];
         $skip = [];
         foreach ($formValues as $name => $value) {
             if (StringHelper::startsWith($name, 'id')) {
                 $id = substr($name, 2);
                 foreach (Yii::$app->session->get('items') as $sessionItem) {
                     if ($sessionItem['id'] == $id) {
                         switch ($value) {
                             // пропустить
                             case 1:
                                 $skip[] = $sessionItem['id'];
                                 break;
                                 // добавить
                             // добавить
                             case 2:
                                 $add[] = $sessionItem['id'];
                                 break;
                         }
                     }
                 }
             }
         }
         if (count($skip) > 0) {
             (new Query())->createCommand()->update(Inv::TABLE, ['status' => Inv::STATUS_SKIP], ['in', 'id', $skip])->execute();
         }
         foreach ($add as $item) {
             $i = Inv::find($item);
             $class = $i->getField('class_name');
             // послание
             /** @var \app\services\investigator\InvestigatorInterface $class */
             $class = new $class();
             $extractor = $class->getItem($i->getField('url'));
             // добавляю
             Chenneling::insertExtractorInterface($extractor);
         }
         if (count($add) > 0) {
             (new Query())->createCommand()->update(Inv::TABLE, ['status' => Inv::STATUS_ADD], ['in', 'id', $add])->execute();
         }
         Yii::$app->session->remove('items');
         Yii::$app->session->setFlash('contactFlash');
         return $this->render([]);
     } else {
         $items = \app\models\Investigator::query(['status' => \app\models\Investigator::STATUS_NEW])->select(['class_name as class', 'id', 'url', 'date_insert', 'status', 'name'])->all();
         Yii::$app->session->set('items', $items);
         return $this->render(['items' => $items]);
     }
 }