Ejemplo n.º 1
0
 public function __construct(array $params = array())
 {
     parent::__construct($params);
     $db = \Cityware\Db\Factory::factory();
     $this->setDbAdapter($db->getAdapter());
     $this->fileFolder = new Filesystem();
     $this->ormFolder = DATA_PATH . 'Orm' . DS;
     $this->oMetadata = new Metadata($this->getDbAdapter());
     return $this;
 }
Ejemplo n.º 2
0
 /**
  * Função de criação dos arquivos de Formulário
  * @throws \Exception
  */
 private function createFormFiles()
 {
     $db = \Cityware\Db\Factory::factory('zend');
     $tableMetadata = new \Zend\Db\Metadata\Metadata($db->getAdapter());
     $tableInfo = $tableMetadata->getTable($this->getTable(), $this->getSchema());
     $iniFile = $this->genConfigFormIni();
     $iniFile .= $this->genFieldsFormIni($tableInfo);
     $iniFile .= $this->genButtonsFormIni();
     $translateFile = $this->genTranslateFormArray($tableInfo);
     $moduleName = ucfirst($this->getModule());
     $moduleNameLower = strtolower($this->getModule());
     try {
         if (!empty($this->formName)) {
             file_put_contents($this->dstIniDirectory . $this->formName . '.ini', $iniFile);
             chmod($this->dstIniDirectory . $this->formName . '.ini', 0777);
             file_put_contents($this->dstTranslateDirectory . $this->formName . '.php', $translateFile);
             chmod($this->dstTranslateDirectory . $this->formName . '.php', 0777);
             $template_Form = file_get_contents($this->srcTemplateDirectory . 'Template_Form.tmpl');
             $templateForm = str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $template_Form));
             file_put_contents($this->dstViewDirectory . $this->formName . '.phtml', $templateForm);
             chmod($this->dstViewDirectory . $this->formName . '.phtml', 0644);
         } else {
             file_put_contents($this->dstIniDirectory . 'add.ini', $iniFile);
             chmod($this->dstIniDirectory . 'add.ini', 0777);
             file_put_contents($this->dstTranslateDirectory . 'add.php', $translateFile);
             chmod($this->dstTranslateDirectory . 'add.php', 0777);
             file_put_contents($this->dstIniDirectory . 'edit.ini', $iniFile);
             chmod($this->dstIniDirectory . 'edit.ini', 0777);
             file_put_contents($this->dstTranslateDirectory . 'edit.php', $translateFile);
             chmod($this->dstTranslateDirectory . 'edit.php', 0777);
             $template_Form = file_get_contents($this->srcTemplateDirectory . 'Template_Form.tmpl');
             $templateForm = str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $template_Form));
             file_put_contents($this->dstViewDirectory . 'add.phtml', $templateForm);
             chmod($this->dstViewDirectory . 'add.phtml', 0644);
             file_put_contents($this->dstViewDirectory . 'edit.phtml', $templateForm);
             chmod($this->dstViewDirectory . 'edit.phtml', 0644);
         }
     } catch (Exception $exc) {
         throw new Exception('Não foi possivel criar o arquivo de configuração do formulário! <br />' . $exc->getMessage(), 500);
     }
 }
Ejemplo n.º 3
0
 /**
  * __construct() - Sets configuration options
  *
  * @param  string                               $tableName           Optional
  * @param  string                               $identityColumn      Optional
  * @param  string                               $credentialColumn    Optional
  * @param  string                               $credentialTreatment Optional
  * @return \Zend\Authentication\Adapter\DbTable
  */
 public function __construct($tableName = null, $schemaName = null, $identityColumn = null, $credentialColumn = null, array $returnColumns = null)
 {
     $this->clearIdentity();
     $zendDb = \Cityware\Db\Factory::factory();
     $this->zendDb = $zendDb->getAdapter();
     parent::__construct($this->zendDb);
     if (null !== $tableName) {
         if (null !== $schemaName) {
             $this->setTableName(new TableIdentifier($tableName, $schemaName));
         } else {
             $this->setTableName($tableName);
         }
     }
     if (null !== $identityColumn) {
         $this->setIdentityColumn($identityColumn);
     }
     if (null !== $credentialColumn) {
         $this->setCredentialColumn($credentialColumn);
     }
     $this->returnColumns = $returnColumns;
 }
