/Foo.php. (No counts here on // purpose: every new class would make them stale.) Writing that convention once, and listing // only the handful of classes that break it, is what keeps this file // navigable (and under the project's file-size limit) as the plugin grows. // // Adding a class: put its short name (no ABJ_404_Solution_ prefix) in the list // for the directory that holds it. A class whose FILE is not named after it -- // several classes sharing one file, or a file renamed without its class -- // goes in $abj404ClassFileExceptions instead. // Every class declared under includes/ is in this map, mapped to the file that // declares it (ClassLoadingReachabilityTest enforces it), so no caller ever has // to remember a require_once for a collaborator to be loadable. // // Grepping: search the short name (`grep -rn "SpellChecker" includes/classmap.php`). // The fully prefixed class name appears here only for the exceptions. $base = dirname(__DIR__) . DIRECTORY_SEPARATOR; /** * Class short names by the includes/ subdirectory that holds them. * Each resolves to includes//.php. * * @var array> $abj404ClassesByDirectory */ $abj404ClassesByDirectory = array( // Includes the admin action handlers (strategy/registry pattern for // handlePluginAction dispatch). 'admin' => array( 'AdminAssetEnqueuer', 'SetupWizardPresenter', 'RedirectsTableColumns', 'RedirectDestinationWarningPolicy', 'RedirectDestinationWarningContext', 'RedirectDestinationLinkResolver', 'RedirectRowActionsPresenter', 'RedirectRowPresenter', 'RedirectAddModalPresenter', 'RedirectsTablePagePresenter', 'AdminActionsDependencies', 'AdminThemeManager', 'AdminRuntimeErrorNotice', 'AdminPageUrlBuilder', 'AdminLogsPageShell', 'AdminLogsTable', 'AdminPaginationLinks', 'AdminStatusFilterTabs', 'AdminTableColumnHeaders', 'AdminTraceLabels', ), 'admin/actions' => array( 'AdminActionHandlerInterface', 'AdminActionRegistry', 'UpdateOptionsHandler', 'AddRedirectHandler', 'DeleteRedirectActionHandler', 'StatusLinkActionHandler', 'TrashEmptier', 'LegacyImportActionHandler', 'EmptyRedirectTrashHandler', 'EmptyCapturedTrashHandler', 'PurgeRedirectsHandler', 'RunMaintenanceHandler', 'RebuildNgramCacheHandler', 'ClearSpellingCacheHandler', 'SaveGscSettingsHandler', 'ImportFromPluginHandler', 'UndoRegexAutoPromoteHandler', 'BulkActionHandler', 'TrashLinkActionHandler', 'EditRedirectHandler', 'RedirectFormResolver', ), 'ajax' => array( 'AjaxSecurityGate', 'AjaxRequestContractEnforcementPolicy', 'AjaxRequestContractSchemaRepository', 'AjaxRequestContractSchemaValidator', 'AjaxRequestContractValidator', 'AjaxFailureLogger', 'AjaxFailureDetailsBuilder', 'Ajax_CrossPluginImporter', 'Ajax_Php', 'Ajax_UpdateOptions', 'Ajax_RunLazyBackfill', 'Ajax_LoadGscSection', 'Ajax_ViewLogs', 'Ajax_RedirectDestinationAutocomplete', 'Ajax_TrendData', 'Ajax_SettingsModeToggle', 'Ajax_RestoreDefaults', 'Ajax_PrivacyExport', 'Ajax_PrivacyDelete', 'Ajax_SupportRequest', 'Ajax_SupportRequestPreview', 'Ajax_SuggestionPolling', 'Ajax_SuggestionCompute', 'Ajax_TrashLink', 'Ajax_EngineProfiles', 'Ajax_UninstallPrefs', 'AjaxAdminEndpointRegistrar', 'AjaxClientReportBeaconResponder', 'PluginAjaxActions', 'AjaxAdminEndpointSupport', 'AjaxResponseEmitter', 'Ajax_GetPaginationLinks', 'AdminTableResponseParts', 'MeasuredTableResponseSize', 'JsonResponseEncoder', 'EncodedJsonResponse', 'JsonResponseHead', 'AjaxErrorEnvelope', 'AjaxRequestIdScopes', 'ResponseCompressionSuppression', 'Ajax_RefreshStatsDashboard', 'Ajax_RefreshHealthBar', 'Ajax_RefreshAdminNonces', 'Ajax_CanaryLadder', 'AjaxCanaryStepRunner', 'CanarySizeTarget', ), 'bootstrap' => array( 'CoreServiceRegistration', 'DataServiceRegistration', 'DomainServiceRegistration', 'MatchingEngineServiceRegistration', 'Abj404ServiceRegistrationContract', 'RuntimeServiceRegistration', 'LegacyInstanceResolver', ), 'core' => array( 'PluginLogicAdminActions', 'PluginLogicImportExport', 'PluginLogicLifecycle', 'PluginLogicPageOrdering', 'PluginLogicSettingsUpdate', 'PluginLogicUrlNormalization', 'PluginLogicDefaults', 'InternalLinkScanner', 'LockOwnerStore', 'ExclusiveOptionRow', 'LeakedLockReclaimer', 'DatabaseMetadataLockWaitGuard', 'DatabaseDriverCall', 'PluginLogicVersionUpgrader', 'PluginLogicOptionsResolver', 'ErrorHandler', 'FileSystemService', 'Functions', 'RegexHelper', 'RegexHelperMb', 'RegexHelperPreg', 'PermalinkResolver', 'UrlEncoder', 'Sanitizer', 'QueryStringHelper', 'PostRef', 'UserRef', 'SiteRef', 'PluginLogic', 'PluginLogicInterface', 'Privacy', 'ServiceContainer', 'Clock', 'ExactInteger', 'TransientStore', 'ResponseDetach', 'RequestKind', 'PhpRuntimeCapabilityAdapter', 'PcntlSignalAdapter', 'OpcacheAdapter', 'PageCacheAdapter', 'SiteTimezone', 'SiteLocalTimestamp', 'PluginReleaseChannel', 'SetupWizard', 'SynchronizationUtils', 'Timer', 'WordPressHookRegistrar', 'WordPress_Connector', 'WordPressConnectorDependencies', 'ReviewFeedback', 'RebuildHealthState', 'DeferredTranslation', 'HostFilesystemCall', 'StoredSettingsReconciler', ), 'database' => array( 'DatabaseColumnIntersection', 'DatabaseMetadataReader', 'DatabaseRuntimeState', 'DatabaseCoreInterface', 'DatabaseCore', 'DatabaseTableNameResolver', 'DatabaseTableCharacterSetChange', 'DatabaseConnectionManager', 'DatabaseErrorClassifier', 'DatabaseInfrastructureErrorTaxonomy', 'DatabaseCollationHelper', 'DatabaseRepairPolicy', 'DatabaseQueryRecoveryPolicy', 'DatabaseQueryTimeoutManager', 'DatabaseSqlErrorReporter', 'DatabaseNoticeRecoveryPolicy', 'DatabaseQueryInterface', 'DatabaseTableMetadataInterface', 'DatabaseQueryBuilderInterface', 'DatabaseErrorRecoveryInterface', 'SqlFragmentTemplate', 'DatabaseRuntimeStateInterface', 'DatabaseNoticeStateHolder', 'DataAccessDependencies', 'DataAccess', 'TableIndexDefinitions', 'TableIndexWriter', 'TableReadinessGate', 'ShowIndexRowReader', 'CreateTableIndexParser', 'CreateTableColumnParser', 'CreateTableOptionsParser', 'IndexDefinitionComparator', 'RetiredColumns', 'SchemaHighWaterMark', 'OptionRowCompareAndSwap', 'DatabaseMutationFailedException', 'StatementPreparationException', 'CleanupQuerySession', 'DatabaseConnectivityErrorTaxonomy', 'DatabaseErrorTableInspector', 'DatabaseHostStateErrorTaxonomy', 'DatabasePrefixDiagnostics', 'DatabaseQueryDiagnostics', 'DatabaseQueryExecutor', 'DatabaseQueryServices', 'DatabaseRecoveryServices', 'DatabaseMaintenanceBatchSizer', 'DatabaseSchemaErrorTaxonomy', 'DatabaseTableRepairer', 'DatabaseTransactionExecutor', 'DatabaseTransactionConnection', 'DatabaseStatementGroupTransaction', 'DatabaseWpdbResultHarvester', 'DatabaseReadResultValidator', ), 'database/upgrades' => array( 'LegacyLogsTableMigration', 'ColumnCollationDriftDetector', 'MinLogIdBackfillStateStore', 'DatabaseUpgradeCoordinator', 'DatabaseUpgradeComponent', 'DatabaseUpgradeComponentRegistry', 'DatabaseUpgradeRuntimeState', 'DatabaseUpgradeIndexes', 'DatabaseUpgradeEngineNormalization', 'DatabaseUpgradeCollationDrift', 'DatabaseUpgradeSelfHeal', 'DatabaseUpgradeAddedColumnBackfill', 'DatabaseUpgradeCanonicalUrlBackfill', 'DatabaseUpgradeRedirectsDenormBackfill', 'DatabaseUpgradeRedirectsSortKeyBackfill', 'DatabaseUpgradeRedirectsDenormReconcile', 'DatabaseUpgradeDailyMaintenance', 'DatabaseUpgradeNGram', 'DatabaseUpgradeNGramCacheInitializer', 'DatabaseUpgradePluginUpdate', 'DatabaseUpgradeTableRepair', 'DatabaseUpgradeDropStagedViewTables', 'DatabaseUpgradeOrphanAdoption', 'DatabaseUpgradeMultiSite', 'DatabaseUpgradeSchemaDiff', 'DatabaseUpgradeBootstrap', 'DatabaseTableLowercaseRenamer', 'DatabaseTableDdlExecutor', 'DatabaseUpgradesDependencies', 'DatabaseUpgradesEtc', 'QueuedCollationRepair', 'LogsTableMetadataRefresh', ), 'diagnostics' => array( 'HeartbeatFailureCounts', 'HeartbeatWindowAggregate', 'AjaxFailureReporter', 'RequestFailureFrame', 'CrashBeacon', 'CrashBeaconStore', 'CrashBeaconReporter', 'AjaxRequestTrace', 'AjaxTeardownRecorder', 'CanonicalRedirectHookCensus', 'CanonicalHookCensusStore', 'HookCallbackRoster', 'AjaxCheckpointLogger', 'AjaxCheckpointBoundaryWriter', 'AjaxFrequentCheckpointWriter', 'CheckpointRecordFactory', 'CheckpointIntentStore', 'CheckpointIntentCorrelation', 'DurableOperationRecorder', 'ActiveOperationBreadcrumbs', 'ActiveOperationBreadcrumbReader', 'ActiveOperationBreadcrumbState', 'ActiveOperationBoundaryManifest', 'CheckpointJournalWriter', 'CheckpointJournalReader', 'EncodedTableResponseSize', 'RequiredCheckpointEvidence', 'RequiredCheckpointEvidenceBudget', 'RequiredCheckpointIdentityEvidence', 'CanaryLadderVerdicts', 'CanaryLadderStep', 'CanaryLadderInterpretation', 'MalformedCheckpointEvidence', 'DecisiveRecordManifest', 'DecisiveRecordAuthorizationFamilies', 'DecisiveRecordRenderFamilies', 'DecisiveRecordRenderOptionIoFamilies', 'DecisiveRecordStatusCountFamilies', 'DecisiveRecordQueryFilterFamilies', 'DecisiveRecordShutdownFamilies', 'DecisiveRecordFailureFamilies', 'AjaxRequestLedger', 'AjaxDiagnosticRequestPolicy', 'DetachAbExperiment', 'DetachAbScope', 'DetachAbAttemptCounter', 'AuthorizationLogTracer', 'PostAuthorizationFailureTracer', 'TableRenderTranslationTracer', 'DiagnosticInternalHookObserver', 'HookInstrumentationRegistration', 'HookInstrumentationRegistry', 'DiagnosticAppendStream', 'DiagnosticSinkIdentity', 'HookRegistryInspectionLedger', 'DiagnosticDirectoryResolver', 'RenderOptionIoTracer', 'RenderOptionIoOperationJournal', 'DatabaseQueryPreflightTracer', 'DatabaseQueryRecoveryTracer', 'DatabaseQueryFilterTracer', 'DetachAbResolutionTracer', 'AjaxQueryTimeline', 'AjaxRowLoopProgress', 'CacheMetricsProbeTracer', 'RateLimitOperationTracer', 'CacheOperationTraceSink', 'HookCallbackIdentity', 'HookInstrumentationLifecycleTracer', 'HookCallbackInstrumenter', 'OptionPersistenceTracer', 'RowRenderOperationTracer', 'TableRendererPreludeTracer', 'TemplateFileReadTracer', 'RoutineLogTracer', 'SortReadinessTracer', 'StatusCountOperationJournal', 'StatusCountsForegroundTracer', 'ResponseControlFilterTracer', 'ShutdownCallbackTracer', 'InstrumentedObjectCache', 'AjaxTraceJournal', 'AjaxTraceJournalReader', 'AjaxStageDiagnostics', 'ShutdownEnvironmentInventory', 'ShutdownTeardownBracket', 'DiagnosticJournalExcerpt', 'DiagnosticJournalFileSelector', 'DiagnosticClientVerdict', 'DiagnosticCollectionManifest', 'DiagnosticCollectionManifestRenderer', 'DiagnosticDirectoryProbe', 'DiagnosticEvidencePriority', 'DiagnosticEvidenceBudget', 'DiagnosticEvidenceGrant','DetachAbEvidence', 'CanaryReceiptEvidence', 'FailingSessionEvidence', 'DiagnosticRequestGroup', 'DiagnosticFailureClassification', 'HostFilesystemPressureProbe', 'HostPressureSampler', 'HostProcfsPressureProbe', 'HostServerCounterProbe', 'SameSiteRequestCensus', 'SameSiteCensusReading', 'SameSiteCensusReaper', 'SameSiteCensusHandoff', 'SameSiteRequestRegistry', 'SameSiteRequestRowCodec', 'RequestTimelinePromoter', 'StrandedRequestLedger', 'StrandedRequestLedgerEntries', 'Utf8SafeRecord', 'CpuUsage', 'RequestPhaseTimeline', 'LifecycleHookStamps', 'RequestTimeRecorder', 'HookTickLayout', 'CodeOwnerResolver', 'TimeLimitBreakdown', 'TimeLimitRecord', 'TimeLimitEvidence', 'TimeLimitReportRenderer', 'TimeLimitFatalStore', 'TimeLimitFatalReporter', 'TimeLimitRecoveryEmail', 'TimeLimitFatalRecorder', 'TimeLimitReportView', 'TimeLimitAdminReport', 'RequestEnvironmentFingerprint', 'ClientBuildFingerprint', 'DiagnosticModuleManifest', 'OpcacheGenerationProbe', 'BootWaypointRecorder', 'ClientTransportReport', 'DrainedTelemetryBuffer', 'ConcurrentControlReceipt', 'PayloadShapeFingerprint', 'AjaxCanaryPayloadFactory', 'AjaxCanaryStreamFlush', 'DetachAbAttempt', 'DetachAbVerdict', 'ResponseBodyRewriteVerdict', 'ResponseBodyDeliveryEvidence', 'DeliveredTableResponseSize', 'MeasuredBodyBytes', 'BodyDeliveryObservations', 'AjaxCanaryReceiptParser', 'DebugLogFileStore', 'DebugLogReader', 'DebugLogEntryFormat', 'DebugLogSupportExcerpt', 'DebugLogArchiveBuilder', 'DeveloperLogMailer', 'ToolsDiagnostics', 'DecisiveRecordContractEvaluator', 'DecisiveRecordDiscriminatorContract', 'QueryBudgetInstrumentation', ), 'engine' => array( 'ArchiveFallbackEngine', 'CategoryTagMatchingEngine', 'ContentMatchingEngine', 'SlugMatchingEngine', 'OldPermalinkStructureEngine', 'UrlFixEngine', 'SpellingMatchingEngine', 'TitleMatchingEngine', ), 'feedback' => array( 'FeedbackDatabaseIdentity', 'FeedbackDiagnosticsCollector', 'FeedbackEnvironmentExtras', 'FeedbackPluginSettingsSnapshot', 'MysqlServerStateProbe', 'PluginSchemaMetadataProbe', 'RollupFreshnessProbe', 'FeedbackEnvironmentExtras_HostProbes', 'FeedbackEnvironmentExtras_PlatformFingerprint', 'FeedbackEnvironmentExtras_CacheFingerprint', 'FeedbackEnvironmentExtras_DebugLogSignatures', 'FeedbackSiteSummary', 'FeedbackSiteTokenStore', 'SupportLogExcerpt', 'SupportEvidenceExcerpt', 'DiagnosticChannelEvidence', 'CanaryReceiptSupportSection', 'FailingSessionSupportSection', 'StrandedRequestSupportSection', 'DetachAbVerdictSupportSection', 'CanonicalSuppressionSupportSection', 'FeedbackDsrClient', 'FeedbackReportUuid', 'FeedbackRuntimeEnvironment', 'FeedbackWordPressInventory', 'SupportRequestButton', 'FeedbackTransport', 'PayloadSchema', 'ReportPayloadJsonSchemaValidator', 'ErrorEmailDedupeState', 'ErrorEmailBodyFormatter', 'PiiRedactor', 'OpaqueTokenClassifier', 'RequestCredentialRedactor', 'SensitiveValueMask', 'DebugLogEvidenceBudget', 'FeedbackEmailFallback', 'FeedbackHttpClient', 'FeedbackPayloadBuilder', 'FeedbackPayloadSchemaGuard', 'FeedbackTransportLog', ), 'frontend' => array( 'FrontendRequestPipeline', 'FrontendPipelineDependencies', 'FrontendLegacyAdapters', 'FrontendRuntimeOptions', 'FrontendHitRecorder', 'SuggestionComputeJob', 'FrontendPipelineTrace', 'FrontendDbVersionRecovery', 'FrontendPipelineTelemetry', 'RequestContext', 'PostEditorIntegration', 'PublishedPostsProvider', 'ShortCode', 'SlugChangeHandler', 'AutoRedirectSnapshotService', 'AutoRedirectSnapshotHooks', 'ContentDescendantWalker', 'RemovedPostParentResolver', 'SuggestionPublisher', 'FrontendAsyncSuggestionTrigger', 'SystemPage', 'SystemPageNotices', ), 'gsc' => array( 'GscConfig', 'GscFetchLease', 'GscFetchLock', 'GscFetchLockStore', 'GscOAuthTokenStore', 'GscSearchAnalyticsClient', 'GscAdminSectionRenderer', 'GoogleSearchConsole', 'GscOAuthHandler', ), 'import' => array( 'CrossPluginImporter', 'ForeignRedirectSourceReader', 'ForeignSourceQueryGateway', 'ExportService', 'ImportService', 'ImportIssueSummary', 'ImportRunState', 'ImportSourceReadException', 'RedirectExportDestination', 'NativeRedirectCsvWriter', 'RedirectExportWorkspace', ), 'logs' => array( 'LogRetentionRepository', 'LoggingCapabilityDiagnostics', 'LoggingFeedbackDispatcher', 'LoggingStateStore', 'LoggingMessageWriter', 'RoutineLoggingBridge', 'LogTimestampFormatter', 'LogDebugModeResolver', 'LogsMetricsReader', 'LogReadQueryInterface', 'LogPrivacyInterface', 'LogWriteInterface', 'LogHitsRebuildInterface', 'LogHitsLifecycleInterface', 'LogsHitsRollupServiceInterface', 'LogsHitsRollupService', 'LogsHitsRollupStallWatchdog', 'LogsHitsTableRebuilder', 'LogsHitsRebuildBudget', 'LogsHitsRebuildProgress', 'LogsHitsTableMetadata', 'LogsHitsRebuildLock', 'LogsHitsCanonicalUrlJoinHelper', 'LogsLookupRepository', 'LogsPrivacyService', 'LogsReadResult', 'LogsReadQueries', 'LogsUrlSortRepository', 'LogsHitsDataPopulator', 'LogsWriteRecoveryPolicy', 'LogsWriter', 'RedirectHitLogEntry', 'LogsRepositoryInterface', 'LogsRepository', 'EmailDigest', 'EmailDigestExtensionPoints', 'Logging', 'LogsEntrySanitizer', 'LogsQueueFlusher', 'LogsRequestedUrlColumnMetadata', ), 'matching' => array( 'EngineProfileSaveRequest', 'MatchingEngineOrchestrator', 'RedirectCandidateEvaluator', 'WordPressGuessFallback', 'EngineProfileResolver', 'EngineProfileRepository', 'MatchingEngine', 'MatchRequest', 'MatchingTimeBudget', 'MatchResult', 'MinimumAutoRedirectScore', 'NearMissMatch', 'NearMissRecorder', 'OldPermalinkStructureResolver', 'PermalinkStructureCompiler', 'OldPermalinkCandidateStructureProvider', 'OldPermalinkPostResolver', ), 'ngram' => array( 'NGramNetworkOptionStore', 'NGramCacheRebuildScheduler', 'NGramCacheRebuildBatchRunner', 'NGramRebuildProgressState', 'NGramRescheduleFailureReport', 'NGramRebuildDrain', 'NGramRebuildChainRearmer', 'NGramRebuildRetryPolicy', 'NGramRebuildRuntime', 'NGramCronFallback', 'NGramCacheSyncRebuilder', 'NGramCacheReconciler', 'NGramTermCacheReconciler', 'NGramLastUpdatedEpochMigration', 'NGramFilter', 'NGramFilterCollaboratorResolver', 'TermNGramCoveragePolicy', 'TermCandidateSource', 'NGramExtractor', 'NGramSimilarity', 'NGramCacheRepository', 'NGramCacheRowDecoder', 'NGramCountRangeQuery', 'NGramCoveragePolicy', 'NGramRebuilder', 'NGramRebuilderDependencies', 'NGramUsageTelemetry', 'NGramCronFallbackCoordinator', ), 'php' => array( 'FileSync', 'MbStringAdapter', 'MbStringAdapterMb', 'MbStringAdapterPreg', 'FunctionsMBString', 'FunctionsPreg', ), 'php/objs' => array( 'UserRequest', 'UserRequestParts', 'WPNotice', ), 'php/wordpress' => array( 'WPNotices', 'WPUtils', ), 'policies' => array( 'SettingsAdminExcludedPagesPolicy', 'SettingsBooleanModePolicy', 'AdminStatusFallbackResolver', 'SettingsNotificationPolicy', 'SetupWizardAnswerPolicy', 'SettingsRedirectPolicy', 'SettingsRegexPatternPolicy', 'SettingsRetentionPolicy', 'SettingsSuggestionPolicy', 'SettingsWordPressPolicy', 'PluginAdminAccessPolicy', 'PluginAdminAuthorization', 'ErrorTypeClassifier', ), 'redirects' => array( 'RedirectsBulkReader', 'RedirectLookupService', 'RedirectSpec', 'RedirectsDenormChunkResolver', 'RedirectsSchemaProbe', 'RedirectsSortKeyChunkStore', 'RedirectsDenormColumnSql', 'RedirectsDenormMaintenanceService', 'RedirectsDenormContentHooks', 'RedirectsRetentionPolicy', 'RedirectsCleanupRepository', 'RedirectDuplicatesRepository', 'RedirectDeadDestinationChecker', 'RedirectsRetentionService', 'RedirectRow', 'RedirectUpdate', 'RedirectCanonicalUrl', 'RedirectScheduleTimezone', 'ExistingRedirectLookup', 'AutoRedirectHandler', 'CanonicalPaginationRedirect', 'CanonicalPaginationUrlResolver', 'RedirectLoopGuard', 'RedirectChainWalker', 'RedirectChainTraversal', 'RedirectCycleException', 'RedirectExclusionPolicy', 'RedirectDispatcher', 'RedirectConditionEvaluator', 'RegexAutoPromote', 'RegexDestinationSubstitutor', 'RegexDestinationTemplateValidator', 'RegexSourcePatternValidator', 'RedirectWriteAdmissionPolicy', 'RedirectPageCachePurge', ), 'repositories' => array( 'AdminTableFlightRepository', 'LegacySuggestionPageRecovery', 'LegacyPageRecoveryMutation', 'SettingsOptionWriter', 'SettingsBookkeepingWriter', 'SettingsWriteTarget', 'NativeOptionSql', 'Dest404PageFence', 'ContentRepositoryInterface', 'PublishedContentLookupInterface', 'OldSlugLookupInterface', 'TermUrlEnricher', 'InternalSourceEvidenceRepository', 'PublishedContentRepository', 'PublishedTermsProvider', 'PermalinkCacheRepository', 'OldPermalinkStructureStore', 'SpellingCacheRepository', 'OldSlugRepository', 'ContentRepository', 'RedirectsRepositoryInterface', 'RedirectConditionsRepository', 'RedirectExportReader', 'RedirectInsertStatement', 'RedirectUpdateStatement', 'RedirectLookupRepository', 'RedirectRegexCacheStore', 'RedirectsLiveColumnSet', 'RedirectWriteService', 'RedirectEditWriter', 'RedirectGraphLock', 'RedirectLifecycleService', 'RedirectIntentRepository', 'RedirectsRepository', 'ContentKeywordsRepository', 'PluginUpdateMetadataRepository', 'PermalinkCache', 'PermalinkCacheScheduleLock', 'ReviewStateRepository', 'NetworkSitesRepository', 'NextNetworkSite', 'MaintenancePassRepository', 'RedirectBatchDeletion', 'SiteResourceLock', ), 'rest' => array( 'RestApiResponsePresenter', 'RestApiRedirectMutationService', 'RestApiReadService', 'RestApiController', ), 'services' => array( 'AdminTableFlight', 'RedirectMutationCompletion', 'PostChangeRedirectDelivery', 'PerPageOptionUpdater', 'CronScheduler', 'ScheduledEventInspector', 'MaintenanceDrain', 'MinLogIdBackfillContinuation', 'CronDispatchStallEvidence', 'QueuedCronEventAdminContinuation', 'OptionShapeRead', 'WordPressPostMutationNotifications', 'CronWriteOutcome', 'CronRecurrenceMigration', 'RequestInputNormalizer', 'RedirectEditRequest', 'RequestedRedirectIds', 'SubmittedRedirectConditions', 'RedirectDestinationSuggestionService', 'RedirectEngineLabeler', 'StatsRepositoryResolver', 'RestApiRequestParser', 'FrontendSuggestionLocaleScope', 'ShortcodeRequestedUrlResolver', 'ShortcodeUrlBarUpdater', 'SettingsModePreference', 'SettingsModeDeepLink', 'NotFoundResponseService', 'OptionCacheInvalidator', 'NotFoundResponseDependencies', 'PreviousRequestCookieTracker', 'RequestIgnoreNormalizer', 'RequestIgnoreNormalizerDependencies', 'ErrorDiagnosticsReporter', 'AdminFatalErrorResponder', 'AjaxFatalErrorResponder', 'FatalErrorProcessor', 'ImportCsvParser', 'ImportProgressStore', 'ImportRedirectRowProcessor', 'ImportUploadValidator', 'OutputBufferDrain', 'CronExactEventConsumer', 'PostResponseWorkerBudget', ), 'settings' => array( 'SettingsFieldValidator', 'StorageOptionContracts', 'SuggestionTransient', 'SuggestionWorkerStateStore', 'SuggestionDisplayOptions', 'SetupWizardOptionStore', 'SettingsVersionStamp', ), // Includes the standalone classes SpellChecker delegates to (converted // from traits). 'spelling' => array( 'SpellURLMatcher', 'SpellPostListeners', 'SpellNGramPrefilter', 'SpellCandidatePermalinkLookup', 'SpellSuggestionExclusionPolicy', 'SpellSuggestionScorer', 'SpellSuggestionShortcodeDetector', 'SpellLevenshteinEngine', 'SpellLevenshteinEngineDependencies', 'SpellCandidateDistanceRanker', 'SpellCandidateFilter', 'StopWords', 'SpellChecker', 'SpellCheckerDependencies', ), 'stats' => array( 'StatusCountBuckets', 'StatusCountsMutationSync', 'StatusCountsRepository', 'RedirectHitCountHistogramRepository', 'RedirectRowCountRepository', 'UnavailableStatsRepository', 'StatsRepositoryInterface', 'StatsRefreshLock', 'StatsReadRepository', 'PeriodicStatsRepository', 'StatsDashboardSnapshotCache', 'StatsDigestDataProvider', 'StatsRepository', 'StatsRollupRepository', 'StatsRollupService', ), 'uninstall' => array( 'UninstallModal', 'UninstallCollationSnapshotPresenter', 'UninstallDatabaseDefaultsReader', 'UninstallDatabaseMetadataReader', 'UninstallDiagnostics', 'UninstallFeedbackEmail', 'UninstallStatisticsReader', 'UninstallWordPressInventory', 'Uninstaller', ), // Includes the view components converted from the former ViewTrait_* family. 'view' => array( 'TableViewOptionsResolver', 'ViewComponent', 'RedirectDestinationOptionsPresenter', 'RedirectEditFormPresenter', 'RedirectEditDeadEndRenderer', 'RedirectDestinationResolver', 'View_Logs', 'View_Redirects', 'View_RedirectsTable', 'View_CapturedURLsTable', 'CapturedTableHeaderRenderer', 'CapturedPageChromeRenderer', 'CapturedRowActionButtonsRenderer', 'CapturedSourceEvidenceRenderer', 'View_RedirectForms', 'EditRedirectFormContext', 'View_ListTableChrome', 'View_RedirectTypeUI', 'View_RedirectConditions', 'View_AdminChrome', 'OptionsSectionView', 'View_OptionsPresenter', 'View_Settings', 'View_SettingsSections', 'View_Shared', 'View_SimpleSettings', 'View_Stats', 'View_Tools', 'View_UI', 'ShortcodeSuggestionAdminDebugPresenter', 'ShortcodeSuggestionsPresenter', 'ShortcodeSuggestionsAdminNotePresenter', 'View', 'View_Suggestions', ), 'view-build' => array( 'ViewReadServiceInterface', 'ViewReadService', 'StatusCountsRefreshCoordinator', 'ViewReadRuntimeState', 'ViewQueryPolicy', 'ViewQueryBuilder', 'ViewSortResolver', 'RedirectsViewLiveResolver', 'RedirectsDenormSchemaReadiness', 'RedirectsHitsRollupReader', 'ScoreThresholds', 'ViewDiagnostics', 'ViewQueryExplainDiagnostics', 'ViewCacheInvalidator', 'AdminViewReadCoordinator', 'AdminTableReadRepository', 'ViewReadOutcome', 'HitsTableRebuildPolicy', 'ViewQueryFailureException', ), 'wpcli' => array( 'WPCLICommandPresenter', 'WPCLIImportExportCommandService', 'WPCLIRedirectCommandService', 'WPCLICommands', ), ); /** * The classes whose file is not named after them: several classes declared in * one file, or a file whose name outlived a class rename. Paths are relative * to the plugin root. * * @var array $abj404ClassFileExceptions */ $abj404ClassFileExceptions = array( 'ABJ_404_Solution_Ajax_ServiceResolver' => 'includes/ajax/AjaxServiceResolver.php', 'ABJ_404_Solution_Ajax_SearchFeedback' => 'includes/ajax/AjaxSearchFeedback.php', 'ABJ_404_Solution_SystemClock' => 'includes/core/Clock.php', 'ABJ_404_Solution_FrozenClock' => 'includes/core/Clock.php', 'ABJ_404_Solution_LogsHitsRebuildYield' => 'includes/logs/LogsHitsRebuildBudget.php', 'ABJ_404_Solution_AjaxCanaryStreamFlushPlan' => 'includes/diagnostics/AjaxCanaryStreamFlush.php', 'ABJ_404_Solution_RedirectHitCountHistogramQueryException' => 'includes/stats/RedirectHitCountHistogramRepository.php', 'ABJ_404_Solution_WPDBExtension_PHP5' => 'includes/php/wordpress/WPDBExtension.php', 'ABJ_404_Solution_WPDBExtension_PHP7' => 'includes/php/wordpress/WPDBExtension.php', 'ABJ_404_Solution_AjaxContractViolationException' => 'includes/ajax/AjaxRequestContractValidator.php', 'ABJ_404_Solution_UnlistedAjaxActionException' => 'includes/ajax/PluginAjaxActions.php', 'ABJ_404_Solution_DatabaseSessionStatementConnection' => 'includes/core/DatabaseMetadataLockWaitGuard.php', 'ABJ_404_Solution_ServiceNotRegisteredException' => 'includes/core/ServiceContainer.php', 'ABJ_404_Solution_ServiceResolutionCycleException' => 'includes/core/ServiceContainer.php', 'ABJ_404_Solution_SettingsPersistenceException' => 'includes/core/PluginLogicSettingsUpdate.php', 'ABJ_404_Solution_SetupWizardAssetException' => 'includes/core/SetupWizard.php', 'ABJ_404_Solution_TrendDataQueryException' => 'includes/logs/LogsReadQueries.php', ); $abj404Classmap = array(); foreach ($abj404ClassesByDirectory as $abj404Directory => $abj404ShortNames) { $abj404Prefix = $base . 'includes/' . $abj404Directory . '/'; foreach ($abj404ShortNames as $abj404ShortName) { $abj404Classmap['ABJ_404_Solution_' . $abj404ShortName] = $abj404Prefix . $abj404ShortName . '.php'; } } foreach ($abj404ClassFileExceptions as $abj404Class => $abj404RelativePath) { $abj404Classmap[$abj404Class] = $base . $abj404RelativePath; } return $abj404Classmap;