Jordi Boggiano 13 жил өмнө
parent
commit
fec447563d

+ 3 - 0
src/Packagist/WebBundle/Controller/UserController.php

@@ -17,6 +17,9 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 
+/**
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
 class UserController extends Controller
 {
     /**

+ 3 - 3
src/Packagist/WebBundle/Controller/WebController.php

@@ -83,11 +83,11 @@ class WebController extends Controller
     public function submitPackageAction()
     {
         $package = new Package;
-        $package->setRepositoryProvider($this->get('packagist.repository_provider'));
+        $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
         $form = $this->createForm(new PackageType, $package);
 
         $request = $this->getRequest();
-        if ($request->getMethod() == 'POST') {
+        if ('POST' === $request->getMethod()) {
             $form->bindRequest($request);
             if ($form->isValid()) {
                 try {
@@ -116,7 +116,7 @@ class WebController extends Controller
     public function fetchInfoAction()
     {
         $package = new Package;
-        $package->setRepositoryProvider($this->get('packagist.repository_provider'));
+        $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
         $form = $this->createForm(new PackageType, $package);
 
         $response = array('status' => 'error', 'reason' => 'No data posted.');

+ 13 - 1
src/Packagist/WebBundle/DependencyInjection/PackagistWebExtension.php

@@ -1,13 +1,25 @@
 <?php
 
+/*
+ * This file is part of Packagist.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *     Nils Adermann <naderman@naderman.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
 namespace Packagist\WebBundle\DependencyInjection;
 
 use Symfony\Component\Config\FileLocator;
-
 use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
 
+/**
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
 class PackagistWebExtension extends Extension
 {
     public function load(array $configs, ContainerBuilder $container)

+ 14 - 7
src/Packagist/WebBundle/Entity/Package.php

@@ -12,11 +12,12 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Packagist\WebBundle\Repository\RepositoryProviderInterface;
 use Doctrine\ORM\Mapping as ORM;
 use Symfony\Component\Validator\Constraints as Assert;
 use Symfony\Component\Validator\ExecutionContext;
 use Doctrine\Common\Collections\ArrayCollection;
+use Composer\Repository\VcsRepository;
+use Composer\Repository\RepositoryManager;
 
 /**
  * @ORM\Entity(repositoryClass="Packagist\WebBundle\Entity\PackageRepository")
@@ -87,6 +88,8 @@ class Package
      */
     private $crawledAt;
 
+    private $entityRepository;
+
     public function __construct()
     {
         $this->versions = new ArrayCollection();
@@ -113,11 +116,6 @@ class Package
         return $data;
     }
 
-    public function setRepositoryProvider(RepositoryProviderInterface $provider)
-    {
-        $this->repositoryProvider = $provider;
-    }
-
     public function isRepositoryValid(ExecutionContext $context)
     {
         $propertyPath = $context->getPropertyPath() . '.repository';
@@ -145,9 +143,18 @@ class Package
         }
     }
 
+    public function setEntityRepository($repository)
+    {
+        $this->entityRepository = $repository;
+    }
+
     public function isPackageUnique(ExecutionContext $context)
     {
-        // TODO check for uniqueness of package name
+        if ($this->entityRepository->findOneByName($this->name)) {
+            $propertyPath = $context->getPropertyPath() . '.repository';
+            $context->setPropertyPath($propertyPath);
+            $context->addViolation('A package with the name '.$this->name.' already exists.', array(), null);
+        }
     }
 
     /**

+ 10 - 0
src/Packagist/WebBundle/Entity/User.php

@@ -1,5 +1,15 @@
 <?php
 
+/*
+ * This file is part of Packagist.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *     Nils Adermann <naderman@naderman.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
 namespace Packagist\WebBundle\Entity;
 
 use FOS\UserBundle\Entity\User as BaseUser;

+ 10 - 0
src/Packagist/WebBundle/Form/Model/AddMaintainerRequest.php

@@ -1,5 +1,15 @@
 <?php
 
+/*
+ * This file is part of Packagist.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *     Nils Adermann <naderman@naderman.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
 namespace Packagist\WebBundle\Form\Model;
 
 use FOS\UserBundle\Model\UserInterface;

+ 0 - 3
src/Packagist/WebBundle/Resources/config/routing.yml

@@ -1,3 +0,0 @@
-#homepage:
-#    pattern:  /
-#    defaults: { _controller: PackagistWebBundle:Default:index }

+ 0 - 7
src/Packagist/WebBundle/Resources/config/services.yml

@@ -1,8 +1 @@
 services:
-    packagist.repository_provider.github:
-        class: Packagist\WebBundle\Repository\Provider\GitHubProvider
-        tags:
-            - { name: packagist.repository_provider, priority: 100 }
-
-    packagist.repository_provider:
-        class: Packagist\WebBundle\Repository\RepositoryProvider

+ 8 - 8
src/Packagist/WebBundle/Resources/translations/messages.en.yml

@@ -1,9 +1,9 @@
 menu:
-  about_packagist: About Packagist
-  about_composer: About Composer
-  home: Home
-  profile: Profile
-  logout: Logout
-  login: Login
-  register: Register
-  browse_packages: Browse Packages
+    about_packagist: About Packagist
+    about_composer: About Composer
+    home: Home
+    profile: Profile
+    logout: Logout
+    login: Login
+    register: Register
+    browse_packages: Browse Packages