/** @return FormsCollection */ public function getForms() { $forms = new FormsCollection(); foreach ($this->getCrawler()->filterXPath('//form') as $node) { if ($form = $this->elementToForm($node)) { $forms->add($form); } } return $forms; }
protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln('Patience...'); try { $starttime = time(); $client = new Client(); $violations = 0; $testedForms = new FormsCollection(); $profile = new Profile($client); $profile->loadFile($this->resolvePath($input->getArgument('profile'))); $profile->executePreScript(); $pages = $profile->spider(); foreach ($pages as $page) { $output->writeLn('<info>' . $page->getUri() . '</info>'); foreach ($page->getForms() as $form) { $output->writeln(self::INDENT . self::LEAF . $form->getHtml()); if ($testedForms->contains($form)) { $output->writeln(self::INDENT . self::INDENT . self::LEAF . 'Already tested'); continue; } foreach ($profile->getRules() as $rule) { if (!$rule->isValid($form)) { $output->writeln(self::INDENT . self::INDENT . self::LEAF . "<error>" . $rule->getMessage() . "</error>"); ++$violations; } } $testedForms->add($form); } $output->writeln(''); } $output->writeln(sprintf('Duration: %s seconds', time() - $starttime)); $output->writeln(sprintf('Found %s unique forms on %s pages', count($testedForms), count($pages))); if ($violations) { $output->writeln("<error>{$violations} violations found.</error>"); return self::EXIT_FAIL; } else { $output->writeln('<info>Done.</info>'); return self::EXIT_SUCCESS; } } catch (ConnectException $e) { $output->writeln(sprintf('<error>%s</error>', $e->getMessage())); } }