r2875 - commitDeleteFile(): don't forget to call destroyTagsForEntity() (ticket...
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 16 Jun 2009 12:04:39 +0000 (12:04 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 16 Jun 2009 12:04:39 +0000 (12:04 +0000)
ChangeLog
inc/database.php
upgrade.php

index e72d89e361c48df70b40fca8bcae233c29ec1657..5d35bfb968e3e345790f063bfad1b02f26f96421 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
        bugfix: wrong port type set for WS-C2950-24. closes ticket 229 (by jthurman)
        bugfix: improved IOS detection and fixed a logic error. closes ticket 232 (by jthurman)
        bugfix: user account autotags were not generated under certain conditions (reported by Jason Hamilton)
+       bugfix: correctly remove tags, when deleting files
 0.17.1 2009-06-03
        bugfix: tags were not displayed on "File" page
        bugfix: multiline comment for an added file was stored incorrectly
index c5b4c766e30928911967edee57444f2c19355c6e..62845e795d271b9934b93483f334176301e084b4 100644 (file)
@@ -677,13 +677,13 @@ function commitDeleteObject ($object_id = 0)
 {
        global $dbxlink;
        releaseFiles ('object', $object_id);
+       destroyTagsForEntity ('object', $object_id);
        $dbxlink->query("DELETE FROM AttributeValue WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM IPv4LB WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM IPv4Allocation WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM Port WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM IPv4NAT WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM RackSpace WHERE object_id = ${object_id}");
-       $dbxlink->query("DELETE FROM TagStorage WHERE entity_realm = 'object' and entity_id = ${object_id}");
        $dbxlink->query("DELETE FROM Atom WHERE molecule_id IN (SELECT new_molecule_id FROM MountOperation WHERE object_id = ${object_id})");
        $dbxlink->query("DELETE FROM Molecule WHERE id IN (SELECT new_molecule_id FROM MountOperation WHERE object_id = ${object_id})");
        $dbxlink->query("DELETE FROM MountOperation WHERE object_id = ${object_id}");
@@ -697,10 +697,9 @@ function commitDeleteRack($rack_id)
 {
        global $dbxlink;
        releaseFiles ('rack', $rack_id);
+       destroyTagsForEntity ('rack', $rack_id);
        $query = "delete from RackSpace where rack_id = '${rack_id}'";
        $dbxlink->query ($query);
-       $query = "delete from TagStorage where entity_realm='rack' and entity_id='${rack_id}'";
-       $dbxlink->query ($query);
        $query = "delete from RackHistory where id = '${rack_id}'";
        $dbxlink->query ($query);
        $query = "delete from Rack where id = '${rack_id}'";
@@ -2882,6 +2881,8 @@ function destroyTagsForEntity ($entity_realm, $entity_id)
 }
 
 // Drop only one record. This operation doesn't involve retossing other tags, unlike when adding.
+// FIXME: this function could be used by 3rd-party scripts, dismiss it at some later point,
+// but not now.
 function deleteTagForEntity ($entity_realm, $entity_id, $tag_id)
 {
        global $dbxlink;
@@ -3472,6 +3473,7 @@ function commitUnlinkFile ($link_id)
 
 function commitDeleteFile ($file_id)
 {
+       destroyTagsForEntity ('file', $file_id);
        if (useDeleteBlade ('File', 'id', $file_id) != TRUE)
                return __FUNCTION__ . ': useDeleteBlade() failed';
        return '';
index 38658397b2fb0a9f4ac1700b6de672fe1aa1a33b..f4642168b7fc726b29fc47d6bb0ce7631cfa533a 100644 (file)
@@ -283,6 +283,8 @@ CREATE TABLE `LDAPCache` (
                                $query[] = $dict_query;
                        }
                        $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('DEFAULT_SNMP_COMMUNITY','public','string','no','no','Default SNMP Community string')";
+                       // wipe irrelevant records (ticket:250)
+                       $query[] = "DELETE FROM TagStorage WHERE entity_realm = 'file' AND entity_id NOT IN (SELECT id FROM File)";
                        $query[] = "UPDATE Config SET varvalue = '0.17.2' WHERE varname = 'DB_VERSION'";
                        break;
                default: