File: layersmenu-process.inc.php

package info (click to toggle)
libphp-phplayersmenu 3.2.0rc-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,236 kB
  • ctags: 695
  • sloc: php: 2,676; makefile: 68; sh: 20
file content (158 lines) | stat: -rw-r--r-- 4,974 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/

/**
* This file contains the code of the ProcessLayersMenu class.
* @package PHPLayersMenu
*/

/**
* This is an extension of the "common" class of the PHP Layers Menu library.
*
* It provides methods useful to process/convert menus data, e.g. to output a menu structure and a DB SQL dump corresponding to already parsed data and hence also to convert a menu structure file to a DB SQL dump and viceversa
*
* @version 3.2.0-rc
* @package PHPLayersMenu
*/
class ProcessLayersMenu extends LayersMenuCommon
{

/**
* The constructor method
* @return void
*/
function ProcessLayersMenu()
{
	$this->LayersMenuCommon();
}

/**
* The method to set the dirroot directory
* @access public
* @return boolean
*/
function setDirroot($dirroot)
{
	return $this->setDirrootCommon($dirroot);
}

/**
* Method to output a menu structure corresponding to items of a menu
* @access public
* @param string $menu_name the name of the menu for which a menu structure
*   has to be returned
* @param string $separator the character used in the menu structure format
*   to separate fields of each item
* @return string
*/
function getMenuStructure(
	$menu_name = '',	// non consistent default...
	$separator = '|'
	)
{
	$menuStructure = '';
	for ($cnt=$this->_firstItem[$menu_name]; $cnt<=$this->_lastItem[$menu_name]; $cnt++) {	// this counter scans all nodes of the menu
		$menuStructure .= str_repeat('.', $this->tree[$cnt]['level']);
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['text'];
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['href'];
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['title'];
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['icon'];
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['target'];
		$menuStructure .= $separator;
		$menuStructure .= $this->tree[$cnt]['expanded'];
		$menuStructure .= "\n";
	}
	return $menuStructure;
}

/**
* Method to output a DB SQL dump corresponding to items of a menu
* @access public
* @param string $menu_name the name of the menu for which a DB SQL dump
*   has to be returned
* @param string $db_type the type of DB to dump for;
*   leave it either empty or not specified if you are using PHP < 5,
*   as sqlite_escape_string() has been added in PHP 5;
*   it has to be specified and set to 'sqlite' only if the dump
*   has to be prepared for SQLite; it is not significant if != 'sqlite'
* @return string
*/
function getSQLDump(
	$menu_name = '',	// non consistent default...
	$db_type = ''
	)
{
	$SQLDump = '';
	for ($cnt=$this->_firstItem[$menu_name]; $cnt<=$this->_lastItem[$menu_name]; $cnt++) {	// this counter scans all nodes of the menu
		$current_node[$this->tree[$cnt]['level']] = $cnt;
		if (!$this->tree[$cnt]['child_of_root_node']) {
			$this->tree[$cnt]['father_node'] = $current_node[$this->tree[$cnt]['level']-1];
		}
		$VALUES = '';
		$SQLDump .= 'INSERT INTO ';
		$SQLDump .= $this->tableName;
		$SQLDump .= ' (';
		$SQLDump .= $this->tableFields['id'] . ', ';
		$VALUES .= "'" . 10*$cnt . "', ";
		$SQLDump .= $this->tableFields['parent_id'] . ', ';
		if (isset($this->tree[$cnt]['father_node']) && $this->tree[$cnt]['father_node'] != 0) {
			$VALUES .= "'" . 10*$this->tree[$cnt]['father_node'] . "', ";
		} else {
			$VALUES .= "'1', ";
		}
		$SQLDump .= $this->tableFields['text'] . ', ';
		$foobar = $this->tree[$cnt]['text'];
		if ($foobar != '') {
			if ($db_type != 'sqlite') {
				$foobar = addslashes($foobar);
			} else {
				$foobar = sqlite_escape_string($foobar);
			}
		}
		$VALUES .= "'$foobar', ";
		$SQLDump .= $this->tableFields['href'] . ', ';
		$VALUES .= "'" . $this->tree[$cnt]['href'] . "', ";
		if ($this->tableFields['title'] != "''") {
			$SQLDump .= $this->tableFields['title'] . ', ';
			$foobar = $this->tree[$cnt]['title'];
			if ($foobar != '') {
				if ($db_type != 'sqlite') {
					$foobar = addslashes($foobar);
				} else {
					$foobar = sqlite_escape_string($foobar);
				}
			}
			$VALUES .= "'$foobar', ";
		}
		if ($this->tableFields['icon'] != "''") {
			$SQLDump .= $this->tableFields['icon'] . ', ';
			$VALUES .= "'" . $this->tree[$cnt]['icon'] . "', ";
		}
		if ($this->tableFields['target'] != "''") {
			$SQLDump .= $this->tableFields['target'] . ', ';
			$VALUES .= "'" . $this->tree[$cnt]['target'] . "', ";
		}
		if ($this->tableFields['orderfield'] != "''") {
			$SQLDump .= $this->tableFields['orderfield'] . ', ';
			$VALUES .= "'" . 10*$cnt . "', ";
		}
		if ($this->tableFields['expanded'] != "''") {
			$SQLDump .= $this->tableFields['expanded'] . ', ';
			$this->tree[$cnt]['expanded'] = (int) $this->tree[$cnt]['expanded'];
			$VALUES .= "'" . $this->tree[$cnt]['expanded'] . "', ";
		}
		$SQLDump = substr($SQLDump, 0, -2);
		$VALUES = substr($VALUES, 0, -2);
		$SQLDump .= ") VALUES ($VALUES);\n";
	}
	return $SQLDump;
}

} /* END OF CLASS */

?>