/**
  * Deletes all nodes for specified elements.
  *
  * @param elements A comma delimited list of the elements to delete nodes in
  * @param offset An integer value for the offset to begin deleting nodes from
  *
  * @return void
  */
 protected function deleteAll()
 {
     $elements = $this->Request->getRequiredParameter('elements');
     $interval = 1000;
     $elementSlugs = StringUtils::smartExplode($elements);
     $elements = array();
     foreach ($elementSlugs as $eSlug) {
         $elements[] = $this->ElementService->getBySlug($eSlug);
     }
     foreach ($elements as $element) {
         $offset = 0;
         if ($this->Request->getParameter('offset') != null) {
             $offset = $this->Request->getParameter('offset');
         }
         echo 'Deleting nodes for element: ' . $element . "\n";
         while (true) {
             $count = 0;
             // commit any pending transactions and begin new one
             $this->TransactionManager->commit()->begin();
             $nq = new NodeQuery();
             $nq->setParameter('NodeRefs.only', true);
             $nq->setParameter('Elements.in', $element->getSlug());
             $nq->setLimit($interval);
             $nq->setOffset($offset);
             $nq = $this->NodeService->findAll($nq, true);
             $nodeRefs = $nq->getResults();
             $tCount = $nq->getTotalRecords();
             if (empty($nodeRefs)) {
                 break;
             }
             foreach ($nodeRefs as $nodeRef) {
                 try {
                     $this->NodeService->delete($nodeRef);
                     echo $count + 1 . ". " . $nodeRef->getSlug() . " deleted\n";
                     if (($count + 1) % 10 == 0) {
                         $this->TransactionManager->commit()->begin();
                         echo "commit\n";
                     }
                 } catch (Exception $e) {
                     echo "Exception caught: " . $e->getMessage() . "\n";
                     // if an error occurs, bail - we don't want to get stuck in a
                     // loop if we can't delete stuff for some reason
                     echo "Exiting, please correct problem and re-run\n";
                     return;
                 }
                 ++$count;
             }
             echo 'Deleted ' . $count . ' of ' . $tCount . ' ' . $element->getSlug() . " nodes.\n";
         }
     }
 }
 public function tagGalleryPhotos()
 {
     $galleryNodeRef = $this->NodeRefService->parseFromString('media-gallery:test-gallery');
     $interval = 25;
     $offset = 0;
     $nq = new NodeQuery();
     $nq->setParameter('Elements.in', 'image');
     $nq->setParameter('NodeRefs.only', true);
     $nq->setOrderBy('ActiveDate', 'DESC');
     $nq->setLimit($interval);
     $nq->setOffset($offset);
     $nq = $this->NodeService->findAll($nq, true);
     $nodes = $nq->getResults();
     while (count($nodes) > 0) {
         foreach ($nodes as $node) {
             $tag = new Tag($node->getElement()->getSlug(), $node->getSlug(), '#media-gallery-items');
             try {
                 $this->NodeService->addOutTag($galleryNodeRef, $tag);
                 echo $node->Slug . "\n";
             } catch (Exception $e) {
                 echo $node->Slug . " error: " . $e->getMessage() . "\n";
             }
         }
         $offset = $offset + $interval;
         unset($nodes);
         $nq->setLimit($interval);
         $nq->setOffset($offset);
         $nq->clearResults();
         $nq = $this->NodeService->findAll($nq, true);
         $nodes = $nq->getResults();
     }
 }
 public function populateDefaults($elements = 'all')
 {
     $log = '';
     if ($elements == 'all') {
         $elements = $this->ElementService->findAll()->getResults();
     } else {
         $elementSlugs = StringUtils::smartExplode($elements);
         $elements = array();
         foreach ($elementSlugs as $eSlug) {
             $elements[] = $this->ElementService->getBySlug($eSlug);
         }
     }
     foreach ($elements as $element) {
         $offset = 0;
         $nq = new NodeQuery();
         $nq->setParameter('Elements.in', $element->getSlug());
         $nq->setParameter('Meta.select', 'all');
         $nq->setLimit(1000);
         $nq->setOffset($offset);
         $nq->asObjects();
         $nq->isRetrieveTotalRecords(true);
         $nq = $this->NodeService->findAll($nq, true);
         $nodes = $nq->getResults();
         $tCount = $nq->getTotalRecords();
         $count = 0;
         while (count($nodes) > 0) {
             foreach ($nodes as $node) {
                 $this->NodeMapper->defaultsOnNode($node);
                 $this->NodeService->edit($node);
                 ++$count;
             }
             $offset += 1000;
             $nq = new NodeQuery();
             $nq->setParameter('Elements.in', $element->getSlug());
             $nq->setParameter('Meta.select', 'all');
             $nq->setLimit(1000);
             $nq->setOffset($offset);
             $nq->asObjects();
             $nodes = $this->NodeService->findAll($nq)->getResults();
         }
         $log .= 'Updated defaults on ' . $count . ' of ' . $tCount . ' ' . $element->getSlug() . " nodes.\n";
     }
     return $log;
 }