Knp\Bundle\KnpBundlesBundle\Controller\BundleController::addAction PHP Method

addAction() public method

public addAction ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function addAction(Request $request)
    {
        $error = false;
        $message = '';
        $bundle = $request->request->get('bundle');
        if (($request->isXmlHttpRequest() || 'POST' === $request->getMethod()) && null === $bundle) {
            $error = true;
            $message = 'Please enter a valid GitHub repo name (e.g. KnpLabs/KnpBundles).';
        }
        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);
                $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 <a href="' . $url . '">exists</a> 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 = '<strong>Hey, friend!</strong> Thanks for adding <a href="' . $url . '">your bundle</a> 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).';
            }
        }
        if (!$request->isXmlHttpRequest()) {
            $bundles = $this->getRepository('Bundle')->findAllSortedBy('createdAt', 'desc', 5);
            return $this->render('KnpBundlesBundle:Bundle:add.html.twig', array('bundle' => $bundle, 'bundles' => $bundles, 'error' => $error, 'errorMessage' => $message));
        }
        return new JsonResponse(array('message' => $message), $error ? 400 : 201);
    }