Ignore:
Timestamp:
07/11/12 11:45:10 (12 years ago)
Author:
niltonneto
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.1.

Location:
branches/2.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/prototype/modules/filters/interceptors/FilterMapping.php

    r6590 r6754  
    4141*/ 
    4242 
    43 use prototype\api\Config as Config;  
     43use prototype\api\Config as Config; 
    4444 
    4545/** 
     
    224224                        $script_criteria .= ")";  
    225225 
    226                         $script_action = " {\r\n "; 
     226                        //$script_action = " {\r\n "; 
     227                        /* Somente para controlar que o addFlag virá antes de qualquer ação. Modificar isso depois */ 
     228                        $action_addFlag = ''; 
    227229                         
    228230                        if( is_array($action) ) 
     
    230232                        { 
    231233                                switch ($action[$k]['type']) { 
     234                                        case 'setflag': 
     235                                                $require_flag = true; 
     236                                                $action[$k]['parameter'] = "\\\\" . $action[$k]['parameter']; 
     237                                                break; 
     238                                        case 'addflag':  
     239                                                $require_flag = true; 
     240                                                $action_addFlag = "addflag \"" . $action[$k]['parameter'] . "\";\r\n "; 
     241                                                break; 
    232242                                        case 'redirect': 
    233243                                                break; 
     
    245255                                                $vacation = true; 
    246256                                                continue; 
    247                                         case 'setflag': 
    248                                                 $require_flag = true; 
    249                                                 $action[$k]['parameter'] = "\\\\" . $action[$k]['parameter']; 
    250                                                 break; 
    251257                                        case 'discard': 
    252258                                                break; 
    253259                                } 
    254                                 if ($vacation == false) $script_action .= $action[$k]['type'] . " \"" . $action[$k]['parameter'] . "\";\r\n "; 
     260                                if ($vacation == false && $action[$k]['type'] != 'addflag') $script_action .= $action[$k]['type'] . " \"" . $action[$k]['parameter'] . "\";\r\n "; 
    255261                        } 
    256                         $script_action .= "}"; 
    257262                         
     263                        /* ATENÇÃO: Colocar sempre o comando addflag antes de qualquer outro no caso de ações compostas no Sieve */ 
     264                        if ($action_addFlag != '') $script_action = $action_addFlag . $script_action;  
     265                         
     266                        $script_action = "{\r\n " . $script_action . "}"; 
     267                        $action_addFlag = ''; 
    258268                        if($vacation == false) 
    259269                                $script_rules .= $script_match . $script_criteria . $script_action . "\r\n"; 
     
    263273                        $script_match = ""; 
    264274                        $script_criteria = "";   
     275                        $script_action = ""; 
    265276                        $data['applyMessages'] = "";                                                     
    266277                } 
     
    295306 
    296307                $content = $script_begin . $script_header . $script_rules . "\r\n\r\n#PseudoScript#" . "\r\n#" . $json_data; 
    297                  
     308 
    298309                return( $content ); 
    299310        } 
     
    697708                return( $return ); 
    698709        } 
     710 
     711        /**  
     712         * Método que insere no ldap as informações do vacation  
     713         *  
     714         * @license    http://www.gnu.org/copyleft/gpl.html GPL  
     715         * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
     716         * @sponsor     Caixa Econômica Federal  
     717         * @author     Cristiano Corrêa Schmidt  
     718         * @param      <$uri>  
     719         * @param      <$result>  
     720         * @param      <$criteria>  
     721         * @param      <$original>  
     722         * @return     <void>  
     723         * @access     public  
     724         */  
     725        public function verifyVacationRule( &$uri , &$params , &$criteria , $original  )  
     726        {  
     727            if( $original['properties']['id'] === 'vacation' )  
     728            {  
     729 
     730                $user = Controller::read(array('concept' => 'user' , 'id' => config::me('uidNumber') , 'service' => 'OpenLDAP'));  
     731                $ldapConf = Config::service('OpenLDAP', 'config');  
     732                $con = ldap_connect( $ldapConf['host'] );  
     733                ldap_set_option( $con,LDAP_OPT_PROTOCOL_VERSION, 3 );  
     734                ldap_bind( $con, $ldapConf['user'], $ldapConf['password']);  
     735 
     736                $info = array();  
     737                if(!in_array('Vacation', $user['objectClass']))  
     738                        $info['objectClass'] = 'Vacation';  
     739 
     740                $info['vacationActive'] = strtoupper($original['properties']['enabled']);  
     741 
     742                if(isset($original['properties']['actions']) && isset($original['properties']['actions'][0]['parameter']))  
     743                        $info['vacationInfo']   = $original['properties']['actions'][0]['parameter'];  
     744                else if( !isset($user['vacationInfo']) )  
     745                {  
     746                    $rules = $this->getRules();  
     747                    if(is_array($rules))  
     748                        foreach ($rules as $rule)  
     749                        if($rule['id'] === 'vacation')  
     750                                $info['vacationInfo'] = $rule['actions'][0]['parameter'];  
     751                }  
     752 
     753                if(!in_array('Vacation', $user['objectClass']))  
     754                        ldap_mod_add ( $con , $user['dn'] ,  $info );  
     755                else  
     756                        ldap_modify ( $con , $user['dn'] ,  $info );  
     757 
     758 
     759                ldap_close($con);  
     760 
     761            }  
     762          
     763        } 
     764 
     765        /**  
     766         * Método que remove do ldap as informações do vacation  
     767         *  
     768         * @license    http://www.gnu.org/copyleft/gpl.html GPL  
     769         * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)  
     770         * @sponsor     Caixa Econômica Federal  
     771         * @author     Cristiano Corrêa Schmidt  
     772         * @param      <$uri>  
     773         * @param      <$result>  
     774         * @param      <$criteria>  
     775         * @param      <$original>  
     776         * @return     <void>  
     777         * @access     public  
     778         */  
     779        public function deleteVacationRule( &$uri , &$params , &$criteria , $original  )  
     780        {          
     781            if( $original['URI']['id'] === 'vacation' )  
     782            {  
     783                $user = Controller::read(array('concept' => 'user' , 'id' => config::me('uidNumber') , 'service' => 'OpenLDAP'));  
     784                $ldapConf = Config::service('OpenLDAP', 'config');  
     785                $con = ldap_connect( $ldapConf['host'] );  
     786                ldap_set_option( $con,LDAP_OPT_PROTOCOL_VERSION, 3 );  
     787                ldap_bind( $con, $ldapConf['user'], $ldapConf['password']);  
     788                $info = array();  
     789                $info['vacationActive'] = 'FALSE';  
     790                $info['vacationInfo'] = "";  
     791                ldap_modify ( $con , $user['dn'] ,  $info );  
     792                ldap_close($con);  
     793            }  
     794        } 
    699795} 
Note: See TracChangeset for help on using the changeset viewer.