• Resolved AuralSolutions

    (@auralsolutions)


    Hello,
    We’re using your plugin since a lot of time already and today I wanted to enter to Shield Dashboard and Settings, but I got a blank page where the plugin dashboard should be.

    I went to the error_log file and discovered that there is an incompatibility with “WPML” language plugin, beause that plugin uses Twig as you.

    These are the error lines:
    —————–
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare class Twig_Environment, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Environment.php on line 1647
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare interface Twig_LoaderInterface, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Loader/LoaderInterface.php on line 61
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare interface Twig_ExistsLoaderInterface, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php on line 33
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare interface Twig_SourceContextLoaderInterface, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php on line 38
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare class Twig_Loader_Filesystem, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Loader/FilesystemLoader.php on line 303
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare interface Twig_CacheInterface, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Cache/CacheInterface.php on line 60
    [17-Apr-2019 10:36:16 UTC] PHP Warning: Cannot declare class Twig_Cache_Null, because the name is already in use in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Cache/NullCache.php on line 42
    [17-Apr-2019 10:36:16 UTC] PHP Fatal error: Cannot redeclare twig_array_batch() (previously declared in /wp-content/plugins/sitepress-multilingual-cms/vendor/twig/twig/lib/Twig/Extension/Core.php:1557) in /wp-content/plugins/wp-simple-firewall/src/lib/vendor/twig/twig/src/Extension/CoreExtension.php on line 1650
    —————–

    Please fix that as soon as possible, otherwise we cannot use your plugin on the sites we create for our clients and we use the PRO versions there. Also WPML is widely used, so that would limit your sales as well.

    This is not a personal support question, because it affects all the community using your plugin and WPML and we wanted just to inform you.
    If you need any other info, please ask.

    Thank you very much and have a great day!
    Best regards,
    Jean

Viewing 15 replies - 1 through 15 (of 19 total)
  • Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Hi,

    Unfortunately we cannot fix this. This must be fixed by WPML. We include 3rd party libraries, like TWIG and use standard PHP methods to do so – namely Autoloaders.

    This allows multiple plugins to include the same library without conflicts. However, it appears that WPML isn’t using this method and is including libraries without checking that they are already loaded. So that’s why you get this error. If you look at the error closely it says:

    Cannot declare class Twig_Loader_Filesystem, because the name is already in use

    So they’re trying to redeclare something that has already been declared. You will need to contact WPML to fix this and improve their library handling.

    I’d hate to see this limit our sales, and we’re sorry that you’re experiencing this issue. WPML is also a pro plugin and they have support channels that you can access, so please impress upon them the need to adjust how they’re including libraries that are already present on a site.

    Thanks for reporting this issue to us.

    Thread Starter AuralSolutions

    (@auralsolutions)

    Hi!
    Thank you for your fast answer!
    Great, then I’ll contact WPML right away to inform them about the issue.
    I’ll report here with their answer.
    Have a nice day!
    Best regards,
    Jean

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Great… we pinged them on twitter. You’re not the only one to have this problem so hopefully enough of their clients will contact them and they’ll update their code.

    We’re happy to update our code if it turns out there’s a better way to do this, so please keep us posted. We’re happy to learn and help! ??

    Thank you ??

    To be honest @onedollarplugin the problem was introduced after your plugin was updated 2 days ago. Which means that there is something in the most recent release that triggered this. I think it would be a lot faster to roll back to the previous version and then see if together with WPML you can fix something, because basically at this moment any site that has both WPML and Shield installed will have a dysfunctional Shield plugin.
    I know that I’m rolling back right now.

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    I understand the frustration here Pieter, (we are similarly frustrated!) but we update our plugin all the time. Your implication is that since we updated our plugin, and the error suddenly appeared, that it’s our role to fix it? All this update did was expose a problem that previously existed, but wasn’t triggered until now.

    It is incumbent upon all WP developers to recognise that this is a shared environment and to use code responsibly, recognising that other developers will also be including code. We’ve done that since day 0. But sometimes other developers don’t and it’s only when a certain combination of factors come into play that a problem arises.

    We’re not rolling back Shield for this purpose, but we are looking at ways to mitigate such a problem in the future since we can’t rely on all developers to play fair.

    Also, this problem is only with the display (as TWIG is a templating library) of Shield plugin options… it doesn’t actually affect Shield core functionality.

    Thanks for reporting the ticket to WPML. Again, if they suggest something we can do to help mitigate this, we’ll be all over it and will release an update.

    Thanks for your reply Paul.

    Also, this problem is only with the display (as TWIG is a templating library) of Shield plugin options… it doesn’t actually affect Shield core functionality.

    Be that as it may, the Fatal Error that is triggered means that any screen of the Shield plugin is grey, so although the site is still protected, nothing can be done with the plugin. No scans can be run, no settings can be tweaked, nothing.

    And the reason why I suggested that you do something with your plugin right now, is because knowing a little about WPML, it might very well take longer than a few days for them to update it.

    And as long as WPML does not get updated with doing_it_right inclusion of these libraries, the Shield plugin is completely dysfunctional, because we only see a grey screen.

    The chance that people disable WPML is nil, so your plugin is either disabled or rolled back, which is what I have done.

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    I get ya, we’re already onto looking at it and how we can mitigate it.

    And the reason why I suggested that you do something with your plugin right now, is because knowing a little about WPML, it might very well take longer than a few days for them to update it.

    The danger here is that we’ll do the heavy lifting to mitigate it and then they’ll just ignore the issue. And the problem will turn up elsewhere.

    Best thing you can do is keep the pressure on them…

    Best thing you can do is keep the pressure on them…

    Will do ??

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Okay, since you have access to the WPML support forum, here is the information they need to fix it.

    I managed to get hold of a copy of WPML from another client and I’ve investigated their code. So it turns out they’re not including their code badly, even though the error suggests this. So that’s my bad, so firstly I apologise for saying such when it turns out they weren’t. The problem is a bug with TWIG in this old version:

    1. This is a bug with an older version of TWIG. They’re using v1.32.0 dating back to 2017-02

    2. Bug reference:
    https://github.com/twigphp/Twig/issues/2495

    3. This is fixed in 1.34.4+. If they update their Twig library to this version, it’ll fix the problem.

    Thanks!

    Thanks Paul, that is very helpful!

    I updated two WPML threads with this information, so hopefully someone wakes up and does the right thing fast. I will update this thread as soon as I hear something.

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Thanks! Now that I have the source code, I’m still digging into this. Once I sus it out I may release a change on our side to work around it. We’ve actually been lucky with the errors we’ve had, as they could have been worse if we’d taken another approach on our recent updates. Will keep you posted..

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Okay, I’ve put in a work around so that even if they use their older TWIG library, Shield UI will still work. I’d rather have you up and running than wait for that library to be updated.

    It’s ready to go and I’ve tested it. Would you be interested to give it a quick whirl on your site? Best thing to do is to

    1. deactivate Shield and remove it (settings will be retained unless you’ve turned on the option under General settings to remove options).
    2. Then use the WordPress plugin upload option to upload the ZIP. You can get the latest Shield Zip here:
      https://downloads.www.ads-software.com/plugin/wp-simple-firewall.zip

    Thanks!

    Hi Paul,

    Works perfect, Shield is visible again!

    Many thanks for adding this “workaround”!

    Pieter

    Plugin Author One Dollar Plugin

    (@onedollarplugin)

    Cool, 7.3.2 is out but it’s exactly the same as what you have.

Viewing 15 replies - 1 through 15 (of 19 total)
  • The topic ‘Shield Conflict with WPML – Twig’ is closed to new replies.