Ignore:
Timestamp:
07/23/12 10:58:43 (12 years ago)
Author:
tezza
Message:

Ticket #2971 - Acrescentado informações de ACLs no retorno das pastas compartilhadas

Location:
sandbox/2.4.2-expresso2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.2-expresso2/expressoMail1_2/inc/class.imap_functions.inc.php

    r6762 r6845  
    23922392                        $decifrada = mb_convert_encoding('INBOX'.$this->imap_delimiter.'decifradas','UTF7-IMAP','ISO-8859-1'); //Ignorar esta pasta decifrada 
    23932393                        $parent = ($nameCount > 1 && $nameArray[($nameCount - 2)] !== 'INBOX') ? implode($this->imap_delimiter, array_slice($nameArray, 0, ($nameCount - 1))): ''; //Pega folder pai 
    2394                         if($nameArray[0] === 'user') 
    2395                                 $folders[$prefixShared.$this->imap_delimiter.$nameArray[1]][] = array('id' => $folderId , 'stream' => $v->name , 'attributes' => $v->attributes , 'name' => $nameArray[($nameCount-1)] , 'user' => $nameArray[1] ,'parent' => $parent); 
    2396                         else if( $folderId !== $decifrada) //Escapa pasta decifrada 
    2397                                 $folders['INBOX'][strtolower($folderId)] =  array('id' => $folderId , 'stream' => $v->name , 'attributes' => $v->attributes ,'name' => $nameArray[($nameCount-1)] , 'parent' => $parent); 
    2398                 } 
     2394 
     2395                        if($nameArray[0] === 'user'){ 
     2396 
     2397                                //variaveis utilizadas para definição das permissões das pastas compartilhadas 
     2398                                $acl_share_create = 0; 
     2399                                $acl_share_rename = 0; 
     2400                                $acl_share_delete = 0; 
     2401 
     2402                                //recuperando as permissões (ACLs) aplicadas na pasta 
     2403                                $imap_getacl = imap_getacl($mboxStream, $folderId); 
     2404 
     2405                                //Se existe ACLs aplicadas a respectiva pasta (para o usuario corrente) 
     2406                                if(isset($imap_getacl[ $this->username ])){ 
     2407                                        $aclImap = $imap_getacl[ $this->username ]; 
     2408 
     2409                                        //A partir dos atributos da ACL definir permissões para cada ação (create, rename e delete) 
     2410                                        $pattern_create = '/(c|k)/'; 
     2411                                        $pattern_rename = '/((c|k).*(d|x))|((d|x).*(c|k))/'; 
     2412                                        $pattern_delete = '/(d|x)/'; 
     2413 
     2414                                        $acl_share_create = preg_match($pattern_create,$aclImap); 
     2415                                        $acl_share_rename = preg_match($pattern_rename,$aclImap); 
     2416                                        $acl_share_delete = preg_match($pattern_delete,$aclImap); 
     2417                                } 
     2418 
     2419                                $folders[$prefixShared.$this->imap_delimiter.$nameArray[1]][] = array( 
     2420                                                                                                                                                                                'id' => $folderId ,  
     2421                                                                                                                                                                                'stream' => $v->name ,  
     2422                                                                                                                                                                                'attributes' => $v->attributes ,  
     2423                                                                                                                                                                                'name' => $nameArray[($nameCount-1)] ,  
     2424                                                                                                                                                                                'user' => $nameArray[1] , 
     2425                                                                                                                                                                                'parent' => $parent , 
     2426 
     2427                                                                                                                                                                                //Acrescentando ACLs configuradas a cada pasta compartilhada 
     2428                                                                                                                                                                                'acl_share' => array( 
     2429                                                                                                                                                                                        'create' => $acl_share_create, 
     2430                                                                                                                                                                                        'rename' => $acl_share_rename, 
     2431                                                                                                                                                                                        'delete' => $acl_share_delete 
     2432                                                                                                                                                                                ) 
     2433                                ); 
     2434 
     2435                        }        
     2436                        else if( $folderId !== $decifrada){ //Escapa pasta decifrada 
     2437                                $folders['INBOX'][strtolower($folderId)] = array( 
     2438                                                                                                                                        'id' => $folderId ,  
     2439                                                                                                                                        'stream' => $v->name ,  
     2440                                                                                                                                        'attributes' => $v->attributes , 
     2441                                                                                                                                        'name' => $nameArray[($nameCount-1)] ,  
     2442                                                                                                                                        'parent' => $parent  
     2443                                ); 
     2444                        } 
     2445                } 
     2446 
    23992447                unset($folders_list); //destroy array de objetos desnecessarios 
    24002448                 
     
    24142462                                $append['folder_hasChildren'] = (($vv['attributes'] == 32) && ($vv['name'] != 'INBOX')) ? 1 : 0; 
    24152463                                $append['folder_parent'] = $vv['parent']; 
     2464 
     2465                                //Preparando o array de retorno para conter as ACLs configuradas para cada pasta 
     2466                                if(isset($vv['acl_share'])){ 
     2467                                        $append['acl_share'] = $vv['acl_share']; 
     2468                                } 
    24162469                                $return[] = $append; 
    24172470                        } 
     
    24202473                $quotaInfo =  (!isset($params['noQuotaInfo'])) ? $this->get_quota( array('folder_id' => $currentFolder)) : false; //VERIFICA SE O USUARIO TEM COTA 
    24212474 
    2422                 return ( ( is_array($quotaInfo) ) ?  array_merge($return, $quotaInfo) : $return );         
     2475                return ( ( is_array($quotaInfo) ) ?  array_merge($return, $quotaInfo) : $return ); 
    24232476        } 
    24242477     
  • sandbox/2.4.2-expresso2/prototype/services/ImapServiceAdapter.php

    r6700 r6845  
    7878                                foreach ($result as $res) { 
    7979 
    80                                         $response[] = array( 
     80                                        //monta o array padrao 
     81                                        $array = array( 
    8182                                                        'id' => mb_convert_encoding( $res['folder_id'], 'UTF-8', 'UTF7-IMAP' ), 
    8283                                                        'commonName' => mb_convert_encoding( $res['folder_name'], 'UTF-8' , 'UTF7-IMAP' ), 
    8384                                                        'parentFolder' => mb_convert_encoding( $res['folder_parent'], 'UTF-8' , 'UTF7-IMAP' ), 
    8485                                                        'messageCount' => array('unseen' => isset($res['folder_unseen']) ? $res['folder_unseen'] : null, 'total' => null) 
    85                                                 ); 
    86                                 } 
    87  
     86                                        ); 
     87 
     88                                        //se existir compartilhamento para pasta compartilhada 
     89                                        //adicionar array de permissoes 
     90                                        if(isset($res['acl_share'])){ 
     91                                                $array['acl_share'] = $res['acl_share']; 
     92                                        } 
     93                                        $response[] = $array; 
     94                                } 
    8895                                return $response; 
    8996                        } 
Note: See TracChangeset for help on using the changeset viewer.