Пример #1
0
 /**
  * Rewrite resource model
  *
  * @param string $originNamespace
  * @param string $originPath
  * @param string $path
  * @param Mtool_Codegen_Entity_Module $module
  */
 public function rewrite($originNamespace, $originPath, $path, Mtool_Codegen_Entity_Module $module)
 {
     // Find origin class prefix
     $resourceModel = $this->lookupOriginEntityClass($originNamespace, $module->findThroughModules('config.xml'), 'resourceModel');
     $classPrefix = $this->lookupOriginEntityClass($resourceModel, $module->findThroughModules('config.xml'));
     // Create own class
     $originPathSteps = $this->_ucPath(explode('_', $originPath));
     $originClassName = implode('_', $originPathSteps);
     $params = array('original_class_name' => "{$classPrefix}_{$originClassName}");
     $className = $this->createClass($path, $this->_rewriteTemplate, $module, $params);
     //Register rewrite in config
     $config = new Mtool_Codegen_Config($module->getConfigPath('config.xml'));
     $config->set("global/{$this->_configNamespace}/{$resourceModel}/rewrite/{$originPath}", $className);
 }
Пример #2
0
 /**
  * Create module upgrader
  * 
  * @param string $name 
  * @param string $mode 
  * @param string $version 
  * @return void
  */
 public function upgrade($name = null, $mode = null, $version = null)
 {
     if ($name == null) {
         $name = $this->_ask('Enter the target module (like Mycompany/Mymodule)');
     }
     if ($mode == null) {
         $mode = $this->_ask('How to upgrade - to exact version or increment existing? (enter "' . Mtool_Codegen_Entity_Module::UPGRADE_MODE_EXACT . '" or "' . Mtool_Codegen_Entity_Module::UPGRADE_MODE_INCREMENT . '")');
     }
     if ($version == null) {
         switch ($mode) {
             case Mtool_Codegen_Entity_Module::UPGRADE_MODE_EXACT:
                 $version = $this->_ask('Enter the module version (like 1.0.0)');
                 break;
             case Mtool_Codegen_Entity_Module::UPGRADE_MODE_INCREMENT:
                 $version = $this->_ask('Enter the increment mask (like *.*.1 , * means same value as now)');
                 break;
         }
     }
     list($companyName, $moduleName) = explode('/', $name);
     $module = new Mtool_Codegen_Entity_Module(getcwd(), $moduleName, $companyName, $this->_getConfig());
     $module->upgrade($mode, $version);
     $this->_answer('Done');
 }
Пример #3
0
 /**
  * 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;
 }