예제 #1
0
파일: module.php 프로젝트: benmarks/pestle
/**
* Generates new module XML, adds to file system
* This command generates the necessary files and configuration
* to add a new module to a Magento 2 system.
*
*    pestle.phar Pulsestorm TestingCreator 0.0.1
*
* @argument namespace Vendor Namespace? [Pulsestorm]
* @argument name Module Name? [Testbed]
* @argument version Version? [0.0.1]
* @command generate_module
*/
function pestle_cli($argv)
{
    $namespace = $argv['namespace'];
    $name = $argv['name'];
    $version = $argv['version'];
    $full_module_name = implode('_', [$namespace, $name]);
    $config = simplexml_load_string(getBlankXml('module'));
    $module = $config->addChild('module');
    $module->addAttribute('name', $full_module_name);
    $module->addAttribute('setup_version', $version);
    $xml = $config->asXml();
    $base_dir = getBaseMagentoDir();
    $module_dir = implode('/', [$base_dir, 'app/code', $namespace, $name]);
    $etc_dir = $module_dir . '/etc';
    $reg_path = $module_dir . '/registration.php';
    if (is_dir($etc_dir)) {
        output("Module directory [{$etc_dir}] already exists, bailing");
        return;
    }
    mkdir($etc_dir, 0777, $etc_dir);
    writeStringToFile($etc_dir . '/module.xml', $xml);
    output("Created: " . $etc_dir . '/module.xml');
    $register = templateRegistrationPhp($full_module_name);
    writeStringToFile($reg_path, $register);
    output("Created: " . $reg_path);
}
예제 #2
0
파일: module.php 프로젝트: astorm/pestle
function getMenuXmlFiles()
{
    $base = getBaseMagentoDir();
    // $results = `find $base/vendor -name menu.xml`;
    // $results = explode("\n", $results);
    $results = glob_recursive("{$base}/vendor/menu.xml");
    $results = array_filter($results);
    return $results;
}
예제 #3
0
파일: module.php 프로젝트: astorm/pestle
/**
* "Fixes" permissions for development boxes
* running mod_php by setting things to 777.
* I am a traitor 
* @command fix_permissions_modphp
*/
function pestle_cli($argv)
{
    $base = getBaseMagentoDir();
    $cmds = ["find {$base}/pub/static -exec chmod 777 '{}' +", "find {$base}/var/ -exec chmod 777 '{}' +"];
    foreach ($cmds as $cmd) {
        $results = `{$cmd}`;
        if ($results) {
            output($results);
        }
    }
}
예제 #4
0
파일: module.php 프로젝트: astorm/pestle
function backupOldCode($arguments, $options)
{
    $xmls = [];
    $frontend_models = getFrontendModelNodesFromMagento1SystemXml($xmls);
    foreach ($frontend_models as $file => $nodes) {
        $new_file = str_replace(['/Users/alanstorm/Sites/magento-1-9-2-2.dev', '/local'], '', $file);
        $new_file = getBaseMagentoDir() . str_replace('/etc/', '/etc/adminhtml/', $new_file);
        $xml = simplexml_load_file($new_file);
        foreach ($nodes as $node) {
            list($path, $frontend_alias) = explode('::', $node);
            list($section, $group, $field) = explode('/', $path);
            $node = getSectionXmlNodeFromSectionGroupAndField($xml, $section, $group, $field);
            if ($node->frontend_model) {
                output("The frontend_model node already exists: " . $path);
                continue;
            }
            $class = convertAliasToClass($frontend_alias);
            $node->frontend_model = $class;
        }
        file_put_contents($new_file, formatXmlString($xml->asXml()));
    }
    //search XML files
    // $base = getBaseMagentoDir();
    // $files = `find $base -name '*.xml'`;
    // $files = preg_split('%[\r\n]%', $files);
    // $files = array_filter($files, function($file){
    //     return strpos($file, '/view/') !== false &&
    //     !is_dir($file);
    // });
    //
    // $report;
    // foreach($files as $file)
    // {
    //     $xml = simplexml_load_file($file);
    //     if(!$xml->head){ continue; }
    //     output($file);
    //     foreach($xml->head->children() as $node)
    //     {
    //         output('    ' . $node->getName());
    //     }
    // }
}
예제 #5
0
파일: module.php 프로젝트: astorm/pestle
/**
* One Line Description
*
* @command generate_theme
* @argument package Theme Package Name? [Pulsestorm]
* @argument theme Theme Name? [blank]
* @argument area Area? (frontend, adminhtml) [frontend]
* @argument parent Parent theme (enter 'null' for none) [Magento/blank]
*
*/
function pestle_cli($argv)
{
    $package = $argv['package'];
    $theme = $argv['theme'];
    $area = $argv['area'];
    $parent = $argv['parent'];
    if (strpos($parent, 'null') !== false) {
        $parent = '';
    }
    $base_folder = getBaseMagentoDir() . '/app/design' . '/' . $area . '/' . $package . '/' . $theme;
    createThemeXmlFile($base_folder, $package, $theme, $area, $parent);
    createRegistrationPhpFile($base_folder, $package, $theme, $area);
    createViewXmlFile($base_folder, $package, $theme, $area);
    createFrontendFolders($base_folder, $package, $theme, $area);
    //theme.xml
    //registration.php
    //view.xml
    output($base_folder);
    output("Done");
}
예제 #6
0
파일: module.php 프로젝트: astorm/pestle
function getPathFromClass($class)
{
    $class = trim($class, '\\');
    return getBaseMagentoDir() . '/app/code/' . implode('/', explode('\\', $class)) . '.php';
}