Beispiel #1
0
 /**
  * Retorna a lista de Profile para o Formulário
  * 
  * @param string $formName
  * @return array
  */
 public function getListProfile($formName)
 {
     $listProfile = array();
     $_profile = new Profile_DataView_ObjectView_MapperView();
     $session = Zend_Auth::getInstance()->getStorage()->read();
     $login = '';
     if ($session !== null) {
         $login = $session->getLogin();
         $_where = new ZendT_Db_Where();
         $_where->addFilter('login', $login);
         $_where->addFilter('objeto', $formName);
         $_where->addFilter('tipo', 'F');
         $_where->addFilter('publico', 'N');
         $_profile->findAll($_where, array('id', 'nome'), array('2'));
         while ($_profile->fetch()) {
             $key = $_profile->getId()->get();
             $value = $_profile->getNome()->get();
             $listProfile[$key] = $value;
         }
     }
     $_where = new ZendT_Db_Where();
     $_where->addFilter('objeto', $formName);
     $_where->addFilter('tipo', 'F');
     $_where->addFilter('publico', 'S');
     $_profile->findAll($_where, array('id', 'nome'), array('2'));
     while ($_profile->fetch()) {
         $key = $_profile->getId()->get();
         $value = $_profile->getNome()->get();
         $listProfile[$key] = $value;
     }
     return $listProfile;
 }
