checkEnvironment('prod')) { return; } if (! $index instanceof InternalHoseIndex) { throw new \LogicException(sprintf( 'External fixtures should be loaded into \'%s\' but \'%s\' given', InternalHoseIndex::class, get_class($index) )); } $patches = [ [ 'sequence' => '1', 'title' => 'Al Kodmani Crime Family stole millions', 'lang' => 'en', 'geo_country' => 'US', 'geo_state' => 'Arizona', 'geo_city' => 'Amazing City', 'published' => date_create()->modify('- 10 days')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'CNN', 'duplicates_count' => 0, 'image_src' => 'http://lorempixel.com/120/100/', 'views' => 12012312, ], [ 'sequence' => '2', 'title' => 'Amazing cat', 'lang' => 'en', 'geo_country' => 'US', 'geo_state' => 'Maryland', 'published' => date_create()->modify('- 15 days')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'Asharq Al Awsat', 'duplicates_count' => 0, 'image_src' => '', 'views' => 112, 'section' => 'Lifestyle', ], [ 'sequence' => '3', 'title' => 'More about cats', 'lang' => 'ru', 'geo_country' => 'US', 'geo_state' => 'Louisiana', 'published' => date_create()->modify('- 10 days')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'AAAE', 'duplicates_count' => 0, 'image_src' => null, 'views' => 10001, ], [ 'sequence' => '4', 'title' => 'Cat and dog market', 'lang' => 'en', 'geo_country' => 'RU', 'published' => date_create()->modify('- 1 months')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'Aaj TV', 'duplicates_count' => 0, 'image_src' => 'http://lorempixel.com/120/100/', 'views' => 123, ], [ 'sequence' => '5', 'title' => 'Dogs are the best', 'lang' => 'en', 'published' => date_create()->modify('- 1 year')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'AACSB', 'duplicates_count' => 20, 'image_src' => 'http://lorempixel.com/120/100/', 'views' => 1123312, ], [ 'sequence' => '6', 'title' => 'Fish', 'lang' => 'af', 'geo_country' => 'US', 'geo_state' => 'Maryland', 'published' => date_create()->modify('- 25 days')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'Armenian Assembly of America', 'duplicates_count' => 0, 'image_src' => 'http://lorempixel.com/120/100/', 'views' => 100237312, ], [ 'sequence' => '7', 'title' => 'Cat and fish', 'lang' => 'en', 'geo_country' => 'US', 'geo_state' => 'Arizona', 'published' => date_create()->modify('- 3 days')->format('Y-m-d\TH:i:s\Z'), 'source_title' => '4A\'s', 'duplicates_count' => 10, 'image_src' => null, 'views' => 1543312, 'author_name' => 'Gracie Pfeffer', 'publisher' => 'msnbc', ], [ 'sequence' => '8', 'title' => 'Some', 'main' => 'Cat', 'lang' => 'af', 'geo_country' => 'US', 'geo_state' => 'Louisiana', 'published' => date_create()->modify('- 15 minutes')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'Asian American Press', 'duplicates_count' => 5, 'image_src' => '', 'views' => 10312, ], [ 'sequence' => '9', 'title' => 'Some', 'main' => 'Cat', 'lang' => 'af', 'geo_country' => 'US', 'geo_state' => 'Louisiana', 'published' => date_create()->modify('- 1 hours')->format('Y-m-d\TH:i:s\Z'), 'source_title' => 'CNN', 'duplicates_count' => 5, 'image_src' => '', 'views' => 10012, ], ]; /** @var ArticleDocumentInterface[] $documents */ $documents = []; $max = $this->checkEnvironment('stage') ? self::MAX : count($patches); foreach (range(0, $max) as $idx) { $document = $this->generator->generate(10 + $idx); if (isset($patches[$idx])) { $document = $this->applyPatch($document, $patches[$idx]); } $documents[] = $document; } $index->index($documents); // // Some documents we should persist into our database in order to add // comments for it. // /** @var EntityManagerInterface $em */ $em = $this->container->get('doctrine.orm.default_entity_manager'); $users = [ $em->getReference(User::class, 1), $em->getReference(User::class, 2), $em->getReference(User::class, 3), ]; $faker = $this->getFaker(); if (! $this->checkEnvironment('test')) { foreach (range(0, $max, 5) as $idx) { $commentsCount = random_int(15, 35); $entity = $documents[$idx]->toDocumentEntity() ->setCommentsCount($commentsCount + 1); $em->persist($entity); foreach (range(0, $commentsCount) as $commentIdx) { $comment = new Comment( $faker->randomElement($users), $faker->realText(), $faker->boolean() ? 'Comment ' . $commentIdx : '' ); $comment ->setCreatedAt(date_create()->modify('- ' . ($commentIdx + 1) . ' minutes')) ->setNew($commentIdx < CommentManagerInterface::NEW_COMMENT_POOL_SIZE) ->setDocument($entity); $em->persist($comment); } } } $em->flush(); } /** * @param DocumentInterface $document A IndexDocumentInterface instance. * @param array $path Array of patched properties with new values. * * @return DocumentInterface */ private function applyPatch(DocumentInterface $document, array $path) { return $document->mapRawData(function (array $data) use ($path) { foreach ($path as $name => $value) { $data[$name] = $value; } return $data; }); } }