private function installParsers(IngestParsersEvent $event)
    {
        $fs = new Filesystem();
        $finder = new Finder();

        try {
            $pluginsDir = __DIR__ . '/../../../';
            $namespaces = array();

            $iterator = $finder
                ->ignoreUnreadableDirs()
                ->files()
                ->name('*Parser.php')
                ->notName('AbstractParser.php')
                ->in(__DIR__  . '/../Parsers/');

            try {
                $iterator = $iterator
                    ->in($pluginsDir . '*/*/Parsers/IngestAdapters/');
            } catch(\Exception $e) {
                // Catch exception if no such directory exists
            }

            foreach ($iterator as $file) {
                $classNamespace = str_replace(realpath($pluginsDir), '', substr($file->getRealPath(), 0, -4));
                $namespace = str_replace('/', '\\', $classNamespace);
                $namespaces[] = (string) $namespace;

                $parserName = substr($file->getFilename(), 0, -4);

                $parser = $this->em->getRepository('Newscoop\IngestPluginBundle\Entity\Parser')
                    ->findOneByNamespace($namespace);

                $event->registerParser($parserName, array(
                    'class' => $namespace,
                ));

                if (!$parser) {
                    $parser = new Parser();
                }
                $parser
                    ->setName($namespace::getParserName())
                    ->setDescription($namespace::getParserDescription())
                    ->setDomain($namespace::getParserDomain())
                    ->setRequiresUrl($namespace::getRequiresUrl())
                    ->setSectionHandling($namespace::getHandlesSection())
                    ->setNamespace($namespace);

                $this->em->persist($parser);
            }

            // Remove parser which we didn't find anymore
            $parsersToRemove = $this->em
                ->createQuery('
                    DELETE FROM Newscoop\IngestPluginBundle\Entity\Parser AS p
                    WHERE p.namespace NOT IN (:namespaces)
                ')
                ->setParameter('namespaces', $namespaces)
                ->getResult();

            $this->em->flush();
        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
    }
private function installParsers(IngestParsersEvent $event)
    {
        $fs = new Filesystem();
        $finder = new Finder();

        try {
            $pluginsDir = __DIR__ . '/../../../';
            $namespaces = array();

            $iterator = $finder
                ->ignoreUnreadableDirs()
                ->files()
                ->name('*Parser.php')
                ->notName('AbstractParser.php')
                ->in(__DIR__  . '/../Parsers/');

            try {
                $iterator = $iterator
                    ->in($pluginsDir . '*/*/Parsers/IngestAdapters/');
            } catch(\Exception $e) {
                // Catch exception if no such directory exists
            }

            foreach ($iterator as $file) {
                $classNamespace = str_replace(realpath($pluginsDir), '', substr($file->getRealPath(), 0, -4));
                $namespace = str_replace('/', '\\', $classNamespace);
                $namespaces[] = (string) $namespace;

                $parserName = substr($file->getFilename(), 0, -4);

                $parser = $this->em->getRepository('Newscoop\IngestPluginBundle\Entity\Parser')
                    ->findOneByNamespace($namespace);

                $event->registerParser($parserName, array(
                    'class' => $namespace,
                ));

                if (!$parser) {
                    $parser = new Parser();
                }
                $parser
                    ->setName($namespace::getParserName())
                    ->setDescription($namespace::getParserDescription())
                    ->setDomain($namespace::getParserDomain())
                    ->setRequiresUrl($namespace::getRequiresUrl())
                    ->setSectionHandling($namespace::getHandlesSection())
                    ->setNamespace($namespace);

                $this->em->persist($parser);
            }

            // Remove parser which we didn't find anymore
            $parsersToRemove = $this->em
                ->createQuery('
                    DELETE FROM Newscoop\IngestPluginBundle\Entity\Parser AS p
                    WHERE p.namespace NOT IN (:namespaces)
                ')
                ->setParameter('namespaces', $namespaces)
                ->getResult();

            $this->em->flush();
        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
    }
private function installParsers ( IngestParsersEvent $ event ) { $ fs = new Filesystem ( ) ; $ finder = new Finder ( ) ; try { $ pluginsDir = __DIR__ . '/../../../' ; $ namespaces = array ( ) ; $ iterator = $ finder -> ignoreUnreadableDirs ( ) -> files ( ) -> name ( '*Parser.php' ) -> notName ( 'AbstractParser.php' ) -> in ( __DIR__ . '/../Parsers/' ) ; try { $ iterator = $ iterator -> in ( $ pluginsDir . '*/*/Parsers/IngestAdapters/' ) ; } catch ( \ Exception $ e ) { // Catch exception if no such directory exists } foreach ( $ iterator as $ file ) { $ classNamespace = str_replace ( realpath ( $ pluginsDir ) , '' , substr ( $ file -> getRealPath ( ) , 0 , - 4 ) ) ; $ namespace = str_replace ( '/' , '\\' , $ classNamespace ) ; $ namespaces [ ] = ( string ) $ namespace ; $ parserName = substr ( $ file -> getFilename ( ) , 0 , - 4 ) ; $ parser = $ this -> em -> getRepository ( 'Newscoop\IngestPluginBundle\Entity\Parser' ) -> findOneByNamespace ( $ namespace ) ; $ event -> registerParser ( $ parserName , array ( 'class' => $ namespace , ) ) ; if ( ! $ parser ) { $ parser = new Parser ( ) ; } $ parser -> setName ( $ namespace :: getParserName ( ) ) -> setDescription ( $ namespace :: getParserDescription ( ) ) -> setDomain ( $ namespace :: getParserDomain ( ) ) -> setRequiresUrl ( $ namespace :: getRequiresUrl ( ) ) -> setSectionHandling ( $ namespace :: getHandlesSection ( ) ) -> setNamespace ( $ namespace ) ; $ this -> em -> persist ( $ parser ) ; } // Remove parser which we didn't find anymore $ parsersToRemove = $ this -> em -> createQuery ( '
                    DELETE FROM Newscoop\IngestPluginBundle\Entity\Parser AS p
                    WHERE p.namespace NOT IN (:namespaces)
                ' ) -> setParameter ( 'namespaces' , $ namespaces ) -> getResult ( ) ; $ this -> em -> flush ( ) ; } catch ( \ Exception $ e ) { throw new \ Exception ( $ e -> getMessage ( ) ) ; } }
Install external parsers

@return void

@throws Exception
Install external parsers