Ignore:
Timestamp:
06/22/12 14:47:14 (12 years ago)
Author:
tezza
Message:

Ticket #2766 - Acrescentado/corrigindo recursos de contatos/grupos compartilhados.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/rest/catalog/DynamicContactsResource.php

    r6528 r6578  
    189189        } 
    190190 
    191         //recupera os atributos definidos no conceito 'user' 
     191        //recuperar os atributos definidos no conceito 'user' 
    192192        $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); 
    193193 
     
    207207        } 
    208208 
    209  
    210209        $response = new Response($request); 
    211210        $response->addHeader('Content-type', 'aplication/json'); 
     
    220219 
    221220        try { 
    222             $idDynamicContact = Controller::create( 
    223                             array('concept' => 'dynamicContact'), $params 
    224             ); 
    225  
    226             if (!$idDynamicContact) { 
    227                 throw new Exception(Controller::service('PostgreSQL')->error); 
    228             } 
     221 
     222                //verificar o limite maximo de contatos dinamicos nas preferencias do administrador 
     223                $sql =  "SELECT config_value ". 
     224                        "FROM phpgw_config ". 
     225                        "WHERE config_app = 'expressoMail1_2' ". 
     226                                "AND config_name = 'expressoMail_Number_of_dynamic_contacts'"; 
     227 
     228                $numberOfMessages = Controller::service('PostgreSQL')->execResultSql($sql, true); 
     229                $numberOfMessages = (count($numberOfMessages) > 0) ? (int)$numberOfMessages['config_value'] : 0; 
     230 
     231                //realizar busca de contatos dinamicos ordenados pela data de utilizacao 
     232                $dynamicContacts = Controller::find(array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'owner', Config::me("uidNumber")), 'order' => array('timestamp') ) ); 
     233                $numberOfDynamicContacts = ($dynamicContacts !== false) ? count($dynamicContacts) : 0; 
     234 
     235 
     236                //se a quantidade de contatos dinamicos de usuario exceder o limite maximo definido nas preferencias do administrador, 
     237                //remover o contato dinamico mais antigo 
     238                if($numberOfDynamicContacts >= $numberOfMessages){ 
     239                        $id = $dynamicContacts[0]['id']; 
     240                        $delete = Controller::delete(array('concept' => 'dynamicContact', 'id' => $id)); 
     241 
     242                        if (!$delete) { 
     243                                $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', Controller::service('PostgreSQL')->error); 
     244                                return $response; 
     245                        } 
     246                }        
     247 
     248                //inserir o novo contato dinamico 
     249                $create = Controller::create( array('concept' => 'dynamicContact'), $params ); 
     250 
     251                if (!$create) { 
     252                        throw new Exception(Controller::service('PostgreSQL')->error); 
     253                } 
     254 
    229255        } catch (Exception $ex) { 
     256 
    230257            $response->code = Response::INTERNALSERVERERROR; 
    231258            return $response; 
    232259        } 
    233  
    234260        $response->body = json_encode(null); 
    235261 
Note: See TracChangeset for help on using the changeset viewer.