/** * Upgrade magento module * * @param string $mode - see mode constants * @param string $versionRequest - exact version or a mask depending on mode */ public function upgrade($mode, $versionRequest) { if (!$this->exists()) { throw new Mtool_Codegen_Exception_Module("Seems like this module does not exist. Aborting."); } $config = new Mtool_Codegen_Config($this->getConfigPath('config.xml')); // Define version value $currentVersion = $config->get("modules/{$this->getName()}/version"); switch ($mode) { case self::UPGRADE_MODE_EXACT: $version = $versionRequest; break; case self::UPGRADE_MODE_INCREMENT: $version = $this->_forceVersion($currentVersion, $versionRequest); break; default: throw new Mtool_Codegen_Exception_Module("Undefined version upgrade type: {$mode}"); } $config->set("modules/{$this->getName()}/version", $version); // Create upgrade file $setupNamspace = strtolower($this->getName()) . '_setup'; $modulesTemplate = new Mtool_Codegen_Template('module_upgrader'); $params = array('module_name' => $this->getName(), 'module' => $this->_moduleName, 'company_name' => $this->getCompanyName(), 'year' => date('Y'), 'class' => $config->get("global/resources/{$setupNamspace}/setup/class") ?: 'Mage_Core_Model_Resource_Setup'); $modulesTemplate->setParams(array_merge($params, $this->_templateParams))->move($this->_moduleSqlDir . DIRECTORY_SEPARATOR . $setupNamspace, "mysql4-upgrade-{$currentVersion}-{$version}.php"); }
/** * Create class file * * @param string $path in format: class_path_string * @param string $template * @param Mtool_Codegen_Entity_Module $module * @param array $params * @return resulting class name */ public function createClass($path, $template, $module, $params = array()) { $pathSteps = $this->_ucPath(explode('_', $path)); $className = implode('_', $pathSteps); $classFilename = array_pop($pathSteps) . '.php'; // Create class dir under module $classDir = Mtool_Codegen_Filesystem::slash($module->getDir()) . $this->_folderName . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $pathSteps); Mtool_Codegen_Filesystem::mkdir($classDir); // Move class template file $classTemplate = new Mtool_Codegen_Template($template); $resultingClassName = "{$module->getName()}_{$this->_entityName}_{$className}"; if (strlen('class ' . $resultingClassName) >= self::RECOMMENDED_ZEND_CODING_STANDARD_LINE_LENGTH) { $resultingClassName .= "\n "; } $defaultParams = array('company_name' => $module->getCompanyName(), 'module_name' => $module->getModuleName(), 'class_name' => $resultingClassName, 'year' => date('Y')); $classTemplate->setParams(array_merge($defaultParams, $params, $module->getTemplateParams())); $classTemplate->move($classDir, $classFilename); return $resultingClassName; }