PackagistExtension.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace Packagist\WebBundle\Twig;
  3. use Symfony\Component\DependencyInjection\ContainerInterface;
  4. class PackagistExtension extends \Twig_Extension
  5. {
  6. /**
  7. * @var ContainerInterface
  8. */
  9. private $container;
  10. public function __construct(ContainerInterface $container)
  11. {
  12. $this->container = $container;
  13. }
  14. public function getFunctions()
  15. {
  16. return array('packagist_package_exists' => new \Twig_Function_Method($this, 'getPackageExists'),
  17. 'packagist_is_package_name' => new \Twig_Function_Method($this, 'validatePackageName'));
  18. }
  19. public function getName()
  20. {
  21. return 'packagist';
  22. }
  23. public function getPackageExists($package)
  24. {
  25. $doctrine = $this->container->get('doctrine');
  26. /* @var $doctrine Symfony\Bundle\DoctrineBundle\Registry */
  27. return $doctrine->getRepository('PackagistWebBundle:Package')
  28. ->packageExists($package);
  29. }
  30. public function validatePackageName($package)
  31. {
  32. return preg_match('/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+/', $package);
  33. }
  34. }