Beispiel #1
0
 /**
  *
  * @return \ZendT_Db_Where 
  */
 public function getWhere($onlyValidParam = false)
 {
     $params = Zend_Controller_Front::getInstance()->getRequest()->getParams();
     $columnsMapper = $this->_mapper->getColumns()->toArray();
     $columns = $this->_mapper->getColumns()->getColumnsMapper();
     $columns->add('*', get_class($this->_mapper));
     $paramValid = array();
     $binds = array();
     /**
      * Verifica se no profile existe filtro padrão configurado 
      */
     $columnsFilters = $this->_options['cols-filter']['fields'];
     #var_dump($columnsMapper);die;
     foreach ($params as $key => $val) {
         if (!array_key_exists($key, $columnsFilters)) {
             if ($columnsMapper[$key]) {
                 $value = $params[$key];
                 if (isset($columnsMapper[$key]['listOptions'][$value])) {
                     $value = $columnsMapper[$key]['listOptions'][$value];
                 }
                 $columnsFilters[$key] = array('label' => $columnsMapper[$key]['label'], 'value' => $value);
             }
         }
     }
     #var_dump($columnsFilters);die;
     if (isset($columnsFilters)) {
         foreach ($columnsFilters as $columnName => $column) {
             /* echo $columnName;
                print_r($this->_options);
                exit; */
             if ($columnsMapper[$columnName]['expression']) {
                 $field = 'expression-' . $columnName;
             } else {
                 $field = str_replace('.', '-', $columnsMapper[$columnName]['column']);
             }
             $label = $columnsFilters[$columnName]['label'];
             if (!$label) {
                 $label = $columnsMapper[$columnName]['label'];
             }
             if ($params[$columnName . '-multiple']) {
                 $this->_params[$columnName] = $params[$columnName . '-multiple'];
                 $labelWhere[str_replace('-', '.', $field)] = $label;
                 $labelWhere[$columnName] = $label;
                 $params[$field] = $params[$columnName . '-multiple'];
                 $paramValid[$columnName] = true;
                 unset($params[$columnName . '-multiple']);
                 if (is_array($columnsMapper[$columnName]['bind'])) {
                     $binds[$columnName] = $columnsMapper[$columnName]['bind'];
                 }
                 continue;
             }
             if ($params[$columnName]) {
                 $this->_params[$columnName] = $params[$columnName];
                 $labelWhere[str_replace('-', '.', $field)] = $label;
                 $labelWhere[$columnName] = $label;
                 $params[$field] = $params[$columnName];
                 $paramValid[$columnName] = true;
                 if (is_array($columnsMapper[$columnName]['bind'])) {
                     $binds[$columnName] = $columnsMapper[$columnName]['bind'];
                 }
                 unset($params[$columnName]);
                 continue;
             }
             if (isset($params[$columnName . '-multiple'])) {
                 unset($params[$columnName . '-multiple']);
             }
             #if ($params[str_replace('.','-',$columnsMapper[$columnName]['column'])]){
             #    continue;
             #}
             $valueParse = $columnsFilters[$columnName]['value'];
             if (in_array($columnsMapper[$columnName]['type'], array('Date', 'DateTime'))) {
                 $values = array();
                 if (strpos($valueParse, ';')) {
                     $sep = ';';
                     $values = explode(';', $valueParse);
                 } else {
                     if (strpos($valueParse, ' ')) {
                         $sep = ' ';
                         $values = explode(' ', $valueParse);
                     } else {
                         if ($config['value'] != '') {
                             $sep = '';
                             $values = array($valueParse);
                         } else {
                             if ($valueParse) {
                                 $sep = '';
                                 $values = array($valueParse);
                             }
                         }
                     }
                 }
                 $valueParse = '';
                 foreach ($values as $value) {
                     $date = ZendT_Type_Date::parse($value, $columnsMapper[$columnName]['type']);
                     if ($valueParse) {
                         $valueParse .= $sep . str_replace(" ", "-", $date->get());
                     } else {
                         $valueParse = str_replace(" ", "-", $date->get());
                     }
                 }
             } else {
                 if (strtolower(substr($valueParse, 0, 5)) == 'logon') {
                     $levels = explode('.', $valueParse);
                     $_sessionValue = $_SESSION;
                     foreach ($levels as $level) {
                         $_sessionValue = $_sessionValue[$level];
                     }
                     $valueParse = $_sessionValue;
                 }
             }
             if ($valueParse) {
                 $labelWhere[str_replace('-', '.', $field)] = $label;
                 $labelWhere[$columnName] = $label;
                 $params[$field] = $valueParse;
                 $paramValid[$columnName] = true;
                 $this->_params[$columnName] = $valueParse;
                 if (is_array($columnsMapper[$columnName]['bind'])) {
                     $binds[$columnName] = $columnsMapper[$columnName]['bind'];
                 }
             }
         }
     }
     #
     foreach ($columnsMapper as $columnName => $column) {
         if ($column['required'] && !$paramValid[$columnName]) {
             throw new ZendT_Exception_Alert($column['required']);
         }
     }
     #var_dump($params);die;
     $where = ZendT_Db_Where::fromAutoFilter($params, $columns, null, $binds);
     if (method_exists($this->_mapper, 'setWhere')) {
         $this->_mapper->setWhere($where);
     }
     if (method_exists($this->_mapper, 'paramIsValid')) {
         $this->_mapper->paramIsValid($where);
     }
     if ($onlyValidParam) {
         return $where;
     }
     /**
      * Trata parâmetros a serem impressos no PDF e XLS
      */
     #print_r($labelWhere);
     if ($this->_options['printLabelFilters']) {
         $this->_labelFilters = $where->getFriendlyFilter($labelWhere);
         /**
          * Realiza a substituição dos ids pela descrição dos campos configurados na seeker
          */
         foreach ($this->_configColumns as $array => $field) {
             if (is_array($field['seeker'])) {
                 $newfield = $field['aliasTable'] . "." . $field['columnName'];
                 /*
                  * Monta uma lista dos ids a partir da label atual para aplicar filtro no banco
                  */
                 $value = $this->_labelFilters[$newfield]['value'];
                 $union = '';
                 if (strpos($value, ',') !== false) {
                     $values = explode(',', $value);
                     $union = ',';
                 } else {
                     $values = explode(' e ', $value);
                     $union = ' e ';
                 }
                 $value = implode(';', $values);
                 $_mapperView = new $field['seeker']['mapperView']();
                 $_whereLabel = $_mapperView->getColumns()->mountWhere('id', $value);
                 $data = $_mapperView->recordset($_whereLabel);
                 /**
                  * Define os campos que serão exibidos, conforme a quantidade de labels informada
                  */
                 $countLabels = 0;
                 $maxLabels = !$field['seeker']['maxLabels'] ? 1 : $field['seeker']['maxLabels'];
                 $fields = array();
                 foreach ($field['seeker']['fields'] as $_field => $_value) {
                     array_push($fields, $_field);
                     if (++$countLabels >= $maxLabels) {
                         break;
                     }
                 }
                 /**
                  * Monta uma nova label para exibir os campos definidos acima
                  */
                 $newLabel = '';
                 while ($row = $data->getRow()) {
                     if ($newLabel) {
                         $newLabel .= $union;
                     }
                     $labels = '';
                     for ($i = 0; $i < count($fields); $i++) {
                         if ($labels) {
                             $labels .= ' - ';
                         }
                         $labels .= $row[$fields[$i]]->get();
                     }
                     $newLabel .= $labels;
                 }
                 if ($newLabel) {
                     $this->_labelFilters[$newfield]['value'] = $newLabel;
                 }
                 #echo $newLabel;die;
             }
         }
     }
     return $where;
 }