Ejemplo n.º 4
0
 /**
  * Função de criação dos arquivos do Datagrid
  * @throws \Exception
  */
 private function createDatagridFiles()
 {
     $db = \Cityware\Db\Factory::factory('zend');
     $tableMetadata = new \Zend\Db\Metadata\Metadata($db->getAdapter());
     $tableInfo = $tableMetadata->getTable($this->getTable(), $this->getSchema());
     $iniFile = $this->genConfigDatagridIni();
     $iniFile .= $this->genFieldsDatagridIni($tableInfo);
     $translateFile = $this->genTranslateDatagridArray($tableInfo);
     $moduleName = ucfirst($this->getModule());
     $moduleNameLower = strtolower($this->getModule());
     try {
         if (!empty($this->datagridName)) {
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'ini' . DS . strtolower($this->getController()) . DS . $this->datagridName . '.ini', $iniFile);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'ini' . DS . strtolower($this->getController()) . DS . $this->datagridName . '.ini', 0777);
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'translate' . DS . 'pt_BR' . DS . strtolower($this->getController()) . DS . $this->datagridName . '.php', $translateFile);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'translate' . DS . 'pt_BR' . DS . strtolower($this->getController()) . DS . $this->datagridName . '.php', 0777);
             $datagrid_template_phtml = file_get_contents(dirname(__FILE__) . DS . 'Datagrid' . DS . 'Template_Datagrid_Index.tpl');
             $datagridTemplatePhtml = str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $datagrid_template_phtml));
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . $this->datagridName . '.phtml', $datagridTemplatePhtml);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . $this->datagridName . '.phtml', 0644);
         } else {
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'ini' . DS . strtolower($this->getController()) . DS . 'datagrid.ini', $iniFile);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'ini' . DS . strtolower($this->getController()) . DS . 'datagrid.ini', 0777);
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'translate' . DS . 'pt_BR' . DS . strtolower($this->getController()) . DS . 'datagrid.php', $translateFile);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'src' . DS . ucfirst($this->getModule()) . DS . 'translate' . DS . 'pt_BR' . DS . strtolower($this->getController()) . DS . 'datagrid.php', 0777);
             $datagrid_template_phtml = file_get_contents(dirname(__FILE__) . DS . 'Datagrid' . DS . 'Template_Datagrid_Index.tpl');
             $datagridTemplatePhtml = str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $datagrid_template_phtml));
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . 'index.phtml', $datagridTemplatePhtml);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . 'index.phtml', 0644);
             $datagrid_template_trash = file_get_contents(dirname(__FILE__) . DS . 'Datagrid' . DS . 'Template_Datagrid_Trash.tpl');
             $datagridTemplateTrash = str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $datagrid_template_trash));
             file_put_contents(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . 'trash.phtml', $datagridTemplateTrash);
             chmod(MODULES_PATH . ucfirst($this->getModule()) . DS . 'view' . DS . strtolower($this->getModule()) . DS . strtolower($this->getController()) . DS . 'trash.phtml', 0644);
         }
     } catch (Exception $exc) {
         throw new Exception('Não foi possivel criar o arquivo de configuração do Datagrid! <br />' . $exc->getMessage(), 500);
     }
 }
Ejemplo n.º 5
0
 public function getConnection()
 {
     $this->db = \Cityware\Db\Factory::factory();
     return $this;
 }
