/**
  * Adds a page.
  *
  * @param Page $page the page
  * @throws Exception if a page with the same ID already exists
  */
 public function addPage(Page $page)
 {
     if (isset($this->pages[$page->getID()])) {
         throw new Exception("Page {$page->getID()} already exists");
     }
     $this->pages[$page->getID()]['id'] = $page->getID();
     $this->pages[$page->getID()]['title'] = $page->getTitle();
     $this->pages[$page->getID()]['module'] = $page->getModule();
     $this->pages[$page->getID()]['defaultTask'] = $page->getDefaultTask();
     $this->pages[$page->getID()]['defaultParameter'] = $page->getDefaultParameter();
     $this->pages[$page->getID()]['defaultFormat'] = $page->getDefaultFormat();
     $this->pages[$page->getID()]['template'] = $page->getTemplate();
     $this->pages[$page->getID()]['needsHTTPS'] = $page->needsHTTPS();
     $gid = $page->getGID();
     if ($gid === null) {
         $gid = $this->gid->encode($this->gid->getType('page'), $page->getID());
     }
     $this->pages[$page->getID()]['gid'] = $gid;
     $this->store();
 }