Hello community,
I use subsites module with SS 2.4.1 and unfortunately Subsites does not delete related pages, when deleting a Subsite. I have adjusted the onAfterDelete method of the Subsite class:
public function onAfterDelete(){
parent::onAfterDelete();
$id = $this->getField('ID');
if(!empty($id)){
DB::query('DELETE IGNORE FROM SubsiteDomain WHERE SubsiteID = '.$id);
$res = DB::query('SELECT ID, ClassName FROM SiteTree WHERE SubsiteID = '.$id);
$res = $res->map();
foreach($res as $id => $className){
$somePage = DataObject::get_by_id($className, $id);
$somePage->deleteFromStage('Live');
$somePage->deleteFromStage('Stage');
$somePage->delete();
}
}else{
$e = new Exception("Could not delete related SubsiteDomains and Pages with SubsiteID: $id!");
SS_Log::log($e, SS_Log::WARN);
}
}
I have also tried to put it in onBeforeDelete and DataObject::use get_one() but for some reason always 'false' is returned by the getXXX DataObject. But when looking in SiteTree table (or SiteTree_Live, or XXX_Live), the pages still exist. How can I get rid of them?