Changeset 1912


Ignore:
Timestamp:
01/04/10 11:25:23 (14 years ago)
Author:
valmir.sena
Message:

Ticket #858 - Alterar o comportamento do envio de mensagens por um usuário de uma conta compartilhada

Location:
trunk/expressoMail1_2
Files:
5 edited

Legend:

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

    r1898 r1912  
    2424        var $functions; 
    2525        var $foldersLimit; 
     26        var $imap_sentfolder; 
    2627 
    2728        function imap_functions (){ 
     
    3334                $this->imap_delimiter = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter']; 
    3435                $this->functions          = new functions(); 
     36                $this->imap_sentfolder = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']   ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']   : str_replace("*","", $this->functions->getLang("Sent")); 
    3537                $this->has_cid = false; 
    3638 
     
    17601762        } 
    17611763 
     1764        function folder_exists($folder){ 
     1765                $mbox =  $this->open_mbox(); 
     1766                $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}";             
     1767                $list = imap_getmailboxes($mbox,$serverString, $folder); 
     1768                $return = is_array($list);               
     1769                imap_close($mbox); 
     1770                return $return; 
     1771        } 
     1772         
    17621773        function send_mail($params) 
    17631774        { 
     
    18401851                $forwarding_attachments = $params['forwarding_attachments']; 
    18411852                $local_attachments = $params['local_attachments']; 
    1842  
    1843                 $folder =$params['folder']; 
     1853                 
     1854                //Test if must be saved in shared folder and change if necessary 
     1855                if( $fromaddress[2] == 'y' ){ 
     1856                        //build shared folder path 
     1857                        $newfolder = "user".$this->imap_delimiter.$fromaddress[3].$this->imap_delimiter.$this->imap_sentfolder; 
     1858                        if( $this->folder_exists($newfolder) ) $folder = $newfolder; 
     1859                        else $folder =  $params['folder'];                       
     1860                } else  { 
     1861                        $folder = $params['folder'];                     
     1862                } 
     1863                 
    18441864                $folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 
    18451865                $folder_name = $params['folder_name']; 
  • trunk/expressoMail1_2/inc/class.ldap_functions.inc.php

    r1740 r1912  
    689689        function getSharedUsersFrom($params){ 
    690690                $filter = ''; 
    691                 $i = 0; 
     691                $i = 0;          
     692                //Added to save if must save sent messages in shared folder 
     693                $acl_save_sent_in_shared = array(); 
     694                 
    692695                if($params['uids']) { 
    693696                        $uids = explode(";",$params['uids']); 
    694                         $this->imap = new imap_functions(); 
     697                        $this->imap = new imap_functions();                      
    695698                        foreach($uids as $index => $uid){ 
    696699                                $params = array(); 
     700                                //Added to save if user has create permission  
     701                                $acl_create_message = array(); 
    697702                                $acl = $this->imap->getacltouser($uid); 
    698                                 if(preg_match("/a/",$acl)) 
    699                                         $filter .= "(uid=$uid)"; 
    700                         } 
    701                 } 
    702  
     703                                if ( preg_match("/a/",$acl )){                           
     704                                        $filter .= "(uid=$uid)";                                         
     705                                        if ( preg_match("/p/",$acl )){                           
     706                                                $acl_save_sent_in_shared[ $i ] =$uid; 
     707                                                $i++; 
     708                                        }                                        
     709                                }                                                        
     710                        }                        
     711                } 
     712                 
    703713                $this->ldapRootConnect(false); 
    704714                if ($this->ds) { 
    705                         $justthese = array("cn","mail"); 
     715                        $justthese = array("cn","mail","uid"); 
    706716                        if($filter) { 
    707                                 $filter="(&(phpgwAccountType=u)(|$filter))"; 
     717                                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s))(|$filter))"; 
    708718                                $sr             =       ldap_search($this->ds, $this->ldap_context, $filter, $justthese); 
    709719                                ldap_sort($this->ds,$sr,"cn"); 
    710720                                $info   =       ldap_get_entries($this->ds, $sr); 
    711                                 for ($i = 0;$i < $info["count"]; $i++) 
     721                                $var = print_r($acl_save_sent_in_shared, true);                          
     722                                for ($i = 0;$i < $info["count"]; $i++){ 
    712723                                        $info[$i]['cn'][0] = utf8_decode($info[$i]['cn'][0]); 
    713                         } 
     724                                        //verify if user has permission to save sent messages in a shared folder 
     725                                        if ( in_array( $info[$i]['uid'][0],$acl_save_sent_in_shared) ){                                          
     726                                                $info[$i]['save_shared'][0] = 'y'; 
     727                                        } else $info[$i]['save_shared'][0] = 'n'; 
     728                                } 
     729                        } 
     730                 
    714731                        $info['myname'] = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 
    715732 
     
    728745                                for ($j = 0;$j < $result["count"]; $j++){ 
    729746                                        $info[$i]['cn'][0] = utf8_decode($result[$j]['cn'][0]); 
    730                                         $info[$i++]['mail'][0] = $result[$j]['mail'][0]; 
     747                                        $info[$i]['mail'][0] = $result[$j]['mail'][0]; 
     748                                        $info[$i]['save_shared'][0] = 'n'; 
     749                                        $info[$i++]['uid'][0] = $result[$j]['uid'][0];                                   
    731750                                } 
    732751                        } 
    733752 
    734753                        $_SESSION['phpgw_info']['expressomail']['user']['shared_mailboxes'] = $info; 
    735  
     754                         
    736755                        return $info; 
    737756                } 
  • trunk/expressoMail1_2/js/draw_api.js

    r1852 r1912  
    25352535                                var _option = document.createElement("OPTION"); 
    25362536                                _option.text = '"'+data[x].cn[0] + '" <'+data[x].mail[0]+'>'; 
    2537                                 _option.value = data[x].cn[0] + ';'+data[x].mail[0]; 
     2537                                _option.value = data[x].cn[0] + ';'+data[x].mail[0]+';'+data[x].save_shared[0]+';'+data[x].uid[0]; 
    25382538                                sel_from.options[sel_from.options.length] = _option     ; 
    25392539                        } 
  • trunk/expressoMail1_2/js/sharemailbox.js

    r1495 r1912  
    4141                        Element('em_input_writeAcl').checked = false; 
    4242                        Element('em_input_sendAcl').checked = false; 
     43                        Element('em_input_saveAcl').checked = false; 
     44                        Element('em_input_saveAcl').disabled = true; 
    4345                         
    4446                        if (data[user].indexOf('lrs',0) >= 0) 
     
    5456                                Element('em_input_deleteAcl').checked = true; 
    5557                        } 
    56                         if (data[user].indexOf('wip',0) >= 0) 
     58                        if (data[user].indexOf('wi',0) >= 0) 
    5759                        { 
    5860                                Element('em_input_writeAcl').checked = true; 
     61                        } 
     62                        if (data[user].indexOf('p',0) >= 0) 
     63                        { 
     64                                Element('em_input_saveAcl').checked = true; 
    5965                        } 
    6066                        if (data[user] != "false" && data[user].indexOf('a',0) >= 0) 
     
    6369                                Element('em_input_sendAcl').checked = true; 
    6470                        } 
     71                        if (data[user] != "false" && data[user].indexOf('p',0) >= 0) 
     72                        { 
     73                                Element('em_input_saveAcl').disabled = false; 
     74                                Element('em_input_saveAcl').checked = true; 
     75                        }  
     76                        if( data[user] != "false" && Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){ 
     77                                Element('em_input_saveAcl').disabled = false; 
     78                        } else Element('em_input_saveAcl').disabled = true; 
    6579                } 
    6680                cExecute ("$this.imap_functions.getaclfromuser&user="+user, handler_getaclfromuser); 
     
    90104                        acl += 'd'; 
    91105 
    92                 if (Element('em_input_writeAcl').checked) 
    93                         acl += 'wip'; 
    94  
    95                 if (Element('em_input_sendAcl').checked) 
    96                         acl += 'a'; 
     106                if (Element('em_input_writeAcl').checked) { 
     107                        acl += 'wi';                     
     108                } 
     109                 
     110                if (Element('em_input_sendAcl').checked){ 
     111                        acl += 'a';                      
     112                } else {  
     113                        Element('em_input_saveAcl').disabled = true; 
     114                        Element('em_input_saveAcl').checked = false; 
     115                } 
     116                 
     117                if (Element('em_input_sendAcl').checked && Element('em_input_writeAcl').checked){ 
     118                        Element('em_input_saveAcl').disabled = false;                            
     119                } else { 
     120                        Element('em_input_saveAcl').disabled = true; 
     121                        Element('em_input_saveAcl').checked = false; 
     122                } 
     123                 
     124                if (Element('em_input_saveAcl').checked) 
     125                        acl += 'p'; 
    97126                 
    98127                var handler_setaclfromuser = function(data) { 
     
    128157                        Element('em_input_writeAcl').checked = false; 
    129158                        Element('em_input_sendAcl').checked = false; 
     159                        Element('em_input_saveAcl').checked = false; 
    130160                } 
    131161                else 
     
    168198                                                                '<tr><td>'+get_lang('Exclusion')+':</td><td><input id=\'em_input_deleteAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_delmov_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+ 
    169199                                                                '<tr><td>'+get_lang('Write')+':</td><td><input id=\'em_input_writeAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_addcreate_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+ 
    170                                                                 '<tr><td>'+get_lang('Send')+':</td><td><input id=\'em_input_sendAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_sendlike_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr></tbody></table>'+ 
     200                                                                '<tr><td>'+get_lang('Send')+':</td><td><input id=\'em_input_sendAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_sendlike_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr>'+ 
     201                                                                '<tr><td>'+get_lang('Save')+':</td><td><input id=\'em_input_saveAcl\' onClick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="'+get_lang('hlp_msg_savelike_acl')+'." src=\'./templates/'+template+'/images/ajuda.jpg\'></td></tr></tbody></table>'+ 
    171202                                                        '</td></tr>'+ 
    172203                        "</tbody></table>"; 
     
    241272                if(! this.arrayWin[div.id]) 
    242273                { 
    243                         div.style.height = "460px"; 
     274                        div.style.height = "480px"; 
    244275                        div.style.width = "540px"; 
    245276                        var title = ":: "+get_lang("Mailbox Sharing")+" ::"; 
     
    267298                } 
    268299                Element('em_input_sendAcl').disabled = true; 
     300                Element('em_input_saveAcl').disabled = true; 
    269301                win.open(); 
    270302        } 
     
    361393                Element('em_input_writeAcl').checked = false; 
    362394                Element('em_input_sendAcl').checked = false; 
     395                Element('em_input_saveAcl').checked = false; 
    363396        } 
    364397         
Note: See TracChangeset for help on using the changeset viewer.