fixed #10146: Thingy duplicate errors
This commit is contained in:
parent
2b8306a635
commit
2c93df1bf7
2 changed files with 29 additions and 3 deletions
|
|
@ -33,6 +33,7 @@
|
|||
to increment or decrement the number enter. If slider constraints are blank, no rules applied.
|
||||
- added: ThingyRecord allows you to sell records in a Thingy (like a classified ad)
|
||||
- fixed: #10109: Matrix 2.0 - Updates to product listing by maintainer account require admin approval
|
||||
- fixed #10146: Thingy duplicate errors
|
||||
|
||||
7.7.3
|
||||
- fixed #10094: double explanation in thread help
|
||||
|
|
|
|||
|
|
@ -292,19 +292,44 @@ sub duplicate {
|
|||
my $assetId = $self->get("assetId");
|
||||
my $fields;
|
||||
|
||||
my $otherThingFields = $db->buildHashRefOfHashRefs(
|
||||
"select fieldType, fieldId, right(fieldType,22) as otherThingId, fieldInOtherThingId from Thingy_fields
|
||||
where fieldType like 'otherThing_%' and assetId = ?",
|
||||
[$assetId],'fieldInOtherThingId'
|
||||
);
|
||||
|
||||
my $things = $self->getThings;
|
||||
while ( my $thing = $things->hashRef) {
|
||||
my $oldThingId = $thing->{thingId};
|
||||
my $newThingId = $newAsset->addThing($thing,0);
|
||||
my $oldSortBy = $thing->{sortBy};
|
||||
my $oldThingId = $thing->{thingId};
|
||||
my $newThingId = $newAsset->addThing($thing,0);
|
||||
$fields = $db->buildArrayRefOfHashRefs('select * from Thingy_fields where assetId=? and thingId=?'
|
||||
,[$assetId,$oldThingId]);
|
||||
foreach my $field (@$fields) {
|
||||
# set thingId to newly created thing's id.
|
||||
$field->{thingId} = $newThingId;
|
||||
|
||||
my $originalFieldId = $field->{fieldId};
|
||||
|
||||
$newAsset->addField($field,0);
|
||||
my $newFieldId = $newAsset->addField($field,0);
|
||||
if ($originalFieldId eq $oldSortBy){
|
||||
$self->session->db->write( "update Thingy_things set sortBy = ? where thingId = ?",
|
||||
[ $newFieldId, $newThingId ] );
|
||||
}
|
||||
|
||||
if ($otherThingFields->{$originalFieldId}){
|
||||
$otherThingFields->{$originalFieldId}->{newFieldType} = 'otherThing_'.$newThingId;
|
||||
$otherThingFields->{$originalFieldId}->{newFieldId} = $newFieldId;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach my $otherThingField (keys %$otherThingFields){
|
||||
$db->write('update Thingy_fields set fieldType = ?, fieldInOtherThingId = ?
|
||||
where fieldInOtherThingId = ? and assetId = ?',
|
||||
[$otherThingFields->{$otherThingField}->{newFieldType},
|
||||
$otherThingFields->{$otherThingField}->{newFieldId},
|
||||
$otherThingFields->{$otherThingField}->{fieldInOtherThingId}, $newAsset->get('assetId')]);
|
||||
}
|
||||
return $newAsset;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue