/** * Update the page's position in the tree * * @param string $parentID * @param string $order * @return void * @author Drew McLellan */ public function update_tree_position($parentID, $order = false, $cascade = false) { PerchUtil::debug('updating tree position'); $Pages = new PerchContent_Pages(); $ParentPage = $Pages->find($parentID); $data = array(); $data['pageParentID'] = $parentID; if ($order === false) { if (is_object($ParentPage)) { $data['pageOrder'] = $ParentPage->find_next_child_order(); } else { $data['pageOrder'] = $this->find_next_child_order(0); } } else { $data['pageOrder'] = $order; } if (is_object($ParentPage)) { $data['pageDepth'] = $ParentPage->pageDepth() + 1; $data['pageTreePosition'] = $ParentPage->pageTreePosition() . '-' . str_pad($data['pageOrder'], 3, '0', STR_PAD_LEFT); } else { PerchUtil::debug('Could not find parent page'); $data['pageDepth'] = 1; $data['pageTreePosition'] = '000-' . str_pad($data['pageOrder'], 3, '0', STR_PAD_LEFT); $data['pageParentID'] = 0; } $this->update($data); if ($cascade) { $child_pages = $Pages->get_by('pageParentID', $this->id()); if (PerchUtil::count($child_pages)) { foreach ($child_pages as $ChildPage) { $ChildPage->update_tree_position($this->id()); } } } }