Example #1
0
    server_name <?php 
    echo $site['domain'];
    ?>
;
    root <?php 
    echo __DIR__ . '/';
    ?>
;

    error_log /var/log/nginx/<?php 
    echo \BackBee\Utils\StringUtils::urlize($site['label']);
    ?>
.error.log;
    access_log /var/log/nginx/<?php 
    echo \BackBee\Utils\StringUtils::urlize($site['label']);
    ?>
.access.log;

    location ~ /resources/(.*) {
        alias <?php 
    echo dirname(__DIR__) . '/';
    ?>
;
        try_files /repository/Resources/$1 /vendor/backbee/backbee/Resources/$1 @rewriteapp;
    }

    location @emptygif404 { empty_gif; }

    location / {
        try_files $uri @rewriteapp;
Example #2
0
 /**
  * Computes the URL of a page according to a scheme.
  *
  * @param array         $scheme  The scheme to apply
  * @param Page          $page    The page
  * @param  AbstractClassContent $content The optionnal main content of the page
  * @return string        The generated URL
  */
 private function doGenerate($scheme, Page $page, AbstractClassContent $content = null)
 {
     $replacement = ['$parent' => $page->isRoot() ? '' : $page->getParent()->getUrl(false), '$title' => StringUtils::urlize($page->getTitle()), '$datetime' => $page->getCreated()->format('ymdHis'), '$date' => $page->getCreated()->format('ymd'), '$time' => $page->getCreated()->format('His')];
     $matches = [];
     if (preg_match_all('/(\\$content->[a-z]+)/i', $scheme, $matches)) {
         foreach ($matches[1] as $pattern) {
             $property = explode('->', $pattern);
             $property = array_pop($property);
             try {
                 $replacement[$pattern] = StringUtils::urlize($content->{$property});
             } catch (\Exception $e) {
                 $replacement[$pattern] = '';
             }
         }
     }
     $matches = [];
     if (preg_match_all('/(\\$ancestor\\[([0-9]+)\\])/i', $scheme, $matches)) {
         foreach ($matches[2] as $level) {
             $ancestor = $this->application->getEntityManager()->getRepository('BackBee\\CoreDomain\\NestedNode\\Page')->getAncestor($page, $level);
             if (null !== $ancestor && $page->getLevel() > $level) {
                 $replacement['$ancestor[' . $level . ']'] = $ancestor->getUrl(false);
             } else {
                 $replacement['$ancestor[' . $level . ']'] = '';
             }
         }
     }
     $url = preg_replace('/\\/+/', '/', str_replace(array_keys($replacement), array_values($replacement), $scheme));
     return $this->getUniqueness($page, $url);
 }
Example #3
0
 /**
  * Create new site entry inside sites.yml file
  *
  * @return CreateWebsiteCommand
  */
 protected function runSitesYmlProcess()
 {
     $sitesConf = $this->bbapp->getConfig()->getSitesConfig();
     if ($this->siteDomain === null) {
         throw new \InvalidArgumentException('This site domain is not valid (empty value)');
     }
     if (is_array($sitesConf) && array_key_exists($this->siteLabel, $sitesConf)) {
         throw new \InvalidArgumentException('This label `' . $this->siteLabel . '` already present in sites.yml');
     }
     $newSite = [\BackBee\Utils\StringUtils::urlize($this->siteLabel) => ['label' => $this->siteLabel, 'domain' => $this->siteDomain]];
     $newSitesConf = is_array($sitesConf) ? array_merge($sitesConf, $newSite) : $newSite;
     file_put_contents($this->bbapp->getBaseDir() . DIRECTORY_SEPARATOR . 'repository/Config/sites.yml', Yaml::dump($newSitesConf));
     return $this;
 }
 /**
  * Create a media folder
  * and if a parent is provided added has its last child
  *
  * @param MediaFolder $mediaFolder
  *
  * @Rest\RequestParam(name="title", description="media title", requirements={
  *   @Assert\NotBlank()
  * })
  * @ParamConverter(
  *   name="parent", id_name="parent_uid", id_source="request", class="BackBee\NestedNode\MediaFolder", required=false
  * )
  * @Rest\Security("is_fully_authenticated() & has_role('ROLE_API_USER') & is_granted('CREATE', '\BackBee\NestedNode\MediaFolder')")
  */
 public function postAction(Request $request, $parent = null)
 {
     try {
         $title = trim($request->request->get('title'));
         $uid = $request->request->get('uid', null);
         if (null !== $uid) {
             $mediaFolder = $this->getMediaFolderRepository()->find($uid);
             $mediaFolder->setTitle($title);
         } else {
             $mediaFolder = new MediaFolder();
             $mediaFolder->setUrl($request->request->get('url', StringUtils::urlize($title)));
             $mediaFolder->setTitle($title);
             if (null === $parent) {
                 $parent = $this->getMediaFolderRepository()->getRoot();
             }
             if ($this->mediaFolderAlreadyExists($title, $parent)) {
                 throw new BadRequestHttpException(sprintf('A MediaFolder named `%s` already exists in `%s`.', $title, $parent->getTitle()));
             }
             $mediaFolder->setParent($parent);
             $this->getMediaFolderRepository()->insertNodeAsLastChildOf($mediaFolder, $parent);
         }
         $this->getEntityManager()->persist($mediaFolder);
         $this->getEntityManager()->flush();
         $response = $this->createJsonResponse(null, 201, ['BB-RESOURCE-UID' => $mediaFolder->getUid(), 'Location' => $this->getApplication()->getRouting()->getUrlByRouteName('bb.rest.media-folder.get', ['version' => $request->attributes->get('version'), 'uid' => $mediaFolder->getUid()], '', false)]);
     } catch (\Exception $e) {
         $response = $this->createResponse(sprintf('Internal server error: %s', $e->getMessage()));
     }
     return $response;
 }
 public function testUrlize()
 {
     $this->assertEquals('test-s-url', StringUtils::urlize('test’s url'));
     $this->assertEquals('test-s-url', StringUtils::urlize('test\'s url'));
     $this->assertEquals('test-euro-url', StringUtils::urlize('test € url'));
     $this->assertEquals('percent-euro', StringUtils::urlize('® % € “ ” …'));
     $this->assertEquals('ou-skier-cet-hiver', StringUtils::urlize('Où skier cet hiver'));
     $this->assertEquals('', StringUtils::urlize('“ ” …'));
     $this->assertEquals('tests_url.com', StringUtils::urlize('test`s url', array('extension' => '.com', 'spacereplace' => '_')));
     $this->assertEquals('tests_u.com', StringUtils::urlize('test`s url', array('extension' => '.com', 'spacereplace' => '_', 'lengthlimit' => 7)));
     $this->assertEquals('tests#the#url#this#one.com', StringUtils::urlize('test`s the.url:this\'one', array('extension' => '.com', 'separators' => '/[.\'’:]+/', 'spacereplace' => '#')));
 }