コード例 #1
0
ファイル: Language.php プロジェクト: rtsantos/mais
 /**
  * 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?>");
 }
コード例 #2
0
ファイル: CrudTProvider.php プロジェクト: rtsantos/mais
 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');
 }
コード例 #3
0
ファイル: MapperView.php プロジェクト: rtsantos/mais
    /**
     * 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);
        }
    }