diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index 779198c1a..5c9a610b3 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -27,6 +27,7 @@ - fix: select all checkbox does not work on clipboard / asset manager in IE - fix: yes/no required profile fields evaluate as false if user chooses no - fix: Shortcuts w/multiple criteria + - fix: Search displays already deleted files 6.99.4 diff --git a/lib/WebGUI/AssetTrash.pm b/lib/WebGUI/AssetTrash.pm index 19f07dd0f..073f0754f 100644 --- a/lib/WebGUI/AssetTrash.pm +++ b/lib/WebGUI/AssetTrash.pm @@ -106,6 +106,7 @@ sub purge { $self->session->db->write("delete from ".$definition->{tableName}." where assetId=".$self->session->db->quote($self->getId)); } $self->session->db->write("delete from metaData_values where assetId = ".$self->session->db->quote($self->getId)); + $self->session->db->write("delete from assetIndex where assetId=".$self->session->db->quote($self->getId)); $self->session->db->write("delete from asset where assetId=".$self->session->db->quote($self->getId)); $self->session->db->commit; $self->purgeCache; @@ -126,10 +127,15 @@ Removes asset from lineage, places it in trash state. The "gap" in the lineage i sub trash { my $self = shift; return undef if ($self->getId eq $self->session->setting->get("defaultPage") || $self->getId eq $self->session->setting->get("notFoundPage")); - $self->session->db->beginTransaction; - $self->session->db->write("update asset set state='trash-limbo' where lineage like ".$self->session->db->quote($self->get("lineage").'%')); - $self->session->db->write("update asset set state='trash', stateChangedBy=".$self->session->db->quote($self->session->user->userId).", stateChanged=".$self->session->datetime->time()." where assetId=".$self->session->db->quote($self->getId)); - $self->session->db->commit; + my $db = $self->session->db; + $db->beginTransaction; + my $sth = $db->read("select assetId from asset where lineage like ?",[$self->get("lineage").'%']); + while (my ($id) = $sth->array) { + $db->write("delete from assetIndex where assetId=?",[$id]); + } + $db->write("update asset set state='trash-limbo' where lineage like ?",[$self->get("lineage").'%']); + $db->write("update asset set state='trash', stateChangedBy=?, stateChanged=? where assetId=?",[$self->session->user->userId, $self->session->datetime->time(), $self->getId]); + $db->commit; $self->{_properties}{state} = "trash"; $self->updateHistory("trashed"); $self->purgeCache; diff --git a/sbin/search.pl b/sbin/search.pl index c23893b3b..3d6dae56d 100644 --- a/sbin/search.pl +++ b/sbin/search.pl @@ -110,7 +110,7 @@ sub reindexSite { my $rs = $session->db->read("select assetId, className from asset where state='published'"); while (my ($id, $class) = $rs->array) { my $asset = WebGUI::Asset->new($session,$id,$class); - if (defined $asset && $asset->get("status") eq "approved" || defined $asset && $asset->get("status") eq "archived") { + if (defined $asset && $asset->get("state") eq "published" && ($asset->get("status") eq "approved" || $asset->get("status") eq "archived")) { print $asset->getId."\t".$asset->getTitle."\t"; my $t = [Time::HiRes::gettimeofday()]; $asset->indexContent;