ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilStyleImportParser.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
6require_once("./Services/Xml/classes/class.ilSaxParser.php");
7
17{
21 protected $tree;
22
23
32 public function __construct($a_xml_file, &$a_style_obj)
33 {
34 global $DIC;
35
36 $this->lng = $DIC->language();
37 $this->tree = $DIC->repositoryTree();
38 $lng = $DIC->language();
39 $tree = $DIC->repositoryTree();
40
41 $this->style_obj = $a_style_obj;
42
43 parent::__construct($a_xml_file);
44 }
45
46
52 public function setHandlers($a_xml_parser)
53 {
54 xml_set_object($a_xml_parser, $this);
55 xml_set_element_handler($a_xml_parser, 'handlerBeginTag', 'handlerEndTag');
56 xml_set_character_data_handler($a_xml_parser, 'handlerCharacterData');
57 }
58
62 public function startParsing()
63 {
64 $this->styles = array();
65 parent::startParsing();
66 $this->style_obj->setStyle($this->styles);
67 $this->style_obj->setCharacteristics($this->chars);
68 }
69
70
74 public function handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
75 {
76 switch ($a_name) {
77 case "Style":
78 $this->current_tag = $a_attribs["Tag"];
79 $this->current_class = $a_attribs["Class"];
80 $this->current_type = $a_attribs["Type"];
81 if ($this->current_class == "PageTitle" && $this->current_type == "page_title" && $this->current_tag == "div") {
82 $this->current_tag = "h1";
83 }
84 if ($this->current_class == "Headline1" && $this->current_tag == "div") {
85 $this->current_tag = "h1";
86 $this->current_type = "heading1";
87 }
88 if ($this->current_class == "Headline2" && $this->current_tag == "div") {
89 $this->current_tag = "h2";
90 $this->current_type = "heading2";
91 }
92 if ($this->current_class == "Headline3" && $this->current_tag == "div") {
93 $this->current_tag = "h3";
94 $this->current_type = "heading3";
95 }
96 $this->current_tags = array();
97 $this->chars[] = array("type" => $this->current_type,
98 "class" => $this->current_class);
99 break;
100
101 case "StyleParameter":
102 $this->current_tags[] = array(
103 "tag" => $this->current_tag,
104 "class" => $this->current_class,
105 "parameter" => $a_attribs["Name"],
106 "type" => $this->current_type,
107 "value" => $a_attribs["Value"],
108 "custom" => $a_attribs["Custom"]);
109 break;
110
111 case "StyleColor":
112 $this->style_obj->addColor($a_attribs["Name"], $a_attribs["Code"]);
113 break;
114
115 case "StyleTemplate":
116 $this->cur_template = array("type" => $a_attribs["Type"],
117 "name" => $a_attribs["Name"]);
118 $this->cur_template_classes = array();
119 break;
120
121 case "StyleTemplateClass":
122 $this->cur_template_classes[$a_attribs["ClassType"]] =
123 $a_attribs["Class"];
124 break;
125
126 }
127 $this->cdata = "";
128 }
129
130
134 public function handlerEndTag($a_xml_parser, $a_name)
135 {
136 switch ($a_name) {
137 case "Title":
138 $this->style_obj->setTitle($this->cdata);
139 break;
140
141 case "Description":
142 $this->style_obj->setDescription($this->cdata);
143 break;
144
145 case "Style":
146 $this->styles[] = $this->current_tags;
147 break;
148
149 case "StyleTemplate":
150 $this->style_obj->addTemplate(
151 $this->cur_template["type"],
152 $this->cur_template["name"],
153 $this->cur_template_classes
154 );
155 break;
156
157 }
158 }
159
163 public function handlerCharacterData($a_xml_parser, $a_data)
164 {
165 // i don't know why this is necessary, but
166 // the parser seems to convert "&gt;" to ">" and "&lt;" to "<"
167 // in character data, but we don't want that, because it's the
168 // way we mask user html in our content, so we convert back...
169 $a_data = str_replace("<", "&lt;", $a_data);
170 $a_data = str_replace(">", "&gt;", $a_data);
171
172 // DELETE WHITESPACES AND NEWLINES OF CHARACTER DATA
173 $a_data = preg_replace("/\n/", "", $a_data);
174 $a_data = preg_replace("/\t+/", "", $a_data);
175 if (!empty($a_data)) {
176 $this->cdata .= $a_data;
177 }
178 }
179}
An exception for terminatinating execution or to throw for unit testing.
Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and ...
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
__construct($a_xml_file, &$a_style_obj)
Constructor.
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
setHandlers($a_xml_parser)
set event handler should be overwritten by inherited class @access private
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
global $DIC
Definition: saml.php:7