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}