From 5e38098c6cdc4b53970cd34d04bc5a5982380821 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Sat, 24 Apr 2010 11:47:50 +0000 Subject: [PATCH] Document use the function action_get_tree to retrieve all the document directly or indirectly attached --- html/admin/sql/patch/upgrade73.sql | 33 ++++++++++++++++++++++++++++++ include/class_action.php | 6 ++++-- include/constant.php | 2 +- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 html/admin/sql/patch/upgrade73.sql diff --git a/html/admin/sql/patch/upgrade73.sql b/html/admin/sql/patch/upgrade73.sql new file mode 100644 index 000000000..d17cf2de2 --- /dev/null +++ b/html/admin/sql/patch/upgrade73.sql @@ -0,0 +1,33 @@ +begin; +DROP FUNCTION if exists comptaproc.get_action_tree(); + +CREATE OR REPLACE FUNCTION comptaproc.action_get_tree(p_id bigint) + RETURNS setof bigint AS +$BODY$ + +declare + e bigint; + i bigint; +begin + for e in select ag_id from action_gestion where ag_ref_ag_id=p_id + loop + if e = 0 then + return; + end if; + return next e; + for i in select ag_id from action_gestion where ag_ref_ag_id=e + loop + if i = 0 then + return; + end if; + return next i; + end loop; + end loop; + return; + +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; + +update version set val=74; +commit; \ No newline at end of file diff --git a/include/class_action.php b/include/class_action.php index 79d9548b3..d7efab9e6 100644 --- a/include/class_action.php +++ b/include/class_action.php @@ -506,8 +506,10 @@ class Action // show the list of the concern operation if ( $this->db->count_sql('select * from action_gestion where ag_ref_ag_id!=0 and ag_ref_ag_id='.$this->ag_id. - " limit 2") > 0 ) - $r.=$this->myList($p_base,""," and ag_ref_ag_id=".$this->ag_id); + " limit 2") > 0 ) { + $sql=sprintf(" and ag_id in (select action_get_tree from comptaproc.action_get_tree(%s)) ",$this->ag_id); + $r.=$this->myList($p_base,"",$sql); + } return $r; } diff --git a/include/constant.php b/include/constant.php index 6fe63b05d..1ff65656a 100644 --- a/include/constant.php +++ b/include/constant.php @@ -26,7 +26,7 @@ require_once ('config.inc.php'); require_once('constant.security.php'); -define ("DBVERSION",73); +define ("DBVERSION",74); define ("MAX_COMPTE",4); define ('MAX_ARTICLE',9);