From: Chris W. <la...@us...> - 2004-09-27 04:48:58
|
Update of /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/Action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10177/lib/OpenInteract2/Action Modified Files: Common.pm Log Message: OIN-43: if a class has its ID field in a field_map, check whether the mapped fieldname is available from the request if we cannot find a value in the original ID field Index: Common.pm =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/Action/Common.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Common.pm 15 Jun 2004 00:02:21 -0000 1.16 --- Common.pm 27 Sep 2004 04:48:44 -0000 1.17 *************** *** 77,86 **** if ( $self->param( $key ) ) { $log->is_debug && ! $log->debug( "NOT settting default for [$tag]: [$key], value ", ! "already exists [", $self->param( $key ), "]" ); } else { $log->is_debug && ! $log->debug( "Setting default for [$tag]: [$key] [$value]" ); $self->param( $key, $value ); } --- 77,86 ---- if ( $self->param( $key ) ) { $log->is_debug && ! $log->debug( "NOT settting default for '$tag' = '$key', value ", ! "already exists '", $self->param( $key ), "'" ); } else { $log->is_debug && ! $log->debug( "Setting default for '$tag' = '$key' '$value'" ); $self->param( $key, $value ); } *************** *** 107,111 **** my $object_class = eval { CTX->lookup_object( $object_type ) }; if ( $@ or ! $object_class ) { ! $log->warn( "No object class for [$object_type]" ); my $msg = join( '', "Class for given object type '$object_type' ", "is undefined. Maybe a typo in your action ", --- 107,111 ---- my $object_class = eval { CTX->lookup_object( $object_type ) }; if ( $@ or ! $object_class ) { ! $log->warn( "No object class for '$object_type'" ); my $msg = join( '', "Class for given object type '$object_type' ", "is undefined. Maybe a typo in your action ", *************** *** 125,129 **** my $id_field = eval { $object_class->id_field }; if ( ! $id_field or $@ ) { ! $log->warn( "No ID field for [$object_class]" ); my $msg = join( '', "Object ID field is undefined. We cannot know ", "how to fetch an existing object without it. ", --- 125,129 ---- my $id_field = eval { $object_class->id_field }; if ( ! $id_field or $@ ) { ! $log->warn( "No ID field for '$object_class'" ); my $msg = join( '', "Object ID field is undefined. We cannot know ", "how to fetch an existing object without it. ", *************** *** 155,171 **** } my $id_field = $self->param( 'c_id_field' ); if ( ! defined $id and $id_field ) { $id = $self->param( $id_field ) ! || CTX->request->param( $id_field ) ! || CTX->request->param( 'id' ); } if ( defined $id ) { $self->param( c_id => $id ); } else { ! $log->warn( "No ID found in action/request '$id_field'" ); ! my $msg = join( '', "No value found in action parameters or ", ! "request for ID field '$id_field'." ); $self->param_add( error_msg => $msg ); return 1; --- 155,191 ---- } + my $request = CTX->request; my $id_field = $self->param( 'c_id_field' ); + my ( $alt_id_field ); if ( ! defined $id and $id_field ) { $id = $self->param( $id_field ) ! || $request->param( $id_field ) ! || $request->param( 'id' ); } + + # If it's not found using that ID field, see if we've got another + # field mapped to the given ID field in the SPOPS object + + unless ( defined $id ) { + my $object_class = $self->param( 'c_object_class' ); + my $field_map = eval { $object_class->CONFIG->{field_map} } || {}; + $alt_id_field = $field_map->{ $id_field }; + if ( $alt_id_field ) { + $id = $self->param( $alt_id_field ) + || $request->param( $alt_id_field ); + } + } + if ( defined $id ) { $self->param( c_id => $id ); } else { ! my $msg = "No value found in action parameters or " . ! "request for ID field '$id_field'"; ! if ( $alt_id_field ) { ! $msg .= " or alternative ID field '$alt_id_field'"; ! } ! $msg .= '.'; ! $log->warn( $msg ); $self->param_add( error_msg => $msg ); return 1; *************** *** 182,186 **** next unless ( $_ ); unless ( $self->param( $_ ) ) { ! $log->warn( "No value in template parameter [$_]" ); my $msg = join( '', "No template found in '$_' key. This " . "template is mandatory for the task to ", --- 202,206 ---- next unless ( $_ ); unless ( $self->param( $_ ) ) { ! $log->warn( "No value in template parameter '$_'" ); my $msg = join( '', "No template found in '$_' key. This " . "template is mandatory for the task to ", *************** *** 200,204 **** for ( @params ) { unless ( $self->param( $_ ) ) { ! $log->warn( "No value in parameter [$_]" ); my $msg = join( '', "Action parameter '$_' is undefined but ", "required for the task to function." ); --- 220,224 ---- for ( @params ) { unless ( $self->param( $_ ) ) { ! $log->warn( "No value in parameter '$_'" ); my $msg = join( '', "Action parameter '$_' is undefined but ", "required for the task to function." ); *************** *** 223,230 **** next unless ( $field ); $log->is_debug && ! $log->debug( "Setting standard [$field] in object from request" ); eval { $object->{ $field } = $request->param( $field ) }; if ( $@ ) { ! $log->warn( "Failed to set object value for [$field]: $@" ); } } --- 243,250 ---- next unless ( $field ); $log->is_debug && ! $log->debug( "Setting standard '$field' in object from request" ); eval { $object->{ $field } = $request->param( $field ) }; if ( $@ ) { ! $log->warn( "Failed to set object value for '$field': $@" ); } } *************** *** 235,242 **** next unless ( $field ); $log->is_debug && ! $log->debug( "Setting toggled [$field] in object from request" ); eval { $object->{ $field } = $request->param_toggled( $field ) }; if ( $@ ) { ! $log->warn( "Failed to set object toggle for [$field]: $@" ); } } --- 255,262 ---- next unless ( $field ); $log->is_debug && ! $log->debug( "Setting toggled '$field' in object from request" ); eval { $object->{ $field } = $request->param_toggled( $field ) }; if ( $@ ) { ! $log->warn( "Failed to set object toggle for '$field': $@" ); } } *************** *** 247,251 **** next unless ( $field ); $log->is_debug && ! $log->debug( "Setting date [$field] in object from request" ); eval { $object->{ $field }= $request->param_date( --- 267,271 ---- next unless ( $field ); $log->is_debug && ! $log->debug( "Setting date '$field' in object from request" ); eval { $object->{ $field }= $request->param_date( *************** *** 253,257 **** }; if ( $@ ) { ! $log->warn( "Failed to set object date for [$field]: $@" ); } } --- 273,277 ---- }; if ( $@ ) { ! $log->warn( "Failed to set object date for '$field': $@" ); } } *************** *** 262,266 **** next unless ( $field ); $log->is_debug && ! $log->debug( "Setting datetime [$field] in object from request" ); eval { $object->{ $field } = $request->param_datetime( --- 282,286 ---- next unless ( $field ); $log->is_debug && ! $log->debug( "Setting datetime '$field' in object from request" ); eval { $object->{ $field } = $request->param_datetime( *************** *** 268,272 **** }; if ( $@ ) { ! $log->warn( "Failed to set object datetime for [$field]: $@" ); } } --- 288,292 ---- }; if ( $@ ) { ! $log->warn( "Failed to set object datetime for '$field': $@" ); } } *************** *** 290,294 **** } $log->is_debug && ! $log->debug( "Trying to fetch [$object_class: $id]" ); my $object = eval { $object_class->fetch( $id ) }; if ( $@ ) { --- 310,314 ---- } $log->is_debug && ! $log->debug( "Trying to fetch '$object_class': '$id'" ); my $object = eval { $object_class->fetch( $id ) }; if ( $@ ) { |