/** * 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; }