gustafn
committed
on 05 Aug 24
remove leftovers of the acs-core-ui, which does not exist anymore since at least 20 years
openacs-4/.../tcl/site-nodes-procs.tcl (+11 -2)
88 88     # (and thus not triggering reference constraint errors)
89 89     set queue [list $node_id]
90 90     while {$queue ne ""} {
91 91         set parent_id [lindex $queue 0]
92 92         lappend nodes_to_delete $parent_id
93 93         set queue [lrange $queue 1 end]
94 94         lappend queue {*}[site_node::get_children \
95 95                               -element "node_id" \
96 96                               -node_id $parent_id]
97 97     }
98 98
99 99     # delete nodes in reverse order, starting from leaves
100 100     foreach node_id [lreverse $nodes_to_delete] {
101 101         # first delete package_id under this node...
102 102         set package_id [site_node::get_object_id -node_id $node_id]
103 103         set url [site_node::get_url -node_id $node_id]
104 104         if {$delete_package_p} {
105 105             apm_package_instance_delete $package_id
106 106         }
107 107         # ...then the node itself
  108         #
  109         # TODO: The names of the function in the database should be
  110         # aligned.
  111         #
  112         if {[db_driverkey ""] eq "oracle"} {
  113             acs::dc call site_node del -node_id $node_id
  114         } else {
108 115             acs::dc call site_node delete -node_id $node_id
  116         }
  117         acs::dc call site_node delete -node_id $node_id
109 118         update_cache -node_id $node_id -url $url -object_id $package_id
110 119     }
111 120 }
112 121
113 122 ad_proc -public site_node::rename {
114 123     {-node_id:required}
115 124     {-name:required}
116 125 } {
117 126     Rename the site node.
118 127 } {
119 128     # We need to update the cache for all the child nodes as well
120 129     set node_url [get_url -node_id $node_id]
121 130     set child_node_ids [get_children -all -node_id $node_id -element node_id]
122 131     set node_object_id [dict get [site_node::get -node_id $node_id] object_id]
123 132
124 133     db_dml rename_node {}
125 134     db_dml update_object_title {}
126 135
127 136     update_cache -sync_children -node_id $node_id -url $node_url -object_id $node_object_id
128 137 }
 
592 601             {-package_type ""}
593 602             {-package_key ""}
594 603             {-filters ""}
595 604             {-element ""}
596 605         } {
597 606             #
598 607             # Filtering happens here exactly like in the nsv-based
599 608             # version. If should be possible to realize (at least
600 609             # some of the) filtering via the SQL query.
601 610             #
602 611             if {$all} {
603 612                 #
604 613                 # The following query is just for PG.  Note that
605 614                 # the query should not return the root of the
606 615                 # tree.
607 616                 #
608 617                 set sql [subst {
609 618                     WITH RECURSIVE site_node_tree(node_id, parent_id) AS (
610 619                       select node_id, parent_id from site_nodes where node_id = :node_id
611 620                     UNION ALL
612                         select child.node_id, child.parent_id from site_node_tree, site_nodes as child
  621                       select child.node_id, child.parent_id from site_node_tree, site_nodes child
613 622                       where  child.parent_id = site_node_tree.node_id
614 623                     ) select [acs::dc map_function_name site_node__url(node_id)]
615 624                     from site_node_tree where node_id != :node_id
616 625                 }]
617 626                 if {[db_driverkey ""] eq "oracle"} {
618 627                     set sql [string map [list "WITH RECURSIVE" "WITH"] $sql]
619 628                 }
620 629
621 630                 set child_urls [::acs::dc list -prepare integer [current method]-all $sql]
622 631             } else {
623 632                 if {$package_key ne ""} {
624 633                     #
625 634                     # Simple optimization for package_keys; seems to be frequently used.
626 635                     # We leave the logic below unmodified, which could be optimized as well.
627 636                     #
628 637                     set package_key_clause "and package_id = object_id and package_key = :package_key"
629 638                     set from "site_nodes, apm_packages"
630 639                 } else {
631 640                     set package_key_clause ""
632 641                     set from "site_nodes"
 
986 995
987 996             if {$node_id eq "" || $old_url eq "/"} {
988 997                 #
989 998                 # When no node_id is given or the URL is specified
990 999                 # as top-url, flush all caches. This happens
991 1000                 # e.g. in the regression test.
992 1001                 #
993 1002                 #ns_log notice "FLUSHALL"
994 1003                 ::acs::site_nodes_cache flush_all
995 1004                 ::acs::site_nodes_id_cache flush_all
996 1005                 ::acs::site_nodes_children_cache flush_all
997 1006
998 1007             } else {
999 1008                 #
1000 1009                 # Get subtree from db
1001 1010                 #
1002 1011                 set sql [subst {
1003 1012                     WITH RECURSIVE site_node_tree(node_id,parent_id,object_id)  AS (
1004 1013                       select node_id, parent_id, object_id from site_nodes where node_id = :node_id
1005 1014                     UNION ALL
1006                         select child.node_id, child.parent_id, child.object_id from site_node_tree, site_nodes as child
  1015                       select child.node_id, child.parent_id, child.object_id from site_node_tree, site_nodes child
1007 1016                       where  child.parent_id = site_node_tree.node_id
1008 1017                       and :with_subtree
1009 1018                     )
1010 1019                     select [acs::dc map_function_name site_node__url(node_id)], node_id, object_id
1011 1020                     from site_node_tree
1012 1021                 }]
1013 1022                 if {[db_driverkey ""] eq "oracle"} {
1014 1023                     set sql [string map [list "WITH RECURSIVE" "WITH"] $sql]
1015 1024                 }
1016 1025
1017 1026                 set tree [::acs::dc list_of_lists -prepare {integer boolean} dbqd..get_subtree $sql]
1018 1027
1019 1028                 foreach entry $tree {
1020 1029                     lassign $entry url node_id object_id
1021 1030                     foreach key [list $node_id url-$node_id] {
1022 1031                         ::acs::site_nodes_cache flush -partition_key $node_id $key
1023 1032                     }
1024 1033                     if {$object_id ne ""} {
1025 1034                         ::acs::site_nodes_cache flush -partition_key $object_id urls-$object_id
1026 1035                     }