예제 #1
0
 public function validate($value, Constraint $constraint)
 {
     $value = StringHandler::slugify($value);
     /*
      * If value is already the node name
      * do nothing.
      */
     if (null !== $constraint->currentValue && $value == $constraint->currentValue) {
         return;
     }
     if (null !== $constraint->entityManager) {
         if (true === $this->tagNameExists($value, $constraint->entityManager)) {
             $this->context->addViolation($constraint->message);
         }
     } else {
         $this->context->addViolation('UniqueTagNameValidator constraint requires a valid EntityManager');
     }
 }
예제 #2
0
 /**
  * Update nodeName when title is available.
  *
  * @param  string       $title
  * @param  NodesSources $nodeSource
  */
 protected function updateNodeName(NodesSources $nodeSource)
 {
     $title = $nodeSource->getTitle();
     /*
      * update node name if dynamic option enabled and
      * default translation
      */
     if ("" != $title && true === $nodeSource->getNode()->isDynamicNodeName() && $nodeSource->getTranslation()->isDefaultTranslation()) {
         $testingNodeName = StringHandler::slugify($title);
         /*
          * node name wont be updated if name already taken
          */
         if ($testingNodeName != $nodeSource->getNode()->getNodeName() && false === (bool) $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\UrlAlias')->exists($testingNodeName) && false === (bool) $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\Node')->exists($testingNodeName)) {
             $nodeSource->getNode()->setNodeName($title);
             $this->getService('em')->flush();
             /*
              * Dispatch event
              */
             $event = new FilterNodeEvent($nodeSource->getNode());
             $this->getService('dispatcher')->dispatch(NodeEvents::NODE_UPDATED, $event);
         }
     }
 }
예제 #3
0
 public function searchAction(Request $request)
 {
     /*
      * Validate
      */
     if (true !== ($notValid = $this->validateRequest($request, 'GET'))) {
         return new Response(json_encode($notValid), Response::HTTP_OK, ['content-type' => 'application/javascript']);
     }
     $this->validateAccessForRole('ROLE_ACCESS_TAGS');
     $responseArray = ['statusCode' => Response::HTTP_NOT_FOUND, 'status' => 'danger', 'responseText' => 'No tags found'];
     if ($request->get('search') != "") {
         $responseArray = [];
         $pattern = strip_tags($request->get('search'));
         $tags = $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\Tag')->searchBy($pattern, [], [], 10);
         if (0 === count($tags)) {
             /*
              * Try again using tag slug
              */
             $pattern = StringHandler::slugify($pattern);
             $tags = $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\Tag')->searchBy($pattern, [], [], 10);
         }
         foreach ($tags as $tag) {
             $responseArray[] = $tag->getHandler()->getFullPath();
         }
     }
     return new Response(json_encode($responseArray), Response::HTTP_OK, ['content-type' => 'application/javascript']);
 }
예제 #4
0
 /**
  * @param array                           $data
  * @param RZ\Roadiz\Core\Entities\UrlAlias $ua
  *
  * @return boolean
  */
 private function editUrlAlias($data, UrlAlias $ua)
 {
     $testingAlias = StringHandler::slugify($data['alias']);
     if ($testingAlias != $ua->getAlias() && ($this->nodeNameExists($testingAlias) || $this->urlAliasExists($testingAlias))) {
         $msg = $this->getTranslator()->trans('url_alias.%alias%.no_update.already_exists', ['%alias%' => $data['alias']]);
         throw new EntityAlreadyExistsException($msg, 1);
     }
     if ($data['urlaliasId'] == $ua->getId()) {
         try {
             $ua->setAlias($data['alias']);
             $this->getService('em')->flush();
             return true;
         } catch (\Exception $e) {
             return false;
         }
     }
     return false;
 }
