CREATE PROCEDURE cms_page_fullpath(
IN in_id INT(11),
- IN in_separator VARCHAR(64),
+ IN in_separator VARCHAR(64),
+ IN in_depth INT(11),
OUT fullpath TEXT
) DETERMINISTIC
BEGIN
SET v_parent_title = '';
SET v_parent_id = 0;
SET v_translation_of_id = 0;
- SET max_sp_recursion_depth = 255;
-
+ SET max_sp_recursion_depth = 15;
+
SELECT title, parent_id, translation_of_id INTO v_title, v_parent_id, v_translation_of_id FROM cms_page WHERE id = in_id;
IF (v_translation_of_id > 0) THEN
SELECT title, v_parent_id INTO v_title, v_parent_id FROM cms_page WHERE id = v_translation_of_id;
END IF;
- IF (v_parent_id = 0) THEN
+ IF (v_parent_id = 0 OR in_depth > 10) THEN
SET fullpath = v_title;
ELSE
- CALL cms_page_fullpath(v_parent_id, in_separator, v_parent_title);
+ CALL cms_page_fullpath(v_parent_id, in_separator, in_depth + 1, v_parent_title);
SELECT CONCAT_WS(in_separator, v_parent_title, v_title) INTO fullpath;
END IF;
DECLARE v_ret TEXT;
- CALL cms_page_fullpath(in_id, in_separator, v_ret);
+ CALL cms_page_fullpath(in_id, in_separator, 0, v_ret) ;
RETURN v_ret;