/** * Cria o script de linguagem :: dicionário de dados * * @param string $pathBase * @param array $config */ public static function create($pathBase, $config) { if (!isset($config['table']['modelName'])) { $config['table']['modelName'] = $config['table']['name']; } if ($config['table']['moduleName'] == '' || $config['table']['moduleName'] == 'Application') { $config['table']['moduleName'] = 'Application'; $path = 'application/languages'; } else { $path = 'application/modules/' . $config['table']['moduleName'] . '/languages'; } ZendT_Lib::createDirectory($pathBase, $path); $filename = $path . '/pt_BR.php'; $dataTranslate = array(); if (file_exists($filename)) { $dataTranslate = (require $filename); } if (!isset($dataTranslate['operacao'])) { $dataTranslate['operacao'] = 'Operação'; } if (!isset($dataTranslate['valor'])) { $dataTranslate['valor'] = 'Valor'; } if (!isset($dataTranslate['portalName'])) { $dataTranslate['portalName'] = 'Portal TA'; } if (!isset($dataTranslate['moduleName'])) { $dataTranslate['moduleName'] = ZendT_Tool_Crud::getModuleName($pathBase, $config['table']['moduleName']); } $controllerName = str_replace('_', '-', $config['table']['modelName']); $form = $config['table']['moduleName'] . '.' . $controllerName . '.form'; if (!isset($dataTranslate[$form])) { $dataTranslate[$form] = 'Cadastro de ' . $config['table']['description']; } $grid = $config['table']['moduleName'] . '.' . $controllerName . '.grid'; if (!isset($dataTranslate[$grid])) { $dataTranslate[$grid] = 'Listagem de ' . $config['table']['description']; } //{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']} /* depreciado * $search = $config['table']['moduleName'].'.'.$controllerName.'.search'; if (!isset($dataTranslate[$search])) { $dataTranslate[$search] = 'Pesquisa de '.$config['table']['description']; }*/ $index = $config['table']['name']; if (!isset($dataTranslate[$index])) { $dataTranslate[$index] = $config['table']['description']; } if (!$config['table']['alias']) { $config['table']['alias'] = $config['table']['name']; } foreach ($config['table']['columns'] as $column => $prop) { if ($dataTranslate["{$config['table']['alias']}.{$column}"] == $column) { unset($dataTranslate["{$config['table']['alias']}.{$column}"]); } if (!isset($dataTranslate["{$config['table']['alias']}.{$column}"])) { $dataTranslate["{$config['table']['alias']}.{$column}"] = $prop['label']; } if ($prop['object']['type'] == 'Seeker') { $reference = ZendT_Tool_Crud::getReference($config, $column); $configRelation = ZendT_Tool_Crud::getConfig($pathBase, $reference['tableNameReference'], $reference['schemaNameReference']); /** * Busca o label da tabela de relacionamento, indo no dicionário de dados da tabela de referência */ if ($configRelation['table']['moduleName'] == '' || $configRelation['table']['moduleName'] == 'Application') { $configRelation['table']['moduleName'] = 'Application'; $pathRelation = 'application/languages'; } else { $pathRelation = 'application/modules/' . $configRelation['table']['moduleName'] . '/languages'; } $filenameRelation = $pathRelation . '/pt_BR.php'; if (file_exists($filenameRelation)) { $dataTranslateRelation = (require $filenameRelation); } $label['search'] = $dataTranslateRelation["{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']}"]; if ($prop['object']['seeker']['field']['display']) { $label['display'] = $dataTranslateRelation["{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}"]; } /** * Pega os campos de relação 2 nível do display */ if (isset($prop['object']['seeker']['relation']) && $label['display'] == '') { foreach ($prop['object']['seeker']['relation'] as $relation) { if ($relation['moduleNameReference'] == '' || $relation['moduleNameReference'] == 'Application') { $relation['moduleNameReference'] = 'Application'; $pathRelation = 'application/languages'; } else { $pathRelation = 'application/modules/' . $relation['moduleNameReference'] . '/languages'; } $filenameRelation = $pathRelation . '/pt_BR.php'; if (file_exists($filenameRelation)) { $dataTranslateRelation = (require $filenameRelation); } foreach ($relation['columnDisplay'] as $columnDisplay) { $label['display'] = $dataTranslateRelation["{$relation['tableNameReference']}.{$columnDisplay}"]; } } } /** * fim da busca do 2º nível */ /** * fim da busca do label da tabela de referência */ if (!isset($dataTranslate["{$config['table']['alias']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']}"])) { $dataTranslate["{$config['table']['alias']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']}"] = $label['search'] . ' ' . $prop['label']; } if ($prop['object']['seeker']['field']['display'] && !isset($dataTranslate["{$config['table']['alias']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}"])) { $dataTranslate["{$config['table']['alias']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}"] = $label['display'] . ' ' . $prop['label']; } } } file_put_contents($filename, "<?php\n return \n" . var_export($dataTranslate, true) . "\n?>"); }
public function createMapperView($table, $adapter, $name) { $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); $path = $this->_loadedProfile->getAttribute('projectDirectory'); $configTable = ZendT_Tool_Crud::getConfig($path, $table, $adapter); ZendT_Tool_Crud_MapperView::createView($path, $name, $configTable); $this->_print('Criado visão do modelo em ' . $path . '/application/modules/' . $configTable['table']['moduleName'] . '/models/' . $configTable['table']['name'] . '/view/' . $name . '.php'); }
/** * Cria as classes de Mappero * * @param string $pathBase * @param array $config */ public static function create($pathBase, $config) { if (!isset($config['table']['modelName'])) { $config['table']['modelName'] = $config['table']['name']; } $modelName = ZendT_Lib::convertTableNameToClassName($config['table']['modelName']); if ($config['table']['moduleName'] == '' || $config['table']['moduleName'] == 'Application') { $config['table']['moduleName'] = 'Application'; $path = 'application/data-views/Crud'; } else { $path = 'application/modules/' . $config['table']['moduleName'] . '/data-views/' . $modelName . '/Crud'; } $ucModuleName = ucfirst($config['table']['moduleName']); ZendT_Lib::createDirectory($pathBase, $path); $dataObject = array(); $strLoadColumns = "\n"; $strOrder = ''; $strWidth = ''; $strAlign = ''; $strHidden = ''; $strRemove = ''; $strBase = ''; $strAttr = ''; $strAttrInit = "\n"; if (!isset($config['table']['columns']['id'])) { $expression = ''; foreach ($config['table']['primary'] as $column) { $expression .= "||\\'-\\'||{$config['table']['name']}.{$column}"; } $strLoadColumns .= " \$this->_columns->addExpression('id', '" . substr($expression, 9) . "', '{$ucModuleName}_Model_{$modelName}_Mapper', ZendT_Lib::translate('{$config['table']['name']}.id'),null,'=');\n"; $strOrder .= ',\'id\''; $strWidth .= ',' . "'id'=>120"; $strAlign .= ',' . "'id'=>'left'"; $strHidden .= ',\'id\''; } foreach ($config['table']['columns'] as $column => $prop) { /** * @todo só não deve ir no grid */ if ($prop['type'] == "StringLong" || $prop['object']['type'] == 'File' || strpos($column, '_type') !== false) { $strRemove .= ',' . "'" . $column . "'"; } if ($prop['object']['type'] == 'Seeker') { /** * Colocação da Coluna ID */ $columnAlias = $column; if (substr($column, 0, 2) == 'id' && substr($column, 0, 3) != 'id_') { $columnAlias = 'id_' . substr($column, 2); } $tableAlias = $config['table']['alias']; if (!$tableAlias) { $tableAlias = $config['table']['name']; } $strLoadColumns .= " \$this->_columns->add('{$columnAlias}', '{$tableAlias}', '{$column}', \$this->getModel()->getMapperName(), ZendT_Lib::translate('{$tableAlias}.{$column}'), null, '=');\n"; $strOrder .= ',' . "'" . $column . "'"; $strWidth .= ',' . "'{$column}'=>120"; $strAlign .= ',' . "'{$column}'=>'left'"; $strHidden .= ',' . "'" . $column . "'"; if ($strBase == '') { $strBase = "\$sql = \$this->getModel()->getTableName().' '.\$this->getModel()->getAlias() .\" "; } $tableColumn = str_replace(array('_id'), '', strtolower($column)); if (strtolower(substr($tableColumn, 0, 3)) == 'id_') { $tableColumn = substr($tableColumn, 3); } else { if (strtolower(substr($tableColumn, 0, 2)) == 'id') { $tableColumn = substr($tableColumn, 2); } } if (strtolower($tableColumn) == strtolower($config['table']['name'])) { $tableColumn = $tableColumn . '_p'; } //echo $column . ' -> '. $tableColumn . "\n"; $reference = ZendT_Tool_Crud::getReference($config, $column); $mapperNameSeeker = str_replace('_Table', '', $reference['objectNameReference']) . '_Mapper'; $varMapperName = explode('_', $mapperNameSeeker); $funcMapperName = '_get' . $varMapperName[2]; $varMapperName = '_' . strtolower(substr($varMapperName[2], 0, 1)) . substr($varMapperName[2], 1); $dataObject[$varMapperName]['method'] = "\n \n /**\n * Objeto de Mapeamento da Tabela\n *\n * @return {$mapperNameSeeker}\n */\n protected function {$funcMapperName}(){\n if (!is_object(\$this->{$varMapperName})){\n \$this->{$varMapperName} = new {$mapperNameSeeker}();\n }\n return \$this->{$varMapperName};\n }\n "; $dataObject[$varMapperName]['attrib'] = "\n /**\n * Objeto de Mapeamento da Tabela\n *\n * @return {$mapperNameSeeker}\n */\n protected \${$varMapperName};\n "; $strBase .= "\n "; if ($prop['nullable'] == true) { $strBase .= ' LEFT '; } $strBase .= " JOIN \".\$this->{$funcMapperName}()->getModel()->getTableName().\" " . $tableColumn . " ON ( "; if ($config['table']['alias']) { $strBase .= $config['table']['alias']; } else { $strBase .= $config['table']['name']; } $strBase .= "."; $strBase .= strtolower($reference['columnName']); $strBase .= " = "; $strBase .= $tableColumn; $strBase .= "."; $strBase .= strtolower($reference['columnReference']); $strBase .= " ) "; $search = strtolower($prop['object']['seeker']['field']['search']); $configRelation = ZendT_Tool_Crud::getConfig($pathBase, $reference['tableNameReference'], $reference['schemaNameReference']); $last = false; $column = strtolower($column); if (substr($column, strlen($column) - 3) == '_id') { $last = true; } if (isset($configRelation['table']['columns'][$search])) { if ($last) { $strLoadColumns .= " \$this->_columns->add('{$tableColumn}_{$prop['object']['seeker']['field']['search']}', '{$tableColumn}', '{$prop['object']['seeker']['field']['search']}', \$this->{$funcMapperName}()->getModel()->getMapperName(), ZendT_Lib::translate('{$config['table']['name']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']}'),null,'?%');\n"; $strOrder .= ',\'' . $tableColumn . '_' . $prop['object']['seeker']['field']['search'] . "'"; $strWidth .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['search']}'=>200"; $strAlign .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['search']}'=>'left'"; if ($configRelation['table']['columns'][$search]['object']['type'] == 'Select') { $strListOptions .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['search']}'=>\$this->{$funcMapperName}()->getModel()->getListOptions('{$search}')"; } } else { $strLoadColumns .= " \$this->_columns->add('{$prop['object']['seeker']['field']['search']}_{$tableColumn}', '{$tableColumn}', '{$prop['object']['seeker']['field']['search']}', \$this->{$funcMapperName}()->getModel()->getMapperName(), ZendT_Lib::translate('{$config['table']['name']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['search']}'),null,'?%');\n"; $strOrder .= ',\'' . $prop['object']['seeker']['field']['search'] . '_' . $tableColumn . "'"; $strWidth .= ',' . "'{$prop['object']['seeker']['field']['search']}_{$tableColumn}'=>200"; $strAlign .= ',' . "'{$prop['object']['seeker']['field']['search']}_{$tableColumn}'=>'left'"; if ($configRelation['table']['columns'][$search]['object']['type'] == 'Select') { $strListOptions .= ',' . "'{$prop['object']['seeker']['field']['search']}_{$tableColumn}'=>\$this->{$funcMapperName}()->getModel()->getListOptions('{$search}')"; } } } if ($prop['object']['seeker']['field']['display'] != '') { $display = strtolower($prop['object']['seeker']['field']['display']); if (isset($configRelation['table']['columns'][$display])) { if ($last) { $strLoadColumns .= " \$this->_columns->add('{$tableColumn}_{$prop['object']['seeker']['field']['display']}', '{$tableColumn}', '{$prop['object']['seeker']['field']['display']}', \$this->{$funcMapperName}()->getModel()->getMapperName(), ZendT_Lib::translate('{$config['table']['name']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}'),null,'?%');\n"; $strOrder .= ',\'' . $tableColumn . '_' . $prop['object']['seeker']['field']['display'] . "'"; $strWidth .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['display']}'=>200"; $strAlign .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['display']}'=>'left'"; if ($configRelation['table']['columns'][$display]['object']['type'] == 'Select') { $strListOptions .= ',' . "'{$tableColumn}_{$prop['object']['seeker']['field']['display']}'=>\$this->{$funcMapperName}()->getModel()->getListOptions('{$display}')"; } } else { $strLoadColumns .= " \$this->_columns->add('{$prop['object']['seeker']['field']['display']}_{$tableColumn}', '{$tableColumn}', '{$prop['object']['seeker']['field']['display']}', \$this->{$funcMapperName}()->getModel()->getMapperName(), ZendT_Lib::translate('{$config['table']['name']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}'),null,'?%');\n"; $strOrder .= ',\'' . $prop['object']['seeker']['field']['display'] . '_' . $tableColumn . "'"; $strWidth .= ',' . "'{$prop['object']['seeker']['field']['display']}_{$tableColumn}'=>200"; $strAlign .= ',' . "'{$prop['object']['seeker']['field']['display']}_{$tableColumn}'=>'left'"; if ($configRelation['table']['columns'][$display]['object']['type'] == 'Select') { $strListOptions .= ',' . "'{$prop['object']['seeker']['field']['display']}_{$tableColumn}'=>\$this->{$funcMapperName}()->getModel()->getListOptions('{$display}')"; } } } } //print_r($prop['object']['seeker']['relation']); if (isset($prop['object']['seeker']['relation'])) { foreach ($prop['object']['seeker']['relation'] as $relation) { $propCol = $config['table']['columns'][$relation['columnName']]; $strBase .= "\n "; if ($propCol['nullable'] == true || $prop['nullable'] == true) { $strBase .= ' LEFT '; } /** * */ $relModule = ucfirst($relation['moduleNameReference']); $relObject = ZendT_Lib::convertTableNameToClassName($relation['tableNameReference']); $relMethod = '_get' . $relObject; $relAttr = '_' . strtolower(substr($relObject, 0, 1)) . substr($relObject, 1); $relMapper = $relModule . '_Model_' . $relObject . '_Mapper'; $dataObject[$relAttr]['method'] = "\n /**\n * Objeto de Mapeamento da Tabela\n *\n * @return {$relMapper}\n */\n protected function {$relMethod}(){\n if (!is_object(\$this->{$relAttr})){\n \$this->{$relAttr} = new {$relMapper}();\n }\n return \$this->{$relAttr};\n }\n "; $dataObject[$relAttr]['attrib'] = "\n /**\n * Objeto de Mapeamento da Tabela\n *\n * @return {$relMapper}\n */\n protected \${$relAttr};\n "; $strBase .= " JOIN \".\$this->{$relMethod}()->getModel()->getTableName().\" " . $relation['tableAliasReference'] . " ON ( "; $strBase .= $relation['tableAlias']; $strBase .= "."; $strBase .= strtolower($relation['columnName']); $strBase .= " = "; $strBase .= $relation['tableAliasReference']; $strBase .= "."; $strBase .= strtolower($relation['columnNameReference']); $strBase .= " ) "; foreach ($relation['columnDisplay'] as $columnDisplay) { //echo $columnDisplay . "\n"; $strLoadColumns .= " \$this->_columns->add('{$columnDisplay}_{$relation['tableAliasReference']}', '{$relation['tableAliasReference']}', '{$columnDisplay}', \$this->{$relMethod}()->getModel()->getMapperName(), ZendT_Lib::translate('{$config['table']['name']}.{$column}.{$reference['tableNameReference']}.{$prop['object']['seeker']['field']['display']}'),null,'?%');\n"; $strOrder .= ',\'' . $columnDisplay . '_' . $relation['tableAliasReference'] . "'"; $strWidth .= ',' . "'{$columnDisplay}_{$relation['tableAliasReference']}'=>200"; $strAlign .= ',' . "'{$columnDisplay}_{$relation['tableAliasReference']}'=>'left'"; } /** * */ } } } else { if ($prop['object']['type'] == 'Date') { $strWidth .= ',' . "'{$column}'=>100"; $strAlign .= ',' . "'{$column}'=>'center'"; $_type = 'Date'; $_operation = '='; } else { if ($prop['object']['type'] == 'DateTime') { $strWidth .= ',' . "'{$column}'=>150"; $strAlign .= ',' . "'{$column}'=>'center'"; $_type = 'DateTime'; $_operation = '='; } else { if ($prop['object']['type'] == 'Time') { $strWidth .= ',' . "'{$column}'=>100"; $strAlign .= ',' . "'{$column}'=>'center'"; $_type = 'Time'; $_operation = '='; } else { if ($prop['object']['type'] == 'Select') { $strWidth .= ',' . "'{$column}'=>150"; $strAlign .= ',' . "'{$column}'=>'center'"; $_type = 'String'; $_operation = '='; } else { if ($prop['object']['type'] == 'Numeric') { $strWidth .= ',' . "'{$column}'=>150"; $strAlign .= ',' . "'{$column}'=>'right'"; $_type = 'Numeric'; $_operation = '='; } else { $width = str_replace('px', '', $config['table']['columns'][$column]['object']['text']['css-width']); if (!$width) { $width = 200; } $strWidth .= ',' . "'{$column}'=>" . $width; $strAlign .= ',' . "'{$column}'=>'left'"; $_type = 'String'; $_operation = '%?%'; } } } } } $tableAlias = $config['table']['alias']; if (!$tableAlias) { $tableAlias = $config['table']['name']; } $strLoadColumns .= " \$this->_columns->add('{$column}', '{$tableAlias}', '{$column}', \$this->getModel()->getMapperName(), ZendT_Lib::translate('{$tableAlias}.{$column}'),'{$_type}','{$_operation}');\n"; $strOrder .= ',' . "'" . $column . "'"; if ($prop['object']['type'] == 'Select') { $strListOptions .= ',' . "'{$column}'=>\$this->getModel()->getListOptions('{$column}')"; } } } if (!$strBase) { $strBase = '$sql = parent::_getSqlBase();'; } else { $strBase .= ' "; '; } $strOrder = substr($strOrder, 1); $strWidth = substr($strWidth, 1); $strAlign = substr($strAlign, 1); $strHidden = substr($strHidden, 1); $strRemove = substr($strRemove, 1); $strListOptions = substr($strListOptions, 1); $strMethod = ''; foreach ($dataObject as $data) { $strAttr .= $data['attrib']; $strMethod .= $data['method']; } $contentText = <<<EOS <?php /** * Classe de visão da tabela {$config['table']['name']} */ class {$ucModuleName}_DataView_{$modelName}_Crud_MapperView extends {$ucModuleName}_Model_{$modelName}_Mapper implements ZendT_Db_View { {$strAttr} {$strMethod} /** * Retorna as configurações padrão da visualização * * @return array */ protected function _getSettingsDefault(){ \$profile = array(); \$profile['order'] = array({$strOrder}); \$profile['width'] = array({$strWidth}); \$profile['align'] = array({$strAlign}); \$profile['hidden'] = array({$strHidden}); \$profile['remove'] = array({$strRemove}); \$profile['listOptions'] = array({$strListOptions}); return \$profile; } /** * Carrega as colunas com suas configurações */ protected function _loadColumns(){ \$this->_columns = new ZendT_Db_Column_View('{$ucModuleName}_DataView_{$modelName}_MapperView',\$this->_getSettingsDefault()); {$strLoadColumns} } /** * Retorna o SQL Base */ protected function _getSqlBase() { {$strBase} return \$sql; } } ?> EOS; $filename = $path . '/MapperView.php'; file_put_contents($filename, $contentText); $contentText = <<<EOS <?php /** * Classe de visão da tabela {$config['table']['name']} */ class {$ucModuleName}_DataView_{$modelName}_MapperView extends {$ucModuleName}_DataView_{$modelName}_Crud_MapperView { } ?> EOS; $filename = str_replace('/Crud', '', $path) . '/MapperView.php'; if (!file_exists($filename)) { file_put_contents($filename, $contentText); } }