public function createNodePartialsFromExistsClauses(NodeQuery $nodeQuery) { $nodePartials = new NodePartials(); foreach ($nodeQuery->getParameters() as $key => $value) { switch ($key) { case 'Meta.exist': $nodePartials->increaseMetaPartials($value); break; case 'OutTags.exist': $nodePartials->increaseOutPartials($value); break; case 'InTags.exist': $nodePartials->increaseInPartials($value); break; // case 'Sections.exist': // $nodePartials->increaseSectionPartials($value); // break; } } $metaParams = $this->getMetaFilters($nodeQuery); foreach ($metaParams as $mArgs) { $nodePartials->increaseMetaPartials($mArgs[0]); } return $nodePartials; }
public function delete(NodeRef $nodeRef, $mergeSlug = null) { // validate for delete $this->NodeValidator->validateFor('delete', $nodeRef)->throwOnError(); $this->NodeEvents->fireNodeEvents(__FUNCTION__, 'pre', $nodeRef); // if merging, rename tag links to new record if (!empty($mergeSlug)) { $mergeRef = new NodeRef($nodeRef->getElement(), $mergeSlug); $oldNode = $this->NodeLookupDAO->getByNodeRef($nodeRef, new NodePartials('', '', 'all'), true); if (empty($oldNode)) { throw new NodeException('Unable to merge deleted node to non-existent slug [' . $mergeSlug . ']'); } $inTags = $oldNode->getInTags(); $newPartials = new NodePartials(); foreach ($inTags as $inTag) { $newPartials->increaseInPartials($inTag->getTagRole()); } $mergeNode = $this->NodeLookupDAO->getByNodeRef($mergeRef, $newPartials); $mergeNode->addInTags($inTags); // add all node's in tags to the merged node as in tags (aka copy in tags) $this->editInternal($mergeNode); } $existingNode = $this->NodeLookupDAO->getByNodeRef($nodeRef); if ($existingNode->Status == 'published') { $this->NodeEvents->fireNodeEvents('unpublish', 'pre', $nodeRef, $existingNode); } $this->deleteInternal($nodeRef); // fire events $this->NodeEvents->fireNodeEvents(__FUNCTION__, 'post', $nodeRef); if ($existingNode->Status == 'published') { $this->NodeEvents->fireNodeEvents('unpublish', 'post', $nodeRef, $existingNode); } return; }
/** * Updates a node with fields specified in params. * * @param array $params The user-supplied parameters/fields * @throws MediaServiceException * @throws ValidationException */ public function edit($params) { $node = $this->getNode($params); // will spit error if not found // set any persistent fields $this->NodeBinder->bindPersistentFields($node, $this->getErrors(), $params, $params); $this->NodeBinder->fireEditBindEvents($node, $this->getErrors(), $params, $params); // throw any validation errors $this->getErrors()->throwOnError(); $nodePartials = new NodePartials(); // add any meta fields foreach ($params as $name => $value) { if (substr($name, 0, 1) == '#') { $node->setMeta($name, $value); $nodePartials->increaseMetaPartials($name); } } // add any out tags $outTagParam = !empty($params['AddOutTags']) ? $params['AddOutTags'] : null; if ($outTagParam) { $outTags = $this->buildTags($outTagParam); $node->addOutTags($outTags); foreach ($outTags as $tag) { $role = $tag->getTagRole(); $val = $tag->getTagValue(); $nodePartials->increaseOutPartials($role . '=' . $val); } } // add any in tags $inTagParam = !empty($params['AddInTags']) ? $params['AddInTags'] : null; if ($inTagParam) { $inTags = $this->buildTags($inTagParam); $node->addInTags($inTags); foreach ($inTags as $tag) { $role = $tag->getTagRole(); $val = $tag->getTagValue(); $nodePartials->increaseInPartials($role . '=' . $val); } } // set node partials to specify exactly what's added/updated $node->setNodePartials($nodePartials); // do the update $this->RegulatedNodeService->edit($node); }