[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 01/01: Task #1151 - Amélioration configurati
From: |
Dany De Bontridder |
Subject: |
[Noalyss-commit] [noalyss] 01/01: Task #1151 - Amélioration configuration des menus Add SQL Script + correct smalll bug into config_file |
Date: |
Thu, 20 Aug 2015 07:43:13 +0000 |
sparkyx pushed a commit to branch master
in repository noalyss.
commit 9f97e60b2d241257b519ca65ce019011cd6377b1
Author: Dany De Bontridder <address@hidden>
Date: Thu Aug 20 09:37:41 2015 +0200
Task #1151 - Amélioration configuration des menus
Add SQL Script + correct smalll bug into config_file
---
html/admin/sql/patch/upgrade118.sql | 167 +++++++++++++++++++++++++++++++++++
include/config_file.php | 2 -
include/constant.php | 2 +-
3 files changed, 168 insertions(+), 3 deletions(-)
diff --git a/html/admin/sql/patch/upgrade118.sql
b/html/admin/sql/patch/upgrade118.sql
new file mode 100644
index 0000000..37d2c40
--- /dev/null
+++ b/html/admin/sql/patch/upgrade118.sql
@@ -0,0 +1,167 @@
+begin
+
+
+alter table profile_menu add pm_id_dep bigint ;
+comment on column profile_menu.pm_id_dep is 'parent of this menu item';
+
+
+CREATE OR REPLACE VIEW v_menu_dependency AS
+ WITH t_menu AS (
+ SELECT pm.pm_id, mr.me_menu, pm.me_code, pm.me_code_dep,
pm.p_type_display, mr.me_file, mr.me_javascript, mr.me_description,
mr.me_description_etendue, p.p_id
+ FROM profile_menu pm
+ JOIN profile p ON p.p_id = pm.p_id
+ JOIN menu_ref mr USING (me_code)
+ )
+ SELECT DISTINCT (COALESCE(v3.me_code || '/'::text, ''::text) ||
COALESCE(v2.me_code, ''::text)) ||
+ CASE
+ WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, ''::text)
+ WHEN v2.me_code IS NOT NULL THEN COALESCE('/'::text || v1.me_code,
''::text)
+ ELSE NULL::text
+ END AS code, v1.pm_id, v1.me_code, v1.me_description,
v1.me_description_etendue, v1.me_file, '> '::text || v1.me_menu AS v1menu,
+ CASE
+ WHEN v2.pm_id IS NOT NULL THEN v2.pm_id
+ WHEN v3.pm_id IS NOT NULL THEN v3.pm_id
+ ELSE NULL::integer
+ END AS higher_dep,
+ CASE
+ WHEN COALESCE(v3.me_menu, ''::text) <> ''::text THEN ' > '::text
|| v2.me_menu
+ ELSE v2.me_menu
+ END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
COALESCE(v1.me_javascript, COALESCE(v2.me_javascript, v3.me_javascript)) AS
javascript, v1.p_id, v2.p_id AS v2pid, v3.p_id AS v3pid
+ FROM t_menu v1
+ LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
+ LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
+ WHERE COALESCE(v2.p_id, v1.p_id) = v1.p_id AND COALESCE(v3.p_id, v1.p_id) =
v1.p_id AND v1.p_type_display <> 'P'::text
+ ORDER BY v1.pm_id;
+
+CREATE OR REPLACE FUNCTION modify_menu_system(n_profile numeric)
+ RETURNS void AS
+$BODY$
+declare
+r_duplicate profile_menu%ROWTYPE;
+str_duplicate text;
+n_lowest_id numeric; -- lowest pm_id : update the dependency in profile_menu
+n_highest_id numeric; -- highest pm_id insert into profile_menu
+
+begin
+
+for str_duplicate in
+ select me_code
+ from profile_menu
+ where
+ p_id=n_profile and
+ p_type_display <> 'P' and
+ pm_id_dep is null
+ group by me_code
+ having count(*) > 1
+loop
+ raise info 'str_duplicate %',str_duplicate;
+ for r_duplicate in select *
+ from profile_menu
+ where
+ p_id=n_profile and
+ me_code_dep=str_duplicate
+ loop
+ raise info 'r_duplicate %',r_duplicate;
+ -- get the lowest
+ select a.pm_id into n_lowest_id from profile_menu a join
profile_menu b on (a.me_code=b.me_code and a.p_id = b.p_id)
+ where
+ a.me_code=str_duplicate
+ and a.p_id=n_profile
+ and a.pm_id < b.pm_id;
+ raise info 'lowest is %',n_lowest_id;
+ -- get the highest
+ select a.pm_id into n_highest_id from profile_menu a join
profile_menu b on (a.me_code=b.me_code and a.p_id = b.p_id)
+ where
+ a.me_code=str_duplicate
+ and a.p_id=n_profile
+ and a.pm_id > b.pm_id;
+ raise info 'highest is %',n_highest_id;
+
+ -- update the first one
+ update profile_menu set pm_id_dep = n_lowest_id where
pm_id=r_duplicate.pm_id;
+ -- insert a new one
+ insert into profile_menu (me_code,
+ me_code_dep,
+ p_id,
+ p_order,
+ p_type_display,
+ pm_default,
+ pm_id_dep)
+ values (r_duplicate.me_code,
+ r_duplicate.me_code_dep,
+ r_duplicate.p_id,
+ r_duplicate.p_order,
+ r_duplicate.p_type_display,
+ r_duplicate.pm_default,
+ n_highest_id);
+
+ end loop;
+
+end loop;
+end;
+$BODY$
+language plpgsql;
+
+select modify_menu_system(1);
+select modify_menu_system(2);
+
+update profile_menu set pm_id_dep=(select higher_dep from v_menu_dependency as
a where
+ a.pm_id= profile_menu.pm_id) where pm_id_dep is null and p_id=1;
+
+update profile_menu set pm_id_dep=(select higher_dep from v_menu_dependency as
a where
+ a.pm_id= profile_menu.pm_id) where pm_id_dep is null and p_id=2;
+CREATE OR REPLACE VIEW v_menu_profile AS
+ WITH t_menu AS (
+ SELECT pm.pm_id,pm.pm_id_dep, pm.me_code, pm.me_code_dep,
pm.p_type_display,pm.p_id
+ FROM profile_menu pm
+ JOIN profile p ON p.p_id = pm.p_id
+ )
+ SELECT DISTINCT
+ (COALESCE(v3.me_code || '/'::text, ''::text) || COALESCE(v2.me_code,
''::text)) ||
+ CASE
+ WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, ''::text)
+ WHEN v2.me_code IS NOT NULL THEN COALESCE('/'::text || v1.me_code,
''::text)
+ ELSE NULL::text
+ END AS code,
+ v3.p_type_display,
+ coalesce(v3.pm_id,0) as pm_id_v3,
+ coalesce(v2.pm_id,0) as pm_id_v2,
+ v1.pm_id as pm_id_v1
+ ,v1.p_id
+ FROM t_menu v1
+ LEFT JOIN t_menu v2 ON v1.pm_id_dep = v2.pm_id
+ LEFT JOIN t_menu v3 ON v2.pm_id_dep= v3.pm_id
+ WHERE v1.p_type_display <> 'P'::text
+;
+COMMENT ON VIEW v_menu_profile IS 'Give the profile and the menu +
dependencies';
+
+CREATE OR REPLACE VIEW v_menu_description AS
+ WITH t_menu AS (
+ SELECT pm.pm_id,pm.pm_id_dep,pm.p_id,mr.me_menu, pm.me_code,
pm.me_code_dep, pm.p_type_display, pu.user_name, mr.me_file, mr.me_javascript,
mr.me_description, mr.me_description_etendue
+ FROM profile_menu pm
+ JOIN profile_user pu ON pu.p_id = pm.p_id
+ JOIN profile p ON p.p_id = pm.p_id
+ JOIN menu_ref mr USING (me_code)
+ )
+ SELECT DISTINCT (COALESCE(v3.me_code || '/'::text, ''::text) ||
COALESCE(v2.me_code, ''::text)) ||
+ CASE
+ WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, ''::text)
+ WHEN v2.me_code IS NOT NULL THEN COALESCE('/'::text || v1.me_code,
''::text)
+ ELSE NULL::text
+ END AS code, v1.me_code, v1.me_description, v1.me_description_etendue,
v1.me_file, v1.user_name, '> '::text || v1.me_menu AS v1menu,
+ CASE
+ WHEN COALESCE(v3.me_menu, ''::text) <> ''::text THEN ' > '::text
|| v2.me_menu
+ ELSE v2.me_menu
+ END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
COALESCE(v1.me_javascript, COALESCE(v2.me_javascript, v3.me_javascript)) AS
javascript,
+ v1.pm_id,v1.pm_id_dep,v1.p_id
+ FROM t_menu v1
+ LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
+ LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
+ WHERE v1.p_type_display <> 'P'::text AND (COALESCE(v1.me_file, ''::text) <>
''::text OR COALESCE(v1.me_javascript, ''::text) <> ''::text);
+
+COMMENT ON VIEW v_menu_description IS 'Description des menus';
+
+
+update version set val=118;
+
+commit;
diff --git a/include/config_file.php b/include/config_file.php
index 5e59d93..2a897fe 100644
--- a/include/config_file.php
+++ b/include/config_file.php
@@ -172,8 +172,6 @@ function config_file_create($p_array,$from_setup=1,$p_os=1)
fputs($hFile,"\r\n");
fputs($hFile,' // very special configuration');
fputs($hFile,"\r\n");
- fputs($hFile, 'define ("dbname","'.$cdbname.'");');
- fputs($hFile,"\r\n");
fputs($hFile, '// define ("NOALYSS_HOME","")');
fputs($hFile,"\r\n");
fputs($hFile, '// define ("NOALYSS_PLUGIN","")');
diff --git a/include/constant.php b/include/constant.php
index bcef3a7..aa3388e 100644
--- a/include/constant.php
+++ b/include/constant.php
@@ -98,7 +98,7 @@ if ( !defined("SITE_UPDATE_PLUGIN"))
define
("SITE_UPDATE_PLUGIN",'http://www.noalyss.eu/plugin_last_version.txt');
-define ("DBVERSION",118);
+define ("DBVERSION",119);
define ("MONO_DATABASE",25);
define ("DBVERSIONREPO",16);
define ('NOTFOUND','--not found--');