A simple script to convert extensions from Magento1 to Magento2

Overview

ConvertM1M2

Background

The purpose of this script is to automate as much as possible the initial conversion of a Magento 1 extension, and allow developers to have more time for tasks that can not be automated, such as:

  • Templates conversion to new M2 themes
  • JS/CSS conversion to jQuery and new M2 themes
  • Code optimizations and logic improvements
  • etc.

NOTE: this script will not produce fully working code. A developer will have to manually go over each resulting file and test/fix it by hand.

Current status

Implemented:

  • Configurations
    • ACL keys conversion
  • Layouts
    • Menu keys conversion
    • Block class names conversion
    • Template namespaces
  • Web files (copying to correct folder only, no processing)
  • Email Templates (copying to correct folder only, no processing)
  • i18n (copying to correct folder only)
  • Templates (with some conversion - see below)
    • Wrap embedded JS scripts in require.js boilerplate
  • Classes (with some conversion - see below)
  • Controllers (separate files per action)
  • Observers (separate files per observer callback)
  • PHP Code conversions
    • Class names to backslashed
    • Class declarations to use namespaces
    • Convert to short array syntax
    • Basic class name conversion to new locations in M2
    • String translations to use only __()
    • Use constructor Dependency Injection
    • use classes
    • Collect correct DI construct arguments from parent classes

Potentially to be implemented:

  • Migration Setup (not sure if possible to automate at all)
  • Advanced PHP code conversion
    • Full list of known class name, ACL keys and menu keys conversions

Partial list of known unknowns:

  • In Magento 1.x it's possible to have separate templates for different themes. If a module contains templates for multiple themes, which one should be used?
  • In Magento 1.x there are email templates for multiple locales. How this handled in Magento 2?

Installation and Usage

The script is fully standalone and self-contained, with the exception of SimpleDOM.php library, which is included in the package.

Fork/clone the repository, and edit convert.php file configuration (at the beginning of the file) if/as necessary.

The script can be ran from the Web or CLI, and allows conversion of multiple extensions at the same time.

