Changeset 5862
- Timestamp:
- 04/02/12 17:58:17 (12 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r5861 r5862 5161 5161 } 5162 5162 5163 function apliSieveFilter($msgs , $proc 5163 function apliSieveFilter($msgs , $proc) 5164 5164 { 5165 5165 $ret = array(); 5166 5167 switch($proc['action']){5168 case 'fileintro':5169 $imap = $this->open_mbox( 'INBOX' );5170 foreach( $msgs as $msg )5166 foreach ($msgs as $i => $msg) 5167 { 5168 switch($proc['type']){ 5169 case 'fileinto': 5170 $imap = $this->open_mbox( 'INBOX' ); 5171 5171 if($proc['keep'] === true) 5172 $ret[$msg][] = imap_mail_copy($imap,$msg,$proc['value']);5172 $ret[$msg][] = imap_mail_copy($imap,$msg,$proc['value'], CP_UID); 5173 5173 else 5174 $ret[$msg][] = imap_mail_move($imap,$msg,$proc['value']); 5175 break; 5176 case 'redirect': 5177 foreach($msgs as $msg) 5178 { 5174 /* Está sempre copiando a mensagem para a pasta destino */ 5175 //$ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID); 5176 $ret[$msg][] = imap_mail_move($imap,$msg,$proc['parameter'], CP_UID); 5177 break; 5178 case 'redirect': 5179 /* TO-DO: Fix the problems of include serviceLocator file */ 5180 //foreach($msgs as $msg) 5181 //{ 5182 /* 5179 5183 $info = $this->get_info_msg(array('msg_folder' => 'INBOX','msg_number' => $msg)); 5180 5181 require_once $_SESSION['rootPath'] . '/API/class.servicelocator.php'; 5184 //require_once $_SESSION['rootPath'] . '/API/class.servicelocator.php'; 5182 5185 $mailService = ServiceLocator::getService('mail'); 5183 5186 5184 $ret[$msg][] = $mailService->sendMail( $proc['value'] , $info['from']['full'] , $info['subject'] ,$info['body'] ); 5185 5186 if($proc['keep'] !== true) 5187 $this->delete_msgs(array('msgs_number' => $msg , 'folder' => 'INBOX')); 5188 } 5189 break; 5190 5191 case 'setflag': 5192 foreach($msgs as $msg) 5193 $ret[$msg][] = $this->set_messages_flag( array( 'folder' => 'INBOX' , 'msgs_to_set' => $msg , 'flag' => $proc['value']) ); 5194 5195 break; 5196 } 5197 5187 $ret[$msg][] = $mailService->sendMail( $proc['parameter'] , $info['from']['full'] , $info['subject'] ,$info['body'] ); 5188 5189 if($proc['keep'] !== true) 5190 $this->delete_msgs(array('msgs_number' => $msg , 'folder' => 'INBOX')); 5191 5192 */ 5193 //} 5194 break; 5195 5196 case 'setflag': 5197 foreach($msgs as $msg) 5198 $ret[$msg][] = $this->set_messages_flag( array( 'folder' => 'INBOX' , 'msgs_to_set' => $msg , 'flag' => $proc['parameter']) ); 5199 break; 5200 } 5201 } 5198 5202 return $ret; 5199 5203 } -
trunk/expressoMail1_2/setup/phpgw_pt-br.lang
r5858 r5862 827 827 You have %1 follow ups due for today: expressoMail1_2 pt-br Você tem %1 mensagens sinalizadas para hoje: 828 828 Don't show this window anymore today. expressoMail1_2 pt-br Não mostrar essa janela por hoje. 829 Contains expressoMail1_2 pt-br Contém 829 830 Criteria expressoMail1_2 pt-br Critérios 830 831 Name of the rule expressoMail1_2 pt-br Nome da regra -
trunk/prototype/config/filter.ini
r5341 r5862 23 23 24 24 25 [after.update]26 applySieveFilter = modules/filters/interceptors/FilterMapping.php25 ;[after.update] 26 ;applySieveFilter = modules/filters/interceptors/FilterMapping.php 27 27 28 28 -
trunk/prototype/modules/filters/edit-filter.ejs
r5801 r5862 20 20 <label class="small"><%= get_lang("Sender")%></label> 21 21 <select name="criteriaOperator[]"> 22 <option value="="><%= get_lang(" is equal to")%></option>22 <option value="="><%= get_lang("contains")%></option> 23 23 <option value="*"><%= get_lang("contains the phrase")%></option> 24 24 <option value="!*"><%= get_lang("doesn't contain the phrase")%></option> … … 33 33 <label class="small"><%= get_lang("Receiver")%></label> 34 34 <select name="criteriaOperator[]"> 35 <option value="="><%= get_lang(" is equal to")%></option>35 <option value="="><%= get_lang("contains")%></option> 36 36 <option value="*"><%= get_lang("contains the phrase")%></option> 37 37 <option value="!*"><%= get_lang("doesn't contain the phrase")%></option> … … 45 45 <label class="small"><%= get_lang("Subject")%></label> 46 46 <select name="criteriaOperator[]"> 47 <option value="="><%= get_lang(" is equal to")%></option>47 <option value="="><%= get_lang("contains")%></option> 48 48 <option value="*"><%= get_lang("contains the phrase")%></option> 49 49 <option value="!*"><%= get_lang("doesn't contain the phrase")%></option> … … 58 58 <label class="small"><%= get_lang("Message")%></label> 59 59 <select name="criteriaOperator[]"> 60 <option value="="><%= get_lang(" is equal to")%></option>60 <option value="="><%= get_lang("contains")%></option> 61 61 <option value="*"><%= get_lang("contains the phrase")%></option> 62 62 <option value="!*"><%= get_lang("doesn't contain the phrase")%></option> … … 144 144 <fieldset> 145 145 <input type="radio" name="actionType[]" value="fileintoTrash" onchange="$('.ui-widget-content :checkbox').parent().removeClass(' hidden');"/> 146 <label><%= get_lang(" Seen")%></label>146 <label><%= get_lang("Trash")%></label> 147 147 <input type="hidden" name="actionParameter[]" value="Trash"/> 148 148 </fieldset> … … 157 157 <input type="hidden" name="actionParameter[]" value="INBOX"/> 158 158 </fieldset> 159 <!-- 159 160 161 160 162 <fieldset class="fields-search-messages"> 161 163 <label>Clique no botão "Buscar" para verificar se existem mensagens na sua Caixa de Entrada que … … 165 167 <table class="hidden fields-search-messages-grid" id="fields-search-messages-grid"><tr><td/></tr></table> 166 168 <div class="hidden fields-search-messages-grid-pager" id="fields-search-messages-grid-pager"></div> 167 --> 169 170 171 168 172 <div class="menu-container"> 169 173 <a class="button back" href="#" >« <%= get_lang("Previous")%></a> -
trunk/prototype/modules/filters/filters.js
r5801 r5862 154 154 } 155 155 156 var apply_messages_ = keys(selectedMessages); 157 delete selectedMessages; 158 156 159 return { 157 160 //id: form.name, … … 199 202 }), 200 203 enabled : false, 201 applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ? 202 keys( selectedMessages ) : allMessages : "" 203 204 //applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ? 205 //keys( selectedMessages ) : allMessages : "" 206 applyMessages: apply_messages_ 207 //applyMessages: "" 204 208 }; 205 209 }, 206 210 207 211 encoder: function( filters ){ 208 209 212 var rules = []; 210 213 … … 215 218 216 219 } 220 217 221 }); 218 222 … … 681 685 { name: email, isExact: false, 682 686 criteria:{ 0: {value: email, operator: "=", field: "from"} }, 683 /* To-do: Arrumar para popular a tela com o reject, pois não há essa opção na interface. */684 687 actions: { 0: {parameter: "INBOX/Spam", type: "fileinto"}}, 685 688 enabled: true, … … 885 888 }).end().filter(".cancel").click(function(){ 886 889 DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 887 }).end().filter(".submit").click(function() {890 }).end().filter(".submit").click(function() { 888 891 if(valid_save()) 889 892 $(this).submit(); … … 893 896 DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters); 894 897 }); 895 }); 896 }); 898 }).end().filter('.button.search').click(function() { 899 /* Valida se o usuário preencheu as informações */ 900 if(valid_save()) 901 { 902 var criteria_list = list_container.find('[name="criteriaValue[]"]'); 903 var criteria_operator_list = list_container.find('[name="criteriaOperator[]"]'); 904 var criteria_value = ""; 905 var criteria = ""; 906 $.each(criteria_list, function(index, value){ 907 criteria += $.trim($(criteria_list[index]).val()) + ","; 908 }); 909 var criteria_ = criteria.split(","); 910 var criteria_operator = ""; 911 $.each(criteria_operator_list, function(index, value){ 912 criteria_operator += $.trim($(criteria_list[index]).val()) != "" ? index + "," : ","; 913 criteria_value += $.trim($(criteria_operator_list[index]).val()) + ","; 914 }); 915 var criteria_operator_ = criteria_operator.split(","); 916 var criteria_value_ = criteria_value.split(","); 917 var options = ["from", "to", "subject", "body", "size"]; 918 var criterias_ = new Array(); 919 var j = 0; 920 for (i in criteria_) { 921 if(criteria_[i] != "") { 922 (j == 0) ? criterias_[j] = {"0": options[i], "1": criteria_value_[i], "2": criteria_[i]} : criterias_[j] = {"0": "OR", "1": options[i], "2": criteria_value_[i], "3": criteria_[i]}; 923 j++; 924 } 925 } 926 showGridButton = $(this).parent(); 927 $.ajax({ 928 url: DataLayer.basePath + 'folder/INBOX/message&' + $.param( {"filter": criterias_} ), 929 dataType: 'json', 930 success: function(data){ 931 allMessages = data; 932 var parametro = ""; 933 (data != false) ? parametro = {"filter": [ "msgNumber", "IN", data ]} : parametro = {"filter": criterias_}; 934 935 grid = showGridButton.addClass('hidden') 936 .siblings(".fields-search-messages-grid, .fields-search-messages-grid-pager") 937 .removeClass('hidden').filter(".fields-search-messages-grid").jqGrid({ 938 //url: DataLayer.basePath + 'folder/INBOX/message&' + $.param( {"filter": [ "msgNumber", "IN", data ]} ), 939 url: DataLayer.basePath + 'folder/INBOX/message&' + $.param( parametro ), 940 datatype: "json", 941 mtype: 'GET', 942 colNames:['#', ' ', 'De', 'Assunto', 'Data', 'Tamanho'], 943 colModel:[ 944 {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 945 {name:'flags',index:'msg_number', width:40, sortable:false, formatter:flags2Class}, 946 {name:'from.name',index:'msg_number', width:130, sortable:false}, 947 {name:'subject',index:'subject', width:250, sortable:false}, 948 {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time}, 949 {name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size} 950 ], 951 jsonReader : { 952 root:"rows", 953 page: "page", 954 total: "total", 955 records: "records", 956 repeatitems: false, 957 id: "0" 958 }, 959 rowNum:10, 960 //rowList:[10,25,50], 961 rowList:[10], 962 pager: '#fields-search-messages-grid-pager', 963 sortname: 'id', 964 viewrecords: true, 965 sortorder: "desc", 966 multiselect: true, 967 autowidth: true, 968 height:40, 969 loadComplete: function(data) { 970 // // aplica o contador 971 // jQuery('.timable').each(function (i) { 972 // jQuery(this).countdown({ 973 // since: new Date(parseInt(this.title)), 974 // significant: 1, 975 // layout: 'há {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}', 976 // description: ' atrás' 977 // }); 978 // }); 979 }, 980 onSelectRow: function (id, selected) { 981 if( selected ) 982 { 983 selectedMessages[ id ] = true; 984 } 985 else 986 { 987 delete selectedMessages[ id ]; 988 } 989 }, 990 caption: 'Mensagens que atendem aos critérios' 991 }); // end jqGrid 992 } // end success 993 }); // end ajax 994 } 995 else 996 { 997 return; 998 } 999 }); // end function click 1000 }); // end DataLayer.render 897 1001 }); 898 1002 list_container.parent().find(".button.add.vacation").click(function(){ -
trunk/prototype/modules/filters/interceptors/FilterMapping.php
r5747 r5862 50 50 * @license http://www.gnu.org/copyleft/gpl.html GPL 51 51 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 52 * @author Airton Bordin Junior 53 * @author Gustavo Pereira dos Santos 52 * @author Airton Bordin Junior <airton@prognus.com.br> 53 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 54 54 * @version 1.0 55 55 * @since Classe disponibilizada na versão 2.4 … … 67 67 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 68 68 * @sponsor Caixa EconÃŽmica Federal 69 * @author Airton Bordin Junior 70 * @author Gustavo Pereira dos Santos 69 * @author Airton Bordin Junior <airton@prognus.com.br> 70 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 71 71 * @param <Array> <$rules> <Array com as regras do usuário> 72 72 * @return <Regra de acordo com a sintaxe do Sieve> … … 109 109 $data['isExact'] == 'false' ? $script_match .= 'if anyof (' : $script_match .= 'if allof ('; 110 110 111 112 111 if( is_array($criteria) ) 113 112 foreach ($criteria as $j => $value); 114 113 { 115 114 116 115 switch($criteria[$j]['field']) { 117 116 case 'To': … … 174 173 /* 175 174 TO-DO: 176 Arrrumarregra do "não contém".175 Inconsistência na regra do "não contém". 177 176 */ 178 177 case '!*': … … 232 231 $i++; 233 232 $script_match = ""; 234 $script_criteria = ""; 235 233 $script_criteria = ""; 234 $data['applyMessages'] = ""; 236 235 } 237 236 … … 258 257 259 258 $content = $script_begin . $script_header . $script_rules . "\r\n\r\n#PseudoScript#" . "\r\n#" . $json_data; 260 //$content = "";261 259 262 260 return( $content ); … … 269 267 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 270 268 * @sponsor Caixa EconÃŽmica Federal 271 * @author Airton Bordin Junior 272 * @author Gustavo Pereira dos Santos 269 * @author Airton Bordin Junior <airton@prognus.com.br> 270 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 273 271 * @param <$scriptName> <Regras do usuário> 274 272 * @return <Regra do usuário parseada> … … 285 283 286 284 // Recebe o tamanho do script, pela primeira linha; 287 $this->size = trim($size_rule);285 //$this->size = trim($size_rule); 288 286 289 287 // Verifica a composição do script; */ 290 288 $line = array_shift($lines); 291 289 292 290 // Variaveis para a regra e o campo ferias; 293 $regexps = array(' ^ *##PSEUDO', '^ *#rule', '^ *#vacation', '^ *#mode');291 $regexps = array('##PSEUDO', '#rule', '#vacation', '#mode'); 294 292 $retorno['rule'] = array(); 295 293 296 294 $line = array_shift($lines); 297 while (isset($line)) { 295 while (isset($line)) { 298 296 foreach ($regexps as $regp) { 299 if (preg_match("/$regp/i", $line)) { 297 if (preg_match("/$regp/i", $line)) { 300 298 // Recebe todas as regras criadas no servidor; 301 if (preg_match("/ ^ *#rule&&/i", $line)) {302 $retorno['rule'][] = $line . "\n";299 if (preg_match("/#rule&&/i", $line)) { 300 $retorno['rule'][] = ltrim($line) . "\n"; 303 301 } 304 302 } … … 319 317 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 320 318 * @sponsor Caixa EconÃŽmica Federal 321 * @author Airton Bordin Junior 322 * @author Gustavo Pereira dos Santos 319 * @author Airton Bordin Junior <airton@prognus.com.br> 320 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 323 321 * @param <String> <$script> <Script Sieve com as regras do usuário> 324 322 * @return <Regras do usuário em Array> … … 327 325 public function parseSieveScript( $script ) 328 326 { 329 /* 327 /* Faz a verificação por filtros criados com a funcionalidade antiga */ 330 328 $old_rule = strripos($script, "##PSEUDO script start"); 331 329 332 330 if($old_rule) { 333 334 $parsed_rule = $this->readOldScript($old_script); 335 $array_rule = explode("&&", $parsed_rule['rule'][0]); 336 337 $old_retorno = array(); 338 $old_retorno['isExact'] = false; 339 $old_retorno['name'] = $array_rule[1]; 340 $old_retorno['criteria'] = array(); 341 $old_retorno['criteria'][0] = array(); 342 $old_retorno['criteria'][0]['value'] = $array_rule[5]; 343 $old_retorno['criteria'][0]['operator'] = '='; 344 $old_retorno['criteria'][0]['field'] = 'subject'; 345 $old_retorno['actions'] = array(); 346 $old_retorno['actions'][0] = array(); 347 $old_retorno['actions'][0]['parameter'] = $array_rule[7]; 348 $old_retorno['actions'][0]['type'] = $array_rule[6]; 349 $old_retorno['enabled'] = true; 350 $old_retorno['id'] = $array_rule[1]; 351 $old_retorno['applyMessages'] = ''; 352 353 return $old_retorno; 331 $parsed_rule = $this->readOldScript($script); 332 $old_rules = array(); 333 $j = 0; 334 foreach ($parsed_rule['rule'] as $i => $value) { 335 336 $array_rule = explode("&&", $parsed_rule['rule'][$i]); 337 338 /* TO-DO: Ver as actions possÃveis além de reject e fileinto */ 339 switch($array_rule[6]) { 340 case 'reject': 341 $action_type = 'reject'; 342 $action_parameter = $array_rule[7]; 343 break; 344 case 'folder': 345 $action_type = 'fileinto'; 346 $action_parameter = $array_rule[7]; 347 break; 348 } 349 350 if($array_rule[3] != "") { 351 $criteria_value = $array_rule[3]; 352 $criteria_operator = '='; 353 $criteria_field = 'from'; 354 } 355 else 356 { 357 $criteria_value = $array_rule[5]; 358 $criteria_operator = '='; 359 $criteria_field = 'subject'; 360 } 361 362 $old_retorno = array(); 363 $old_retorno['isExact'] = true; 364 $old_retorno['name'] = 'regra_migrada_' . $array_rule[1]; 365 $old_retorno['criteria'] = array(); 366 $old_retorno['criteria'][0] = array(); 367 $old_retorno['criteria'][0]['value'] = $criteria_value; 368 $old_retorno['criteria'][0]['operator'] = $criteria_operator; 369 $old_retorno['criteria'][0]['field'] = $criteria_field; 370 $old_retorno['actions'] = array(); 371 $old_retorno['actions'][0] = array(); 372 $old_retorno['actions'][0]['parameter'] = $action_parameter; 373 $old_retorno['actions'][0]['type'] = $action_type; 374 $old_retorno['enabled'] = ($array_rule[2] == 'ENABLED') ? true: false; 375 $old_retorno['id'] = 'regra_migrada_' . $array_rule[1]; 376 $old_retorno['applyMessages'] = ''; 377 378 $old_rules[$j] = $old_retorno; 379 $j++; 380 } 381 return $old_rules; 354 382 } 355 */383 /* Não tem regra antiga */ 356 384 $pos = strripos($script, "#PseudoScript#"); 357 385 $pseudo_script = substr( $script, $pos+17 ); 358 386 359 387 $return = json_decode( $pseudo_script, true ); 360 388 361 389 return $return; 362 390 } … … 370 398 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 371 399 * @sponsor Caixa EconÃŽmica Federal 372 * @author Airton Bordin Junior 373 * @author Gustavo Pereira dos Santos 400 * @author Airton Bordin Junior <airton@prognus.com.br> 401 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 374 402 * @access <public> 375 403 */ … … 386 414 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 387 415 * @sponsor Caixa EconÃŽmica Federal 388 * @author Airton Bordin Junior 389 * @author Gustavo Pereira dos Santos 416 * @author Airton Bordin Junior <airton@prognus.com.br> 417 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 390 418 * @return <Regras do usuário> 391 419 * @access <public> … … 398 426 $this->rules = array(); 399 427 } 428 400 429 return( $this->rules ); 401 430 } … … 408 437 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 409 438 * @sponsor Caixa EconÃŽmica Federal 410 * @author Airton Bordin Junior 411 * @author Gustavo Pereira dos Santos 439 * @author Airton Bordin Junior <airton@prognus.com.br> 440 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 412 441 * @param <$uri> 413 442 * @param <$result> … … 418 447 public function applySieveFilter( &$uri , &$result , &$criteria , $original ) 419 448 { 420 /*421 $result['id'] = $uri['id'];422 $rule_apply = array();423 449 424 $filter = Controller::read($uri); 425 $filter_ = $this->parseSieveScript($filter['content']); 426 427 foreach ($filter_ as $f_) { 428 if($f_['id'] == $uri['id']) { 429 $rule_apply = $f_; 450 //if() 451 //{ 452 $result['id'] = $uri['id']; 453 $rule_apply = array(); 454 455 $filter = Controller::read($uri); 456 $filter_ = $this->parseSieveScript($filter['content']); 457 458 foreach ($filter_ as $f_) { 459 if($f_['id'] == $uri['id']) { 460 $rule_apply = $f_; 461 } 430 462 } 431 } 432 433 $actions = array(); 434 $actions['type'] = $rule_apply['actions'][0]['type']; 435 $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 436 437 $messages = $rule_apply['applyMessages']; 438 439 440 $proc = array(); 441 $proc['keep'] = false; 442 */ 443 444 //$imap = Controller::service( 'Imap' ); 445 //$imap->apliSieveFilter($original['properties']['applyMessages'] , $proc ); 446 //$imap->apliSieveFilter($messages , $actions ); 447 //return $result; 463 464 $actions = array(); 465 $actions['type'] = $rule_apply['actions'][0]['type']; 466 $actions['parameter'] = $rule_apply['actions'][0]['parameter']; 467 /* Hardcoded */ 468 $actions['keep'] = false; 469 470 $messages_to_apply = array(); 471 472 $messages = $rule_apply['applyMessages']; 473 /* 474 $proc = array(); 475 $proc['keep'] = false; 476 477 */ 478 $imap = Controller::service( 'Imap' ); 479 $imap->apliSieveFilter($messages , $actions); 480 return $result; 481 //} 448 482 } 449 483 … … 455 489 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 456 490 * @sponsor Caixa EconÃŽmica Federal 457 * @author Airton Bordin Junior 458 * @author Gustavo Pereira dos Santos 491 * @author Airton Bordin Junior <airton@prognus.com.br> 492 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 459 493 * @param <$uri> 460 494 * @param <$result> … … 476 510 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 477 511 * @sponsor Caixa EconÃŽmica Federal 478 * @author Airton Bordin Junior 479 * @author Gustavo Pereira dos Santos 512 * @author Airton Bordin Junior <airton@prognus.com.br> 513 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 480 514 * @param <$uri> 481 515 * @param <$result> … … 510 544 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 511 545 * @sponsor Caixa EconÃŽmica Federal 512 * @author Airton Bordin Junior 513 * @author Gustavo Pereira dos Santos 546 * @author Airton Bordin Junior <airton@prognus.com.br> 547 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 514 548 * @param <$uri> 515 549 * @param <$result> … … 554 588 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 555 589 * @sponsor Caixa EconÃŽmica Federal 556 * @author Airton Bordin Junior 557 * @author Gustavo Pereira dos Santos 590 * @author Airton Bordin Junior <airton@prognus.com.br> 591 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 558 592 * @param <$uri> 559 593 * @param <$result> … … 580 614 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 581 615 * @sponsor Caixa EconÃŽmica Federal 582 * @author Airton Bordin Junior 583 * @author Gustavo Pereira dos Santos 616 * @author Airton Bordin Junior <airton@prognus.com.br> 617 * @author Gustavo Pereira dos Santos <gustavo@prognus.com.br> 584 618 * @param <$uri> 585 619 * @param <$result>
Note: See TracChangeset
for help on using the changeset viewer.