diff --git a/Supporters/lib/Supporters.pm b/Supporters/lib/Supporters.pm index 1786de0..c6113aa 100644 --- a/Supporters/lib/Supporters.pm +++ b/Supporters/lib/Supporters.pm @@ -487,6 +487,40 @@ sub _verifyId($$) { } +=item _getOrCreateRequestType + +Arguments: + +=over + +=item $params (hash reference) + +This hash reference usually contains other paramaters, too, but this method +looks only at the keys C and C. If +C is set, it simply deletes the C parameter and +verifies c is in the request_type table. + +=cut + +sub _getOrCreateRequestType($$) { + my($self, $params) = @_; + + if (not defined $params->{requestTypeId}) { + $params->{requestTypeId} = $self->addRequestType($params->{requestType}); + } else { + my $id = $params->{requestTypeId}; + die "_getOrCreateRequestType(): called with a non-numeric requestTypeId" + unless defined $id and looks_like_number($id); + + my $val = $self->dbh()->selectall_hashref("SELECT id FROM request_type WHERE id = " . + $self->dbh->quote($id, 'SQL_INTEGER'), 'id'); + + die "_getOrCreateRequestType(): given requestTypeId, $id, is invalid" + unless (defined $val and defined $val->{$id}); + } + delete $params->{requestType}; +} + =item _beginWork() Parameters: