init( $GLOBALS ) ); $setup = new Setup(); $setup->setHookDispatcher( ServicesFactory::getInstance()->getHookDispatcher() ); Globals::replace( $setup->init( $GLOBALS, __DIR__ ) ); } /** * Constants relevant to Semantic MediaWiki * * @ingroup Constants * @ingroup SMW */ public static function setupDefines() { if ( defined( 'SMW_SPECIAL_SEARCHTYPE' ) ) { return; } /** @{ * Constants for the search type */ define( 'SMW_SPECIAL_SEARCHTYPE', 'SMWSearch' ); /** @} */ /** @{ * Constants for the exporter/OWL serializer */ define( 'SMW_SERIALIZER_DECL_CLASS', 1 ); define( 'SMW_SERIALIZER_DECL_OPROP', 2 ); define( 'SMW_SERIALIZER_DECL_APROP', 4 ); /** @} */ /** @{ * Constants to indicate that the installer is called from the `ExtensionSchemaUpdates` * hook. */ define( 'SMW_EXTENSION_SCHEMA_UPDATER', 'smw/extension/schema/updater' ); /** @} */ /** @{ * SMW\Query\ResultPrinters\ResultPrinter related constants that define * how/if headers should be displayed */ define( 'SMW_HEADERS_SHOW', 2 ); define( 'SMW_HEADERS_PLAIN', 1 ); // Used to be "false" hence use "0" to support extensions that still assume this. define( 'SMW_HEADERS_HIDE', 0 ); /** @} */ /** @{ * Constants for denoting output modes in many functions: HTML or Wiki? * "File" is for printing results into stand-alone files (e.g. building RSS) * and should be treated like HTML when building single strings. Only query * printers tend to have special handling for that. */ define( 'SMW_OUTPUT_HTML', 1 ); define( 'SMW_OUTPUT_WIKI', 2 ); define( 'SMW_OUTPUT_FILE', 3 ); define( 'SMW_OUTPUT_RAW', 4 ); /** @} */ /** @{ * Constants for displaying the factbox */ define( 'SMW_FACTBOX_HIDDEN', 1 ); define( 'SMW_FACTBOX_SPECIAL', 2 ); define( 'SMW_FACTBOX_NONEMPTY', 3 ); define( 'SMW_FACTBOX_SHOWN', 5 ); define( 'SMW_FACTBOX_CACHE', 16 ); define( 'SMW_FACTBOX_PURGE_REFRESH', 32 ); define( 'SMW_FACTBOX_DISPLAY_SUBOBJECT', 64 ); define( 'SMW_FACTBOX_DISPLAY_ATTACHMENT', 128 ); /** @} */ /** @{ * Constants for regulating equality reasoning */ define( 'SMW_EQ_NONE', 1 ); define( 'SMW_EQ_SOME', 2 ); define( 'SMW_EQ_FULL', 4 ); /** @} */ /** @{ * Constants for internal entity types */ define( 'SMW_SUBENTITY_MONOLINGUAL', '_ML' ); define( 'SMW_SUBENTITY_REFERENCE', '_REF' ); define( 'SMW_SUBENTITY_QUERY', '_QUERY' ); define( 'SMW_SUBENTITY_ERROR', '_ERR' ); /** @} */ /** @{ * Flags to classify available query descriptions, * used to enable/disable certain features */ // [[some property::...]] define( 'SMW_PROPERTY_QUERY', 1 ); // [[Category:...]] define( 'SMW_CATEGORY_QUERY', 2 ); // [[Concept:...]] define( 'SMW_CONCEPT_QUERY', 4 ); // [[User:+]] etc. define( 'SMW_NAMESPACE_QUERY', 8 ); // any conjunctions define( 'SMW_CONJUNCTION_QUERY', 16 ); // any disjunctions (OR, ||) define( 'SMW_DISJUNCTION_QUERY', 32 ); // subsumes all other options define( 'SMW_ANY_QUERY', 0xFFFFFFFF ); /** @} */ /** @{ * Constants for defining which concepts to show only if cached */ // show concept elements anywhere only if cached define( 'CONCEPT_CACHE_ALL', 4 ); // show without cache if concept is not harder than permitted inline queries define( 'CONCEPT_CACHE_HARD', 1 ); // show all concepts even without any cache define( 'CONCEPT_CACHE_NONE', 0 ); /** @} */ /** @{ * Constants for identifying javascripts as used in SMWOutputs */ /// @deprecated Use module 'ext.smw.tooltips', see SMW_Ouptuts.php. Vanishes in SMW 1.7 at /// the latest. define( 'SMW_HEADER_TOOLTIP', 2 ); /// @deprecated Module removed. Vanishes in SMW 1.7 at the latest. define( 'SMW_HEADER_SORTTABLE', 3 ); /// @deprecated Use module 'ext.smw.styles', see SMW_Ouptuts.php. Vanishes in SMW 1.7 at the /// latest. define( 'SMW_HEADER_STYLE', 4 ); /** @} */ /** @{ * Comparators for datavalues */ // Matches only datavalues that are equal to the given value. define( 'SMW_CMP_EQ', 1 ); // Matches only datavalues that are less or equal than the given value. define( 'SMW_CMP_LEQ', 2 ); // Matches only datavalues that are greater or equal to the given value. define( 'SMW_CMP_GEQ', 3 ); // Matches only datavalues that are unequal to the given value. define( 'SMW_CMP_NEQ', 4 ); // Matches only datavalues that are LIKE the given value. define( 'SMW_CMP_LIKE', 5 ); // Matches only datavalues that are not LIKE the given value. define( 'SMW_CMP_NLKE', 6 ); // Matches only datavalues that are less than the given value. define( 'SMW_CMP_LESS', 7 ); // Matches only datavalues that are greater than the given value. define( 'SMW_CMP_GRTR', 8 ); // Native LIKE matches (in disregards of an existing full-text index) define( 'SMW_CMP_PRIM_LIKE', 20 ); // Native NLIKE matches (in disregards of an existing full-text index) define( 'SMW_CMP_PRIM_NLKE', 21 ); // Short-cut for ~* ... * define( 'SMW_CMP_IN', 22 ); // Short-cut for a phrase match ~" ... " mostly for a full-text context define( 'SMW_CMP_PHRASE', 23 ); // Short-cut for ~! ... * ostly for a full-text context define( 'SMW_CMP_NOT', 24 ); /** @} */ /** @{ * Constants for date formats (using binary encoding of nine bits: * 3 positions x 3 interpretations) */ // Month-Day-Year define( 'SMW_MDY', 785 ); // Day-Month-Year define( 'SMW_DMY', 673 ); // Year-Month-Day define( 'SMW_YMD', 610 ); // Year-Day-Month define( 'SMW_YDM', 596 ); // Month-Year define( 'SMW_MY', 97 ); // Year-Month define( 'SMW_YM', 76 ); // Year define( 'SMW_Y', 9 ); // an entered digit can be a year define( 'SMW_YEAR', 1 ); // an entered digit can be a year define( 'SMW_DAY', 2 ); // an entered digit can be a month define( 'SMW_MONTH', 4 ); // an entered digit can be a day, month or year define( 'SMW_DAY_MONTH_YEAR', 7 ); // an entered digit can be either a month or a year define( 'SMW_DAY_YEAR', 3 ); /** @} */ /** @{ * Constants for date/time precision */ define( 'SMW_PREC_Y', 0 ); define( 'SMW_PREC_YM', 1 ); define( 'SMW_PREC_YMD', 2 ); define( 'SMW_PREC_YMDT', 3 ); // with time zone define( 'SMW_PREC_YMDTZ', 4 ); /** @} */ /** @{ * Constants for SPARQL supported query features (mostly SPARQL 1.1) because we are unable * to verify against the REST API whether a feature is supported or not */ // does not support any features define( 'SMW_SPARQL_QF_NONE', 0 ); // support for inverse property paths to find redirects define( 'SMW_SPARQL_QF_REDI', 2 ); // support for rdfs:subPropertyOf* define( 'SMW_SPARQL_QF_SUBP', 4 ); // support for rdfs:subClassOf* define( 'SMW_SPARQL_QF_SUBC', 8 ); // support for use of $smwgEntityCollation define( 'SMW_SPARQL_QF_COLLATION', 16 ); // support case insensitive pattern matches define( 'SMW_SPARQL_QF_NOCASE', 32 ); /** @} */ /** @{ * Constants for SPARQL repository sepcific features */ // does not support any features define( 'SMW_SPARQL_NONE', 0 ); // ping connection before update define( 'SMW_SPARQL_CONNECTION_PING', 2 ); /** @} */ /** @{ * Deprecated since 3.0, remove options after complete removal in 3.1 */ define( 'SMW_HTTP_DEFERRED_ASYNC', true ); define( 'SMW_HTTP_DEFERRED_SYNC_JOB', 4 ); define( 'SMW_HTTP_DEFERRED_LAZY_JOB', 8 ); /** @} */ /** @{ * Constants DV features */ define( 'SMW_DV_NONE', 0 ); // PropertyValue to follow a property redirect target define( 'SMW_DV_PROV_REDI', 2 ); // MonolingualTextValue requires language code define( 'SMW_DV_MLTV_LCODE', 4 ); // Preserve spaces in unit labels define( 'SMW_DV_NUMV_USPACE', 8 ); // Allows pattern define( 'SMW_DV_PVAP', 16 ); // WikiPageValue to use an explicit display title define( 'SMW_DV_WPV_DTITLE', 32 ); // PropertyValue allow to find a property using the display title define( 'SMW_DV_PROV_DTITLE', 64 ); // Declares a uniqueness constraint define( 'SMW_DV_PVUC', 128 ); // TimeValue to indicate calendar model define( 'SMW_DV_TIMEV_CM', 256 ); // Preferred property label define( 'SMW_DV_PPLB', 512 ); // PropertyValue to output a hint in case of a preferred label usage define( 'SMW_DV_PROV_LHNT', 1024 ); // Have WikiPageValue use a full pipe trick when rendering its caption. define( 'SMW_DV_WPV_PIPETRICK', 2048 ); /** @} */ /** @{ * Constants for Fulltext types */ define( 'SMW_FT_NONE', 0 ); // DataItem::TYPE_BLOB define( 'SMW_FT_BLOB', 2 ); // DataItem::TYPE_URI define( 'SMW_FT_URI', 4 ); // DataItem::TYPE_WIKIPAGE define( 'SMW_FT_WIKIPAGE', 8 ); /** @} */ /** @{ * Constants for admin features */ define( 'SMW_ADM_NONE', 0 ); // RefreshStore define( 'SMW_ADM_REFRESH', 2 ); // IDDisposal define( 'SMW_ADM_DISPOSAL', 4 ); // SetupStore define( 'SMW_ADM_SETUP', 8 ); // Property statistics update define( 'SMW_ADM_PSTATS', 16 ); // Fulltext update define( 'SMW_ADM_FULLT', 32 ); // Maintenance script docs define( 'SMW_ADM_MAINTENANCE_SCRIPT_DOCS', 64 ); // Show Overview tab define( 'SMW_ADM_SHOW_OVERVIEW', 128 ); // Table optimization alert define( 'SMW_ADM_ALERT_LAST_OPTIMIZATION_RUN', 2048 ); /** @} */ /** @{ * Constants for ResultPrinter */ define( 'SMW_RF_NONE', 0 ); // #2022 Enable 2.5 behaviour for template handling define( 'SMW_RF_TEMPLATE_OUTSEP', 2 ); /** @} */ /** @{ * Constants for $smwgExperimentalFeatures */ define( 'SMW_QUERYRESULT_PREFETCH', 2 ); define( 'SMW_SHOWPARSER_USE_CURTAILMENT', 4 ); /** @} */ /** @{ * Constants for $smwgFieldTypeFeatures */ define( 'SMW_FIELDT_NONE', 0 ); // Using FieldType::TYPE_CHAR_NOCASE define( 'SMW_FIELDT_CHAR_NOCASE', 2 ); // Using FieldType::TYPE_CHAR_LONG define( 'SMW_FIELDT_CHAR_LONG', 4 ); /** @} */ /** @{ * Constants for $smwgQueryProfiler */ define( 'SMW_QPRFL_NONE', 0 ); // Support for Query parameters define( 'SMW_QPRFL_PARAMS', 2 ); // Support for Query duration define( 'SMW_QPRFL_DUR', 4 ); /** @} */ /** @{ * Constants for $smwgBrowseFeatures */ define( 'SMW_BROWSE_NONE', 0 ); // Support for the toolbox link define( 'SMW_BROWSE_TLINK', 2 ); // Support inverse direction define( 'SMW_BROWSE_SHOW_INVERSE', 4 ); // Support for incoming links define( 'SMW_BROWSE_SHOW_INCOMING', 8 ); // Support for grouping properties define( 'SMW_BROWSE_SHOW_GROUP', 16 ); // Support for the sortkey display define( 'SMW_BROWSE_SHOW_SORTKEY', 32 ); // Support for using the API as request backend define( 'SMW_BROWSE_USE_API', 64 ); /** @} */ /** @{ * Constants for $smwgParserFeatures */ define( 'SMW_PARSER_NONE', 0 ); // Support for strict mode define( 'SMW_PARSER_STRICT', 2 ); // Support for using the StripMarkerDecoder define( 'SMW_PARSER_UNSTRIP', 4 ); // Support for display of inline errors define( 'SMW_PARSER_INL_ERROR', 8 ); // Support for parsing hidden categories define( 'SMW_PARSER_HID_CATS', 16 ); // Support for links in value define( 'SMW_PARSER_LINV', 32 ); // Support for links in value define( 'SMW_PARSER_LINKS_IN_VALUES', 32 ); /** @} */ /** @{ * Constants for LinksInValue features */ // Using the PCRE approach define( 'SMW_LINV_PCRE', 2 ); // Using the Obfuscator approach define( 'SMW_LINV_OBFU', 4 ); /** @} */ /** @{ * Constants for $smwgCategoryFeatures */ define( 'SMW_CAT_NONE', 0 ); // Support resolving category redirects define( 'SMW_CAT_REDIRECT', 2 ); // Support using a category as instantiatable object define( 'SMW_CAT_INSTANCE', 4 ); // Support for category hierarchies define( 'SMW_CAT_HIERARCHY', 8 ); /** @} */ /** @{ * Constants for $smwgQSortFeatures */ define( 'SMW_QSORT_NONE', 0 ); // General sort support define( 'SMW_QSORT', 2 ); // Random sort support define( 'SMW_QSORT_RANDOM', 4 ); // Unconditional sort support define( 'SMW_QSORT_UNCONDITIONAL', 8 ); /** @} */ /** @{ * Constants for $smwgRemoteReqFeatures */ // Remote responses are enabled define( 'SMW_REMOTE_REQ_SEND_RESPONSE', 2 ); // Shows a note define( 'SMW_REMOTE_REQ_SHOW_NOTE', 4 ); /** @} */ /** @{ * Constants for Schema groups */ define( 'SMW_SCHEMA_GROUP_FORMAT', 'schema/group/format' ); define( 'SMW_SCHEMA_GROUP_SEARCH', 'schema/group/search' ); define( 'SMW_SCHEMA_GROUP_PROPERTY', 'schema/group/property' ); define( 'SMW_SCHEMA_GROUP_CONSTRAINT', 'schema/group/constraint' ); define( 'SMW_SCHEMA_GROUP_PROFILE', 'schema/group/profile' ); /** @{ * Constants for Special:Ask submit method */ define( 'SMW_SASK_SUBMIT_GET', 'get' ); define( 'SMW_SASK_SUBMIT_GET_REDIRECT', 'get.redirect' ); define( 'SMW_SASK_SUBMIT_POST', 'post' ); /** @} */ /** @{ * Constants for constraint error check */ define( 'SMW_CONSTRAINT_ERR_CHECK_NONE', false ); define( 'SMW_CONSTRAINT_ERR_CHECK_MAIN', 'check/main' ); define( 'SMW_CONSTRAINT_ERR_CHECK_ALL', 'check/all' ); /** @} */ /** @{ * Constants for content types */ define( 'CONTENT_MODEL_SMW_SCHEMA', 'smw/schema' ); /** @} */ } /** * Get the array that DefaultSettings.php is supposed to return. We did not put it inline here * as we did with Aliases.php and Defines.php because there are references to that file online * for documentation. */ public static function getDefaultSettings(): array { static $settings = null; if ( $settings === null ) { $settings = include dirname( __DIR__ ) . '/includes/DefaultSettings.php'; if ( !is_array( $settings ) ) { throw new Exception( "Including DefaultSettings.php did not return an array." ); } } return $settings; } /** * Set up $GLOBALS according to what is found in DefaultSettings.php */ public static function setupGlobals(): void { $defaultSettings = self::getDefaultSettings(); if ( is_array( $defaultSettings ) ) { foreach ( $defaultSettings as $key => $value ) { if ( !isset( $GLOBALS[$key] ) ) { $GLOBALS[$key] = $value; } } } } }