ClassName, ClassInfo::subclassesFor('RedirectorPage')); $isVirtualPage = in_array($record->ClassName, ClassInfo::subclassesFor('VirtualPage')); if ($isVirtualPage) { if ($record->HasBrokenLink) { $reason = "redirector page pointing to non-existant page"; $reasonCodes = array("VPBROKENLINK"); } } else if ($isRedirectorPage) { if ($record->HasBrokenLink) { $reason = "redirector page pointing to non-existant page"; $reasonCodes = array("RPBROKENLINK"); } } else { if ($record->HasBrokenLink && $record->HasBrokenFile) { $reason = "has broken link and file"; $reasonCodes = array("BROKENFILE", "BROKENLINK"); } else if ($record->HasBrokenLink && !$record->HasBrokenFile) { $reason = "has broken link"; $reasonCodes = array("BROKENLINK"); } else if (!$record->HasBrokenLink && $record->HasBrokenFile) { $reason = "has broken file"; $reasonCodes = array("BROKENFILE"); } } if ($reason) { if ($params['Reason'] && !in_array($params['Reason'], $reasonCodes)) continue; $record->BrokenReason = $reason; $returnSet->push($record); } } return $returnSet; } function columns() { $fields = array( "Title" => array( "title" => "Title", 'formatting' => '$value' ), "BrokenReason" => array( "title" => "Reason" ), 'AbsoluteLink' => array( 'title' => 'Links', 'formatting' => '$value " . ($AbsoluteLiveLink ? "(live)" : "") . " (draft)' ) ); return $fields; } function parameterFields() { return new FieldSet( new CheckboxField('OnLive', 'Check live site'), new DropdownField('Reason', 'Problem to check', array( '' => 'Any', 'BROKENFILE' => 'Broken file', 'BROKENLINK' => 'Broken link', 'VPBROKENLINK' => 'Virtual page pointing to invalid source', 'RPBROKENLINK' => 'Redirector page pointing to invalid destination', )) ); } }