Changeset 2761


Ignore:
Timestamp:
05/12/10 17:11:46 (14 years ago)
Author:
rodsouza
Message:

Ticket #1073 - Aplica a correção do ticket em questão no trunk

Location:
trunk/expressoMail1_2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r2747 r2761  
    33093309 
    33103310        function search_msg($params = ''){ 
    3311             $retorno = ""; 
    33123311            $mbox_stream = ""; 
    33133312            if(strpos($params['condition'],"#")===false) { //local messages 
     
    33743373                        } 
    33753374 
    3376                     if (preg_match("/^.?\bALL\b/", $filter)) 
    3377                     { // Quick Search, note: this ALL isn't the same ALL from imap_search 
    3378  
    3379                         $all_criterias = array ("TO","SUBJECT","FROM","CC"); 
    3380                         foreach($all_criterias as $criteria_fixed) 
    3381                         { 
    3382                             $_filter = $criteria_fixed . substr($filter,4); 
    3383  
    3384                             $search_criteria = imap_search($mbox_stream, $_filter, SE_UID); 
    3385  
    3386                             if($search_criteria) //&& count($search_criteria) < 50) 
    3387                             { 
    3388                                 foreach($search_criteria as $new_search) 
    3389                                 { 
    3390                                     if ($search_result_number != '65536' && $sum == $search_result_number) 
    3391                                     { 
    3392                                         return $retorno ? $sum . "=sumResults=" . $retorno : "none"; 
    3393                                     } 
    3394  
    3395                                     $m_token = trim("##".mb_convert_encoding( $name_box, "ISO_8859-1", "UTF7-IMAP" ) . "--" . $this->get_msg($new_search,$name_box,$mbox_stream) . "--".$new_search."##"."\n"); 
    3396                                     if(!@strstr($retorno,$m_token)) 
    3397                                     { 
    3398                                         $retorno .= $m_token; 
    3399                                         $sum ++; 
    3400                                     } 
    3401                                 } 
    3402                             } 
    3403                         } 
    3404                     } 
    3405                     else { 
    3406                         $search_criteria = imap_search($mbox_stream, $filter, SE_UID); 
    3407                         if( is_array( $search_criteria) ) 
    3408                         { 
    3409                             foreach($search_criteria as $new_search) 
    3410                             { 
    3411                                 if ($search_result_number != '65536' && $sum == $search_result_number) 
    3412                                 { 
    3413                                     return $retorno ? $sum . "=sumResults=" . $retorno : "none"; 
    3414                                 } 
    3415                                 $retorno .= trim("##".mb_convert_encoding( $name_box, "ISO_8859-1", "UTF7-IMAP" ) . "--" . $this->get_msg($new_search,$name_box,$mbox_stream) . "--" . $new_search."##"."\n"); 
    3416                                 $sum++; 
    3417                             } 
    3418                         } 
    3419                     } 
    3420                 } 
    3421             } 
     3375                    if (preg_match("/^.?\bALL\b/", $filter)) 
     3376                    { // Quick Search, note: this ALL isn't the same ALL from imap_search 
     3377 
     3378                            $all_criterias = array ("TO","SUBJECT","FROM","CC"); 
     3379                            foreach($all_criterias as $criteria_fixed) 
     3380                            { 
     3381                                    $_filter = $criteria_fixed . substr($filter,4); 
     3382 
     3383                                    $search_criteria = imap_search($mbox_stream, $_filter, SE_UID); 
     3384 
     3385                                    if($search_criteria) //&& count($search_criteria) < 50) 
     3386                                    { 
     3387                                            foreach($search_criteria as $new_search) 
     3388                                            { 
     3389                                                    if ($search_result_number != '65536' && $sum == $search_result_number) 
     3390                                                    { 
     3391                                                            return $retorno['sum'] = $sum; 
     3392                                                    } 
     3393                                                    $elem = $this->get_msg_detail($new_search,$name_box,$mbox_stream);  
     3394                                                    $elem['boxname'] = mb_convert_encoding( $name_box, "ISO_8859-1", "UTF7-IMAP" );  
     3395                                                    $elem['uid'] = $new_search;  
     3396                                                    $retorno[] = $elem;  
     3397                                                    $sum ++; 
     3398 
     3399                                            } 
     3400                                    } 
     3401                            } 
     3402                    } 
     3403                    else { 
     3404                            $search_criteria = imap_search($mbox_stream, $filter, SE_UID); 
     3405                            if( is_array( $search_criteria) ) 
     3406                            { 
     3407                                    foreach($search_criteria as $new_search) 
     3408                                    { 
     3409                                            if ($search_result_number != '65536' && $sum == $search_result_number) 
     3410                                            { 
     3411                                                          return $retorno['sum'] = $sum; 
     3412                                            } 
     3413                                            $elem = $this->get_msg_detail($new_search,$name_box,$mbox_stream);  
     3414                                            $elem['boxname'] = mb_convert_encoding( $name_box, "ISO_8859-1", "UTF7-IMAP" );  
     3415                                            $elem['uid'] = $new_search;  
     3416                                            $retorno[] = $elem;  
     3417                                            $sum++; 
     3418                                    } 
     3419                            } 
     3420                    } 
     3421                } 
     3422            } 
    34223423            if($mbox_stream) 
    34233424            { 
     
    34353436        } 
    34363437 
    3437         function get_msg($uid_msg,$name_box, $mbox_stream ) 
     3438        function get_msg_detail($uid_msg,$name_box, $mbox_stream ) 
    34383439        { 
    34393440                $header = $this->get_header($uid_msg); 
    3440                 include_once("class.imap_attachment.inc.php"); 
     3441                require_once("class.imap_attachment.inc.php"); 
    34413442                $imap_attachment = new imap_attachment(); 
    34423443                $attachments =  $imap_attachment->get_attachment_headerinfo($mbox_stream, $uid_msg); 
     
    34553456                if($header->from[0]->personal != "") 
    34563457                        $from = $header->from[0]->personal; 
    3457                 $ret_msg = $this->decode_string($from) . "--" . $subject . "--". gmdate("d/m/Y",$header ->udate)."--". $this->size_msg($header->Size) ."--". $flag; 
     3458                $ret_msg['from'] = $this->decode_string($from);  
     3459                $ret_msg['subject'] = $subject;  
     3460                $ret_msg['udate'] = $header ->udate;  
     3461                $ret_msg['size'] = $header->Size;  
     3462                $ret_msg['flag'] = $flag; 
    34583463                return $ret_msg; 
    3459         } 
    3460  
    3461         function size_msg($size){ 
    3462                 $var = floor($size/1024); 
    3463                 if($var >= 1){ 
    3464                         return $var." kb"; 
    3465                 }else{ 
    3466                         return $size ." b"; 
    3467                 } 
    34683464        } 
    34693465 
  • trunk/expressoMail1_2/js/jscode/search.js

    r2519 r2761  
    203203                ttree.make_tree(folders,"div_folders_search","_folders_tree_search","","","",""); 
    204204        } 
    205          
    206         //This func returns the most recent date 
    207         function date_comp(a,b) 
    208         { 
    209                 var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g); 
    210                 data1 = data1[0].substr(0, data1[0].indexOf('--')) 
    211                 with ( data1 )  
    212                         data1 = Date.UTC(substr(6), substr(3, 2), substr(0, 2)); 
    213                 var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g); 
    214                 data2 = data2[0].substr(0, data2[0].indexOf('--')) 
    215                 with ( data2 ) 
    216                         data2 = Date.UTC(substr(6), substr(3, 2), substr(0, 2)); 
    217                 return data2 - data1; 
    218         } 
    219         function date_comp_reverse(a,b) 
    220         { 
    221                 return date_comp(b,a); 
    222         } 
    223          
    224         function box_comp(a,b) 
    225         { 
    226         var compare = []; 
    227         compare[0] = a.substr(0, a.indexOf('--')); 
    228         compare[0] = compare[0].toLowerCase(); 
    229         var temp=compare[0]; 
    230         compare[1] = b.substr(0, b.indexOf('--')) 
    231         compare[1] = compare[1].toLowerCase(); 
    232         compare.sort(); 
    233         if (temp != compare[0]) 
    234                 return +1; 
    235         else 
    236                 return -1; 
    237         } 
    238         function box_comp_reverse(a,b) 
    239         { 
    240                 return box_comp(b,a); 
    241         } 
    242  
    243         function who_comp(a,b) 
    244         { 
    245         var compare = []; 
    246         compare[0] = a.substr(a.indexOf('--')+2); 
    247         compare[0] = compare[0].toLowerCase(); 
    248         var temp=compare[0]; 
    249         compare[1] = b.substr(b.indexOf('--')+2); 
    250         compare[1] = compare[1].toLowerCase(); 
    251         compare.sort(); 
    252         if (temp != compare[0]) 
    253                 return +1; 
    254         else 
    255                 return -1; 
    256         } 
    257         function who_comp_reverse(a,b) 
    258         { 
    259                 return who_comp(b,a); 
    260         } 
    261  
    262         function subject_comp(a,b) 
    263         { 
    264         var compare = []; 
    265         compare[0] = a.substr(a.indexOf('--')+2); 
    266         compare[0] = compare[0].substr(compare[0].indexOf('--')+2); 
    267         compare[0] = compare[0].toLowerCase(); 
    268         var temp=compare[0]; 
    269         compare[1] = b.substr(b.indexOf('--')+2); 
    270         compare[1] = compare[1].substr(compare[1].indexOf('--')+2); 
    271         compare[1] = compare[1].toLowerCase(); 
    272         compare.sort(); 
    273         if (temp != compare[0]) 
    274                 return +1; 
    275         else 
    276                 return -1; 
    277         } 
    278         function subject_comp_reverse(a,b) 
    279         { 
    280                 return subject_comp(b,a); 
    281         } 
    282  
    283         function size_comp(a,b) 
    284         { 
    285                 var data1 = a.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g); 
    286                 data1 = data1[0].substr(data1[0].indexOf('--')+2) 
    287                 data1 = data1.substr(0,data1.indexOf('--')) 
    288                 var size_a = parseInt(data1.substr(0,data1.indexOf(' '))); 
    289                 if (data1.match("k")) 
    290                         size_a = size_a * 1024; 
    291                 else 
    292                         if (data1.match("m")) 
    293                                 size_a = size_a * 1048576; 
    294                 var data2 = b.match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g); 
    295                 data2 = data2[0].substr(data2[0].indexOf('--')+2) 
    296                 data2 = data2.substr(0,data2.indexOf('--')) 
    297                 var size_b = parseInt(data2.substr(0,data2.indexOf(' '))); 
    298                 if (data2.match("k")) 
    299                         size_b = size_b * 1024; 
    300                 else 
    301                         if (data2.match("m")) 
    302                                 size_b = size_b * 1048576; 
    303                 return size_b - size_a; 
    304         } 
    305         function size_comp_reverse(a,b) 
    306         { 
    307                 return size_comp(b,a); 
    308         } 
    309205 
    310206        // Form resultado 
    311207        searchE.prototype.mount_result = function(data,sort_type){ 
    312                 var nw_array = new Array; 
    313                 var var_tmp = data.substr(2, data.length - 4); 
    314                 var_tmp  = var_tmp.split("####"); 
     208                if (data == undefined) 
     209                        return; 
    315210                var cont = parseInt(0); 
     211                //This func returns the comparison between criterias  
     212                var date_comp = function(a,b){ return a.udate > b.udate;}; 
     213                var date_comp_reverse = function(a,b){ return date_comp(b,a);}; 
     214                var box_comp = function(a,b){   return a.boxname > b.boxname; } 
     215                var box_comp_reverse = function(a,b){   return box_comp(b,a); } 
     216                var who_comp = function(a,b){ return a.from > b.from; } 
     217                var who_comp_reverse = function(a,b){ return who_comp(b,a); } 
     218                var subject_comp = function(a,b){ return a.subject > b.subject; } 
     219                var subject_comp_reverse = function(a,b){ return subject_comp(b,a); } 
     220                var size_comp = function(a,b){ return a.size > b.size; } 
     221                var size_comp_reverse = function(a,b){ return size_comp(b,a); } 
    316222                switch (sort_type) 
    317223                { 
    318224                        case 'SORTDATE': 
    319                                 var_tmp.sort(date_comp); 
     225                                data.sort(date_comp); 
    320226                                break; 
    321227                        case 'SORTDATE_REVERSE': 
    322                                 var_tmp.sort(date_comp_reverse); 
     228                                data.sort(date_comp_reverse); 
    323229                                break; 
    324230                        case 'SORTBOX': 
    325                                 var_tmp.sort(box_comp); 
     231                                data.sort(box_comp); 
    326232                                break; 
    327233                        case 'SORTBOX_REVERSE': 
    328                                 var_tmp.sort(box_comp_reverse); 
     234                                data.sort(box_comp_reverse); 
    329235                                break; 
    330236                        case 'SORTSUBJECT': 
    331                                 var_tmp.sort(subject_comp); 
     237                                data.sort(subject_comp); 
    332238                                break; 
    333239                        case 'SORTSUBJECT_REVERSE': 
    334                                 var_tmp.sort(subject_comp_reverse); 
     240                                data.sort(subject_comp_reverse); 
    335241                                break; 
    336242                        case 'SORTWHO': 
    337                                 var_tmp.sort(who_comp); 
     243                                data.sort(who_comp); 
    338244                                break; 
    339245                        case 'SORTWHO_REVERSE': 
    340                                 var_tmp.sort(who_comp_reverse); 
     246                                data.sort(who_comp_reverse); 
    341247                                break; 
    342248                        case 'SORTSIZE': 
    343                                 var_tmp.sort(size_comp); 
     249                                data.sort(size_comp); 
    344250                                break; 
    345251                        case 'SORTSIZE_REVERSE': 
    346                                 var_tmp.sort(size_comp_reverse); 
     252                                data.sort(size_comp_reverse); 
    347253                                break; 
    348254                        default: 
     
    350256                } 
    351257 
    352                 for(var i=0; i < var_tmp.length; i++){ 
    353                         if(var_tmp[i] != "") 
    354                         { 
    355                                 nw_array[cont] = var_tmp[i]; 
    356                                 cont++; 
    357                         } 
    358                 } 
    359  
    360                 if( (preferences.search_result_number != '65536') && (nw_array.length > 0) && (nw_array.length >= preferences.search_result_number) ){ 
    361                     nw_array.length = preferences.search_result_number; 
     258                if( (preferences.search_result_number != '65536') && (data.length > 0) && (data.length >= preferences.search_result_number) ){ 
     259                    data.length = preferences.search_result_number; 
    362260                    write_msg(get_lang("More than %1 results. Please, try to refine your search.",preferences.search_result_number)); 
    363261                } 
    364262                else { 
    365                         write_msg(nw_array.length + " "+ get_lang('results found')); 
     263                        write_msg(data.length + " "+ get_lang('results found')); 
    366264                } 
    367265 
     
    386284                tbody.id    = "tbody_box_" + numBox; 
    387285 
    388                 for( var i=0; i < nw_array.length; i++){ 
     286                for( var i=0; i < data.length; i++){ 
    389287                        var tr = document.createElement("TR"); 
    390288                        tr.style.height = preferences.line_height; 
    391289 
    392                         if (nw_array[i].match(/.*--.*--\w*--\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g) != null) //subject with "--" 
    393                         { 
    394                                 var aux1 = nw_array[i].match(/\d{2}\/\d{2}\/\d{4}--\d+? \w*b--.*--\d*$/g); 
    395                                 aux1 = aux1[0].split("--"); 
    396                                 nw_array[i] = nw_array[i].substr(0, nw_array[i].indexOf(aux1[0])-2); 
    397                                 var aux = []; 
    398                                 aux[0] = nw_array[i].substr(0, nw_array[i].indexOf('--')); 
    399                                 nw_array[i] = nw_array[i].substr(nw_array[i].indexOf('--')+2); 
    400                                 aux[1] = nw_array[i].substr(0, nw_array[i].indexOf('--')); 
    401                                 aux[2] = nw_array[i].substr(nw_array[i].indexOf('--')+2); 
    402                                 aux = aux.concat(aux1); 
    403                         } 
    404                         else 
    405                         { 
    406                                 var aux = nw_array[i].split("--"); 
    407                         } 
    408  
    409                         var mailbox = aux[0]; 
    410                         var uid_msg = aux[6]; 
    411                         var subject = aux[2]; 
     290                        var aux = data[i]; 
     291                        var mailbox = aux.boxname; 
     292                        var uid_msg = aux.uid; 
     293                        var subject = aux.subject; 
    412294                        tr.id = uid_msg+"_s"+global_search; 
    413295 
     
    416298                        tr.name = mailbox; 
    417299 
    418                         if (aux[5].match("U")) 
     300                        if (aux.flag.match("U")) 
    419301                                add_className(tr,'tr_msg_unread'); 
    420302                        add_className(tr, i%2 != 0 ? 'tr_msg_read2' : 'tr_msg_read'); 
     
    432314                                { 
    433315                                        td.style.width = "2%"; 
    434                                         if (aux[5].match('T')) 
     316                                        if (aux.flag.match('T')) 
    435317                                        { 
    436                                                 attachNum = parseInt(aux[5].substr(aux[5].indexOf('T')+1)); 
     318                                                attachNum = parseInt(aux.flag.substr(aux.flag.indexOf('T')+1)); 
    437319                                                td1 = "<img src='templates/"+template+"/images/clip.gif' title='"+attachNum +' '+ get_lang('attachment(s)')+"'>"; 
    438320                                        } 
     
    444326                                        td.style.width = "1%"; 
    445327                                        td.id = "td_message_answered_"+uid_msg; 
    446                                         if (aux[5].match('X')) 
     328                                        if (aux.flag.match('X')) 
    447329                                                td1 = '<img src=templates/'+template+'/images/forwarded.gif title=Forwarded>'; 
    448330                                        else 
    449                                                 if (aux[5].match('A')) 
     331                                                if (aux.flag.match('A')) 
    450332                                                        td1 = '<img src=templates/'+template+'/images/answered.gif>'; 
    451333                                                else 
     
    456338                                        td.style.width = "1%"; 
    457339                                        td.id = "td_message_important_"+uid_msg; 
    458                                         if (aux[5].match("F")) 
     340                                        if (aux.flag.match("F")) 
    459341                                        { 
    460342                                                add_className(tr, 'flagged_msg'); 
     
    474356                                        td.style.width = "14%"; 
    475357                                        td.onclick = _onclick; 
    476                                         var nm_box = aux[0].split(cyrus_delimiter); 
     358                                        var nm_box = aux.boxname.split(cyrus_delimiter); 
    477359                                        var td1 = nm_box.pop(); 
    478360                                        td.setAttribute("NoWrap","true"); 
     
    493375                                if( j == 6) 
    494376                                { 
    495                                         if (aux[1].length > 29) 
    496                                                 aux[1] = aux[1].substr(0,29) + "..."; 
     377                                        if (aux.from.length > 29) 
     378                                                aux.from = aux.from.substr(0,29) + "..."; 
    497379                                        td.style.width = "20%"; 
    498380                                        td.onclick = _onclick; 
    499381                                        td.setAttribute("NoWrap","true"); 
    500382                                        td.style.overflow = "hidden"; 
    501                                         var td1  =  '<div style="width:100%;overflow:hidden">'+aux[1]+"</div>"; 
     383                                        var td1  =  '<div style="width:100%;overflow:hidden">'+aux.from+"</div>"; 
    502384                                } 
    503385                                if( j == 7) 
     
    505387                                        var subject_encode = url_encode(subject); 
    506388                                        if (! subject_encode) 
    507                                                 aux[2] = get_lang("no subject") + "..."; 
    508                                         if (aux[2].length > 70) 
    509                                                 aux[2] = aux[2].substr(0,70) + "..."; 
     389                                                aux.subject = get_lang("no subject") + "..."; 
     390                                        if (aux.subject.length > 70) 
     391                                                aux.subject = aux.subject.substr(0,70) + "..."; 
    510392                                        td.style.width = "35%"; 
    511393                                        td.onclick = _onclick; 
    512394                                        td.setAttribute("NoWrap","true"); 
    513395                                        td.style.overflow = "hidden"; 
    514                                         var td1  = aux[2]; 
     396                                        var td1  = aux.subject; 
    515397 
    516398                                } 
     
    520402                                        td.align = "center"; 
    521403                                        td.onclick = _onclick; 
    522                                         var td1  = aux[3]; 
     404                                        var _dat = new Date(aux.udate*1000); 
     405                                        var td1 = _dat.getDate()+"/"+_dat.getMonth()+"/"+_dat.getFullYear(); 
    523406                                } 
    524407                                if( j == 9) 
     
    527410                                        td.align = "center"; 
    528411                                        td.onclick = _onclick; 
    529                                         var td1  = aux[4]; 
     412                                        var td1  = borkb(aux.size); 
    530413                                } 
    531414                                if (j == 10) 
    532415                                { 
    533                                         if (aux[5].match("U")) 
     416                                        if (aux.flag.match("U")) 
    534417                                                add_className(tr, 'tr_msg_unread'); 
    535                                         if (aux[5].match("F")) 
     418                                        if (aux.flag.match("F")) 
    536419                                                add_className(tr, 'flagged_msg'); 
    537420                                        var td1 = ''; 
     
    923806                var handler = function(data){ 
    924807                        var tmp; 
    925                         var countTmp= new Array(); 
    926  
    927                         var dataTemp = data.split('=sumResults='); 
    928                         var sumResults = dataTemp[0]; 
    929  
    930                         var data = dataTemp[1] ? dataTemp[1] : dataTemp[0]; 
    931  
    932808                        if (local_folders.length > 0) { 
    933809                                tmp = expresso_local_messages.search(local_folders, fields); 
    934810                                if (tmp!=false) { 
    935811                                        var tmp2 = tmp.substr(2, data.length - 4); 
    936                                         countTmp = tmp.split('####'); 
    937812                                } 
    938813                        } 
     
    947822//                        } 
    948823 
    949                         if ((sumResults == "none") && (countTmp.length==0)){ 
     824                        if ((data == "none") || (data.length==0)){ 
    950825                            alert(get_lang("None result was found.")); 
    951826                        } 
    952827                        else 
    953828                        { 
    954                             EsearchE.mount_result((sumResults=='none')?tmp:(countTmp.length==0)?data:data+tmp); 
     829                            EsearchE.mount_result(data); 
    955830                        } 
    956831 
Note: See TracChangeset for help on using the changeset viewer.