public function add($cPath, $pkg = null) { // if we get to this point, we create a special collection // without a specific type. This collection has a special cFilename that // points to the passed node $db = Loader::db(); $txt = Loader::helper('text'); // trim off a leading / if there is one $cPath = trim($cPath, '/'); // now we grab the parent collection, if there is a static one. $pages = explode('/', $cPath); // instantiate the home collection so we have someplace to add these to $parent = Page::getByID(1); // now we iterate through the pages to ensure that they exist in the system before adding the new guy $pathPrefix = ''; for ($i = 0; $i < count($pages); $i++) { $currentPath = $pathPrefix . $pages[$i]; $pathToFile = SinglePage::getPathToNode($currentPath, $pkg); // check to see if a page at this point in the tree exists $c = Page::getByPath("/" . $currentPath); if ($c->isError() && $c->getError() == COLLECTION_NOT_FOUND) { // create the page at that point in the tree $data = array(); $data['handle'] = $pages[$i]; $data['name'] = $txt->unhandle($data['handle']); $data['filename'] = $pathToFile; $data['uID'] = USER_SUPER_ID; if ($pkg != null) { $data['pkgID'] = $pkg->getPackageID(); } $newC = $parent->addStatic($data); $parent = $newC; $pxml = SinglePage::obtainPermissionsXML($currentPath, $pkg); if ($pxml) { $newC->assignPermissionSet($pxml); // pass it an array } } else { $parent = $c; } $pathPrefix = $currentPath . '/'; } return $newC; }