When running from the web, no parameters can be accepted, and the script expects these locations:

  • Magento 1: $mage1Dir = ../magento/ - this is required for fetching configurations and layouts. It should contain all core Magento modules, all the modules to be converted, and all their dependencies.

  • Source Modules: $sourceDir = source/ - Copy here your extensions to be converted, files for each extension in a separate folder, named the same as extensions.

  • Destination: $mage2Dir = ../magento2/ - The resulting converted extensions will be stored here, in magento2/app/code/*, for quick testing.

When running from CLI, the following parameters are accepted (all optional):

php convert.php s=source m=mage1_folder o=output a=stage

An example of file and folders structure:

[] Web or CLI root
|
+-[] convertm1m2/
| +-() convert.php   - execute this script
| +-[] source/
|   +-[] Vendor_Module1/ - here are all the original files of your Magento1 extension, with full folder structure
|   +-[] Vendor_Module2/
|     +-[] app/code/community/Vendor/Module2/...
|     +-[] app/etc/modules/Vendor_Module2.xml
|     +-[] skin/frontend/base/default/...
|
+-[] magento/           - Magento 1 root folder with all core code, extensions to be converted, and dependencies
| +-[] app/
| +-[] skin/
| +-[] ...
|
+-[] magento2/          - Magento 2 root folder
| +-[] app/
|   +-[] code/
|     +-[] Vendor/
|       +-[] Module1/   - here are the resulting output files of the converted extension
|       +-[] Module2/

Steps after automatic conversion

  • Run stage 2 to check that classes can be loaded by php without errors
    • http://127.0.0.1/convertm1m2/convert.php?a=2 OR
    • $ php convert.php a=2
  • Fix any parent or interface classes as these could have been changed
  • Fix any constructors or other methods arguments as they might have been changed
  • Go over all the output files and try to understand what they mean and how they map to respective functionality in M1 code.
  • Manually convert CSS, JS and templates to support M2 themes.
  • Test your extensions.
  • Learn more about M2 and use the knowledge to improve your code and gain experience.

Disclaimers

Our conversion tool is a work in progress and may not necessarily be the best solution for converting your existing extension.

Some developers may opt to start development from scratch and this might be a better choice.

For those who do opt to use this script - there are no guarantees made about any correctness or completeness of the result.

The purpose of this script is only to reduce some repetitive work which can be automated.

Contributing

All contributions are welcome, especially from Magento2 core developers :)

We want feedback, PRs and success stories!

Comments
  • After Conversion module not working in m2 issue

    After Conversion module not working in m2 issue

    Hi Boris,

    The extension is really good. I have converted one M1 customer attribute extension which is displaying in my M2 / app/code/ folder but it is showing only etc, composer and registration file. controller and model files are missing in that.

    Please guide me on that how can i resolve this issue.

    Thanks in advance!

    opened by Krupaly2k-zz 25
  • How to Convert

    How to Convert

    Hi Team Please let us know the steps to convert the magento extension. While trying to convert i am getting the below error Parse error: syntax error, unexpected '.', expecting ']' in C:\xampp\htdocs\magento3\convert\ConvertM1M2.php on line 104

    Thanks

    opened by SasiKiranK 20
  • extDir preg_match condition issue

    extDir preg_match condition issue

    Hi,

    I have configured the extension but facing some issue in this. I have configured with below details:

    1. I have created source folder in same directory and added module named ModuleA in that added files like app/code/community/, skin folder etc.
    2. In m1 I have set my magento 1 directory path
    3. In m2 I have set magento2 directory path.

    Now, the issue i am facing it is not going beyond below condition. I am always getting $m array as blank

           if (!preg_match('#^(.*)/([A-Za-z0-9]+_[A-Za-z0-9]+)$#', $extDir, $m)) {
    			
                continue;
            } 
    

    Please guide me for the next step.

    Thanks in advance!

    opened by Krupaly2k-zz 15
  • Some sort of Test Framework

    Some sort of Test Framework

    It would be great is someone could set this project up with some sort of automated testing framwork for acceptance/integration tests. Something that would let us quickly identify an issues like this one, quickly create a sample module fixture, and run these tests.

    Right now there's a lot of mental inertia to testing changes with your own modules, since it means overwriting class files you've probably editing slightly to work around the limitations of the script (i.e. you don't want to overwrite your changes)

    opened by astorm 10
  • Test cases for https://github.com/unirgy/convertm1m2/issues/40

    Test cases for https://github.com/unirgy/convertm1m2/issues/40

    This pull request

    1. Adds a test script to the composer.json file, so we can run tests easily
    2. Adds test cases for the issue described in https://github.com/unirgy/convertm1m2/issues/40
    3. Adds a testable version of the ConvertM1M2 class that doesn't rely on files being there

    You can run tests by installing the composer dependencies

    $ composer install
    

    and then running

    $ composer test
    $ composer.phar test
    > vendor/bin/phpunit tests
    PHPUnit 4.8.21 by Sebastian Bergmann and contributors.
    
    .FFF...
    
    Time: 60 ms, Memory: 6.00Mb
    
    There were 3 failures:
    
    1) AllCaps::testAllcaps
    Failed asserting that '<?php
    class FOO_\Module\Controller\Test\AbstractTest{}' does not contain "FOO_\".
    
    /Users/alanstorm/Documents/github/astorm/convertm1m2/tests/AllcapsTest.php:13
    
    2) AllCaps::testMethodParsingNoCaps
    Failed asserting that 0 is true.
    
    /Users/alanstorm/Documents/github/astorm/convertm1m2/tests/AllcapsTest.php:23
    
    3) AllCaps::testMethodParsingAllCaps
    Failed asserting that 0 is true.
    
    /Users/alanstorm/Documents/github/astorm/convertm1m2/tests/AllcapsTest.php:33
    
    FAILURES!
    Tests: 7, Assertions: 8, Failures: 3.
    Script vendor/bin/phpunit tests handling the test event returned with error code 1
    

    There are currently failures because the new tests provide coverage that demonstrates the problems in https://github.com/unirgy/convertm1m2/issues/40.

    opened by astorm 9
  • Convert references to block instanceof core/block_list in referenceContainer

    Convert references to block instanceof core/block_list in referenceContainer

    Hello Unirgy,

    After migrate my layouts, in my M1 layouts, I've many blocks which are containers for others blocks. These blocks are instanceof Mage_Core_Block_Text_List. But references to these blocks are convert within your script into <reference> and not <referenceContainer>, the new syntax for these containers. If referenced block is an instance of Mage_Core_Block_Text_List, it could be interesting to use the new reference node, don't you think?

    opened by kypnz 6
  • Will Autoloader Work with Official Magento 2 Release

    Will Autoloader Work with Official Magento 2 Release

    It looks like the autoloader callback adds two paths to the M2 code pool

    $m2Pools = [
        "{$this->_env['mage2_dir']}/lib/internal",
        "{$this->_env['mage2_code_dir']}",
    ];
    

    Or, dumped out

    array(2) {
      [0] =>
      string(65) "/Users/alanstorm/Sites/magento-2-with-keys/magento2//lib/internal"
      [1] =>
      string(61) "/Users/alanstorm/Sites/magento-2-with-keys/magento2//app/code"
    }
    

    Magento moved their core modules out of the app/code folder and into the vendor/magento-* folders, each with its own composer autoloader

    #File: vendor/magento/module-checkout/composer.json
    "autoload": {
        "files": [
            "registration.php"
        ],
        "psr-4": {
            "Magento\\Checkout\\": ""
        }
    }
    

    It doesn't look like the autoloader callback will handle this?

    (Sorry for the lack of a specific test here -- not sure when the autoloader is used in the program yet.)

    opened by astorm 6
  • module.xml created without setup_version attribute

    module.xml created without setup_version attribute

    This program creates a module.xml file similar to the following

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
      <module name="PACKAGE_Module"/>
    </config>
    

    That is, its missing the setup_module version number

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
      <module name="PACKAGE_Module" setup_version="0.0.1"/>
    </config>
    

    This attribute's required, and Magento's CLI will crash without it there.

    opened by astorm 5
  • Adding simple test harness, composer.json for phpunit

    Adding simple test harness, composer.json for phpunit

    This pull requests adds a simple test harness.

    The composer.json and composer.lock will allow third party developers to install the needed PHPUnit executable by running

    composer.phar install
    

    This is pretty standard in PHP projects these days. Once composer's done its thing, users can run tests with

    vendor/bin/phpunit tests
    

    Once the multi-file work is don we'll probably need to change the setUp method in the base class, depending on what happens there.

    opened by astorm 5
  • Do Something Smart with Mage:: Calls

    Do Something Smart with Mage:: Calls

    After converting, many classes are left with calls to the old static helper

    Mage::app()->getConfig
    Mage::app()->getLayout
    Mage::app()->getWebsite
    Mage::app()->getWebsites
    Mage::getBaseDir
    Mage::getConfig
    Mage::getModel
    Mage::getSingleton
    Mage::getStoreConfig
    Mage::getUrl
    Mage::helper
    Mage::log
    

    While 100% coverage would be impossible, it'd be nice if some of these were converted to their Magento 2 equivalents.

    opened by astorm 5
  • Observer Conversion Incomplete

    Observer Conversion Incomplete

    I have a module with the following observer declared.

    <controller_action_postdispatch_adminhtml_system_config_save>
        <observers>
            <foobaz>
                <type>singleton</type>
                <class>foobaz/observer</class>
                <method>hookTo_controllerActionPostdispatchAdminhtmlSystemConfigSave</method>
            </foobaz>
        </observers>
    </controller_action_postdispatch_adminhtml_system_config_save>
    

    The conversion script converts this to the following XML

    <event name="controller_action_postdispatch_adminhtml_system_config_save">
        <observer name="ultimo" instance="Foo\Baz\Model\Observer\HookToControllerActionPostdispatchAdminhtmlSystemConfigSave"/>
    </event>
    

    This is good, since Magento 2 moved to a "one method per observer" model in the final release.

    However, the conversion script does not create the HookToControllerActionPostdispatchAdminhtmlSystemConfigSave class, which leads to the following error.

    Class Foo\Baz\Model\Observer\HookToControllerActionPostdispatchAdminhtmlSystemConfigSave does not exist
    

    It would be nice if the conversion script generated a class with an execute method that injected the original observer object, and called the original method.

    opened by astorm 5
  • Not convert Magento 1 module to Magento 2

    Not convert Magento 1 module to Magento 2

    @unirgy @astorm @dotmesh @maierb @sreichel I have tried as per instructions but the module does not convert. Showing success but not convert. See the screenshot. image_2022_04_22T06_23_13_679Z

    opened by savan13 3
  • Showing Warning

    Showing Warning

    https://github.com/unirgy/convertm1m2/blob/edfd9a8d3c1498e49a17391b51b4f4f7f12a5951/SimpleDOM.php#L46

    Warning: simplexml_load_file(): in \convertm1m2\SimpleDOM.php on line 46

    opened by savan13 0
  • Magento2 - Admin Order shipment using Authorize.net shipment can not save

    Magento2 - Admin Order shipment using Authorize.net shipment can not save

    Magento 2.1.9 Admin order page when I ship the order with Payment Method - COD than its working fine but when I'm trying with Payment Method Authorize.net getting below error : Fatal error: Uncaught exception 'Exception' with message 'User Error: Some transactions have not been committed or rolled back in /vendor/magento/framework/DB/Adapter/Pdo/Mysql.php on line 3767' in /vendor/magento/framework/App/ErrorHandler.php:61 Stack trace: #0 [internal function]: Magento\Framework\App\ErrorHandler->handler(256, 'Some transactio...', '/pub...', 3767, Array) #1 /vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(3767): trigger_error('Some transactio...', 256) #2 [internal function]: Magento\Framework\DB\Adapter\Pdo\Mysql->__destruct() #3 {main} thrown in /vendor/magento/framework/App/ErrorHandler.php on line 61

    opened by imanasmage 0
  • Unknown module key: blocks

    Unknown module key: blocks

    Hello,

    I have configured the extension in local system, but not able to successfully run and transfer data in to the magento 1 to magento2. There is display as below issues.

    2018-05-18 13:56:02][INFO] COLLECTING M1 CONFIGURATION...

    [2018-05-18 13:56:02][INFO] COLLECTING M1 LAYOUTS...

    [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: extensionconflict [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: block2018-05-18 13:56:02][INFO] COLLECTING M1 CONFIGURATION...

    [2018-05-18 13:56:02][INFO] COLLECTING M1 LAYOUTS...

    [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: advancedstock [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: backgroundtask [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: extensionconflict [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: salesorderplanning [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: j2tajaxcheckout [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: enterprise_customerbalance [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: enterprise_customerbalance

    [2018-05-18 13:56:02][INFO] LOOKING FOR ALL EXTENSIONS IN source

    [2018-05-18 13:56:02][INFO] EXTENSION: Clarion_Customerattribute [2018-05-18 13:56:02][WARN] Missing module version for Clarion_Customerattribute. [2018-05-18 13:56:02][SUCCESS] FINISHED: Clarion_Customerattribute

    [2018-05-18 13:56:02][INFO] EXTENSION: Magentothem_Pharmacy [2018-05-18 13:56:02][WARN] Missing module version for Magentothem_Pharmacy. [2018-05-18 13:56:02][SUCCESS] FINISHED: Magentothem_Pharmacy

    [2018-05-18 13:56:02][INFO] EXTENSION: Partner_popup [2018-05-18 13:56:02][WARN] Missing module version for Partner_popup. [2018-05-18 13:56:02][SUCCESS] FINISHED: Partner_popup

    [2018-05-18 13:56:02][SUCCESS] ALL DONE (0.15031385421753 sec)s :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: scanner [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: orderpreparation [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: organizer [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: j2tajaxcheckout [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: enterprise_customerbalance [2018-05-18 13:56:02][WARN] Unknown module key: blocks :: enterprise_customerbalance

    [2018-05-18 13:56:02][INFO] LOOKING FOR ALL EXTENSIONS IN source

    [2018-05-18 13:56:02][INFO] EXTENSION: Clarion_Customerattribute [2018-05-18 13:56:02][WARN] Missing module version for Clarion_Customerattribute. [2018-05-18 13:56:02][SUCCESS] FINISHED: Clarion_Customerattribute

    [2018-05-18 13:56:02][INFO] EXTENSION: Magentothem_Pharmacy [2018-05-18 13:56:02][WARN] Missing module version for Magentothem_Pharmacy. [2018-05-18 13:56:02][SUCCESS] FINISHED: Magentothem_Pharmacy

    [2018-05-18 13:56:02][INFO] EXTENSION: Partner_popup [2018-05-18 13:56:02][WARN] Missing module version for Partner_popup. [2018-05-18 13:56:02][SUCCESS] FINISHED: Partner_popup

    [2018-05-18 13:56:02][SUCCESS] ALL DONE (0.15031385421753 sec)

    opened by suryakantmaurya 3
  • adminhtml wrong fields

    adminhtml wrong fields

    Some fields for the adminhtml part are being wrong converted:

    New Order Status: Current (wrong): Magento\Config\Model\Config\Source\Order\Status (doesn't exist) Correct: Magento\Sales\Model\Config\Source\Order\Status\NewStatus

    Current (wrong): Magento\Config\Model\Config\Source\Payment\Allspecificcountries (doesn't exist) Correct: Magento\Payment\Model\Config\Source\Allspecificcountries

    Example:

    Wrong (generated): <field id="order_status" translate="label" sortOrder="6" type="select" showInDefault="1" showInWebsite="1"> <label>New order status</label> <source_model>Magento\Config\Model\Config\Source\Order\Status</source_model> </field> <field id="allowspecific" translate="label" sortOrder="7" type="allowspecific" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Payment from applicable countries</label> <source_model>Magento\Config\Model\Config\Source\Payment\Allspecificcountries</source_model> </field>

    Correct (fixed): <field id="order_status" translate="label" sortOrder="6" type="select" showInDefault="1" showInWebsite="1"> <label>New order status</label> <source_model>Magento\Sales\Model\Config\Source\Order\Status\NewStatus</source_model> </field> <field id="allowspecific" translate="label" sortOrder="7" type="allowspecific" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Payment from applicable countries</label> <source_model>Magento\Payment\Model\Config\Source\Allspecificcountries</source_model> </field>

    PS: awesome plugin!

    opened by rafaelcmrj 0
Owner
Boris Gurvich
Boris Gurvich
Magento2 Turkish Translation / Magento2 Türkçe Çevirisi

Magento 2 Türkçe Dil Paketi Magento2 için Türkçe Dil Paketi Magento2 içinde standart olarak gelen tüm tercüme dosyaları derlenmiş ve bu paket oluşturu

Hidayet Ok 28 Dec 13, 2022
Guest to Customer for Magento2 - Quickly and easily convert existing guest checkout customers to registered customers.

Guest to Customer for Magento 2.0 For Magento 2.0.x, 2.1.x, 2.2.x, 2.3.x and 2.4.x In general E-commerce, shoppers do not like to create an account du

MagePal :: Magento Extensions 66 Oct 7, 2022
Simple Gulpfile for Magento2

Magento 2 gulpfile Gulp tasks and configuration necessary to setup gulp-based front-end workflow for deploying and watching theme customizations. Requ

Rocket Web FED 18 May 18, 2021
Docker-magento2 - 🐳 Docker containers with all required Magento 2 dependencies installed available as FPM through Nginx and CLI

Magento 2 Docker A collection of Docker images for running Magento 2 through nginx and on the command line. Quick Start cp composer.env.sample compose

Meanbee 454 Dec 27, 2022
Magento2 + Varnish + PHP7 + Redis + SSL (cluster ready)

Docker Magento2: Varnish + PHP7 + Redis + SSL cluster ready docker-compose infrastructure Infrastructure overview Container 1: MariaDB Container 2: Re

Fabrizio Balliano 332 Dec 30, 2022
Magento2 British Language Pack (en_GB)

Links Website: https://github.com/cubewebsites/magento2-language-en-gb What's Up With The Fork? This fork is created from the original for 3 main reas

Ashraf Vali 3 Apr 28, 2021
Magento2 Spanish (Argentina) language pack build from Crowdin community translation tool.

Magento2-language-es_ar Magento2 Spanish (Argentina) language pack build from Crowdin community translation tool. Paquete de idioma de Español (Argent

SemExpert 2 Apr 7, 2021
Magento2 Deployment with Deployer (Skeleton)

MageDeploy2 Base Magento2 Deployment Setup using Robo and Deployer. This is the base project you should base your deployments on. It provides an confi

Matthias Walter 44 Jul 18, 2022
Developer Toolbar for Magento2

Developer Toolbar for Magento2 About Hope this debug toolbar can speed up Magento2 development module. Any feedback and idea to improve this toolbar w

Vincent Pietri 423 Dec 28, 2022
Magento2 Plugin for Conversion Pixel/API of Tiktok

Tiktok Conversion Pixel Analytics Plugin Magento2 Table of Contents About Getting Started About Tiktok Pixel is the Plugin used to track events, which

Rishi Gupta 3 Jun 27, 2022
Simple customizable captcha script for bot prevention in php language.

phpCaptcha Simple customizable captcha script for bot prevention in php language. Usage <?php session_start(); $status = ""; if ($_SESSION['captcha']

Филип Арсовски 11 Oct 10, 2022
Simple WHOIS script with beautiful design.

Simple PHP Whois It is ideal in terms of design and has easy operation. / Tasarım açısından idealdir ve kullanımı kolaydır. It has a simple interface.

Raiven 1 Jul 16, 2022
A simple shell script which loads a magento environment

A simple shell script to load up a Magento environment and execute PHP code Very experimental and should only be ran on dev servers REQUIRES php pcntl

beeplogic 28 Feb 4, 2022
SlimJim was born out of a need for a simple auto update script which would update multiple development/test environments every time someone

SlimJim WHY? SlimJim was born out of a need for a simple auto update script which would update multiple development/test environments every time someo

Jesal Gadhia 100 Apr 22, 2022
Helper to automatically load various Kirby extensions in a plugin

Autoloader for Kirby Helper to automatically load various Kirby extensions in a plugin Commerical Usage This package is free but if you use it in a co

Bruno Meilick 13 Nov 9, 2022
Zephir is a compiled high level language aimed to the creation of C-extensions for PHP.

Zephir - is a high level programming language that eases the creation and maintainability of extensions for PHP. Zephir extensions are exported to C c

Zephir Language 3.2k Jan 2, 2023
GitHub action to set up PHP with extensions, php.ini configuration, coverage drivers, and various tools.

GitHub action to set up PHP with extensions, php.ini configuration, coverage drivers, and various tools.

Shivam Mathur 2.4k Jan 6, 2023
Custom code snippets and examples for SkyVerge-built WooCommerce extensions

SkyVerge WooCommerce Plugins Welcome to the wc-plugins-snippets repository! This repository stores code snippets related to SkyVerge WooCommerce plugi

SkyVerge 255 Nov 16, 2022
Library to build PHP extensions with C++

PHP-CPP The PHP-CPP library is a C++ library for developing PHP extensions. It offers a collection of well documented and easy-to-use classes that can

Copernica 1.3k Dec 24, 2022