Ejemplo n.º 6
0
 /**
  * Popula campo select group pelo banco de dados
  * @param array $params
  * @return array
  */
 public function populateSelectGroup($params, $arrayDepend = null, $populateValues = null)
 {
     $db = \Cityware\Db\Factory::factory('zend');
     /* Verifica o schema se está setado ou não */
     $schema = (isset($params['schema']) and $params['schema'] != "") ? $params['schema'] : null;
     /* Verifica foi setado um alias para a tabela de FROM */
     $aliasFromFk = (isset($params['tableAliasFk']) and !empty($params['tableAliasFk'])) ? $params['tableAliasFk'] : 'fk';
     /* Define os campos */
     $db->select("{$aliasFromFk}.{$params['fieldfk']}", 'ID');
     $db->select("{$aliasFromFk}.{$params['fieldshow']}", 'NOME');
     /* Verifica se existe algum campo concatenado */
     if (isset($params['tableconc']) and !empty($params['tableconc'])) {
         $db->select("{$params['tableconc']}.{$params['fieldconc']}", 'CONCAT');
     }
     /* Define a ordem de exibição dos dados */
     if (isset($params['order']) and $params['order'] == 'ID') {
         $db->orderBy("ID ASC");
     } else {
         $db->orderBy("NOME ASC");
     }
     /* Define a tabela */
     $db->from("{$params['tablefk']}", $aliasFromFk, $schema);
     /* Monta a condição do SELECT em caso de dependência */
     if (!empty($arrayDepend)) {
         if (isset($params['dependfk']) and !empty($params['dependfk'])) {
             $db->where("{$params['dependfk']} = '{$arrayDepend[$params['dependfk']]}'");
         }
         if (isset($params['where']) and !empty($params['where'])) {
             foreach ($params['where'] as $keyWhere => $valueWhere) {
                 $db->where($this->prepareWherePhpTag($valueWhere));
             }
         }
     } else {
         /* Monta a condição do SELECT em caso de populate */
         if (!empty($populateValues)) {
             if (isset($params['fieldpk']) and !empty($params['fieldpk'])) {
                 $db->where("{$params['fieldpk']} = '{$populateValues[$params['fieldpk']]}'");
             }
             if (isset($params['where']) and !empty($params['where'])) {
                 foreach ($params['where'] as $keyWhere => $valueWhere) {
                     $db->where($this->prepareWherePhpTag($valueWhere));
                 }
             }
         } else {
             /* Define as condições do select caso houver */
             if (isset($params['where']) and !empty($params['where'])) {
                 foreach ($params['where'] as $keyWhere => $valueWhere) {
                     $db->where($this->prepareWherePhpTag($valueWhere));
                 }
             }
         }
     }
     /* Define o JOIN da tabela caso houver */
     if (isset($params['join']) and $params['join'] == "true") {
         for ($idxJoin = 0; $idxJoin < count($params['jointype']); $idxJoin++) {
             $joinAlias = (isset($params['joinalias'][$idxJoin]) and !empty($params['joinalias'][$idxJoin])) ? $params['joinalias'][$idxJoin] : null;
             $db->join($params['joinfrom'][$idxJoin], $joinAlias, $params['joincond'][$idxJoin], $params['jointype'][$idxJoin], $params['joinschema'][$idxJoin]);
         }
     }
     if (isset($params['debug']) and $params['debug'] == "true") {
         $db->setDebug(true);
     }
     return $db->executeSelectQuery();
 }
 /**
  * Função que retorna a instância de conexão ao banco de dados
  * @return object
  */
 public function getConnection()
 {
     return \Cityware\Db\Factory::factory();
 }
