/**
  * Base rules
  * 
  * @param DataObject $do
  * @return string
  */
 public static function calc_base_directory_for_object(DataObject $do)
 {
     //the 2 base options - dataobjects / pages
     $str = 'dataobjects';
     $ancestry = $do->getClassAncestry();
     foreach ($ancestry as $c) {
         if ($c == 'SiteTree') {
             $str = 'pages';
         }
     }
     //other options
     switch ($do->ClassName) {
         //case 'Subsite':
         //	$str = 'subsites';
         //	break;
         case 'SiteConfig':
             $str = 'site';
             break;
         default:
     }
     return $str;
 }
	/**
	 * Get the entire hiearchy for the held DataObject, but
	 * flattened to a one-dimensional array.
	 * 
	 * @return array
	 */
	public function getRelatedClasses()
	{
		$relatedClasses = array();
		$directAncestry = $this->object->getClassAncestry();
		$baseClass = $directAncestry[0];
		$relatedClasses[$baseClass] = $baseClass;
		$relatedClasses = array_merge($relatedClasses, $this->collectSubclassesFor($baseClass));
		return $relatedClasses;
	}