This document contains details about event handlers (also known as [Hooks][hooks]) provided by Semantic MediaWiki to enable users to extent and integrate custom specific solutions. Implementing a hook should be made in consideration of the expected performance impact for the front-end (additional DB read/write transactions etc.) and/or the back-end (prolonged job backlog etc.) process. ## List of available hooks ### 1.9 - `SMW::Factbox::BeforeContentGeneration` to replace or amend text elements shown in a Factbox. See also `$smwgFactboxUseCache` settings.Use of `smwShowFactbox` was deprecated with 1.9 - `SMW::Job::updatePropertyJobs` to add additional update jobs for a property and related subjects.Use of `smwUpdatePropertySubjects` was deprecated with 1.9 - `SMW::DataType::initTypes` to add additional DataType support.Use of `smwInitDatatypes` was deprecated with 1.9 - `SMW::SQLStore::updatePropertyTableDefinitions` to add additional table definitions during initialization. ### 2.1 - `SMW::Store::BeforeQueryResultLookupComplete` to return a `QueryResult` object before the standard selection process is started and allows to suppress the standard selection process completely by returning `false`. - `SMW::Store::AfterQueryResultLookupComplete` to manipulate a `QueryResult` after the selection process. - `SMW::Property::initProperties` to add additional predefined properties.Use of `smwInitProperties` was deprecated with 2.1 - `SMW::SQLStore::BeforeDeleteSubjectComplete` called before deletion of a subject is completed. - `SMW::SQLStore::AfterDeleteSubjectComplete` called after deletion of a subject is completed. - `SMW::SQLStore::BeforeChangeTitleComplete` called before change to a subject is completed. ### 2.2 - `SMW::Parser::BeforeMagicWordsFinder` allows to extend the magic words list that the `InTextAnnotationParser` should search for the wikitext. ### 2.3 - `SMW::SQLStore::BeforeDataRebuildJobInsert` to add update jobs while running the rebuild process.Use of `smwRefreshDataJobs` was deprecated with 2.3 - `SMW::SQLStore::AddCustomFixedPropertyTables` to add fixed property table definitions - `SMW::Browse::AfterIncomingPropertiesLookupComplete` to extend the incoming properties display for `Special:Browse` - `SMW::Browse::BeforeIncomingPropertyValuesFurtherLinkCreate` to replace the standard `SearchByProperty` with a custom link to an extended list of results (return `false` to replace the link) - `SMW::SQLStore::AfterDataUpdateComplete` to add processing after the update has been completed and provides `CompositePropertyTableDiffIterator` to identify entities that have been added/removed during the update. Use of `SMWSQLStore3::updateDataAfter` was deprecated with 2.3 For implementation details and examples, see the [integration test](https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/tests/phpunit/Integration/SemanticMediaWikiProvidedHookInterfaceIntegrationTest.php). ## Other available hooks Subsequent hooks should be renamed to follow a common naming practice that help distinguish them from other hook providers. In any case this list needs details and examples. * `SMWExportController`, smwAddToRDFExport (SMW::Exporter::AfterRdfExportComplete) * `SMWParamFormat`, SMWResultFormat * `\SMW\Store`, SMWStore::updateDataBefore (SMW::Store::BeforeDataUpdateComplete) * `\SMW\Store`, SMWStore::updateDataAfter (SMW::Store::AfterDataUpdateComplete) * `\SMW\Store`, smwInitializeTables (SMW::Store::initTables) * `SMWSQLStore3SetupHandlers`, SMWCustomSQLStoreFieldType * `SMWSQLStore3SetupHandlers`, smwRefreshDataJobs (SMW::SQLStore::AfterRefreshDataJob) * `SMWSQLStore3Writers`, SMWSQLStore3::updateDataBefore (SMW::SQLStore::BeforeDataUpdateComplete) * `SMWSetupScript`, smwDropTables (SMW::Store::dropTables) * `SMW_refreshData`, smwDropTables (SMW::Store::dropTables) [hooks]: https://www.mediawiki.org/wiki/Hooks "Manual:Hooks"