public static function generate() { if (($objEntityTemplate = EntityTemplateModel::findByPk(\Input::get('id'))) !== null) { if ($objEntityTemplate->addOutputDir) { $objFolder = Files::getFolderFromUuid($objEntityTemplate->outputDir); } else { $objFolder = new \Folder('system/modules', true); } // output dir if (!$objFolder) { \Message::addError($GLOBALS['TL_LANG']['MSC']['entity_generator']['outputDirNotFound']); static::redirectToList(); } static::prepareData($objEntityTemplate); // create module folder in output dir if not existing $objTargetDir = new \Folder($objFolder->path . '/' . $objEntityTemplate->moduleName); $strTargetDir = $objTargetDir->path; // assets $objEntityTemplate->addAssets = deserialize($objEntityTemplate->addAssets, true); if (!empty($objEntityTemplate->addAssets)) { new \Folder($strTargetDir . '/assets'); foreach ($objEntityTemplate->addAssets as $strType) { if ($strType == 'htaccess') { copy(TL_ROOT . '/system/modules/entity_generator/templates/assets/htaccess.html5', TL_ROOT . '/' . $strTargetDir . '/assets/.htaccess'); } else { new \Folder($strTargetDir . '/assets/' . $strType); } } \Message::addConfirmation(sprintf($GLOBALS['TL_LANG']['MSC']['entity_generator']['assetsSuccessfullyGenerated'], $strTargetDir . '/assets/')); } // config $objDcaEntityTemplates = static::getLinkedDcas($objEntityTemplate->id); if ($objEntityTemplate->addConfig) { $arrData = array(); $blnAddUserPermissions = false; if ($objEntityTemplate->addDcas) { foreach ($objDcaEntityTemplates as $objDcaEntityTemplate) { if ($objDcaEntityTemplate->addModel) { $arrData[$objDcaEntityTemplate->dcaName] = array('entityClassName' => $objDcaEntityTemplate->entityClassName, 'addParentDca' => $objDcaEntityTemplate->addParentDca, 'parentDcaName' => EntityTemplateModel::findByPk($objDcaEntityTemplate->parentDca)->dcaName); } if ($objDcaEntityTemplate->addUserPermissions) { $blnAddUserPermissions = true; } } } $strTargetFile = $strTargetDir . '/config/config.php'; static::parseTemplate($objEntityTemplate->configTemplate, $objEntityTemplate, $strTargetFile, array('dcas' => $arrData, 'addUserPermissions' => $blnAddUserPermissions)); // modules lang if ($objEntityTemplate->addBackendModule) { foreach (static::$arrLanguages as $strLanguage) { $strTargetFile = $strTargetDir . '/languages/' . $strLanguage . '/modules.php'; $arrData = array(); if ($objEntityTemplate->addDcas) { foreach (deserialize($objEntityTemplate->dcas) as $intId) { if (($objDcaEntityTemplate = EntityTemplateModel::findByPk($intId)) !== null) { $arrData[$objDcaEntityTemplate->dcaName] = $objDcaEntityTemplate->localizedEntityNamePlural; } } } $strPrefix = $strLanguage != 'en' ? $strLanguage . '_' : ''; \System::loadLanguageFile('default', $strLanguage, true); static::parseTemplate($strPrefix . $objEntityTemplate->modulesLangTemplate, $objEntityTemplate, $strTargetFile, array('dcaLocalizations' => $arrData)); \System::loadLanguageFile('default', $GLOBALS['TL_LANGUAGE'], true); } } } // dca if ($objEntityTemplate->addDcas) { foreach ($objDcaEntityTemplates as $objDcaEntityTemplate) { static::prepareData($objDcaEntityTemplate); // dca $strTargetFile = $strTargetDir . '/dca/tl_' . $objDcaEntityTemplate->dcaName . '.php'; static::parseTemplate($objDcaEntityTemplate->dcaTemplate, $objDcaEntityTemplate, $strTargetFile); // user permissions if ($objDcaEntityTemplate->addUserPermissions) { // tl_user - dca $strTargetFile = $strTargetDir . '/dca/tl_user.php'; static::parseTemplate($objDcaEntityTemplate->userTemplate, $objDcaEntityTemplate, $strTargetFile, array('moduleName' => $objEntityTemplate->moduleName)); // tl_user_group - dca $strTargetFile = $strTargetDir . '/dca/tl_user_group.php'; static::parseTemplate($objDcaEntityTemplate->userGroupTemplate, $objDcaEntityTemplate, $strTargetFile, array('moduleName' => $objEntityTemplate->moduleName)); foreach (static::$arrLanguages as $strLanguage) { $strPrefix = $strLanguage != 'en' ? $strLanguage . '_' : ''; // tl_user - language $strTargetFile = $strTargetDir . '/languages/' . $strLanguage . '/tl_user.php'; \System::loadLanguageFile('default', $strLanguage, true); static::parseTemplate($strPrefix . $objDcaEntityTemplate->userLanguageTemplate, $objDcaEntityTemplate, $strTargetFile, array('moduleName' => $objEntityTemplate->moduleName)); \System::loadLanguageFile('default', $GLOBALS['TL_LANGUAGE'], true); } foreach (static::$arrLanguages as $strLanguage) { $strPrefix = $strLanguage != 'en' ? $strLanguage . '_' : ''; // tl_user_group - language $strTargetFile = $strTargetDir . '/languages/' . $strLanguage . '/tl_user_group.php'; \System::loadLanguageFile('default', $strLanguage, true); static::parseTemplate($strPrefix . $objDcaEntityTemplate->userGroupLanguageTemplate, $objDcaEntityTemplate, $strTargetFile, array('moduleName' => $objEntityTemplate->moduleName)); \System::loadLanguageFile('default', $GLOBALS['TL_LANGUAGE'], true); } } // languages if ($objDcaEntityTemplate->addLanguages) { foreach (static::$arrLanguages as $strLanguage) { $strPrefix = $strLanguage != 'en' ? $strLanguage . '_' : ''; $strTargetFile = $strTargetDir . '/languages/' . $strLanguage . '/tl_' . $objDcaEntityTemplate->dcaName . '.php'; \System::loadLanguageFile('default', $strLanguage, true); static::parseTemplate($strPrefix . $objDcaEntityTemplate->dcaLangTemplate, $objDcaEntityTemplate, $strTargetFile); \System::loadLanguageFile('default', $GLOBALS['TL_LANGUAGE'], true); } } // models if ($objDcaEntityTemplate->addModel) { $strTargetFile = $strTargetDir . '/models/' . $objDcaEntityTemplate->entityClassName . 'Model.php'; static::parseTemplate($objDcaEntityTemplate->modelTemplate, $objDcaEntityTemplate, $strTargetFile, array('moduleNamespace' => $objEntityTemplate->moduleNamespace)); } } } } \Message::addInfo($GLOBALS['TL_LANG']['MSC']['entity_generator']['updateDatabase']); static::redirectToList(); }