code: protected function doCreatePageList($intId=0, $level=-1)
  	{
  		$objPages = $this->Database->prepare("SELECT id, title, type, dns FROM tl_page WHERE pid=? ORDER BY sorting")
  								   ->execute($intId);
  
  		if ($objPages->numRows < 1)
  		{
  			return '';
  		}
  
  		++$level;
  		$strOptions = '';
  
  		while ($objPages->next())
  		{
  			if ($objPages->type == 'root')
  			{
  				// Skip websites that run under a different domain
  				if ($objPages->dns && $objPages->dns != Environment::get('host'))
  				{
  					continue;
  				}
  
  				$strOptions .= '<optgroup label="' . $objPages->title . '">';
  				$strOptions .= $this->doCreatePageList($objPages->id, -1);
  				$strOptions .= '</optgroup>';
  			}
  			else
  			{
  				$strOptions .= sprintf('<option value="{{link_url::%s}}"%s>%s%s</option>', $objPages->id, (('{{link_url::' . $objPages->id . '}}' == Input::get('value')) ? ' selected="selected"' : ''), str_repeat(' &nbsp; &nbsp; ', $level), StringUtil::specialchars($objPages->title));
  				$strOptions .= $this->doCreatePageList($objPages->id, $level);
  			}
  		}
  
  		return $strOptions;
  	}
docs: Recursively get all allowed pages and return them as string
  
  @param integer $intId
  @param integer $level
  
  @return string