예제 #1
0
 /**
  * Changes our NodeRef
  *
  * @param NodeRef $newNodeRef
  */
 public function setNodeRef($newNodeRef)
 {
     $this->fields['NodeRef'] = $newNodeRef;
     $this->fields['Slug'] = $newNodeRef->isFullyQualified() ? $newNodeRef->getSlug() : '';
 }
예제 #2
0
 /**
  * @param NodeRef $nodeRef
  * @param null $title
  * @param bool $useTime
  * @return NodeRef
  * @throws NodeException
  * @events slugUniquing validation event with $slugTransporter as param2
  */
 public function generateUniqueNodeRef(NodeRef $nodeRef, $title = null, $useTime = false)
 {
     $slug = $nodeRef->getSlug();
     $slugTransporter = new Transport();
     $slugTransporter->Slug = $slug;
     $errors = new Errors();
     $this->NodeEvents->fireValidationEvents('slugUniquing', $errors, $nodeRef, $slugTransporter);
     $slug = $slugTransporter->Slug;
     $nodeRef = new NodeRef($nodeRef->getElement(), $slug);
     $errors->throwOnError();
     if (empty($slug)) {
         if (empty($title)) {
             throw new NodeException('Cannot generate unique NodeRef without title');
         }
         if ($useTime) {
             $slug = SlugUtils::createSlug(substr($title, 0, 237) . '-' . floor(microtime(true) * 100), $nodeRef->getElement()->isAllowSlugSlashes());
         } else {
             $slug = SlugUtils::createSlug(substr($title, 0, 255), $nodeRef->getElement()->isAllowSlugSlashes());
         }
         $nodeRef = new NodeRef($nodeRef->getElement(), $slug);
     } else {
         if ($useTime) {
             $title = substr($slug, 0, 237) . '-' . floor(microtime(true) * 100);
         } else {
             $title = substr($slug, 0, 255);
         }
         $nodeRef = new NodeRef($nodeRef->getElement(), SlugUtils::createSlug($title, $nodeRef->getElement()->isAllowSlugSlashes()));
     }
     $i = 0;
     while ($this->refExists($nodeRef)) {
         // Generate a unique slug
         $slug = SlugUtils::createSlug(substr($title, 0, 250) . " " . ++$i, $nodeRef->getElement()->isAllowSlugSlashes());
         $nodeRef = new NodeRef($nodeRef->getElement(), $slug);
     }
     return $nodeRef;
 }