Exemplo n.º 1
0
 /**
  * Create the new site with this template at the slot specified.
  * 
  * @param object Slot $slot
  * @param optional string $displayName
  * @param optional string $description
  * @return object SiteNavBlockSiteComponent
  * @access public
  * @since 6/11/08
  */
 public function createSite(Slot $slot, $displayName = 'Untitled', $description = '')
 {
     $director = SiteDispatcher::getSiteDirector();
     $doc = new Harmoni_DOMDocument();
     $doc->load($this->_path . "/site.xml");
     // Validate the document contents
     $doc->schemaValidateWithException(MYDIR . "/doc/raw/dtds/segue2-site.xsd");
     $mediaDir = $this->_path . "/media";
     if (!file_exists($mediaDir)) {
         $mediaDir = null;
     }
     // @todo Strip out any history.
     $importer = new StripHistoryImportSiteVisitor($doc, $mediaDir, $director);
     $importer->disableCommentImport();
     $site = $importer->importAtSlot($slot->getShortname());
     try {
         // Replace #SITE_NAME# and #SITE_DESCRIPTION# placeholders
         $site->acceptVisitor(new Segue_Templates_ReplacePlaceholderVisitor($displayName, $description));
     } catch (Exception $e) {
         $director->deleteSiteComponent($site);
         $slot->deleteSiteId();
         throw $e;
     }
     return $site;
 }