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

File:
1 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     
Note: See TracChangeset for help on using the changeset viewer.