1: <?php
2: /**
3: * PHPWord
4: *
5: * Copyright (c) 2013 PHPWord
6: *
7: * This library is free software; you can redistribute it and/or
8: * modify it under the terms of the GNU Lesser General Public
9: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20: *
21: * @category PHPWord
22: * @package PHPWord
23: * @copyright Copyright (c) 2013 PHPWord
24: * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25: * @version 0.7.0
26: */
27:
28: /**
29: * Class PHPWord_TOC
30: */
31: class PHPWord_TOC
32: {
33:
34: /**
35: * Title Elements
36: *
37: * @var array
38: */
39: private static $_titles = array();
40:
41: /**
42: * TOC Style
43: *
44: * @var array
45: */
46: private static $_styleTOC;
47:
48: /**
49: * Font Style
50: *
51: * @var array
52: */
53: private static $_styleFont;
54:
55: /**
56: * Title Anchor
57: *
58: * @var array
59: */
60: private static $_anchor = 252634154;
61:
62: /**
63: * Title Bookmark
64: *
65: * @var array
66: */
67: private static $_bookmarkId = 0;
68:
69:
70: /**
71: * Create a new Table-of-Contents Element
72: *
73: * @param array $styleFont
74: * @param array $styleTOC
75: */
76: public function __construct($styleFont = null, $styleTOC = null)
77: {
78: self::$_styleTOC = new PHPWord_Style_TOC();
79:
80: if (!is_null($styleTOC) && is_array($styleTOC)) {
81: foreach ($styleTOC as $key => $value) {
82: if (substr($key, 0, 1) != '_') {
83: $key = '_' . $key;
84: }
85: self::$_styleTOC->setStyleValue($key, $value);
86: }
87: }
88:
89: if (!is_null($styleFont)) {
90: if (is_array($styleFont)) {
91: self::$_styleFont = new PHPWord_Style_Font();
92:
93: foreach ($styleFont as $key => $value) {
94: if (substr($key, 0, 1) != '_') {
95: $key = '_' . $key;
96: }
97: self::$_styleFont->setStyleValue($key, $value);
98: }
99: } else {
100: self::$_styleFont = $styleFont;
101: }
102: }
103: }
104:
105: /**
106: * Add a Title
107: *
108: * @return array
109: */
110: public static function addTitle($text, $depth = 0)
111: {
112: $anchor = '_Toc' . ++self::$_anchor;
113: $bookmarkId = self::$_bookmarkId++;
114:
115: $title = array();
116: $title['text'] = $text;
117: $title['depth'] = $depth;
118: $title['anchor'] = $anchor;
119: $title['bookmarkId'] = $bookmarkId;
120:
121: self::$_titles[] = $title;
122:
123: return array($anchor, $bookmarkId);
124: }
125:
126: /**
127: * Get all titles
128: *
129: * @return array
130: */
131: public static function getTitles()
132: {
133: return self::$_titles;
134: }
135:
136: /**
137: * Get TOC Style
138: *
139: * @return PHPWord_Style_TOC
140: */
141: public static function getStyleTOC()
142: {
143: return self::$_styleTOC;
144: }
145:
146: /**
147: * Get Font Style
148: *
149: * @return PHPWord_Style_Font
150: */
151: public static function getStyleFont()
152: {
153: return self::$_styleFont;
154: }
155: }