diff --git a/lib/WebGUI/Wobject.pm b/lib/WebGUI/Wobject.pm index 67b460323..e531372c3 100644 --- a/lib/WebGUI/Wobject.pm +++ b/lib/WebGUI/Wobject.pm @@ -503,6 +503,36 @@ sub purge { WebGUI::Discussion::purge($_[0]->get("wobjectId")); } + +#------------------------------------------------------------------- + +=head2 reorderCollateral ( tableName, keyName ) + + Resequences collateral data. Typically useful after deleting a + collateral item to remove the gap created by the deletion. + +=item tableName + + The name of the table to resequence. + +=item keyName + + The key column name used to determine which data needs sorting within the table. + +=cut + +sub reorderCollateral { + my ($sth, $i, $id); + $sth = WebGUI::SQL->read("select $_[2] from $_[1] where wobjectId=".$_[0]->get("wobjectId")." order by sequenceNumber"); + while (($id) = $sth->array) { + WebGUI::SQL->write("update $_[1] set sequenceNumber='$i' where wobjectId=$_[0] and $_[2]=$id"); + $i++; + } + $sth->finish; +} + + + #------------------------------------------------------------------- =head2 set ( [ hashRef, arrayRef ] ) diff --git a/lib/WebGUI/Wobject/DownloadManager.pm b/lib/WebGUI/Wobject/DownloadManager.pm index 9b6349fa5..db902f945 100644 --- a/lib/WebGUI/Wobject/DownloadManager.pm +++ b/lib/WebGUI/Wobject/DownloadManager.pm @@ -51,18 +51,6 @@ sub sortByColumn { } - -#------------------------------------------------------------------- -sub _reorderDownloads { - my ($sth, $i, $did); - $sth = WebGUI::SQL->read("select downloadId from DownloadManager_file where wobjectId=$_[0] order by sequenceNumber"); - while (($did) = $sth->array) { - WebGUI::SQL->write("update DownloadManager_file set sequenceNumber='$i' where downloadId=$did"); - $i++; - } - $sth->finish; -} - #------------------------------------------------------------------- sub duplicate { my ($file, $w, %row, $sth, $newDownloadId); @@ -136,7 +124,7 @@ sub www_deleteDownloadConfirm { $file = WebGUI::Attachment->new("",$session{form}{wid},$session{form}{did}); $file->deleteNode; $_[0]->deleteCollateral("DownloadManager_file","downloadId",$session{form}{did}); - _reorderDownloads($session{form}{wid}); + $_[0]->reorderCollateral("DownloadManager_file","downloadId"); return ""; } else { return WebGUI::Privilege::insufficient(); @@ -268,7 +256,7 @@ sub www_editDownloadSave { dateUploaded => time(), groupToView => $session{form}{groupToView} }); - _reorderDownloads($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("DownloadManager_file","downloadId"); $file = WebGUI::Attachment->new("",$session{form}{wid},$session{form}{did}); $file->save("downloadFile"); $files{downloadFile} = $file->getFilename; diff --git a/lib/WebGUI/Wobject/FAQ.pm b/lib/WebGUI/Wobject/FAQ.pm index 65526a14f..c2952cb61 100644 --- a/lib/WebGUI/Wobject/FAQ.pm +++ b/lib/WebGUI/Wobject/FAQ.pm @@ -26,17 +26,6 @@ our $namespace = "FAQ"; our $name = WebGUI::International::get(2,$namespace); -#------------------------------------------------------------------- -sub _reorderQuestions { - my ($sth, $i, $qid); - $sth = WebGUI::SQL->read("select questionId from FAQ_question where wobjectId=$_[0] order by sequenceNumber"); - while (($qid) = $sth->array) { - WebGUI::SQL->write("update FAQ_question set sequenceNumber='$i' where questionId=$qid"); - $i++; - } - $sth->finish; -} - #------------------------------------------------------------------- sub duplicate { my ($w, %data, $newQuestionId, $sth); @@ -83,7 +72,7 @@ sub www_deleteQuestionConfirm { my ($output); if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("FAQ_question","questionId",$session{form}{qid}); - _reorderQuestions($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("FAQ_question","questionId"); return ""; } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Wobject/LinkList.pm b/lib/WebGUI/Wobject/LinkList.pm index 8bfca7dd4..bf5440612 100644 --- a/lib/WebGUI/Wobject/LinkList.pm +++ b/lib/WebGUI/Wobject/LinkList.pm @@ -27,17 +27,6 @@ our $namespace = "LinkList"; our $name = WebGUI::International::get(6,$namespace); -#------------------------------------------------------------------- -sub _reorderLinks { - my ($sth, $i, $lid); - $sth = WebGUI::SQL->read("select linkId from LinkList_link where wobjectId=$_[0] order by sequenceNumber"); - while (($lid) = $sth->array) { - WebGUI::SQL->write("update LinkList_link set sequenceNumber='$i' where linkId=$lid"); - $i++; - } - $sth->finish; -} - #------------------------------------------------------------------- sub duplicate { my ($w, $sth, @row, $newLinkId); @@ -83,7 +72,7 @@ sub www_deleteLinkConfirm { my ($output); if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("LinkList_link","linkId",$session{form}{lid}); - _reorderLinks($session{form}{wid}); + $_[0]->reorderCollateral("LinkList_link","linkId"); return ""; } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Wobject/MailForm.pm b/lib/WebGUI/Wobject/MailForm.pm index 24224d524..c4ef64eb5 100755 --- a/lib/WebGUI/Wobject/MailForm.pm +++ b/lib/WebGUI/Wobject/MailForm.pm @@ -29,17 +29,6 @@ our $name = WebGUI::International::get(1,$namespace); our @fields = qw(width fromField fromStatus toField toStatus ccField ccStatus bccField bccStatus subjectField subjectStatus acknowledgement storeEntries); -#------------------------------------------------------------------- -sub _reorderFields { - my ($sth, $i, $fid); - $sth = WebGUI::SQL->read("select mailFieldId from MailForm_field where wobjectId=$_[0] order by sequenceNumber"); - while (($fid) = $sth->array) { - WebGUI::SQL->write("update MailForm_field set sequenceNumber='$i' where mailFieldId=$fid"); - $i++; - } - $sth->finish; -} - #------------------------------------------------------------------- sub duplicate { my ($w, %data, $newFieldId, $sth); @@ -104,7 +93,7 @@ sub www_deleteFieldConfirm { my ($output); if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("MailForm_field","mailFieldId",$session{form}{fid}); - _reorderFields($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("MailForm_field","mailFieldId"); return ""; } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Wobject/Product.pm b/lib/WebGUI/Wobject/Product.pm index c7f971b5a..ae60d186f 100644 --- a/lib/WebGUI/Wobject/Product.pm +++ b/lib/WebGUI/Wobject/Product.pm @@ -27,68 +27,6 @@ our $namespace = "Product"; our $name = WebGUI::International::get(1,$namespace); -#------------------------------------------------------------------- -sub _reorderAccessories { - my ($sth, $i, $id); - $sth = WebGUI::SQL->read("select accessoryWobjectId from - Product_accessory where wobjectId=$_[0] order by sequenceNumber"); - while (($id) = $sth->array) { - WebGUI::SQL->write("update Product_accessory set sequenceNumber='$i' - where wobjectId=$_[0] and accessoryWobjectId=$id"); - $i++; - } - $sth->finish; -} - -#------------------------------------------------------------------- -sub _reorderBenefits { - my ($sth, $i, $id); - $sth = WebGUI::SQL->read("select productBenefitId from - Product_benefit where wobjectId=$_[0] order by sequenceNumber"); - while (($id) = $sth->array) { - WebGUI::SQL->write("update Product_benefit set sequenceNumber='$i' where productBenefitId=$id"); - $i++; - } - $sth->finish; -} - -#------------------------------------------------------------------- -sub _reorderFeatures { - my ($sth, $i, $id); - $sth = WebGUI::SQL->read("select productFeatureId from - Product_feature where wobjectId=$_[0] order by sequenceNumber"); - while (($id) = $sth->array) { - WebGUI::SQL->write("update Product_feature set sequenceNumber='$i' where productFeatureId=$id"); - $i++; - } - $sth->finish; -} - -#------------------------------------------------------------------- -sub _reorderRelated { - my ($sth, $i, $id); - $sth = WebGUI::SQL->read("select relatedWobjectId from - Product_related where wobjectId=$_[0] order by sequenceNumber"); - while (($id) = $sth->array) { - WebGUI::SQL->write("update Product_related set sequenceNumber='$i' - where wobjectId=$_[0] and relatedWobjectId=$id"); - $i++; - } - $sth->finish; -} - -#------------------------------------------------------------------- -sub _reorderSpecifications { - my ($sth, $i, $id); - $sth = WebGUI::SQL->read("select productSpecificationId from - Product_specification where wobjectId=$_[0] order by sequenceNumber"); - while (($id) = $sth->array) { - WebGUI::SQL->write("update Product_specification set sequenceNumber='$i' where productSpecificationId=$id"); - $i++; - } - $sth->finish; -} - #------------------------------------------------------------------- sub duplicate { my ($w, $file, %data, $newId, $sth); @@ -283,7 +221,7 @@ sub www_deleteAccessoryConfirm { if (WebGUI::Privilege::canEditPage()) { WebGUI::SQL->write("delete from Product_accessory where wobjectId=$session{form}{wid} and accessoryWobjectId=$session{form}{aid}"); - _reorderAccessories($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("Product_accessory","accessoryWobjectId"); return ""; } else { return WebGUI::Privilege::insufficient(); @@ -302,7 +240,7 @@ sub www_deleteBenefit { sub www_deleteBenefitConfirm { if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("Product_benefit","productBenefitId",$session{form}{bid}); - _reorderBenefits($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("Product_benefit","productBenefitId"); return ""; } else { return WebGUI::Privilege::insufficient(); @@ -321,7 +259,7 @@ sub www_deleteFeature { sub www_deleteFeatureConfirm { if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("Product_feature","productFeatureId",$session{form}{fid}); - _reorderFeatures($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("Product_feature","productFeatureId"); return ""; } else { return WebGUI::Privilege::insufficient(); @@ -341,7 +279,7 @@ sub www_deleteRelatedConfirm { if (WebGUI::Privilege::canEditPage()) { WebGUI::SQL->write("delete from Product_related where wobjectId=$session{form}{wid} and relatedWobjectId=$session{form}{rid}"); - _reorderRelated($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("Product_related","relatedWobjectId"); return ""; } else { return WebGUI::Privilege::insufficient(); @@ -360,7 +298,7 @@ sub www_deleteSpecification { sub www_deleteSpecificationConfirm { if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("Product_specification","productSpecificationId",$session{form}{sid}); - _reorderSpecifications($_[0]->get("wobjectId")); + $_[0]->reorderCollateral("Product_specification","productSpecificationId"); return ""; } else { return WebGUI::Privilege::insufficient();