Beispiel #2
0
 private function _parseValue($value, $type)
 {
     $valueParse = $value;
     if (in_array($type, array('Date', 'DateTime'))) {
         $values = array();
         if (strpos($valueParse, ';')) {
             $sep = ';';
             $values = explode(';', $valueParse);
         } else {
             if (strpos($valueParse, ' ')) {
                 $sep = ' ';
                 $values = explode(' ', $valueParse);
             } else {
                 if ($value != '') {
                     $sep = '';
                     $values = array($valueParse);
                 } else {
                     if ($valueParse) {
                         $sep = '';
                         $values = array($valueParse);
                     }
                 }
             }
         }
         $valueParse = '';
         foreach ($values as $value) {
             $date = ZendT_Type_Date::parse($value, $type);
             if ($valueParse) {
                 $valueParse .= $sep . str_replace(" ", "-", $date->get());
             } else {
                 $valueParse = str_replace(" ", "-", $date->get());
             }
         }
     }
     return $valueParse;
 }
Beispiel #3
0
 /**
  * Prepara o valor que será carregado no elemento,
  * esse valor pode conter macros de data e sessão do logon.
  * 
  * @param string $value
  * @param ZendT_Form_Element_Date $element
  * @return string
  */
 public function _parseValue($value, $element = null, $type = '')
 {
     if ($element instanceof ZendT_Form_Element_Date || $element instanceof ZendT_Form_Element_DateTime || $element instanceof ZendT_Form_Element_DateMulti || $element instanceof ZendT_Form_Element_DateDynamic) {
         $value = trim($value);
         $values = array();
         if (strpos($value, ';')) {
             $sep = ';';
             $values = explode(';', $value);
         } else {
             if (strpos($value, ' ')) {
                 $sep = ' ';
                 $values = explode(' ', $value);
             } else {
                 if ($value != '') {
                     $sep = '';
                     $values = array($value);
                 }
             }
         }
         if ($element instanceof ZendT_Form_Element_DateTime) {
             $type = 'DateTime';
         } else {
             $type = 'Date';
         }
         $value = '';
         foreach ($values as $newValue) {
             $date = ZendT_Type_Date::parse($newValue, $type);
             if ($value) {
                 $value .= $sep . str_replace(" ", "-", $date->get());
             } else {
                 if ($type == 'DateTime') {
                     $value = $date->get();
                 } else {
                     $value = str_replace(" ", "-", $date->get());
                 }
             }
         }
     } else {
         if (strtolower(substr($value, 0, 5)) == 'logon') {
             $levels = explode('.', $value);
             $_sessionValue = $_SESSION;
             foreach ($levels as $level) {
                 $_sessionValue = $_sessionValue[$level];
             }
             $value = $_sessionValue;
         }
     }
     if ($element instanceof ZendT_Form_Element_Seeker) {
         $_mapperView = $element->getMapperView();
         if ($_mapperView) {
             $_mapperView = new $_mapperView();
             $where = $_mapperView->getColumns()->mountWhere('id', $value);
             $value = $_mapperView->recordset($where);
         }
     }
     return $value;
 }