Browse Source

Using validation groups, updating package after redirect.

Christoph Hochstrasser 13 years ago
parent
commit
0d569e9ccd

+ 6 - 17
src/Packagist/WebBundle/Controller/PackageController.php

@@ -40,22 +40,23 @@ class PackageController extends Controller
             throw new AccessDeniedException;
             throw new AccessDeniedException;
         }
         }
 
 
-        $form = $this->createFormBuilder($package)
+        $form = $this->createFormBuilder($package, array("validation_groups" => array("update")))
             ->add("repository", "text")
             ->add("repository", "text")
             ->getForm();
             ->getForm();
 
 
-        if ('POST' === $req->getMethod()) {
+        if ($req->isMethod("POST")) {
             $package->setEntityRepository($packages);
             $package->setEntityRepository($packages);
 
 
             $form->bindRequest($req);
             $form->bindRequest($req);
 
 
-            if ($this->get("validator")->validateProperty($package, "repository")) {
+            if ($form->isValid()) {
+                // Force updating of packages once the package is viewed after the redirect.
+                $package->setCrawledAt(null);
+
                 $em = $this->getDoctrine()->getEntityManager();
                 $em = $this->getDoctrine()->getEntityManager();
                 $em->persist($package);
                 $em->persist($package);
                 $em->flush();
                 $em->flush();
 
 
-                $this->updatePackage($package);
-
                 $this->get("session")->setFlash("notice", "Changes saved.");
                 $this->get("session")->setFlash("notice", "Changes saved.");
 
 
                 return $this->redirect(
                 return $this->redirect(
@@ -68,17 +69,5 @@ class PackageController extends Controller
             "package" => $package, "form" => $form->createView()
             "package" => $package, "form" => $form->createView()
         );
         );
     }
     }
-
-    private function updatePackage(Package $package)
-    {
-        $doctrine = $this->getDoctrine();
-
-        set_time_limit(3600);
-        $updater = $this->get('packagist.package_updater');
-
-        $config = Factory::createConfig();
-        $repository = new VcsRepository(array('url' => $package->getRepository()), new NullIO, $config);
-        $updater->update($package, $repository, Updater::UPDATE_TAGS);
-    }
 }
 }
 
 

+ 2 - 2
src/Packagist/WebBundle/Entity/Package.php

@@ -74,7 +74,7 @@ class Package
 
 
     /**
     /**
      * @ORM\Column()
      * @ORM\Column()
-     * @Assert\NotBlank()
+     * @Assert\NotBlank(groups={"update"})
      */
      */
     private $repository;
     private $repository;
 
 
@@ -470,4 +470,4 @@ class Package
     {
     {
         return $this->autoUpdated;
         return $this->autoUpdated;
     }
     }
-}
+}