- my ($idnew, $title, $new, $lang, $expirationdate, $timestamp,$number) = @_;
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare("
- UPDATE opac_news SET
- title = ?,
- new = ?,
- lang = ?,
- expirationdate = ?,
- timestamp = ?,
- number = ?
- WHERE idnew = ?
- ");
- $sth->execute($title, $new, $lang, $expirationdate, $timestamp,$number,$idnew);
- $sth->finish;
- return 1;
+ my ($href_entry) = @_;
+ my $retval = 0;
+
+ if ($href_entry) {
+ # take the keys of hash entry and make a list, but...
+ my @fields = keys %{$href_entry};
+ my @values;
+ $#values = -1;
+ my $field_string = q{};
+ foreach my $field_name (@fields) {
+ # exclude idnew
+ if ( $field_name ne 'idnew' ) {
+ $field_string = $field_string . "$field_name = ?,";
+ push @values,$href_entry->{$field_name};
+ }
+ }
+ # put idnew at the end, so we know which record to update
+ push @values,$href_entry->{'idnew'};
+ chop $field_string; # remove that excess ,
+
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare("UPDATE opac_news SET $field_string WHERE idnew = ?;");
+ $sth->execute(@values);
+ $retval = 1;
+ }
+ return $retval;