Ejemplo n.º 8
0
 /**
  * Função de definição de validações de campos
  * @param  array  $params
  * @param  object $mainFilter
  * @return object
  */
 private function defineValidation(array $params, $mainFilter)
 {
     $factory = new ZendInputFilterFactory();
     $validatorChain = new ZendValidatorChain();
     $validatorsField = array();
     $iCount = 0;
     if (isset($params['validation']) and strtolower(trim($params['validation'])) == 'required') {
         $validatorsField['name'] = $params['name'];
         $validatorsField['required'] = true;
         $validatorsField['validators'][$iCount] = array('name' => 'NotEmpty');
         $validatorsField['validators'][$iCount]['options']['messages'] = array(\Zend\Validator\NotEmpty::IS_EMPTY => 'Campo de preenchimento obrigatório');
         $iCount++;
     } else {
         $validatorsField['name'] = $params['name'];
         $validatorsField['required'] = false;
     }
     if (isset($params['validationtype'])) {
         /* Verifica o tipo de validação utilizada e formata para continuar */
         if (!is_array($params['validationtype'])) {
             $params['validationtype'] = array($params['validationtype']);
         }
         /* Procura o tipo de validação e define o mesmo */
         foreach ($params['validationtype'] as $value) {
             $options = array();
             //$options['translator'] = $this->translator;
             switch (strtolower($value)) {
                 /* Zend Validator */
                 case 'alphanum':
                     if (isset($params['permiteespaco']) and !empty($params['permiteespaco'])) {
                         $validatorsField['validators'][$iCount] = array('name' => 'Alnum', 'options' => array($options, 'allowWhiteSpace' => true));
                     } else {
                         $validatorsField['validators'][$iCount] = array('name' => 'Alnum');
                     }
                     break;
                 case 'alpha':
                     if (isset($params['permiteespaco']) and !empty($params['permiteespaco'])) {
                         $validatorsField['validators'][$iCount] = array('name' => 'Alpha', 'options' => array($options, 'allowWhiteSpace' => true));
                     } else {
                         $validatorsField['validators'][$iCount] = array('name' => 'Alpha');
                     }
                     break;
                 case 'barcode':
                     $validatorsField['validators'][$iCount] = array('name' => 'Barcode', 'options' => array($options, 'adapter' => $params['barcodeadapter']));
                     break;
                 case 'between':
                     if (isset($params['validationmax']) and !empty($params['validationmax'])) {
                         $options['max'] = $params['validationmax'];
                     }
                     if (isset($params['validationmin']) and !empty($params['validationmin'])) {
                         $options['min'] = $params['validationmin'];
                     }
                     $options['inclusive'] = true;
                     $validatorsField['validators'][$iCount] = array('name' => 'Between', 'options' => $options);
                     break;
                 case 'callback':
                     $validatorsField['validators'][$iCount] = array('name' => 'Callback', 'options' => $options);
                     break;
                 case 'creditcard':
                     $validatorsField['validators'][$iCount] = array('name' => 'CreditCard', 'options' => $options);
                     break;
                 case 'date':
                     $options['format'] = 'Y-m-d';
                     $validatorsField['validators'][$iCount] = array('name' => 'Date', 'options' => $options);
                     break;
                 case 'time':
                     $options['format'] = 'H:i:s';
                     $validatorsField['validators'][$iCount] = array('name' => 'Date', 'options' => $options);
                     break;
                 case 'datetime':
                     $validatorObj = new \Zend\I18n\Validator\DateTime();
                     $validatorObj->setDateType(\IntlDateFormatter::SHORT);
                     $validatorObj->setTimeType(\IntlDateFormatter::SHORT);
                     $validatorsField['validators'][$iCount] = $validatorChain->attach($validatorObj);
                     break;
                 case 'recordexists':
                     $options['adapter'] = \Cityware\Db\Factory::factory('zend')->getAdapter();
                     if (isset($params['recordColumn']) and !empty($params['recordColumn'])) {
                         $options['field'] = $params['recordColumn'];
                     } else {
                         $options['field'] = $params['name'];
                     }
                     if (isset($params['recordTable']) and !empty($params['recordTable'])) {
                         $options['table'] = $params['recordTable'];
                     } else {
                         $options['table'] = $this->formDefaultConfig['table'];
                     }
                     if (isset($params['recordSchema']) and !empty($params['recordSchema'])) {
                         $options['schema'] = $params['recordSchema'];
                     } else {
                         $options['schema'] = $this->formDefaultConfig['schema'];
                     }
                     if (isset($params['exclude']) and $params['exclude'] == 'true') {
                         if (isset($params['excludeCol']) and !empty($params['excludeCol'])) {
                             $options['exclude']['field'] = $params['excludeCol'];
                         } else {
                             throw new \Exception('Não foi definido nenhuma coluna de exclusão!', 500);
                         }
                         if (isset($params['excludeColValue']) and !empty($params['excludeColValue'])) {
                             $options['exclude']['value'] = \Cityware\Format\Str::preparePhpTag($params['excludeColValue'], false);
                         } else {
                             if (isset($params['excludeUrlParam']) and !empty($params['excludeUrlParam'])) {
                                 $options['exclude']['value'] = $this->getUrlParam($params['excludeCol']);
                             } else {
                                 throw new \Exception('Não foi definido nenhum valor de exclusão!', 500);
                             }
                         }
                     }
                     $validatorsField['validators'][$iCount] = array('name' => 'Db\\RecordExists', 'options' => $options);
                     break;
                 case 'norecordexists':
                     $options['adapter'] = \Cityware\Db\Factory::factory('zend')->getAdapter();
                     if (isset($params['recordColumn']) and !empty($params['recordColumn'])) {
                         $options['field'] = $params['recordColumn'];
                     } else {
                         $options['field'] = $params['name'];
                     }
                     if (isset($params['recordTable']) and !empty($params['recordTable'])) {
                         $options['table'] = $params['recordTable'];
                     } else {
                         $options['table'] = $this->formDefaultConfig['table'];
                     }
                     if (isset($params['recordSchema']) and !empty($params['recordSchema'])) {
                         $options['schema'] = $params['recordSchema'];
                     } else {
                         $options['schema'] = $this->formDefaultConfig['schema'];
                     }
                     if (isset($params['exclude']) and $params['exclude'] == 'true') {
                         if (isset($params['excludeCol']) and !empty($params['excludeCol'])) {
                             $options['exclude']['field'] = $params['excludeCol'];
                         } else {
                             throw new \Exception('Não foi definido nenhuma coluna de exclusão!', 500);
                         }
                         if (isset($params['excludeColValue']) and !empty($params['excludeColValue'])) {
                             $options['exclude']['value'] = \Cityware\Format\Str::preparePhpTag($params['excludeColValue'], false);
                         } else {
                             if (isset($params['excludeUrlParam']) and !empty($params['excludeUrlParam'])) {
                                 $options['exclude']['value'] = $this->getUrlParam($params['excludeCol']);
                             } else {
                                 throw new \Exception('Não foi definido nenhum valor de exclusão!', 500);
                             }
                         }
                     }
                     $validatorsField['validators'][$iCount] = array('name' => 'Db\\NoRecordExists', 'options' => $options);
                     break;
                 case 'digits':
                 case 'int':
                 case 'integer':
                     $validatorsField['validators'][$iCount] = array('name' => 'Digits', 'options' => $options);
                     break;
                 case 'email':
                     $validatorsField['validators'][$iCount] = array('name' => 'EmailAddress', 'options' => array($options, 'allow' => \Zend\Validator\Hostname::ALLOW_DNS, 'mx' => false, 'domain' => true));
                     break;
                 case 'greaterthan':
                     if (isset($params['validationmin']) and !empty($params['validationmin'])) {
                         $options['min'] = $params['validationmin'];
                     }
                     $validatorsField['validators'][$iCount] = array('name' => 'GreaterThan', 'options' => $options);
                     break;
                 case 'hex':
                     $validatorsField['validators'][$iCount] = array('name' => 'Hex', 'options' => $options);
                     break;
                 case 'hostname':
                     $validatorsField['validators'][$iCount] = array('name' => 'Hostname', 'options' => $options);
                     break;
                 case 'iban':
                     $validatorsField['validators'][$iCount] = array('name' => 'Iban', 'options' => $options);
                     break;
                 case 'identical':
                     $validatorsField['validators'][$iCount] = array('name' => 'Identical', 'options' => array($options, 'token' => $params['validationcompare']));
                     break;
                 case 'ip':
                     $validatorsField['validators'][$iCount] = array('name' => 'Ip', 'options' => $options);
                     break;
                 case 'isbn':
                     $validatorsField['validators'][$iCount] = array('name' => 'Isbn', 'options' => $options);
                     break;
                 case 'postcode':
                     $validatorsField['validators'][$iCount] = array('name' => 'PostCode', 'options' => $options);
                     break;
                 case 'lessthan':
                     if (isset($params['validationmax']) and !empty($params['validationmax'])) {
                         $options['max'] = $params['validationmax'];
                     }
                     $validatorsField['validators'][$iCount] = array('name' => 'LessThan', 'options' => $options);
                     break;
                 case 'regex':
                     $validatorsField['validators'][$iCount] = array('name' => 'Regex', 'options' => array($options, 'pattern' => $params['regexrule']));
                     break;
                 case 'stringlength':
                     if (isset($params['validationmax']) and !empty($params['validationmax'])) {
                         $options['max'] = $params['validationmax'];
                     }
                     if (isset($params['validationmin']) and !empty($params['validationmin'])) {
                         $options['min'] = $params['validationmin'];
                     }
                     $validatorsField['validators'][$iCount] = array('name' => 'StringLength', 'options' => $options);
                     break;
                     /* Customizados */
                 /* Customizados */
                 case 'custom':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new $params['customclass']());
                     break;
                 case 'cpf':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\Cpf());
                     break;
                 case 'cnpj':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\Cnpj());
                     break;
                 case 'renavam':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\Renavam());
                     break;
                 case 'rg':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\Rg());
                     break;
                 case 'strongpassword':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\StrongPassword());
                     break;
                 case 'mediumpassword':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\MediumPassword());
                     break;
                 case 'easypassword':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\EasyPassword());
                     break;
                 case 'float':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Zend\I18n\Validator\Float());
                     break;
                 case 'seterrorcustom':
                     $validatorsField['validators'][$iCount] = $validatorChain->attach(new \Cityware\Form\Validators\SetErrorCustom());
                     break;
             }
             if (isset($params['messages']) and !empty($params['messages'])) {
                 $validatorsField['validators'][$iCount]['options']['messages'] = $params['messages'];
             }
             $iCount++;
         }
     }
     $mainFilter->add($factory->createInput($validatorsField));
     return $mainFilter;
 }
