/** * Changes our NodeRef * * @param NodeRef $newNodeRef */ public function setNodeRef($newNodeRef) { $this->fields['NodeRef'] = $newNodeRef; $this->fields['Slug'] = $newNodeRef->isFullyQualified() ? $newNodeRef->getSlug() : ''; }
/** * @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; }