Changeset 6328


Ignore:
Timestamp:
05/28/12 17:34:40 (8 years ago)
Author:
natan
Message:

Ticket #2786 - Permitir transações separadas ao persistir uma lista de objetos - Corrigido

Location:
trunk/prototype
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/Sync.php

    r6111 r6328  
    88 
    99if(!function_exists('parseURI')) 
    10 {    
     10{ 
    1111    function parseURI( $URI ) 
    1212    { 
     
    2424 
    2525if(!function_exists('formatURI')) 
    26 {   
     26{ 
    2727    function formatURI( $concept = false, $id = false, $service = false ) 
    2828    { 
     
    6161 
    6262if(!function_exists('prepare')) 
    63 {   
     63{ 
    6464    function prepare( $concept, $id, $dt, &$data, &$oldIds, &$mounted, &$synced ) 
    6565    { 
     
    123123    $args = array( $args ); 
    124124 
    125 Controller::addFallbackHandler( 0, function($e){ throw $e; } ); 
     125Controller::addFallbackHandler( 0, function($e, $URI){ 
     126 
     127    throw new Exception( $e->getMessage(), 100, $e ); 
     128 
     129} ); 
     130 
     131Controller::addFallbackHandler( 100, function( $e, $URI ){ 
     132 
     133    Controller::rollback( $URI ); 
     134    throw $e; 
     135 
     136}); 
    126137 
    127138foreach( $args as $i => $data ) 
     
    161172              if( !isset($tx['order']) ) 
    162173                    continue; 
    163                
     174 
    164175                  $oldId = $oldIds[ $tx['order'] ]; 
    165176 
     
    173184                  unset( $data[$oldURI] ); 
    174185 
    175                   $return[ $oldURI ] = !$tx['rollback'] ? $dt ?  
     186                  $return[ $oldURI ] = !$tx['rollback'] ? $dt ? 
    176187                                       array( 'id' => $tx['id'] ) : false : 'ROLLBACK'; 
    177188          } 
     
    182193} 
    183194 
     195 
    184196echo json_encode( $return ); 
    185197 
    186198Controller::closeAll(); 
    187            
     199 
    188200//         ob_start(); 
    189201//         print "\n"; 
  • trunk/prototype/api/controller.php

    r6132 r6328  
    180180        public static function rollback( $URI, $criteria = false ) 
    181181        { 
     182            if( isset( $URI['service'] ) ) 
     183                unset( self::$tx[ $URI['service'] ] ); 
     184 
     185            self::$txID--; 
     186 
    182187            return self::call( 'rollback', $URI, false, $criteria ); 
    183188        } 
     
    635640            catch( Exception $e ) 
    636641            { 
    637                 if( !self::fallback( $e ) ) 
     642                if( !self::fallback( $e, $URI ) ) 
    638643                    self::closeAll(); 
    639644 
     
    644649        } 
    645650 
    646         public static function fallback( $exception ) 
     651        public static function fallback( $exception, $URI ) 
    647652        { 
    648653            $code = $exception->getCode(); 
     
    651656                { 
    652657                        $fn = self::$fallbackHandlers[ $code ]; 
    653                         return $fn( $exception ); 
     658                        return $fn( $exception, $URI ); 
    654659                } 
    655660 
     
    762767            catch( Exception $e ) 
    763768            { 
    764                 if( !self::fallback( $e ) ) 
     769                if( !self::fallback( $e, $URI ) ) 
    765770                    self::closeAll(); 
    766771 
Note: See TracChangeset for help on using the changeset viewer.