RainLab\Pages\Classes\PageList::removeSubtree PHP Method

removeSubtree() public method

Removes a part of the page hierarchy starting from the specified page.
public removeSubtree ( Cms\Classes\Page $page )
$page Cms\Classes\Page Specifies a page object.
    public function removeSubtree($page)
    {
        $pagesConfig = $this->getPagesConfig();
        $requestedFileName = $page->getBaseFileName();
        $tree = [];
        $iterator = function ($configPages) use(&$iterator, &$pages, $requestedFileName) {
            $result = [];
            foreach ($configPages as $fileName => $subpages) {
                if ($requestedFileName != $fileName) {
                    $result[$fileName] = $iterator($subpages);
                }
            }
            return $result;
        };
        $updatedStructure = $iterator($pagesConfig['static-pages']);
        $this->updateStructure($updatedStructure);
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Deletes the object from the disk.
  * Recursively deletes subpages. Returns a list of file names of deleted pages.
  * @return array
  */
 public function delete()
 {
     $result = [];
     /*
      * Delete subpages
      */
     foreach ($this->getChildren() as $subPage) {
         $result = array_merge($result, $subPage->delete());
     }
     /*
      * Remove from meta
      */
     $pageList = new PageList($this->theme);
     $pageList->removeSubtree($this);
     /*
      * Delete the object
      */
     $result = array_merge($result, [$this->getBaseFileName()]);
     parent::delete();
     return $result;
 }
All Usage Examples Of RainLab\Pages\Classes\PageList::removeSubtree