Beispiel #2
0
 public static function get($objectName, $type, $profile = '')
 {
     $_priv = new Profile_Model_ObjectViewPriv_Mapper();
     $sqlPriv = $_priv->getSqlPriv();
     $config = array();
     $row = false;
     $idUsuario = Auth_Session_User::getInstance()->getId();
     $idProfile = '';
     $_profile = new Profile_DataView_ObjectView_MapperView();
     $request = Zend_Controller_Front::getInstance()->getRequest();
     if (is_object($request)) {
         if (!$profile) {
             $profile = $request->getParam('profile');
         }
         $parentId = $request->getParam('profile_parent_id');
         $profileKey = $request->getParam('profile_key');
     }
     if ($parentId && is_numeric($parentId)) {
         $_profile->newRow()->setId($parentId)->retrieve();
         $chave = $_profile->getChave()->get();
         /**
          * 
          */
         $_where = new ZendT_Db_Where('AND');
         $_where->addFilter('profile_object_view.objeto', $objectName);
         $_where->addFilter('profile_object_view.chave', $chave);
         if (is_array($type)) {
             $_where->addFilter('profile_object_view.tipo', $type, 'in');
         } else {
             if ($type) {
                 $_where->addFilter('profile_object_view.tipo', $type);
             }
         }
         $_whereSec = new ZendT_Db_Where('OR');
         $_whereSec->addFilter('profile_object_view.id_usuario', $idUsuario);
         $_whereSec->addFilter('acesso_liberado', new Zend_Db_Expr($sqlPriv), 'EXISTS');
         $_whereGroup = new ZendT_Db_Where_Group();
         $_whereGroup->addWhere($_whereSec);
         $_whereGroup->addWhere($_where);
         $row = $_profile->retriveRow($_whereGroup);
         if ($row) {
             $profile = $row['id']->get();
         }
     }
     if (!$profile) {
         if ($profileKey) {
             $_where = new ZendT_Db_Where('AND');
             $_where->addFilter('profile_object_view.objeto', $objectName);
             $_where->addFilter('profile_object_view.chave', $profileKey);
             if (is_array($type)) {
                 $_where->addFilter('profile_object_view.tipo', $type, 'in');
             } else {
                 if ($type) {
                     $_where->addFilter('profile_object_view.tipo', $type);
                 }
             }
             $row = $_profile->retriveRow($_where);
             if ($row) {
                 $profile = $row['id']->get();
             }
         }
     }
     if ($profile) {
         if (!is_numeric($profile)) {
             $_where = new ZendT_Db_Where('AND');
             $_where->addFilter('profile_object_view.objeto', $objectName);
             $_where->addFilter('profile_object_view.chave', $profile, '=');
             $row = $_profile->retriveRow($_where);
             if ($row) {
                 $profile = $row['id']->get();
             }
         }
         $idProfile = $profile;
     }
     if (isset($_COOKIE['profile-' . $objectName . '-' . $type]) && $idProfile == '') {
         $idProfile = $_COOKIE['profile-' . $objectName . '-' . $type];
     }
     if (isset($_COOKIE['profile-' . $objectName]) && $idProfile == '') {
         $idProfile = $_COOKIE['profile-' . $objectName];
     }
     if (isset($_SESSION['profile-' . $objectName]) && $idProfile == '') {
         $idProfile = $_SESSION['profile-' . $objectName];
     }
     if ($idProfile) {
         $_where = new ZendT_Db_Where();
         $_where->addFilter('profile_object_view.id', $idProfile);
         $_whereSec = new ZendT_Db_Where('OR');
         $_whereSec->addFilter('profile_object_view.id_usuario', $idUsuario);
         $_whereSec->addFilter('acesso_liberado', new Zend_Db_Expr($sqlPriv), 'EXISTS');
         $_whereGroup = new ZendT_Db_Where_Group();
         $_whereGroup->addWhere($_whereSec);
         $_whereGroup->addWhere($_where);
         $row = $_profile->retriveRow($_whereGroup);
     }
     if ($idUsuario && !$row) {
         $_where = new ZendT_Db_Where('AND');
         $_where->addFilter('profile_object_view.objeto', $objectName);
         $_where->addFilter('profile_object_view.padrao', 'S');
         if (is_array($type)) {
             $_where->addFilter('profile_object_view.tipo', $type, 'in');
         } else {
             if ($type) {
                 $_where->addFilter('profile_object_view.tipo', $type);
             }
         }
         $_whereSec = new ZendT_Db_Where('OR');
         $_whereSec->addFilter('profile_object_view.id_usuario', $idUsuario);
         $_whereSec->addFilter('acesso_liberado', new Zend_Db_Expr($sqlPriv), 'EXISTS');
         $_whereGroup = new ZendT_Db_Where_Group();
         $_whereGroup->addWhere($_whereSec);
         $_whereGroup->addWhere($_where);
         $row = $_profile->retriveRow($_whereGroup);
     }
     if ($idUsuario && !$row) {
         $_where = new ZendT_Db_Where('AND');
         $_where->addFilter('profile_object_view.objeto', $objectName);
         if (is_array($type)) {
             $_where->addFilter('profile_object_view.tipo', $type, 'in');
         } else {
             if ($type) {
                 $_where->addFilter('profile_object_view.tipo', $type);
             }
         }
         $_whereSec = new ZendT_Db_Where('OR');
         $_whereSec->addFilter('profile_object_view.id_usuario', $idUsuario);
         $_whereSec->addFilter('acesso_liberado', new Zend_Db_Expr($sqlPriv), 'EXISTS');
         $_whereGroup = new ZendT_Db_Where_Group();
         $_whereGroup->addWhere($_whereSec);
         $_whereGroup->addWhere($_where);
         $row = $_profile->retrieveRow($_whereGroup);
     }
     if ($row) {
         $config = unserialize(html_entity_decode($row['config']->get()));
         $config['id'] = $row['id']->get();
         $config['tipo'] = $row['tipo']->toPhp();
         $config['title'] = $row['nome']->get();
     }
     return $config;
 }
