diff --git a/src/Knp/Bundle/KnpBundlesBundle/Controller/BundleController.php b/src/Knp/Bundle/KnpBundlesBundle/Controller/BundleController.php index 7033620b..f31612bb 100644 --- a/src/Knp/Bundle/KnpBundlesBundle/Controller/BundleController.php +++ b/src/Knp/Bundle/KnpBundlesBundle/Controller/BundleController.php @@ -307,35 +307,30 @@ public function addAction(Request $request) if (!$error && ($request->isXmlHttpRequest() || 'POST' === $request->getMethod())) { $bundle = trim(str_replace(array('http://github.com', 'https://github.com', '.git'), '', $bundle), '/'); - if (preg_match('/^[a-z0-9-]+\/[a-z0-9-]+$/i', $bundle)) { - list($ownerName, $name) = explode('/', $bundle); + list($ownerName, $name) = explode('/', $bundle); - $url = $this->generateUrl('bundle_show', array('ownerName' => $ownerName, 'name' => $name)); - if ($this->getRepository('Bundle')->findOneBy(array('ownerName' => $ownerName, 'name' => $name))) { + $url = $this->generateUrl('bundle_show', array('ownerName' => $ownerName, 'name' => $name)); + if ($this->getRepository('Bundle')->findOneBy(array('ownerName' => $ownerName, 'name' => $name))) { + if (!$request->isXmlHttpRequest()) { + return $this->redirect($url); + } + + $error = true; + $message = 'Specified bundle already exists at KnpBundles.com!'; + } + + if (!$error) { + /** @var $updater \Knp\Bundle\KnpBundlesBundle\Updater\Updater */ + $updater = $this->get('knp_bundles.updater'); + if ($updater->addBundle($bundle)) { if (!$request->isXmlHttpRequest()) { return $this->redirect($url); } - + $message = 'Hey, friend! Thanks for adding your bundle to our database!'; + } else { $error = true; - $message = 'Specified bundle already exists at KnpBundles.com!'; + $message = 'Specified repository is not valid Symfony2 bundle!'; } - - if (!$error) { - /** @var $updater \Knp\Bundle\KnpBundlesBundle\Updater\Updater */ - $updater = $this->get('knp_bundles.updater'); - if ($updater->addBundle($bundle)) { - if (!$request->isXmlHttpRequest()) { - return $this->redirect($url); - } - $message = 'Hey, friend! Thanks for adding your bundle to our database!'; - } else { - $error = true; - $message = 'Specified repository is not valid Symfony2 bundle!'; - } - } - } else { - $error = true; - $message = 'Please enter a valid GitHub repo name (e.g. KnpLabs/KnpBundles).'; } } diff --git a/src/Knp/Bundle/KnpBundlesBundle/Resources/config/routing/bundles.yml b/src/Knp/Bundle/KnpBundlesBundle/Resources/config/routing/bundles.yml index 3e58ab22..90c71869 100644 --- a/src/Knp/Bundle/KnpBundlesBundle/Resources/config/routing/bundles.yml +++ b/src/Knp/Bundle/KnpBundlesBundle/Resources/config/routing/bundles.yml @@ -41,7 +41,7 @@ bundle_get_badge: bundle_show: pattern: /{ownerName}/{name}.{_format} defaults: { _controller: KnpBundlesBundle:Bundle:show, _format: html } - requirements: { _method: "GET", _format: "(html|json)" } + requirements: { _method: "GET", _format: "(html|json)", name: "[^/]++" } bundle_settings: pattern: /bundle/settings/{id}