Index: openacs-4/packages/xowiki/tcl/xowiki-utility-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-utility-procs.tcl,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/xowiki/tcl/xowiki-utility-procs.tcl 8 Apr 2009 10:59:43 -0000 1.2 +++ openacs-4/packages/xowiki/tcl/xowiki-utility-procs.tcl 18 Apr 2009 13:48:24 -0000 1.3 @@ -86,7 +86,7 @@ } ad_proc add_ltree_order_column {} { - add page_order of type ltree, when ltree is configured (otherwise string) + Add page_order of type ltree, when ltree is configured (otherwise string) } { # catch sql statement to allow multiple runs catch {::xo::db::sql::content_type create_attribute \ @@ -211,6 +211,18 @@ close $F } + proc ::xowiki::page_order_uses_ltree {} { + if {[::xo::db::has_ltree]} { + ns_cache eval xotcl_object_cache ::xowiki::page_order_uses_ltree { + return [db_string check_po_ltree "select count(*) from pg_attribute a, pg_type t, pg_class c \ + where attname = 'page_order' and a.atttypid = t.oid and c.oid = a.attrelid \ + and relname = 'xowiki_page'"] + } + } else { + return 0 + } + } + ad_proc -public -callback subsite::url -impl apm_package { {-package_id:required} {-object_id:required} @@ -343,11 +355,11 @@ ::xowiki::utility proc get_page_order_items {-parent_id page_orders} { set likes [list] foreach page_order $page_orders { - if {[::xo::db::has_ltree]} { + if {[::xowiki::page_order_uses_ltree]} { lappend likes "p.page_order <@ '$page_order'" } else { lappend likes "p.page_order = '$page_order'" "p.page_order like '$page_order.%'" - } + } } set sql "select p.page_order, p.page_id, cr.item_id, ci.name from xowiki_page p, cr_items ci, cr_revisions cr \