Ejemplo n.º 9
0
 /**
  * Função de define o status dos registros selecionados da datagrid
  * @param string $varStatus 
  */
 public function defineStatus($varStatus)
 {
     $options = array();
     /* Pega o request da página */
     if (isset($this->request['idselect']) and !empty($this->request['idselect'])) {
         $regIds = $this->request['idselect'];
     } else {
         if (isset($this->request['id']) and !empty($this->request['id'])) {
             $regIds = array($this->request['id']);
         } else {
             throw new \Exception('Nenhum identificador definido', 500);
         }
     }
     /* Arquivo de configuração do datagrid */
     $configGrid = ZendConfigFile::fromFile($this->sessionAdapter->moduleIni . $this->request['__CONTROLLER__'] . DS . ((isset($options['iniGridName']) and !empty($options['iniGridName'])) ? $options['iniGridName'] . ".ini" : "datagrid.ini"));
     $getParamsFieldGrid = $configGrid['gridfieldsconfig'];
     $getParamsGrid = $configGrid['gridconfig'];
     /* Coluna Primária do datagrid */
     $primaryKey = null;
     foreach ($getParamsFieldGrid as $key => $value) {
         if (strtolower($value['type']) == 'primarykey') {
             $primaryKey = $key;
         }
     }
     /* Seleciona a tabela padrão do datagrid */
     $db = \Cityware\Db\Factory::factory('zend');
     if (isset($getParamsGrid['grid']['schema']) and $getParamsGrid['grid']['schema'] != "") {
         $db->from($getParamsGrid['grid']['table'], null, $getParamsGrid['grid']['schema']);
     } else {
         $db->from($getParamsGrid['grid']['table']);
     }
     /* Verifica se é array ou não definindo o where */
     if (is_array($regIds)) {
         $inRegs = implode("','", $regIds);
         $db->where("{$primaryKey} IN ('{$inRegs}')");
     } else {
         $db->where("{$primaryKey} = '{$regIds}'");
     }
     /* Define o status */
     $db->update('ind_status', $varStatus);
     /* Executa a atualização */
     $db->setDebug(false);
     $db->executeUpdateQuery();
 }