예제 #5
0
 /**
  * Return a ZipArchive of requested font.
  *
  * @param Symfony\Component\HttpFoundation\Request $request
  * @param int                                      $fontId
  *
  * @return Symfony\Component\HttpFoundation\Response
  */
 public function downloadAction(Request $request, $fontId)
 {
     $this->validateAccessForRole('ROLE_ACCESS_FONTS');
     $font = $this->getService('em')->find('RZ\\Roadiz\\Core\\Entities\\Font', (int) $fontId);
     if ($font !== null) {
         // Prepare File
         $file = tempnam("tmp", "zip");
         $zip = new \ZipArchive();
         $zip->open($file, \ZipArchive::OVERWRITE);
         if ("" != $font->getEOTFilename()) {
             $zip->addFile($font->getEOTAbsolutePath(), $font->getEOTFilename());
         }
         if ("" != $font->getSVGFilename()) {
             $zip->addFile($font->getSVGAbsolutePath(), $font->getSVGFilename());
         }
         if ("" != $font->getWOFFFilename()) {
             $zip->addFile($font->getWOFFAbsolutePath(), $font->getWOFFFilename());
         }
         if ("" != $font->getWOFF2Filename()) {
             $zip->addFile($font->getWOFF2AbsolutePath(), $font->getWOFF2Filename());
         }
         if ("" != $font->getOTFFilename()) {
             $zip->addFile($font->getOTFAbsolutePath(), $font->getOTFFilename());
         }
         // Close and send to users
         $zip->close();
         $filename = StringHandler::slugify($font->getName() . ' ' . $font->getReadableVariant()) . '.zip';
         $response = new Response(file_get_contents($file), Response::HTTP_OK, ['content-control' => 'private', 'content-type' => 'application/zip', 'content-length' => filesize($file), 'content-disposition' => 'attachment; filename=' . $filename]);
         unlink($file);
         return $response;
     } else {
         return $this->throw404();
     }
 }
예제 #6
0
 /**
  * @param string $name
  *
  * @return $this
  */
 public function setName($name)
 {
     $this->name = StringHandler::slugify($name);
     return $this;
 }
예제 #7
0
파일: Tag.php 프로젝트: QuangDang212/roadiz
 /**
  * @param string $tagName
  *
  * @return $this
  */
 public function setTagName($tagName)
 {
     $this->dirtyTagName = $tagName;
     $this->tagName = StringHandler::slugify($tagName);
     return $this;
 }
예제 #8
0
 /**
  * Return a ZipArchive of requested folder.
  *
  * @param Symfony\Component\HttpFoundation\Request $request
  * @param int                                      $folderId
  *
  * @return Symfony\Component\HttpFoundation\Response
  */
 public function downloadAction(Request $request, $folderId)
 {
     $this->validateAccessForRole('ROLE_ACCESS_DOCUMENTS');
     $folder = $this->getService('em')->find('RZ\\Roadiz\\Core\\Entities\\Folder', (int) $folderId);
     if ($folder !== null) {
         // Prepare File
         $file = tempnam("tmp", "zip");
         $zip = new \ZipArchive();
         $zip->open($file, \ZipArchive::OVERWRITE);
         $documents = $this->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\Document')->findBy(['folders' => [$folder]]);
         foreach ($documents as $document) {
             $zip->addFile($document->getAbsolutePath(), $document->getFilename());
         }
         // Close and send to users
         $zip->close();
         $filename = StringHandler::slugify($folder->getName()) . '.zip';
         $response = new Response(file_get_contents($file), Response::HTTP_OK, ['content-type' => 'application/zip', 'content-length' => filesize($file), 'content-disposition' => 'attachment; filename=' . $filename]);
         unlink($file);
         return $response;
     } else {
         return $this->throw404();
     }
 }
예제 #9
0
 /**
  * @dataProvider slugifyProvider
  */
 public function testSlugify($input, $expected)
 {
     // Assert
     $this->assertEquals($expected, StringHandler::slugify($input));
 }
예제 #10
0
 /**
  * Sets the value of overrideLocale.
  *
  * @param string $overrideLocale the override locale
  *
  * @return self
  */
 public function setOverrideLocale($overrideLocale)
 {
     $this->overrideLocale = StringHandler::slugify($overrideLocale);
     return $this;
 }
예제 #11
0
 /**
  * @param string $alias
  *
  * @return $this
  */
 public function setAlias($alias)
 {
     $this->alias = StringHandler::slugify($alias);
     return $this;
 }