Extension inventory: Difference between revisions

From Freephile Wiki
No edit summary
Create some content from simple script
 
(47 intermediate revisions by 2 users not shown)
Line 1: Line 1:
UNUSEDThis page serves to inventory and assess the mix of extensions that are in use for the DCS wiki. Code for "regular" extensions are hosted on Gerrit at the WMF (which is also mirrored to GitHub) with documentation at https://www.mediawiki.org/wiki. Code for the DCS extensions is in the [https://github.com/debtcompliance/mediawiki/tree/master/extensions private Debt Compliance GitHub repo]; and the Organic Design extensions are in the [https://github.com/OrganicDesign/extensions/tree/master/MediaWiki 'MediaWiki' tree of the Organic Design GitHub repo].
This is just a one-off example of how we compiled a list of 'missing' extensions for [[Meza]]


== "Regular" Extensions ==
Given a list of 'Bundled' extensions to MediaWiki
{| class="wikitable sortable"
<pre>
|-
# This is a list of bundled extensions from
! Extension
# https://www.mediawiki.org/wiki/Bundled_extensions_and_skins
! Used by WMF projects?
AbuseFilter
! What does it do?
CategoryTree
! Maintenance / Last release
CheckUser
! Used by Meza
Cite
! Used by QualityBox
CiteThisPage
! Alternative Extension
CodeEditor
|-
ConfirmEdit
| [https://www.mediawiki.org/wiki/Extension:CirrusSearch CirrusSearch]
DiscussionTools
| YES
Echo
| Extends the core search for MediaWiki to be able to use [https://en.wikipedia.org/wiki/Elasticsearch Elasticsearch]
Gadgets
| Continuous
ImageMap
| Yes
InputBox
| Yes
Linter
|
LoginNotify
|-
Math
| [https://www.mediawiki.org/wiki/Extension:Cite Cite]
MultimediaViewer
| Bundled
Nuke
| Provides <nowiki><references /> and <ref></ref></nowiki> tags
OATHAuth
| Continuous
PageImages
| Yes
ParserFunctions
| Yes
PdfHandler
|
Poem
|-
ReplaceText
| [https://www.mediawiki.org/wiki/Extension:CiteThisPage CiteThisPage]
Scribunto
| Bundled
SecureLinkFixer
| Provides [https://demo.qualitybox.us/wiki/Special:CiteThisPage Cite This Page] Special Page. Distributed by QualityBox (not Meza)
SpamBlacklist
| Continuous
SyntaxHighlight
| No
TemplateData
| Yes
TemplateStyles
| UNUSED
TextExtracts
|-
Thanks
| [https://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit]
TitleBlacklist
| YES
VisualEditor
| Adds CAPTCHAs for page saves and other user actions to protect against spam and password-guessing
WikiEditor
| Continuous
</pre>
| No
| Yes
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:Elastica Elastica]
| YES
| Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch.
| Continuous
| Yes
| Yes
|
|-
| [https://www.mediawiki.org/wiki/Extension:Gadgets Gadgets]
| YES
| Provides a way for users to pick JavaScript or CSS based "gadgets" that other wiki users provide.
| Continuous
| No
| Yes
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:ImageMap ImageMap]
| Bundled
| The ImageMap extension allows clickable image maps.
| Continuous
| Yes
| Yes
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:InputBox InputBox ]
| Bundled
| The InputBox extension adds already created HTML forms to wiki pages.
| Continuous
| Yes
| Yes
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:Interwiki Interwiki]
| Bundled
| The Interwiki extension adds the "Special:Interwiki" page to MediaWiki, to view and edit the interwiki table, and a log of any actions made with it.
| Continuous
| Yes
| Yes
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:LocalisationUpdate LocalisationUpdate]
| Bundled
| allows to update the localizations for MediaWiki messages at any time, without needing to upgrade the MediaWiki software.
| Continuous
| No
| No
| UNUSED
|-
| [https://www.mediawiki.org/wiki/Extension:Nuke Nuke]
| Bundled
| The Nuke extension makes it possible for sysops to [https://demo.qualitybox.us/wiki/Special:Nuke mass delete pages].
| Continuous
| No
| Yes
| For whatever reason, the DCSNuke extension intercepts page requests for the Nuke special page. DCSNuke has no added functionality. Remove DCSNuke.
|-
| ParserFunctions
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| PdfHandler
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| PipeEscape
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| Poem
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| Renameuser
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| SimpleMathJax
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| SpamBlacklist
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| SyntaxHighlight_GeSHi
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| TitleBlacklist
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
| WikiEditor
| Bundled?
| What does it do?
| Maintenance / Last release
| Meza?
| QB?
| UNUSED?
|-
|}


== Custom DCS Extensions ==
And given a [[YAML]] file that contains a list of [https://github.com/freephile/meza/blob/main/config/MezaCoreExtensions.yml our own project extensions].


# DcsAmmendments
We generated a list of the missing ones
# DcsBaskets
<syntaxhighlight lang="php">
# DcsCommon
<?php
# DcsComplianceChecklist
// Script to find extensions in bundled_extensions.txt that are NOT in MezaCoreExtensions.yml
# DcsComplianceChecklist2
# DcsEmailLink
# DcsExportTerms
# DcsFindTitle
# DcsGroupAdmin
# DcsJobAdmin
# DcsLoanPages
# DcsNamespaces
# DcsNuke
# DcsSearch
# DcsSection
# DcsSection2
# DcsSingleSignOn
# DcsSkin
# DcsTitle
# DcsUploadedFiles
# DcsUserDisable
# DcsWatchComments


== Organic Design extensions ==
function extractExtensionNamesFromYaml($filePath) {
# Accordian
    $yamlContent = file_get_contents($filePath);
# AddLinkClasses
    $extensions = yaml_parse($yamlContent);
# AjaxComments
    $names = [];
# ArticleProperties
    if (isset($extensions['list'])) {
# Bliki
        foreach ($extensions['list'] as $extension) {
# CodeTidy
            if (isset($extension['name'])) {
# CurrentPages
                $names[] = $extension['name'];
# CurrentUsers
            }
# Download
        }
# EmailPage
    }
# EmailToWiki
    return $names;
# EximMailList
}
# ExtraMagic
# FaceBook
# FileAttach
# FormMailer
# HighlightJS
# InterWiki
# jQueryUpload
# jQueryUpload2
# Ligmincha
# LinkAttributes
# LinkTree
# NukeDPL
# ODMaps
# OrganicDesign
# PdfBook
# RecentActivity
# SimpleCalendar
# TransformChanges
# TreeAndMenu
# UserLoginLog
# UserProfiles
# Variables
# WebSocket
# WikiaAdmin
# WikiaInfo


function extractExtensionNamesFromTxt($filePath) {
    $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $names = [];
    foreach ($lines as $line) {
        $line = trim($line);
        // Skip comments and empty lines
        if ($line === '' || strpos($line, '#') === 0) {
            continue;
        }
        $names[] = $line;
    }
    return $names;
}


// Path to files
$bundledFile = '/opt/meza/src/scripts/bundled_extensions.txt';
$coreYaml = '/opt/meza/config/MezaCoreExtensions.yml';


$bundled = extractExtensionNamesFromTxt($bundledFile);
$core = extractExtensionNamesFromYaml($coreYaml);


// Find bundled extensions not in core
$toAdd = array_diff($bundled, $core);


== Special:Version ==
// Output results
This is what you'll see reported by the "[https://clienttest.dm.dcstemporary.com/Special:Version Special:Version]" page of the wiki
if (count($toAdd) === 0) {
 
    echo "All bundled extensions are already in core.\n";
=== Installed skins ===
} else {
 
    echo "Extensions to add to core (" . count($toAdd) . "):\n";
{| style="border-spacing:0;"
    foreach ($toAdd as $name) {
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
        echo "- $name\n";
| align=center| '''Skin'''
    }
| align=center| '''Version'''
}
| align=center| '''License'''
</syntaxhighlight>
| align=center| '''Description'''
[[Category:MediaWiki]]
| align=center| '''Authors'''
[[Category:Tools]]
|-
[[Category:Scripting]]
|  | [https://www.mediawiki.org/wiki/Skin:Cologne_Blue Cologne Blue]
[[Category:Meza]]
|  | –
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Cologne_Blue GPL-2.0+]
|  | A lightweight skin with minimal formatting
|  | Lee Daniel Crocker and others
|-
|  | [http://www.debtcompliance.com/ DcsSkin]
|  | 3.0.2, 2016-07-01
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | DCS skin desgined to match the QAR app
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Skin:Modern Modern]
|  | –
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Modern GPL-2.0+]
|  | A blue/gray theme with sidebar and top bar. Derived from MonoBook
|  | River Tarnell and others
|-
|  | [https://www.mediawiki.org/wiki/Skin:MonoBook MonoBook]
|  | –
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/MonoBook GPL-2.0+]
|  | The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background
|  | Gabriel Wicke and others
|-
|  | [https://www.mediawiki.org/wiki/Skin:Vector Vector]
|  | –
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Vector GPL-2.0+]
|  | Modern version of MonoBook with fresh look and many usability improvements
|  | Trevor Parscal, Roan Kattouw and others
 
 
|-
|}
 
=== Installed extensions ===
 
{| style="border-spacing:0;"
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| colspan="5"  align=center| '''Special pages'''
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| align=center| '''Extension'''
| align=center| '''Version'''
| align=center| '''License'''
| align=center| '''Description'''
| align=center| '''Authors'''
|-
|  | [http://www.debtcompliance.com/ DcsGroupAdmin]
|  | 1.2.0, 2015-06-26
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | A special page for managing DCS groups and access
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsJobAdmin]
|  | 4.0.0, 2017-06-28
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | A special page for managing DCS jobs that run in the background
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsSearch]
|  | 2.4.2, 2017-01-27
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Renders the search dropdown with favourite terms list, and allows users to track the pages they've visited from search results of their favorite terms
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsUploadedFiles]
|  | 1.3.0, 2017-07-08
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | A special page for listing the files uploaded to loan pages
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Extension:EmailPage EmailPage]
|  | 2.4.4, 2017-04-26
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/EmailPage GPL-2.0+]
|  | Send rendered HTML page to an e-mail address or list of addresses using&nbsp;[http://phpmailer.sourceforge.net/ phpmailer]
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.organicdesign.co.nz/jQueryUpload jQueryUpload]
|  | 1.4.5, 2016-08-28
|  | [https://www.gnu.org/licenses/gpl-2.0.html GNU ][https://www.gnu.org/licenses/gpl-2.0.html General Public Licence 2.0]&nbsp;or later
|  | Allows files to be uploaded to the wiki or to specific pages using the jQueryFileUpload module
|  | [http://www.organicdesign.co.nz/aran Aran ][http://www.organicdesign.co.nz/aran Dunkley]&nbsp;and&nbsp;[http://blueimp.net/ Sebastian Tschan]
|-
|  | [https://www.mediawiki.org/wiki/Extension:Nuke Nuke]
|  | 1.2.0
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Nuke GPL-2.0+]
|  | Gives administrators the ability to&nbsp;[https://clienttest.dm.dcstemporary.com/Special:Nuke mass delete]&nbsp;pages
|  | Brion Vibber and Jeroen De Dauw
|-
| colspan="5" |
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| colspan="5"  align=center| '''Parser hooks'''
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| align=center| '''Extension'''
| align=center| '''Version'''
| align=center| '''License'''
| align=center| '''Description'''
| align=center| '''Authors'''
|-
|  | [http://www.debtcompliance.com/ DcsComplianceChecklist]
|  | 1.24.2, 2016-05-10
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Creates the #ComplianceChecklist parser-function
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.organicdesign.co.nz/Extension:ExtraMagic.php ExtraMagic]
|  | 3.8.0, 2015-010-04
|  | [https://www.gnu.org/licenses/gpl-2.0.html GNU General Public Licence 2.0]&nbsp;or later
|  | Adds useful variables and parser functions
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Extension:ParserFunctions ParserFunctions]
|  | 1.6.0
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/ParserFunctions GPL-2.0]
|  | Enhance parser with logical functions
|  | Tim Starling, Robert Rohde, Ross McClure and Juraj Simlovic
|-
|  | [http://www.mediawiki.org/wiki/Extension:TreeAndMenu PdfBook]
|  | 1.5.2, 2017-05-15
|  | [https://www.gnu.org/licenses/gpl-2.0.html GNU General Public Licence 2.0]&nbsp;or later
|  | pdfbook-desc
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Extension:Pipe_Escape Pipe Escape]
|  | 2.0.0.&nbsp;[https://phabricator.wikimedia.org/r/revision/mediawiki/extensions/PipeEscape;a36d2d6969fa0b86e1ac293b34b6b77f2df26576 (a36d2d6)]23:54, 4 May 2016
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Pipe_Escape GPL-2.0+]
|  | Parser function&nbsp;<span style="background-color:#f9f9f9;"><tt><nowiki>#!</nowiki></tt></span>&nbsp;for when you want a pipe character to be just a pipe character
|  | David M. Sledge and Purodha Blissenbach
|-
|  | [http://www.mediawiki.org/wiki/Extension:TreeAndMenu TreeAndMenu]
|  | 4.2.1, 2016-05-24
|  | [https://www.gnu.org/licenses/gpl-2.0.html GNU General Public Licence 2.0]&nbsp;or later
|  | Adds&nbsp;<span style="background-color:#f9f9f9;"><tt><nowiki>#tree</nowiki></tt></span>&nbsp;and&nbsp;<span style="background-color:#f9f9f9;"><tt><nowiki>#menu</nowiki></tt></span>&nbsp;parser functions which contain bullet-lists to be rendered as collapsible treeviews or dropdown menus. The treeviews use the&nbsp;[http://wwwendt.de/tech/fancytree FancyTree]&nbsp;JavaScript tree menu, and the dropdown menus use&nbsp;[http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
| colspan="5" |
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| colspan="5"  align=center| '''Other'''
|- style="background-color:#f2f2f2;border:0.05pt solid #aaaaaa;padding:0.0194in;"
| align=center| '''Extension'''
| align=center| '''Version'''
| align=center| '''License'''
| align=center| '''Description'''
| align=center| '''Authors'''
|-
|  | [http://www.mediawiki.org/wiki/Extension:AjaxComments AjaxComments]
|  | 2.7.2, 2017-03-08
|  | [https://www.gnu.org/licenses/gpl-2.0.html GNU General Public Licence 2.0]&nbsp;or later
|  | Add comments to the end of the page that can be edited, deleted or replied to instead of using the talk pages
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Extension:CirrusSearch CirrusSearch]
|  | 0.2&nbsp;[https://phabricator.wikimedia.org/r/revision/mediawiki/extensions/CirrusSearch;dcb0cf934a76a326aee728166e517fd1b74422e2 (dcb0cf9)]21:22, 4 May 2016
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/CirrusSearch GPL-2.0+]
|  | Elasticsearch-powered search for MediaWiki
|  | Nik Everett, Chad Horohoe, Erik Bernhardson and&nbsp;[https://clienttest.dm.dcstemporary.com/Special:Version/Credits/CirrusSearch others]
|-
|  | [http://www.debtcompliance.com/ DcsAmmendments]
|  | 1.1.0, 2018-01-20
|  | [http://www.debtcompliance.com/ Copyright © 2015-2018 Debt Compliance Services]
|  | Adds ammendments section to DCS loan pages
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsBaskets]
|  | 1.4.2, 2016-08-08
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Allows fields in Baskets table to be updated via AJAX
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsCommon]
|  | 5.1.1, 2018-01-25
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | DCS common functionality
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsEmailLink]
|  | 0.0.1, 2017-07-12
|  | [http://www.debtcompliance.com/ Copyright © 2017-2018 Debt Compliance Services]
|  | Adds a new "EmailLink" action which can match a title case-insensitvely
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsExportTerms]
|  | 2.0.1, 2017-03-20
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Add an export action to the that allows terms to be downloaded in CSV format
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsFindTitle]
|  | 1.1.0, 2017-01-30
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Adds a new "find" action which can match a title case-insensitvely
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsLoanPages]
|  | 2.5.2, 2016-05-17
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Adds breadcrumbs, comments and backlinks to DCS loan pages
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsNamespaces]
|  | 2.5.0, 2015-12-12
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | A special page for administering loan documents in their own namepsaces
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsNuke]
|  | 1.2.2, 2017-01-19
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Gives administrators the ability to mass delete pages
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsSection2]
|  | 2.0.0, 2018-01-12
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | DCS article section handling extension - new version 2 with individual sub-section article support removed
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsSingleSignOn]
|  | 5.1.5, 2017-07-14
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Allows the Rails application to manage the login, logout and session expiry for the DCS wikis
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsTitle]
|  | 1.0.0, 2017-02-13
|  | [http://www.debtcompliance.com/ Copyright © 2017-2018 Debt Compliance Services]
|  | Creates a new DCS-specific Title class that includes TOC info such as sortkey, next and prev
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsUserDisable]
|  | 1.3.0, 2015-06-26
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Adds acount enable/disable links to the user list
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [http://www.debtcompliance.com/ DcsWatchComments]
|  | 1.4, 2017-03-09
|  | [http://www.debtcompliance.com/ Copyright © 2007-2018 Debt Compliance Services]
|  | Removes default watchlist functionality and makes all loan comment articles auto-watched
|  | [http://www.organicdesign.co.nz/aran Aran Dunkley]
|-
|  | [https://www.mediawiki.org/wiki/Extension:Elastica Elastica]
|  | 1.3.0.0&nbsp;[https://phabricator.wikimedia.org/r/revision/mediawiki/extensions/Elastica;4607acf9efef0ad5cc236352ada9afe2f1dfdc2b (4607acf)]22:52, 4 May 2016
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/Elastica GPL-2.0+]
|  | Base&nbsp;[http://www.elasticsearch.org/ Elasticsearch]&nbsp;functionality for other extensions by providing&nbsp;[http://elastica.io/ Elastica]&nbsp;library
|  | Nik Everett and Chad Horohoe
|-
|  | [https://www.mediawiki.org/wiki/Extension:WikiEditor WikiEditor]
|  | 0.5.0
|  | [https://clienttest.dm.dcstemporary.com/Special:Version/License/WikiEditor GPL-2.0+]
|  | Provides an extendable wikitext editing interface and many feature-providing modules
|  | Derk-Jan Hartman, Trevor Parscal, Roan Kattouw, Nimish Gautam and Adam Miller
|-
|}

Latest revision as of 18:00, 12 September 2025

This is just a one-off example of how we compiled a list of 'missing' extensions for Meza

Given a list of 'Bundled' extensions to MediaWiki

# This is a list of bundled extensions from 
# https://www.mediawiki.org/wiki/Bundled_extensions_and_skins
AbuseFilter
CategoryTree
CheckUser
Cite
CiteThisPage
CodeEditor
ConfirmEdit
DiscussionTools
Echo
Gadgets
ImageMap
InputBox
Linter
LoginNotify
Math
MultimediaViewer
Nuke
OATHAuth
PageImages
ParserFunctions
PdfHandler
Poem
ReplaceText
Scribunto
SecureLinkFixer
SpamBlacklist
SyntaxHighlight
TemplateData
TemplateStyles
TextExtracts
Thanks
TitleBlacklist
VisualEditor
WikiEditor

And given a Yaml file that contains a list of our own project extensions.

We generated a list of the missing ones

<?php
// Script to find extensions in bundled_extensions.txt that are NOT in MezaCoreExtensions.yml

function extractExtensionNamesFromYaml($filePath) {
    $yamlContent = file_get_contents($filePath);
    $extensions = yaml_parse($yamlContent);
    $names = [];
    if (isset($extensions['list'])) {
        foreach ($extensions['list'] as $extension) {
            if (isset($extension['name'])) {
                $names[] = $extension['name'];
            }
        }
    }
    return $names;
}

function extractExtensionNamesFromTxt($filePath) {
    $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $names = [];
    foreach ($lines as $line) {
        $line = trim($line);
        // Skip comments and empty lines
        if ($line === '' || strpos($line, '#') === 0) {
            continue;
        }
        $names[] = $line;
    }
    return $names;
}

// Path to files
$bundledFile = '/opt/meza/src/scripts/bundled_extensions.txt';
$coreYaml = '/opt/meza/config/MezaCoreExtensions.yml';

$bundled = extractExtensionNamesFromTxt($bundledFile);
$core = extractExtensionNamesFromYaml($coreYaml);

// Find bundled extensions not in core
$toAdd = array_diff($bundled, $core);

// Output results
if (count($toAdd) === 0) {
    echo "All bundled extensions are already in core.\n";
} else {
    echo "Extensions to add to core (" . count($toAdd) . "):\n";
    foreach ($toAdd as $name) {
        echo "- $name\n";
    }
}