Ejemplo n.º 10
0
 /**
  * C.R.U.D GENERICO
  * FUNCAO RESPONSAVEL PELA MANIPULACAO BASICA DAS INFORMACOES DISPONIVEIS NO BANCO DE DADOS
  * FORAM DEFINIDOS OS SEGUINTES CASOS: INSERIR, ATUALIZAR, ATIVAR, DESATIVAR, RECICLAR, RECUPERAR E EXCLUIR
  * 
  * @param string $varAction
  * @param array $options
  * @param integer $varPage
  * @param integer $varLimit
  * @return boolean
  * @throws \Exception
  */
 public function execute($varAction, array $options, $varPage = 1, $varLimit = 10)
 {
     if (isset($options['debug']) and $options['debug'] == 'true') {
         $this->setDebug(true);
     }
     /* Seleciona a tabela padrão do datagrid */
     $db = \Cityware\Db\Factory::factory();
     $primaryColumnName = $db->getPrimaryColumn($options['table'], $options['schema']);
     /** Define a coluna de chave primária */
     $this->setPrimaryColumn($primaryColumnName);
     /* RECUPERA O TIPO DA ACAO ATRAVES DA CHAMADA DA FUNCAO OU RECUPERANDO A VARIAVEL POST['action'] RESERVADA */
     $typeAction = (string) strtoupper(isset($varAction) && !empty($varAction) ? $varAction : (isset($_POST['action']) && !empty($_POST['action']) ? $_POST['action'] : null));
     /* INSTANCIA E RECUPERA AS INFORMACOES DA TABELA SELECIONADA */
     if ($options['table'] !== null) {
         /*  DEFINE A TABELA SELECIONADA */
         $db->from($options['table'], null, $options['schema']);
         if (strtolower($typeAction) != 'add' and strtolower($typeAction) != 'select') {
             if (is_numeric($this->getRequestValue('id'))) {
                 $id = $this->getRequestValue('id');
             } else {
                 if (is_numeric($this->getRequestValue($primaryColumnName))) {
                     $id = $this->getRequestValue($primaryColumnName);
                 } else {
                     $return = false;
                     throw new \Exception('O identificador ID definido incorretamente', 500);
                 }
             }
         }
         /** Formatação de campos de data automaticamente para o banco de dados */
         $this->setRequestValues(\Cityware\Format\Date::formatDate($this->getRequestValues(), 'Y-m-d'));
         /** Definição de gravação das datas de cadastro e atualização */
         if (strtolower($typeAction) == 'add') {
             $this->setRequestValue('dte_register', date('Y-m-d H:m:s'));
             $this->setRequestValue('dte_update', date('Y-m-d H:m:s'));
         } else {
             $this->setRequestValue('dte_update', date('Y-m-d H:m:s'));
         }
         /** Limpesa de campos não necessários para a tabela */
         $this->setRequestValues($db->fromArray($this->getRequestValues(), $options['table'], $options['schema']));
         if (!in_array($primaryColumnName, $this->getRequestValues())) {
             //$this->setRequestValue($primaryColumnName, null);
         }
         switch (strtolower($typeAction)) {
             /** CASO PARA INSERIR NOVOS DADOS */
             case 'add':
                 try {
                     foreach ($this->getRequestValues() as $key => $value) {
                         $db->insert($key, $value);
                     }
                     /* Executa o debug da query */
                     $db->setDebug($this->getDebug());
                     $return = $db->executeInsertQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu um erro ao tentar inserir dados na tabela: <b>' . $options['table'] . '</b> na ação de inserir<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA ATUALIZAR OS DADOS SELECIONADOS */
             /** CASO PARA ATUALIZAR OS DADOS SELECIONADOS */
             case 'edit':
                 try {
                     foreach ($this->getRequestValues() as $key => $value) {
                         $db->update($key, $value);
                     }
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                     $return = $id;
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de atualizar!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA ATIVAR (TORNAR ATIVO) OS DADOS SELECIONADOS */
             /** CASO PARA ATIVAR (TORNAR ATIVO) OS DADOS SELECIONADOS */
             case 'active':
                 try {
                     $db->update('ind_status', "A");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de ativa!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA DESATIVAR (TORNAR INATIVO) OS DADOS SELECIONADOS */
             /** CASO PARA DESATIVAR (TORNAR INATIVO) OS DADOS SELECIONADOS */
             case 'deactivate':
                 try {
                     $db->update('ind_status', "B");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de bloquear!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA RESTAURAR (RECUPERAR DA LIXEIRA) OS DADOS SELECIONADOS */
             /** CASO PARA RESTAURAR (RECUPERAR DA LIXEIRA) OS DADOS SELECIONADOS */
             case 'restore':
                 try {
                     $db->update('ind_status', "B");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de restaurar!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA RECICLAR (ENVIAR PARA A LIXEIRA) OS DADOS SELECIONADOS */
             /** CASO PARA RECICLAR (ENVIAR PARA A LIXEIRA) OS DADOS SELECIONADOS */
             case 'trash':
                 try {
                     $db->update('ind_status', "L");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de reciclar!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA EXCLUIR DEFINITIVAMENTE OS DADOS SELECIONADOS */
             /** CASO PARA EXCLUIR DEFINITIVAMENTE OS DADOS SELECIONADOS */
             case 'delete':
                 try {
                     $db->update('ind_status', "I");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $db->setDebug($this->getDebug());
                     $db->executeUpdateQuery();
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar atualizar os dados da tabela: <b>' . $options['table'] . '</b> na ação de excluir!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA SELECIONAR E PAGINAR OS DADOS SELECIONADOS */
             /** CASO PARA SELECIONAR E PAGINAR OS DADOS SELECIONADOS */
             case 'pagination':
                 try {
                     $db->select("*");
                     $return = $db->executeSelectQuery(true, $varPage, $varLimit);
                 } catch (\Zend\Db\Exception\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar selecionar os dados da tabela: <b>' . $options['table'] . '</b> na ação de paginar!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA SELECIONAR OS DADOS */
             /** CASO PARA SELECIONAR OS DADOS */
             case 'select':
                 try {
                     $db->select("*");
                     $return = $db->executeSelectQuery();
                 } catch (\Zend\Db\Exception\ErrorException\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar selecionar os dados da tabela: <b>' . $options['table'] . '</b> na ação de selecionar!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
                 /** CASO PARA SELECIONAR OS DADOS POR ID */
             /** CASO PARA SELECIONAR OS DADOS POR ID */
             case 'selectid':
                 try {
                     $db->select("*");
                     $db->where("{$this->getPrimaryColumn()} = '{$id}'");
                     $return = $db->executeSelectQuery();
                 } catch (\Zend\Db\Exception\ErrorException\ErrorException $exc) {
                     throw new \Exception('Ocorreu erro ao tentar selecionar os dados da tabela: <b>' . $options['table'] . '</b> na ação de selecionar por id!<br /><br />' . $exc->getMessage(), 500);
                 }
                 break;
         }
     } else {
         $return = false;
         throw new \Exception('A tabela não foi definida!', 500);
     }
     self::freeMemory();
     return $return;
 }