- fix: Old registrants appear in new EMS asset

http://www.plainblack.com/bugs/tracker/old-registrants-appear-in-new-ems-asset
This commit is contained in:
JT Smith 2007-05-22 01:57:53 +00:00
parent 0e0e4acc81
commit 52c722dcfd
3 changed files with 173 additions and 81 deletions

View file

@ -1,4 +1,7 @@
7.3.18 7.3.18
- fix: Old registrants appear in new EMS asset
http://www.plainblack.com/bugs/tracker/old-registrants-appear-in-new-ems-asset
- fix: a bunch of EMS related bugs
- fix: If no sysnopsis exists, the asset inherits the parents' (perlDreamer Consulting, LLC) - fix: If no sysnopsis exists, the asset inherits the parents' (perlDreamer Consulting, LLC)
http://www.plainblack.com/bugs/tracker/if-no-sysnopsis-exists-the-asset-inherits-the-parents#VVesdkBSTm3neKRaKCJxKw http://www.plainblack.com/bugs/tracker/if-no-sysnopsis-exists-the-asset-inherits-the-parents#VVesdkBSTm3neKRaKCJxKw
- fix: diskUsage.pl (perlDreamer Consulting, LLC) - fix: diskUsage.pl (perlDreamer Consulting, LLC)

View file

