You can, in your php extension code, so not inside the extension.json, check, 
if another extension is installed or not:

ExtensionRegistry::getInstance()->isLoaded( 'ExtensionName' );

There's also a "requires" section, which is parsed in extension.json, but it 
currently only supports MediaWiki core versions (it behaves like composer's 
requires section). I'm wondering, if dependencies like yours are widely used 
and if extending the requires section support to extensions would help to solve 
your problem (with that you could specify a specific version, a range of 
version or any version above a specific one, or all versions, too, so your 
VIKIJS_VERSION wouldn't be needed anymore, too). Would you like to open a task 
in phabricator to discuss this?

Best,
Florian

-----Ursprüngliche Nachricht-----
Von: Wikitech-l [mailto:wikitech-l-boun...@lists.wikimedia.org] Im Auftrag von 
Jason Ji
Gesendet: Freitag, 30. Oktober 2015 17:00
An: wikitech-l@lists.wikimedia.org
Betreff: [Wikitech-l] MW 1.25 new extension registration - PHP constants

Hi there,

I'm the primary developer of the VIKI
<https://www.mediawiki.org/wiki/Extension:VIKI> extension and its two companion 
extensions, VikiSemanticTitle 
<https://www.mediawiki.org/wiki/Extension:VikiSemanticTitle> and VikiTitleIcon 
<https://www.mediawiki.org/wiki/Extension:VikiTitleIcon>.

I thought I'd take a look at converting these three extensions to the new 
extension registration 
<https://www.mediawiki.org/wiki/Manual:Extension_registration> format, but I 
ran into a problem. According to the documentation, the new extension 
registration does not support PHP constants 
<https://www.mediawiki.org/wiki/Manual:Extension_registration/Limitations>.

I use a PHP constant to declare an explicit dependency on VIKI for 
VikiSemanticTitle and VikiTitleIcon. In my VIKI.php file, I declare:

*define( 'VIKIJS_VERSION', '1.3');*

And then in VikiSemanticTitle and VikiTitleIcon, I have a check that looks 
something like:

*if( !defined( 'VIKIJS_VERSION' ) ) {*
*      die('Error: The extension VikiSemanticTitle requires VIKI to be
installed first.');*
*}*

(As an aside, I also happen to use VIKIJS_VERSION as my version number, which I 
increment as I release new versions. But that's not as important.)

Because the new extension registration format doesn't support PHP constants, 
this no longer works, and I can't run VikiSemanticTitle and VikiTitleIcon 
alongside VIKI - the VIKIJS_VERSION constant is seemingly no longer defined, so 
any page load dies with the error message above.

If I can't use PHP constants anymore, does anyone have a better recommendation 
for declaring explicit dependencies? Or should I just avoid migrating the VIKI 
extensions to the new registration format?

Thanks,

--
Jason Ji
jason.y...@gmail.com
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to