Changeset e750d1b in github


Ignore:
Timestamp:
Sep 30, 2011 11:22:08 AM (21 months ago)
Author:
thomascube <thomas@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.7, release-0.8
Children:
e877681
Parents:
ad27eb2
Message:

Restrict folders list to write-only in selectors for special folders and save-message-to option

Location:
program
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • program/include/main.inc

    r65082b3 re750d1b  
    12151215 
    12161216  if ($p['unsubscribed']) 
    1217     $list = $RCMAIL->imap->list_unsubscribed('', $p['folder_name'], $p['folder_filter']); 
     1217    $list = $RCMAIL->imap->list_unsubscribed('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']); 
    12181218  else 
    1219     $list = $RCMAIL->imap->list_mailboxes('', $p['folder_name'], $p['folder_filter']); 
     1219    $list = $RCMAIL->imap->list_mailboxes('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']); 
    12201220 
    12211221  $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); 
  • program/include/rcube_imap.php

    r00d4242 re750d1b  
    29182918     * @param   string  $name   Optional name pattern 
    29192919     * @param   string  $filter Optional filter 
     2920     * @param   string  $rights Optional ACL requirements 
    29202921     * 
    29212922     * @return  array   List of mailboxes/folders 
    29222923     * @access  public 
    29232924     */ 
    2924     function list_mailboxes($root='', $name='*', $filter=null) 
    2925     { 
    2926         $a_mboxes = $this->_list_mailboxes($root, $name, $filter); 
     2925    function list_mailboxes($root='', $name='*', $filter=null, $rights=null) 
     2926    { 
     2927        $a_mboxes = $this->_list_mailboxes($root, $name, $filter, $rights); 
    29272928 
    29282929        // INBOX should always be available 
     
    29442945     * @param   string  $name   Optional name pattern 
    29452946     * @param   mixed   $filter Optional filter 
     2947     * @param   string  $rights Optional ACL requirements 
    29462948     * 
    29472949     * @return  array   List of mailboxes/folders 
     
    29492951     * @access  private 
    29502952     */ 
    2951     private function _list_mailboxes($root='', $name='*', $filter=null) 
     2953    private function _list_mailboxes($root='', $name='*', $filter=null, $rights=null) 
    29522954    { 
    29532955        $cache_key = $root.':'.$name; 
     
    29552957            $cache_key .= ':'.(is_string($filter) ? $filter : serialize($filter)); 
    29562958        } 
     2959        $cache_key .= ':'.$rights; 
    29572960 
    29582961        $cache_key = 'mailboxes.'.md5($cache_key); 
     
    30223025        } 
    30233026 
     3027        // filter folders list according to rights requirements 
     3028        if ($rights && $this->get_capability('ACL')) { 
     3029            $a_folders = $this->filter_rights($a_folders, $rights); 
     3030        } 
     3031 
    30243032        // write mailboxlist to cache 
    30253033        $this->update_cache($cache_key, $a_folders); 
     
    30353043     * @param string  $name   Optional name pattern 
    30363044     * @param mixed   $filter Optional filter 
     3045     * @param string  $rights Optional ACL requirements 
    30373046     * 
    30383047     * @return array Indexed array with folder names 
    30393048     */ 
    3040     function list_unsubscribed($root='', $name='*', $filter=null) 
     3049    function list_unsubscribed($root='', $name='*', $filter=null, $rights=null) 
    30413050    { 
    30423051        // @TODO: caching 
     
    30623071        } 
    30633072 
     3073        // filter folders list according to rights requirements 
     3074        if ($rights && $this->get_capability('ACL')) { 
     3075            $a_folders = $this->filter_rights($a_folders, $rights); 
     3076        } 
     3077 
    30643078        // filter folders and sort them 
    30653079        $a_mboxes = $this->_sort_mailbox_list($a_mboxes); 
    30663080 
    30673081        return $a_mboxes; 
     3082    } 
     3083 
     3084 
     3085    /** 
     3086     * Filter the given list of folders according to access rights 
     3087     */ 
     3088    private function filter_rights($a_folders, $rights) 
     3089    { 
     3090        $regex = '/('.$rights.')/'; 
     3091        foreach ($a_folders as $idx => $folder) { 
     3092            $myrights = join('', (array)$this->my_rights($folder)); 
     3093            if ($myrights !== null && !preg_match($regex, $myrights)) 
     3094                unset($a_folders[$idx]); 
     3095        } 
     3096 
     3097        return $a_folders; 
    30683098    } 
    30693099 
  • program/steps/mail/compose.inc

    r90a6aff re750d1b  
    13841384  $select = rcmail_mailbox_select(array_merge($attrib, array( 
    13851385    'noselection' => '- '.rcube_label('dontsave').' -', 
    1386     'folder_filter' => 'mail' 
     1386    'folder_filter' => 'mail', 
     1387    'folder_rights' => 'w', 
    13871388  ))); 
    13881389  return $select->show($_SESSION['compose']['param']['sent_mbox'], $attrib); 
  • program/steps/settings/func.inc

    r1cc9e21 re750d1b  
    677677      if ($current) { 
    678678        $select = rcmail_mailbox_select(array('noselection' => '---', 'realnames' => true, 
    679           'maxlength' => 30, 'exceptions' => array('INBOX'))); 
     679          'maxlength' => 30, 'exceptions' => array('INBOX'), 'folder_filter' => 'mail', 'folder_rights' => 'w')); 
    680680      } 
    681681      else // dummy select 
Note: See TracChangeset for help on using the changeset viewer.