@ -20,17 +20,55 @@ my $quiet; # this line required
my $session = start(); # this line required my $session = start(); # this line required
# upgrade functions go here fixEmsBadges($session);
finish($session); # this line required finish($session); # this line required
##------------------------------------------------- #-------------------------------------------------
#sub exampleFunction { sub fixEmsBadges {
# my $session = shift; my $session = shift;
# print "\tWe're doing some stuff here that you should know about.\n" unless ($quiet); print "\tAttaching EMS Badges to their EMS.\n" unless ($quiet);
# # and here's our code my $db = $session->db;
#} # give tables an asset id that should have it
$db->write("alter table EventManagementSystem_badges add column assetId varchar(22) binary");
$db->write("alter table EventManagementSystem_prerequisites add column assetId varchar(22) binary");
$db->write("alter table EventManagementSystem_registrations add column assetId varchar(22) binary");
my $sth = $db->read("select badgeId,asset.assetId from EventManagementSystem_badges
left join EventManagementSystem_registrations using (badgeId) left join EventManagementSystem_products using
(productId) left join asset on (asset.assetId=EventManagementSystem_products.assetId);");
while (my ($badgeId, $assetId) = $sth->array) {
$db->write("update EventManagementSystem_badges set assetId=? where badgeId=?", [$assetId, $badgeId]);
$db->write("update EventManagementSystem_registrations set assetId=? where badgeId=?", [$assetId, $badgeId]);
}
my $sth = $db->read("select EventManagementSystem_prerequisites.prerequisiteId,
EventManagementSystem_products.assetId from EventManagementSystem_prerequisites left join
EventManagementSystem_prerequisiteEvents using (prerequisiteId) left join EventManagementSystem_products on
(EventManagementSystem_products.productId=EventManagementSystem_prerequisiteEvents.requiredProductId)");
while (my ($prereqId, $assetId) = $sth->array) {
$db->write("update EventManagementSystem_prerequisites set assetId=? where prerequisiteId=?", [$prereqId,
$assetId]);
}
# delete badge data for which there is no asset
$db->write("delete from EventManagementSystem_badges where assetId is null");
$db->write("delete from EventManagementSystem_registrations where assetId is null");
# delete field data for which there is no asset
my $sth = $db->read("select EventManagementSystem_metaField.fieldId
from EventManagementSystem_metaField left join asset on
(EventManagementSystem_metaField.assetId=asset.assetId) where asset.assetId is null");
while (my ($fieldId) = $sth->array) {
$db->write("delete from EventManagementSystem_metaData where fieldId=?",[$fieldId]);
$db->write("delete from EventManagementSystem_metaField where fieldId=?",[$fieldId]);
}
# delete prereqs for which there is no asset
my $sth = $db->read("select EventManagementSystem_prerequisites.prerequisiteId from
EventManagementSystem_prerequisites left join asset using (assetId) where asset.assetId is null");
while (my ($id) = $sth->array) {
$db->write("delete from EventManagementSystem_prerequisites where prerequisiteId=?",[$id]);
$db->write("delete from EventManagementSystem_prerequisiteEvents where prerequisiteId=?",[$id]);
}
}

View file

@ -530,28 +530,87 @@ sub definition {
#------------------------------------------------------------------ #------------------------------------------------------------------
=head2 deleteOrphans ( ) =head2 deleteBadge ( id )
Utility method that checks for prerequisite groupings that no longer have any events assigned to them and deletes it Delete a badge.
=cut =cut
sub deleteOrphans { sub deleteBadge {
my $self = shift; my $self = shift;
my $id = shift;
$self->deleteCollateral('EventManagementSystem_badges', 'badgeId', $id);
}
# MSW Note - as this is on 4/27/2006, I don't think query will ever return any results. #------------------------------------------------------------------
#Check for orphaned prerequisite definitions =head2 deleteEvent ( id )
my @orphans = $self->session->db->quickArray("select p.prerequisiteId from EventManagementSystem_prerequisites as p
left join EventManagementSystem_prerequisiteEvents as pe Delete an event.
on p.prerequisiteId = pe.prerequisiteId
where pe.prerequisiteId is null"); =cut
foreach my $orphan (@orphans) {
$self->session->db->write("delete from EventManagementSystem_prerequisites where prerequisiteId=". sub deleteEvent {
$self->session->db->quote($orphan)); my $self = shift;
my $id = shift;
my $db = $self->session->db;
$self->deletePrereq($id);
$self->deleteCollateral('EventManagementSystem_registrations', 'productId', $id);
$self->deleteCollateral('EventManagementSystem_products', 'productId', $id);
$self->deleteCollateral('products','productId',$id);
$self->reorderCollateral('EventManagementSystem_products', 'productId');
}
#------------------------------------------------------------------
=head2 deleteMetaField ( id )
Delete a meta field, and thusly metadata associated with that field.
=cut
sub deleteMetaField {
my $self = shift;
my $id = shift;
$self->deleteCollateral('EventManagementSystem_metaData', 'fieldId', $id); # deleteCollateral doesn't care about assetId.
$self->deleteCollateral('EventManagementSystem_metaField', 'fieldId', $id);
$self->reorderCollateral('EventManagementSystem_metaField', 'fieldId');
}
} #------------------------------------------------------------------
=head2 deletePrereq ( id )
Delete a prerequisite.
=head3 id
a valid event/product id
=cut
sub deletePrereq {
my $self = shift;
my $id = shift;
$self->deleteCollateral('EventManagementSystem_prerequisiteEvents', 'requiredProductId', $id);
}
#------------------------------------------------------------------
=head2 deletePrereqSet ( id )
Delete a prerequisite set.
=cut
sub deletePrereqSet {
my $self = shift;
my $id = shift;
$self->deleteCollateral('EventManagementSystem_prerequisiteEvents', 'prerequisiteId', $id);
$self->deleteCollateral('EventManagementSystem_prerequisites', 'prerequisiteId', $id);
$self->session->db->write("update EventManagementSystem_product set prerequisiteId=null where
prerequisiteId=?", [$id]);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -965,6 +1024,35 @@ sub prerequisiteIsMet {
} }
#------------------------------------------------------------------
sub purge {
my $self = shift;
my $db = $self->session->db;
# delete meta fields
my $sth = $db->read("select fieldId from EventManagementSystem_metaField where assetId=?",[$self->getId]);
while (my ($id) = $sth->array) {
$self->deleteMetaField($id);
}
# delete events
my $sth = $db->read("select productId from EventManagementSystem_products where assetId=?",[$self->getId]);
while (my ($id) = $sth->array) {
$self->deleteEvent($id);
}
# delete prereqs
my $sth = $db->read("select prerequisiteId from EventManagementSystem_prerequisites where assetId=?",[$self->getId]);
while (my ($id) = $sth->array) {
$self->deletePrereqSet($id);
}
# delete badges
my $sth = $db->read("select fieldId from EventManagementSystem_badges where assetId=?",[$self->getId]);
while (my ($id) = $sth->array) {
$self->deleteBadge($id);
}
$self->SUPER::purge(@_);
}
#------------------------------------------------------------------ #------------------------------------------------------------------
sub removeFromScratchCart { sub removeFromScratchCart {
my $self = shift; my $self = shift;
@ -1556,42 +1644,23 @@ Method to delete an event, and to remove the deleted event from all prerequisite
sub www_deleteEvent { sub www_deleteEvent {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("pid");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->deleteEvent($self->session->form->get("pid"));
#Remove this event as a prerequisite to any other event
$self->session->db->write("delete from EventManagementSystem_prerequisiteEvents where requiredProductId=?",
[$eventId]);
$self->deleteOrphans;
#Remove the event
$self->deleteCollateral('EventManagementSystem_products', 'productId', $eventId);
$self->deleteCollateral('products','productId',$eventId);
$self->reorderCollateral('EventManagementSystem_products', 'productId');
return $self->www_search; return $self->www_search;
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 www_deletePrerequisite ( ) =head2 www_deletePrereqSet ( )
Method to delete a prerequisite assignment of one event to another Method to delete a prerequisite assignment of one event to another
=cut =cut
sub www_deletePrerequisite { sub www_deletePrereqSet {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("id");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->deletePrereqSet($self->session->form->get("psid"));
$self->session->db->write("delete from EventManagementSystem_prerequisiteEvents where prerequisiteId=?",
[$eventId]);
$self->session->db->write("delete from EventManagementSystem_prerequisites where prerequisiteId=?",
[$eventId]);
return $self->www_editEvent; return $self->www_editEvent;
} }
@ -2531,12 +2600,8 @@ Method to move an event down one position in display order
sub www_moveEventMetaDataFieldDown { sub www_moveEventMetaDataFieldDown {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("fieldId");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->moveCollateralDown('EventManagementSystem_metaField', 'fieldId', $self->session->form->get("fieldId"));
$self->moveCollateralDown('EventManagementSystem_metaField', 'fieldId', $eventId);
return $self->www_manageEventMetadata; return $self->www_manageEventMetadata;
} }
@ -2550,12 +2615,8 @@ Method to move an event metdata field up one position in display order
sub www_moveEventMetaDataFieldUp { sub www_moveEventMetaDataFieldUp {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("fieldId");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->moveCollateralUp('EventManagementSystem_metaField', 'fieldId', $self->session->form->get("fieldId"));
$self->moveCollateralUp('EventManagementSystem_metaField', 'fieldId', $eventId);
return $self->www_manageEventMetadata; return $self->www_manageEventMetadata;
} }
@ -2570,14 +2631,8 @@ Method to move an event metdata field up one position in display order
sub www_deleteEventMetaDataField { sub www_deleteEventMetaDataField {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("fieldId");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->deleteMetaField($self->session->form->get("fieldId"));
$self->deleteCollateral('EventManagementSystem_metaField', 'fieldId', $eventId);
$self->reorderCollateral('EventManagementSystem_metaField', 'fieldId');
$self->deleteCollateral('EventManagementSystem_metaData', 'fieldId', $eventId); # deleteCollateral doesn't care about assetId.
return $self->www_manageEventMetadata; return $self->www_manageEventMetadata;
} }
@ -2591,12 +2646,8 @@ Method to move an event down one position in display order
sub www_moveEventDown { sub www_moveEventDown {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("pid");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->moveCollateralDown('EventManagementSystem_products', 'productId', $self->session->form->get("pid"));
$self->moveCollateralDown('EventManagementSystem_products', 'productId', $eventId);
return $self->www_search; return $self->www_search;
} }
@ -2610,12 +2661,8 @@ Method to move an event up one position in display order
sub www_moveEventUp { sub www_moveEventUp {
my $self = shift; my $self = shift;
my $eventId = $self->session->form->get("pid");
return $self->session->privilege->insufficient unless ($self->canAddEvents); return $self->session->privilege->insufficient unless ($self->canAddEvents);
$self->moveCollateralUp('EventManagementSystem_products', 'productId', $self->session->form->get("pid"));
$self->moveCollateralUp('EventManagementSystem_products', 'productId', $eventId);
return $self->www_search; return $self->www_search;
} }
@ -2637,11 +2684,12 @@ sub saveRegistration {
next if isIn($eventId,@addingToPurchase); next if isIn($eventId,@addingToPurchase);
next if isIn($eventId,@badgeEvents); next if isIn($eventId,@badgeEvents);
my $registrationId = $self->setCollateral("EventManagementSystem_registrations", "registrationId",{ my $registrationId = $self->setCollateral("EventManagementSystem_registrations", "registrationId",{
assetId => $self->getId,
registrationId => "new", registrationId => "new",
purchaseId => $purchaseId, purchaseId => $purchaseId,
productId => $eventId, productId => $eventId,
badgeId => $badgeId badgeId => $badgeId,
},0,0); },0,0);
$shoppingCart->add($eventId, 'Event'); $shoppingCart->add($eventId, 'Event');
$addedAny = 1; $addedAny = 1;
} }
@ -2724,6 +2772,7 @@ sub www_saveRegistrantInfo {
my $details = { my $details = {
badgeId => $badgeId, # if this is "new", setCollateral will return the new one. badgeId => $badgeId, # if this is "new", setCollateral will return the new one.
assetId => $self->getId,
firstName => $firstName, firstName => $firstName,
lastName => $lastName, lastName => $lastName,
address => $address, address => $address,
@ -3373,6 +3422,7 @@ sub www_editPrereqSetSave {
my $psid = $self->session->form->process('psid'); my $psid = $self->session->form->process('psid');
$psid = $self->setCollateral("EventManagementSystem_prerequisites", "prerequisiteId",{ $psid = $self->setCollateral("EventManagementSystem_prerequisites", "prerequisiteId",{
prerequisiteId=>$psid, prerequisiteId=>$psid,
assetId=>$self->getId,
name => $self->session->form->process("name"), name => $self->session->form->process("name"),
operator => $self->session->form->process("operator",'radioList') operator => $self->session->form->process("operator",'radioList')
},0,0); },0,0);
@ -3408,16 +3458,16 @@ sub www_manageRegistrants {
my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem');
my $output; my $output;
my $sql = "select * from EventManagementSystem_badges order by lastName, firstName"; my $sql = "select * from EventManagementSystem_badges where assetId=? order by lastName, firstName";
my $p = WebGUI::Paginator->new($self->session,$self->getUrl('func=manageRegistrants'),50); my $p = WebGUI::Paginator->new($self->session,$self->getUrl('func=manageRegistrants'),50);
$p->setDataByArrayRef($self->session->db->buildArrayRefOfHashRefs($sql)); #$p->setDataByArrayRef($self->session->db->buildArrayRefOfHashRefs($sql),[$self->getId]);
my $data = $p->getPageData; $p->setDataByQuery($sql,undef,undef,[$self->getId]);
$p->setAlphabeticalKey('lastName'); $p->setAlphabeticalKey('lastName');
foreach (@$data) { foreach my $badge (@{$p->getPageData}) {
$output .= "<div>"; $output .= "<div>";
# $output .= $self->session->icon->delete('func=deleteRegistrant;psid='.$_->{badgeId}, $self->get('url')); # $output .= $self->session->icon->delete('func=deleteRegistrant;psid='.$_->{badgeId}, $self->get('url'));
$output .= $self->session->icon->edit('func=editRegistrant;badgeId='.$_->{badgeId}, $self->get('url')). $output .= $self->session->icon->edit('func=editRegistrant;badgeId='.$badge->{badgeId}, $self->get('url')).
"&nbsp;&nbsp;".$_->{lastName}.",&nbsp;".$_->{firstName}."&nbsp;&nbsp;(&nbsp;".$_->{email}."&nbsp;)</div>"; "&nbsp;&nbsp;".$badge->{lastName}.",&nbsp;".$badge->{firstName}."&nbsp;&nbsp;(&nbsp;".$badge->{email}."&nbsp;)</div>";
} }
$output .= '<div>'.$p->getBarAdvanced.'</div>'; $output .= '<div>'.$p->getBarAdvanced.'</div>';
$self->getAdminConsole->addSubmenuItem($self->getUrl('func=editRegistrant;badgeId=new'), $i18n->get('add registrant')); $self->getAdminConsole->addSubmenuItem($self->getUrl('func=editRegistrant;badgeId=new'), $i18n->get('add registrant'));
@ -3582,6 +3632,7 @@ sub www_editRegistrantSave {
my $addingNew = ($userId eq 'new') ? 1 : 0; my $addingNew = ($userId eq 'new') ? 1 : 0;
my $details = { my $details = {
badgeId => $badgeId, # if this is "new", setCollateral will return the new one. badgeId => $badgeId, # if this is "new", setCollateral will return the new one.
assetId => $self->getId,
firstName => $firstName, firstName => $firstName,
lastName => $lastName, lastName => $lastName,
'address' => $address, 'address' => $address,