882a4950312337bd3a03040960b6eedc77689cd8
[Pman.Cms] / mysql / cms_page_fullpath.sql
1
2 DROP PROCEDURE IF EXISTS cms_page_fullpath;
3
4 DELIMITER $$
5
6 CREATE PROCEDURE cms_page_fullpath(
7     IN in_id INT(11), 
8     IN in_separator VARCHAR(64), 
9     OUT fullpath TEXT 
10 ) DETERMINISTIC
11     BEGIN
12         
13         DECLARE v_title TEXT;
14         DECLARE v_parent_title TEXT;
15         DECLARE v_parent_id INT(11);
16         DECLARE v_translation_of_id INT(11);
17
18         SET v_title = '';
19         SET v_parent_title = '';
20         SET v_parent_id = 0;
21         SET v_translation_of_id = 0;
22         SET max_sp_recursion_depth = 255;
23
24         SELECT title, parent_id, translation_of_id INTO v_title, v_parent_id, v_translation_of_id FROM cms_page WHERE id = in_id;
25
26         IF (v_translation_of_id > 0) THEN
27             SELECT title, v_parent_id INTO v_title, v_parent_id FROM cms_page WHERE id = v_translation_of_id;
28         END IF;
29
30         IF (v_parent_id = 0) THEN
31             SET fullpath = v_title;
32         ELSE
33             CALL cms_page_fullpath(v_parent_id, in_separator, v_parent_title);
34
35             SELECT CONCAT_WS(in_separator, v_parent_title, v_title) INTO fullpath;
36         END IF;
37         
38     END $$
39 DELIMITER ;
40
41
42 DROP FUNCTION IF EXISTS cms_page_fullpath;
43
44 DELIMITER $$
45 CREATE FUNCTION cms_page_fullpath(
46     in_id INT(11),
47     in_separator VARCHAR(64)
48 )  
49 RETURNS TEXT DETERMINISTIC
50     BEGIN
51         
52         DECLARE v_ret TEXT;
53
54         CALL cms_page_fullpath(in_id, in_separator, v_ret);
55
56         RETURN v_ret;
57
58     END $$
59
60 DELIMITER ;
61