Beispiel #3
0
 public function loadProfileFilter($fields, $params)
 {
     $this->enablejQueryValidate();
     $element = new ZendT_Form_Element_Hidden('_search');
     $element->setDecorators(array(new ZendT_Form_Decorator_Hidden()));
     $element->setValue('1');
     $this->addElement($element);
     if (count($fields)) {
         foreach ($fields as $field => $config) {
             if ($config['seeker']) {
                 $baseUri = $itens = ZendT_Lib::mapperViewToArrayUri($config['seeker']['mapperView']);
                 foreach ($config['seeker']['fields'] as $searchName => $searchProp) {
                     unset($config['seeker']['fields'][$searchName]);
                     break;
                 }
                 $element = new ZendT_Form_Element_Seeker($field);
                 $element->setSufix(str_replace('id_', '', $field));
                 $element->setIdField('id');
                 $element->setSearchField($searchName);
                 $element->setSearchAttribs($searchProp);
                 $element->modal()->setWidth(800);
                 $element->modal()->setHeight(400);
                 $element->url()->setGrid("/{$baseUri['module']}/{$baseUri['controller']}/grid");
                 $element->url()->setSearch("/{$baseUri['module']}/{$baseUri['controller']}/seeker-search");
                 $element->url()->setRetrive("/{$baseUri['module']}/{$baseUri['controller']}/retrive");
                 $element->url()->setAutoComplete("/{$baseUri['module']}/{$baseUri['controller']}/auto-complete");
                 //$element->enableAutoComplete();
                 if ($config['multiple'] !== '0') {
                     $element->setMultiple(true);
                 } else {
                     $element->setMultiple(false);
                 }
                 $element->setMapperView($config['seeker']['mapperView']);
                 //Procura os elementos que referenciam essa seeker, para criar uma dependência (filterRefer)
                 foreach ($fields as $field1 => $config1) {
                     if (isset($config1['seeker']) && isset($config1['seeker']['filter'])) {
                         $filterRefer = $config1['seeker']['filter'];
                         if ($filterRefer) {
                             foreach ($filterRefer as $filter1 => $key1) {
                                 if ($filter1 == $field) {
                                     $element->addFilterRefer($field1);
                                 }
                             }
                         }
                     }
                 }
                 $_where = $config['seeker']['where'];
                 $preFilter = $config['seeker']['filter'];
                 if ($_where && !$preFilter) {
                     $element->setWhere($_where);
                 } else {
                     if ($preFilter) {
                         /* print_r($config['seeker']);
                            exit; */
                         $dynamicWhere = "var where = new TWhere('AND');";
                         if ($_where) {
                             $whereFilters = $_where->getFilters();
                             foreach ($whereFilters as $i => $key) {
                                 $value = $key['value'];
                                 if (is_array($value)) {
                                     $value = $value[0];
                                 }
                                 $dynamicWhere .= "\n\t\t\t\t\t\t\t\t\twhere.addFilter({\n\t\t\t\t\t\t\t\t\t   field: '{$key['field']}',\n\t\t\t\t\t\t\t\t\t   value: '{$value}',\n\t\t\t\t\t\t\t\t\t   mapper: '{$key['mapper']}',\n\t\t\t\t\t\t\t\t\t   operation: '{$key['operation']}'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t";
                             }
                         }
                         foreach ($preFilter as $filter => $key) {
                             if ($filter) {
                                 $label = $fields[$filter]['label'];
                                 $operation = !$key['operation'] ? 'in' : $key['operation'];
                                 $dynamicWhere .= "\n\t\t\t\t\t\t\t\t\t\tvar value1 = \$('#{$filter}').val();\n\t\t\t\t\t\t\t\t\t\tvar value2 = \$('#{$filter}-multiple').val();\n\t\t\t\t\t\t\t\t\t\tif(!value1 && !value2){\n\t\t\t\t\t\t\t\t\t\t\tvar searchid = \$('#{$field}').attr('searchid');\n\t\t\t\t\t\t\t\t\t\t\t\$('#group-' + searchid + ' input').val('');\n\t\t\t\t\t\t\t\t\t\t\talert('Favor preencher o campo {$label}!');\n\t\t\t\t\t\t\t\t\t\t\tvar searchid = \$('#{$filter}').attr('searchid');\n\t\t\t\t\t\t\t\t\t\t\t\$('#' + searchid).focus();\n\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvar value = (value1?value1:value2);\n\t\t\t\t\t\t\t\t\t\tif(value.indexOf(';') != -1){\n\t\t\t\t\t\t\t\t\t\t\twhile(value.indexOf(';') != -1){\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = value.replace(';',',');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tvalue = [value];\n\t\t\t\t\t\t\t\t\t\t}\n\t \n\t\t\t\t\t\t\t\t\t\twhere.addFilter({\n\t\t\t\t\t\t\t\t\t\t   field: '{$key['field']}',\n\t\t\t\t\t\t\t\t\t\t   value: value,\n\t\t\t\t\t\t\t\t\t\t   mapper: '{$key['mapper']}',\n\t\t\t\t\t\t\t\t\t\t   operation: '{$operation}'\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t";
                             }
                         }
                         $dynamicWhere = "function(){ {$dynamicWhere} return where.toJson(); }";
                         #echo $preWhere;die;
                         $element->setOnFilter($dynamicWhere);
                     }
                 }
                 foreach ($config['seeker']['fields'] as $fieldName => $fieldProp) {
                     $element->addField($fieldName, $fieldName, 'text', $fieldProp);
                 }
             } else {
                 if ($config['autocomplete']) {
                     $element = new ZendT_Form_Element_AutoComplete($field);
                     $url = ZendT_Url::getUri(true) . '/auto-complete/suggest/1/column/' . $field . '/profile/' . $params['profile'];
                     $element->setDataSource($url);
                     $extraParams = array('filters' => new ZendT_JS_Command("function(){\n\t\t\t\t\t\t\tvar formData = jQuery('#" . $this->getId() . "').serializeArray();\n\t\t\t\t\t\t\tvar data = '';\n\t\t\t\t\t\t\tfor(var index in formData){\n\t\t\t\t\t\t\t\tdata = data + '&' + formData[index].name + '=' + formData[index].value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn data.substr(1);\n\t\t\t\t\t\t}"));
                     $element->setJQueryParam('limit', 100);
                     $element->setJQueryParam('extraParams', $extraParams);
                     $element->setJQueryParam('showButtonSearch', true);
                     if ($config['multiple'] !== '0') {
                         $element->setJQueryParam('multiple', true);
                     } else {
                         $element->setJQueryParam('multiple', false);
                     }
                     $element->setJQueryParam('multipleSeparator', ';');
                     $element->setJQueryParam('mustMatch', true);
                     $element->setJQueryParam('autoFill', true);
                 } else {
                     if (in_array($config['type'], array('Date', 'DateTime'))) {
                         if (getBrowser() != 'IE 8.0') {
                             $element = new ZendT_Form_Element_DateDynamic($field);
                             $_profile = new Profile_DataView_ObjectView_MapperView();
                             $_profile->newRow()->setId($params['profile'])->retrieve();
                             if ($_profile->getObjeto()) {
                                 $objeto = $_profile->getObjeto()->toPhp();
                                 $objeto = new $objeto();
                                 $columns = $objeto->getColumns()->toArray();
                                 if ($columns[$field]['bind']) {
                                     $element->setJQueryParam('fix_elements', count($columns[$field]['bind']));
                                 }
                             }
                             if ($config['max_periodo']) {
                                 $element->setMaxPeriodo($config['max_periodo']);
                             }
                         } else {
                             $element = new ZendT_Form_Element_DateMulti($field);
                         }
                     } else {
                         if (in_array($config['type'], array('Numeric', 'Number'))) {
                             $element = new ZendT_Form_Element_NumericMulti($field);
                         } else {
                             $element = new ZendT_Form_Element_Text($field);
                         }
                     }
                 }
             }
             /**
              * Trata o valor a ser preenchido no elemento
              */
             if ($params[$field]) {
                 $value = $params[$field];
             } else {
                 $value = $config['value'];
             }
             $value = $this->_parseValue($value, $element, $config['type']);
             /**
              * Preenche as propriedaddes do elemento
              */
             $element->setValue($value);
             $element->setLabel($config['label'] . ':');
             $element->setRequired($config['required']);
             if ($element instanceof ZendT_Form_Element_DateDynamic) {
                 $element->addStyle('width', '90px');
             } else {
                 $element->addStyle('width', '270px');
             }
             if ($config['hidden']) {
                 $element->setDecorators(array(new ZendT_Form_Decorator_Hidden()));
             }
             #var_dump($config);die;
             $this->addElement($element);
         }
     }
     /* $element = new ZendT_Form_Element_Button('btPesquisar');
                   $element->setDecorators(array(new ZendT_Form_Decorator_Button()));
                   $element->setLabel('Pesquisar');
                   $element->setIcon('ui-icon-search');
     
                   $element->setAttrib('onClick', "jQuery('form').submit();");
                   $this->addElement($element); */
 }