5require_once
"./Services/Object/classes/class.ilObject.php";
19 public static $num_unit = array(
"px",
"em",
"ex",
"%",
"pt",
"pc",
"in",
"mm",
"cm");
25 "values" => array(
"xx-small",
"x-small",
"small",
"medium",
"large",
"x-large",
"xx-large",
"smaller",
"larger"),
26 "input" =>
"fontsize",
28 "font-family" => array(
32 "font-style" => array(
33 "values" => array(
"italic",
"oblique",
"normal"),
36 "font-weight" => array(
37 "values" => array(
"bold",
"normal",
"bolder",
"lighter"),
40 "font-variant" => array(
41 "values" => array(
"small-caps",
"normal"),
44 "word-spacing" => array(
46 "input" =>
"numeric_no_perc",
48 "letter-spacing" => array(
50 "input" =>
"numeric_no_perc",
52 "text-decoration" => array(
53 "values" => array(
"underline",
"overline",
"line-through",
"blink",
"none"),
56 "text-transform" => array(
57 "values" => array(
"capitalize",
"uppercase",
"lowercase",
"none"),
64 "text-indent" => array(
68 "line-height" => array(
72 "vertical-align" => array(
73 "values" => array(
"top",
"middle",
"bottom",
"baseline",
"sub",
"super",
74 "text-top",
"text-bottom"),
77 "text-align" => array(
78 "values" => array(
"left",
"center",
"right",
"justify"),
81 "white-space" => array(
82 "values" => array(
"normal",
"pre",
"nowrap"),
87 "input" =>
"trbl_numeric",
88 "subpar" => array(
"margin",
"margin-top",
"margin-right",
89 "margin-bottom",
"margin-left"),
90 "group" =>
"margin_and_padding"),
93 "input" =>
"trbl_numeric",
94 "subpar" => array(
"padding",
"padding-top",
"padding-right",
95 "padding-bottom",
"padding-left"),
96 "group" =>
"margin_and_padding"),
97 "border-width" => array(
98 "values" => array(
"thin",
"medium",
"thick"),
99 "input" =>
"border_width",
100 "subpar" => array(
"border-width",
"border-top-width",
"border-right-width",
101 "border-bottom-width",
"border-left-width"),
102 "group" =>
"border"),
103 "border-color" => array(
105 "input" =>
"trbl_color",
106 "subpar" => array(
"border-color",
"border-top-color",
"border-right-color",
107 "border-bottom-color",
"border-left-color"),
108 "group" =>
"border"),
109 "border-style" => array(
110 "values" => array(
"none",
"hidden",
"dotted",
"dashed",
"solid",
"double",
111 "groove",
"ridge",
"inset",
"outset"),
112 "input" =>
"border_style",
113 "subpar" => array(
"border-style",
"border-top-style",
"border-right-style",
114 "border-bottom-style",
"border-left-style"),
115 "group" =>
"border"),
117 "background-color" => array(
120 "group" =>
"background"),
121 "background-image" => array(
123 "input" =>
"background_image",
124 "group" =>
"background"),
125 "background-repeat" => array(
126 "values" => array(
"repeat",
"repeat-x",
"repeat-y",
"no-repeat"),
128 "group" =>
"background"),
129 "background-attachment" => array(
130 "values" => array(
"fixed",
"scroll"),
132 "group" =>
"background"),
133 "background-position" => array(
134 "values" => array(
"horizontal" => array(
"left",
"center",
"right"),
135 "vertical" => array(
"top",
"center",
"bottom")),
136 "input" =>
"background_position",
137 "group" =>
"background"),
140 "values" => array(
"absolute",
"fixed",
"relative",
"static"),
142 "group" =>
"positioning"),
145 "input" =>
"numeric",
146 "group" =>
"positioning"),
149 "input" =>
"numeric",
150 "group" =>
"positioning"),
153 "input" =>
"numeric",
154 "group" =>
"positioning"),
157 "input" =>
"numeric",
158 "group" =>
"positioning"),
161 "input" =>
"numeric",
162 "group" =>
"positioning"),
165 "input" =>
"numeric",
166 "group" =>
"positioning"),
167 "min-height" => array(
169 "input" =>
"numeric",
170 "group" =>
"positioning"),
172 "values" => array(
"left",
"right",
"none"),
174 "group" =>
"positioning"),
176 "values" => array(
"visible",
"hidden",
"scroll",
"auto"),
178 "group" =>
"positioning"),
181 "input" =>
"percentage",
182 "group" =>
"special"),
183 "transform" => array(
184 "values" => array(
"rotate(90deg)",
"rotate(180deg)",
"rotate(270deg)"),
186 "group" =>
"special"),
187 "transform-origin" => array(
188 "values" => array(
"horizontal" => array(
"left",
"center",
"right"),
189 "vertical" => array(
"top",
"center",
"bottom")),
190 "input" =>
"background_position",
191 "group" =>
"special"),
193 "values" => array(
"auto",
"default",
"crosshair",
"pointer",
"move",
194 "n-resize",
"ne-resize",
"e-resize",
"se-resize",
"s-resize",
"sw-resize",
195 "w-resize",
"nw-resize",
"text",
"wait",
"help"),
197 "group" =>
"special"),
199 "values" => array (
"both",
"left",
"right",
"none"),
201 "group" =>
"special"),
203 "list-style-type.ol" => array(
204 "values" => array (
"decimal",
"lower-roman",
"upper-roman",
205 "lower-alpha",
"upper-alpha",
"lower-greek",
"hebrew",
206 "decimal-leading-zero",
"cjk-ideographic",
"hiragana",
207 "katakana",
"hiragana-iroha",
"katakana-iroha",
"none"),
210 "list-style-type.ul" => array(
211 "values" => array (
"disc",
"circle",
"square",
215 "list-style-image.ul" => array(
217 "input" =>
"background_image",
219 "list-style-position.ol" => array(
220 "values" => array (
"inside",
"outside"),
223 "list-style-position.ul" => array(
224 "values" => array (
"inside",
"outside"),
228 "border-collapse" => array(
229 "values" => array (
"collapse",
"separate"),
233 "caption-side" => array(
234 "values" => array (
"top",
"bottom",
"left",
"right"),
243 array(
"ol" => array(
"ol"),
"ul" => array(
"ul"),
244 "table" => array(
"table"),
"positioning" => array(
"h1",
"h2",
"h3",
"div",
"img",
"table",
"a"));
248 "text_block" => array(
"text_block",
"heading1",
"heading2",
"heading3"),
249 "text_inline" => array(
"text_inline",
"sub",
"sup"),
250 "section" => array(
"section"),
251 "link" => array(
"link"),
252 "table" => array(
"table",
"table_cell",
"table_caption"),
253 "list" => array(
"list_o",
"list_u",
"list_item"),
254 "flist" => array(
"flist_cont",
"flist_head",
"flist",
"flist_li",
"flist_a"),
255 "media" => array(
"media_cont",
"media_caption",
"iim",
"marker"),
256 "tabs" => array(
"va_cntr",
"va_icntr",
"va_ihead",
"va_iheada",
"va_ihcap",
"va_icont",
257 "ha_cntr",
"ha_icntr",
"ha_ihead",
"ha_iheada",
"ha_ihcap",
"ha_icont",
"ca_cntr",
"ca_icntr",
"ca_ihead",
"ca_icont"),
258 "question" => array(
"question",
"qtitle",
"qanswer",
"qinput",
"qlinput",
"qsubmit",
"qfeedr",
"qfeedw",
259 "qimg",
"qordul",
"qordli",
"qimgd",
"qetitem",
"qetcorr",
"qover"),
260 "page" => array(
"page_frame",
"page_cont",
"page_title",
"page_fn",
261 "page_tnav",
"page_bnav",
"page_lnav",
"page_rnav",
"page_lnavlink",
"page_rnavlink",
262 "page_lnavimage",
"page_rnavimage"),
263 "glo" => array(
"glo_overlay",
"glo_ovtitle",
"glo_ovclink",
"glo_ovuglink",
"glo_ovuglistlink"),
264 "sco" => array(
"sco_title",
"sco_keyw",
"sco_desc",
"sco_desct",
"sco_obj",
"sco_objt",
"sco_fmess"),
265 "rte" => array(
"rte_menu",
"rte_mlink",
"rte_tree",
"rte_node",
"rte_tlink",
"rte_status",
266 "rte_tul",
"rte_tli",
"rte_texp",
"rte_tclink",
"rte_drag")
271 "text_block",
"text_inline",
"section",
"media_cont",
"table",
"table_cell",
"flist_li",
"table_caption",
273 "va_cntr",
"va_icntr",
"va_ihead",
"va_iheada",
"va_ihcap",
"va_icont",
274 "ha_cntr",
"ha_icntr",
"ha_ihead",
"ha_iheada",
"ha_ihcap",
"ha_icont",
275 "ca_cntr",
"ca_icntr",
"ca_ihead",
"ca_icont"
280 "table",
"table_cell"
285 "text_block" =>
"div",
289 "text_inline" =>
"span",
295 "table_cell" =>
"td",
296 "table_caption" =>
"caption",
297 "media_cont" =>
"figure",
298 "media_caption" =>
"div",
301 "glo_overlay" =>
"div",
302 "glo_ovtitle" =>
"h1",
303 "glo_ovclink" =>
"a",
304 "glo_ovuglink" =>
"a",
305 "glo_ovuglistlink" =>
"a",
306 "sco_title" =>
"div",
310 "sco_desct" =>
"div",
312 "sco_fmess" =>
"div",
319 "rte_status" =>
"div",
327 "flist_cont" =>
"div",
328 "flist_head" =>
"div",
342 "qlinput" =>
"textarea",
343 "qsubmit" =>
"input",
347 "page_frame" =>
"div",
348 "page_cont" =>
"div",
351 "page_tnav" =>
"div",
352 "page_bnav" =>
"div",
353 "page_lnav" =>
"div",
354 "page_rnav" =>
"div",
355 "page_lnavlink" =>
"a",
356 "page_rnavlink" =>
"a",
357 "page_lnavimage" =>
"img",
358 "page_rnavimage" =>
"img",
359 "page_title" =>
"h1",
364 "va_iheada" =>
"div",
369 "ha_iheada" =>
"div",
380 array (
"a" => array(
"hover"),
"div" => array(
"hover"),
"img" => array(
"hover"));
384 array(
"type" =>
"text_block",
"class" =>
"Standard"),
385 array(
"type" =>
"text_block",
"class" =>
"List"),
386 array(
"type" =>
"text_block",
"class" =>
"TableContent"),
387 array(
"type" =>
"heading1",
"class" =>
"Headline1"),
388 array(
"type" =>
"heading2",
"class" =>
"Headline2"),
389 array(
"type" =>
"heading3",
"class" =>
"Headline3"),
390 array(
"type" =>
"text_inline",
"class" =>
"Comment"),
391 array(
"type" =>
"text_inline",
"class" =>
"Emph"),
392 array(
"type" =>
"text_inline",
"class" =>
"Quotation"),
393 array(
"type" =>
"text_inline",
"class" =>
"Strong"),
394 array(
"type" =>
"text_inline",
"class" =>
"Accent"),
395 array(
"type" =>
"text_inline",
"class" =>
"Important"),
396 array(
"type" =>
"sup",
"class" =>
"Sup"),
397 array(
"type" =>
"sub",
"class" =>
"Sub"),
398 array(
"type" =>
"link",
"class" =>
"IntLink"),
399 array(
"type" =>
"link",
"class" =>
"ExtLink"),
400 array(
"type" =>
"link",
"class" =>
"FootnoteLink"),
401 array(
"type" =>
"link",
"class" =>
"FileLink"),
402 array(
"type" =>
"link",
"class" =>
"GlossaryLink"),
403 array(
"type" =>
"media_cont",
"class" =>
"MediaContainer"),
404 array(
"type" =>
"media_cont",
"class" =>
"MediaContainerMax50"),
405 array(
"type" =>
"media_cont",
"class" =>
"MediaContainerFull100"),
406 array(
"type" =>
"table",
"class" =>
"StandardTable"),
407 array(
"type" =>
"media_caption",
"class" =>
"MediaCaption"),
408 array(
"type" =>
"iim",
"class" =>
"ContentPopup"),
409 array(
"type" =>
"marker",
"class" =>
"Marker"),
410 array(
"type" =>
"page_frame",
"class" =>
"PageFrame"),
411 array(
"type" =>
"page_cont",
"class" =>
"PageContainer"),
412 array(
"type" =>
"page",
"class" =>
"Page"),
413 array(
"type" =>
"page_tnav",
"class" =>
"TopNavigation"),
414 array(
"type" =>
"page_bnav",
"class" =>
"BottomNavigation"),
415 array(
"type" =>
"page_lnav",
"class" =>
"LeftNavigation"),
416 array(
"type" =>
"page_rnav",
"class" =>
"RightNavigation"),
417 array(
"type" =>
"page_lnavlink",
"class" =>
"LeftNavigationLink"),
418 array(
"type" =>
"page_rnavlink",
"class" =>
"RightNavigationLink"),
419 array(
"type" =>
"page_lnavimage",
"class" =>
"LeftNavigationImage"),
420 array(
"type" =>
"page_rnavimage",
"class" =>
"RightNavigationImage"),
421 array(
"type" =>
"page_fn",
"class" =>
"Footnote"),
422 array(
"type" =>
"page_title",
"class" =>
"PageTitle"),
423 array(
"type" =>
"glo_overlay",
"class" =>
"GlossaryOverlay"),
424 array(
"type" =>
"glo_ovtitle",
"class" =>
"GlossaryOvTitle"),
425 array(
"type" =>
"glo_ovclink",
"class" =>
"GlossaryOvCloseLink"),
426 array(
"type" =>
"glo_ovuglink",
"class" =>
"GlossaryOvUnitGloLink"),
427 array(
"type" =>
"glo_ovuglistlink",
"class" =>
"GlossaryOvUGListLink"),
428 array(
"type" =>
"sco_title",
"class" =>
"Title"),
429 array(
"type" =>
"sco_desc",
"class" =>
"Description"),
430 array(
"type" =>
"sco_desct",
"class" =>
"DescriptionTop"),
431 array(
"type" =>
"sco_keyw",
"class" =>
"Keywords"),
432 array(
"type" =>
"sco_obj",
"class" =>
"Objective"),
433 array(
"type" =>
"sco_objt",
"class" =>
"ObjectiveTop"),
434 array(
"type" =>
"sco_fmess",
"class" =>
"FinalMessage"),
435 array(
"type" =>
"rte_menu",
"class" =>
"RTEMenu"),
436 array(
"type" =>
"rte_menu",
"class" =>
"RTELogo"),
437 array(
"type" =>
"rte_menu",
"class" =>
"RTELinkBar"),
438 array(
"type" =>
"rte_mlink",
"class" =>
"RTELink"),
439 array(
"type" =>
"rte_mlink",
"class" =>
"RTELinkDisabled"),
440 array(
"type" =>
"rte_tree",
"class" =>
"RTETree"),
441 array(
"type" =>
"rte_node",
"class" =>
"RTECourse"),
442 array(
"type" =>
"rte_node",
"class" =>
"RTEChapter"),
443 array(
"type" =>
"rte_node",
"class" =>
"RTESco"),
444 array(
"type" =>
"rte_node",
"class" =>
"RTEAsset"),
445 array(
"type" =>
"rte_node",
"class" =>
"RTECourseDisabled"),
446 array(
"type" =>
"rte_node",
"class" =>
"RTEChapterDisabled"),
447 array(
"type" =>
"rte_node",
"class" =>
"RTEScoDisabled"),
448 array(
"type" =>
"rte_node",
"class" =>
"RTEAssetDisabled"),
449 array(
"type" =>
"rte_status",
"class" =>
"RTEAsset"),
450 array(
"type" =>
"rte_status",
"class" =>
"RTECompleted"),
451 array(
"type" =>
"rte_status",
"class" =>
"RTENotAttempted"),
452 array(
"type" =>
"rte_status",
"class" =>
"RTERunning"),
453 array(
"type" =>
"rte_status",
"class" =>
"RTEIncomplete"),
454 array(
"type" =>
"rte_status",
"class" =>
"RTEPassed"),
455 array(
"type" =>
"rte_status",
"class" =>
"RTEFailed"),
456 array(
"type" =>
"rte_status",
"class" =>
"RTEBrowsed"),
457 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeLink"),
458 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeLinkDisabled"),
459 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeCurrent"),
460 array(
"type" =>
"rte_tul",
"class" =>
"RTETreeList"),
461 array(
"type" =>
"rte_tli",
"class" =>
"RTETreeItem"),
462 array(
"type" =>
"rte_texp",
"class" =>
"RTETreeExpanded"),
463 array(
"type" =>
"rte_texp",
"class" =>
"RTETreeCollapsed"),
464 array(
"type" =>
"rte_tree",
"class" =>
"RTETreeControl"),
465 array(
"type" =>
"rte_tclink",
"class" =>
"RTETreeControlLink"),
466 array(
"type" =>
"rte_drag",
"class" =>
"RTEDragBar"),
467 array(
"type" =>
"list_o",
"class" =>
"NumberedList"),
468 array(
"type" =>
"list_u",
"class" =>
"BulletedList"),
469 array(
"type" =>
"list_item",
"class" =>
"StandardListItem"),
470 array(
"type" =>
"question",
"class" =>
"Standard"),
471 array(
"type" =>
"question",
"class" =>
"SingleChoice"),
472 array(
"type" =>
"question",
"class" =>
"MultipleChoice"),
473 array(
"type" =>
"question",
"class" =>
"TextQuestion"),
474 array(
"type" =>
"question",
"class" =>
"OrderingQuestion"),
475 array(
"type" =>
"question",
"class" =>
"MatchingQuestion"),
476 array(
"type" =>
"question",
"class" =>
"ImagemapQuestion"),
477 array(
"type" =>
"question",
"class" =>
"ErrorText"),
478 array(
"type" =>
"question",
"class" =>
"TextSubset"),
479 array(
"type" =>
"question",
"class" =>
"ClozeTest"),
480 array(
"type" =>
"qtitle",
"class" =>
"Title"),
481 array(
"type" =>
"qanswer",
"class" =>
"Answer"),
482 array(
"type" =>
"qimg",
"class" =>
"QuestionImage"),
483 array(
"type" =>
"qimgd",
"class" =>
"ImageDetailsLink"),
484 array(
"type" =>
"qordul",
"class" =>
"OrderList"),
485 array(
"type" =>
"qordli",
"class" =>
"OrderListItem"),
486 array(
"type" =>
"qordul",
"class" =>
"OrderListHorizontal"),
487 array(
"type" =>
"qordli",
"class" =>
"OrderListItemHorizontal"),
488 array(
"type" =>
"qetitem",
"class" =>
"ErrorTextItem"),
489 array(
"type" =>
"qetitem",
"class" =>
"ErrorTextSelected"),
490 array(
"type" =>
"qetcorr",
"class" =>
"ErrorTextCorrected"),
491 array(
"type" =>
"qinput",
"class" =>
"TextInput"),
492 array(
"type" =>
"qlinput",
"class" =>
"LongTextInput"),
493 array(
"type" =>
"qsubmit",
"class" =>
"Submit"),
494 array(
"type" =>
"qfeedr",
"class" =>
"FeedbackRight"),
495 array(
"type" =>
"qfeedw",
"class" =>
"FeedbackWrong"),
496 array(
"type" =>
"qover",
"class" =>
"Correct"),
497 array(
"type" =>
"qover",
"class" =>
"Inorrect"),
498 array(
"type" =>
"qover",
"class" =>
"StatusMessage"),
499 array(
"type" =>
"qover",
"class" =>
"WrongAnswersMessage"),
500 array(
"type" =>
"flist_cont",
"class" =>
"FileListContainer"),
501 array(
"type" =>
"flist_head",
"class" =>
"FileListHeading"),
502 array(
"type" =>
"flist",
"class" =>
"FileList"),
503 array(
"type" =>
"flist_li",
"class" =>
"FileListItem"),
504 array(
"type" =>
"flist_a",
"class" =>
"FileListItemLink")
510 "caption" =>
"table_caption",
511 "row_head" =>
"table_cell",
512 "row_foot" =>
"table_cell",
513 "col_head" =>
"table_cell",
514 "col_foot" =>
"table_cell",
515 "odd_row" =>
"table_cell",
516 "even_row" =>
"table_cell",
517 "odd_col" =>
"table_cell",
518 "even_col" =>
"table_cell"),
519 "vaccordion" => array(
520 "va_cntr" =>
"va_cntr",
521 "va_icntr" =>
"va_icntr",
522 "va_ihead" =>
"va_ihead",
523 "va_iheada" =>
"va_iheada",
524 "va_ihcap" =>
"va_ihcap",
525 "va_icont" =>
"va_icont"
527 "haccordion" => array(
528 "ha_cntr" =>
"ha_cntr",
529 "ha_icntr" =>
"ha_icntr",
530 "ha_ihead" =>
"ha_ihead",
531 "ha_iheada" =>
"ha_iheada",
532 "ha_ihcap" =>
"ha_ihcap",
533 "ha_icont" =>
"ha_icont"
536 "ca_cntr" =>
"ca_cntr",
537 "ca_icntr" =>
"ca_icntr",
538 "ca_ihead" =>
"ca_ihead",
539 "ca_icont" =>
"ca_icont"
557 $this->style = array();
558 if($a_call_by_reference)
560 $this->
ilias->raiseError(
"Can't instantiate style object via reference id.",$this->
ilias->error_obj->FATAL);
563 parent::__construct($a_id,
false);
571 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::setRefId() not allowed.",$this->
ilias->error_obj->FATAL);
588 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::putInTree() not allowed.",$this->
ilias->error_obj->FATAL);
596 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::createReference() not allowed.",$this->
ilias->error_obj->FATAL);
604 $this->up_to_date = $a_up_to_date;
612 return $this->up_to_date;
620 $this->scope = $a_scope;
638 $q =
"UPDATE style_data SET uptodate = ".
639 $ilDB->quote((
int) $a_up_to_date,
"integer").
640 " WHERE id = ".$ilDB->quote($a_id,
"integer");
641 $ilDB->manipulate($q);
651 $q =
"SELECT uptodate FROM style_data ".
652 " WHERE id = ".$ilDB->quote($a_id,
"integer");
656 return (
boolean) $sty[
"uptodate"];
666 $q =
"UPDATE style_data SET standard = ".
667 $ilDB->quote((
int) $a_std,
"integer").
668 " WHERE id = ".$ilDB->quote($a_id,
"integer");
669 $ilDB->manipulate($q);
679 $q =
"UPDATE style_data SET category = ".
680 $ilDB->quote((
int) $a_scope,
"integer").
681 " WHERE id = ".$ilDB->quote($a_id,
"integer");
682 $ilDB->manipulate($q);
692 $q =
"SELECT * FROM style_data ".
693 " WHERE id = ".$ilDB->quote($a_id,
"integer");
697 return (
boolean) $sty[
"standard"];
707 $q =
"UPDATE style_data SET active = ".
708 $ilDB->quote((
int) $a_active,
"integer").
709 " WHERE id = ".$ilDB->quote($a_id,
"integer");
710 $ilDB->manipulate($q);
720 $q =
"SELECT * FROM style_data ".
721 " WHERE id = ".$ilDB->quote($a_id,
"integer");
725 return (
boolean) $sty[
"active"];
732 $a_include_deactivated =
false, $a_scope = 0)
736 $default_style =
$ilias->getSetting(
"default_content_style_id");
739 if (!$a_include_deactivated)
741 $and_str =
" AND active = 1";
744 $q =
"SELECT * FROM style_data ".
745 " WHERE standard = 1".$and_str;
750 if (!$a_exclude_default_style || $default_style != $sty[
"id"])
753 if ($a_scope > 0 && $sty[
"category"] > 0)
755 if ($tree->isInTree($sty[
"category"]) &&
756 $tree->isInTree($a_scope))
758 $path = $tree->getPathId($a_scope);
759 if (!in_array($sty[
"category"],
$path))
779 global $ilAccess,
$ilDB;
781 $clonable_styles = array();
783 $q =
"SELECT * FROM style_data";
784 $style_set =
$ilDB->query($q);
785 while($style_rec =
$ilDB->fetchAssoc($style_set))
788 if ($style_rec[
"standard"] == 1)
790 if ($style_rec[
"active"] == 1)
797 include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
799 if (count($obj_ids) == 0)
803 foreach($obj_ids as
$id)
808 if ($ilAccess->checkAccess(
"write",
"",
$ref_id))
817 $clonable_styles[$style_rec[
"id"]] =
822 asort($clonable_styles);
824 return $clonable_styles;
832 $this->meta_data = $a_meta_data;
842 if (!is_object(self::$basic_style_dom))
844 self::$basic_style_dom =
new DOMDocument();
845 self::$basic_style_dom->load(self::$basic_style_file);
856 return $this->meta_data;
862 function create($a_from_style = 0, $a_import_mode =
false)
868 if ($a_from_style == 0)
883 $q =
"INSERT INTO style_data (id, uptodate, category) VALUES ".
884 "(".$ilDB->quote($this->
getId(),
"integer").
", 0,".
885 $ilDB->quote((
int) $this->
getScope(),
"integer").
")";
886 $ilDB->manipulate($q);
894 $q =
"SELECT * FROM style_parameter WHERE style_id = ".
895 $ilDB->quote($a_from_style,
"integer");
896 $par_set =
$ilDB->query($q);
897 while($par_rec =
$ilDB->fetchAssoc($par_set))
899 $def[] = array(
"tag" => $par_rec[
"tag"],
"class" => $par_rec[
"class"],
900 "parameter" => $par_rec[
"parameter"],
"value" => $par_rec[
"value"],
901 "type" => $par_rec[
"type"],
"mq_id" => $par_rec[
"mq_id"],
"custom" => $par_rec[
"custom"]);
906 $q =
"SELECT * FROM style_char WHERE style_id = ".
907 $ilDB->quote($a_from_style,
"integer");
908 $par_set =
$ilDB->query($q);
909 while($par_rec =
$ilDB->fetchAssoc($par_set))
911 $chars[] = array(
"type" => $par_rec[
"type"],
"characteristic" => $par_rec[
"characteristic"]);
917 $mqs = $from_style->getMediaQueries();
918 $mq_mapping = array();
919 foreach ($mqs as $mq)
922 $mq_mapping[$mq[
"id"]] = $nid;
926 foreach ($def as $sty)
928 $id =
$ilDB->nextId(
"style_parameter");
929 $q =
"INSERT INTO style_parameter (id, style_id, tag, class, parameter, value, type, mq_id, custom) VALUES ".
933 $ilDB->quote($sty[
"tag"],
"text").
",".
934 $ilDB->quote($sty[
"class"],
"text").
",".
935 $ilDB->quote($sty[
"parameter"],
"text").
",".
936 $ilDB->quote($sty[
"value"],
"text").
",".
937 $ilDB->quote($sty[
"type"],
"text").
",".
938 $ilDB->quote((
int) $mq_mapping[$sty[
"mq_id"]],
"integer").
",".
939 $ilDB->quote($sty[
"custom"],
"integer").
941 $ilDB->manipulate($q);
945 foreach ($chars as $char)
947 $q =
"INSERT INTO style_char (style_id, type, characteristic) VALUES ".
948 "(".$ilDB->quote($this->
getId(),
"integer").
",".
949 $ilDB->quote($char[
"type"],
"text").
",".
950 $ilDB->quote($char[
"characteristic"],
"text").
")";
951 $ilDB->manipulate($q);
955 $q =
"INSERT INTO style_data (id, uptodate, category) VALUES ".
956 "(".$ilDB->quote($this->
getId(),
"integer").
", 0,".
957 $ilDB->quote((
int) $this->
getScope(),
"integer").
")";
958 $ilDB->manipulate($q);
963 $this->getImagesDirectory());
966 $colors = $from_style->getColors();
967 foreach ($colors as $c)
969 $this->
addColor($c[
"name"], $c[
"code"]);
974 foreach ($tcts as $tct => $v)
1004 $st =
$ilDB->manipulateF(
1005 "DELETE FROM style_char WHERE style_id = %s AND type = %s AND characteristic = %s",
1006 array(
"integer",
"text",
"text"),
1010 $st =
$ilDB->manipulateF(
"DELETE FROM style_parameter WHERE style_id = %s AND tag = %s AND type = %s AND class = %s",
1011 array(
"integer",
"text",
"text",
"text"),
1026 $set =
$ilDB->queryF(
1027 "SELECT style_id FROM style_char WHERE style_id = %s AND characteristic = %s AND type = %s",
1028 array(
"integer",
"text",
"text"),
1029 array($this->
getId(), $a_char, $a_style_type));
1030 if ($rec =
$ilDB->fetchAssoc($set))
1045 $ilDB->manipulateF(
"INSERT INTO style_char (style_id, type, characteristic, hide)".
1046 " VALUES (%s,%s,%s,%s) ",
1047 array(
"integer",
"text",
"text",
"integer"),
1061 $a_from_type, $a_from_char, $a_to_char)
1074 $pars = $from_style->getParametersOfClass($a_from_type, $a_from_char);
1077 foreach ($pars as $p => $v)
1079 if (substr($v, 0, 1) ==
"!")
1081 $colors[] = substr($v, 1);
1084 $a_to_char, $p, $v, $a_from_type);
1088 foreach ($colors as $c)
1092 $this->
addColor($c, $from_style->getColorCodeForName($c));
1106 $chars = $this->chars;
1108 if (is_array($this->chars_by_type[
$a_type]))
1110 foreach ($this->chars_by_type[
$a_type] as $c)
1112 if ($a_include_core || !self::isCoreStyle(
$a_type, $c))
1121 foreach ($chars as $k => $char)
1123 if (
$a_type ==
"" && $this->hidden_chars[$char[
"type"].
":".$char[
"class"]])
1127 else if ($this->hidden_chars[
$a_type.
":".$char])
1142 $this->chars = $a_chars;
1153 $ilDB->manipulate(
"UPDATE style_char SET ".
1154 " hide = ".
$ilDB->quote((
int) $a_hide,
"integer").
1155 " WHERE style_id = ".$ilDB->quote($this->getId(),
"integer").
" AND ".
1156 " type = ".$ilDB->quote(
$a_type,
"text").
" AND ".
1157 " characteristic = ".$ilDB->quote($a_char,
"text")
1168 $set =
$ilDB->query(
"SELECT hide FROM style_char ".
1169 " WHERE style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
1170 " type = ".$ilDB->quote(
$a_type,
"text").
" AND ".
1171 " characteristic = ".$ilDB->quote($a_char,
"text")
1173 $rec =
$ilDB->fetchAssoc($set);
1175 return $rec[
"hide"];
1188 $lng->loadLanguageModule(
"style");
1191 $new_obj->setTitle($this->
getTitle().
" (".$lng->txt(
"sty_acopy").
")");
1192 $new_obj->setType($this->
getType());
1194 $new_obj->create($this->
getId());
1196 $new_obj->writeStyleSetting(
"disable_auto_margins",
1199 return $new_obj->getId();
1224 $tag = explode(
".", $a_tag);
1225 $value = $avail_params[$a_par][0];
1226 $id =
$ilDB->nextId(
"style_parameter");
1227 $q =
"INSERT INTO style_parameter (id,style_id, type, tag, class, parameter, value, mq_id, custom) VALUES ".
1231 $ilDB->quote(
$a_type,
"text").
",".
1232 $ilDB->quote($tag[0],
"text").
",".
1233 $ilDB->quote($tag[1],
"text").
",".
1234 $ilDB->quote($a_par,
"text").
",".
1235 $ilDB->quote($value,
"text").
",".
1236 $ilDB->quote($a_mq_id,
"integer").
",".
1237 $ilDB->quote($a_custom,
"integer").
1239 $ilDB->manipulate($q);
1263 if(!is_writable($sty_data_dir))
1265 $ilErr->raiseError(
"Style data directory (".$sty_data_dir
1266 .
") not writeable.",
$ilErr->FATAL);
1269 $style_dir = $sty_data_dir.
"/sty_".$a_style_id;
1271 if(!@is_dir($style_dir))
1273 $ilErr->raiseError(
"Creation of style directory failed (".
1274 $style_dir.
").",
$ilErr->FATAL);
1278 $im_dir = $style_dir.
"/images";
1280 if(!@is_dir($im_dir))
1282 $ilErr->raiseError(
"Creation of Import Directory failed (".
1283 $im_dir.
").",
$ilErr->FATAL);
1287 $thumb_dir = $style_dir.
"/images/thumbnails";
1289 if(!@is_dir($thumb_dir))
1291 $ilErr->raiseError(
"Creation of Import Directory failed (".
1292 $thumb_dir.
").",
$ilErr->FATAL);
1332 foreach($entries as $entry)
1334 if (substr($entry[
"entry"],0,1) ==
".")
1338 if ($entry[
"type"] !=
"dir")
1384 $q =
"DELETE FROM style_parameter WHERE id = ".
1385 $ilDB->quote($a_id,
"integer");
1402 $q =
"DELETE FROM style_parameter WHERE ".
1403 " style_id = ".$ilDB->quote($this->
getId(),
"integer").
" AND ".
1404 " tag = ".$ilDB->quote($a_tag,
"text").
" AND ".
1405 " class = ".$ilDB->quote($a_class,
"text").
" AND ".
1406 " mq_id = ".$ilDB->quote($a_mq_id,
"integer").
" AND ".
1407 " custom = ".$ilDB->quote($a_custom,
"integer").
" AND ".
1408 " ".$ilDB->equals(
"type",
$a_type,
"text",
true).
" AND ".
1409 " parameter = ".$ilDB->quote($a_par,
"text");
1411 $ilDB->manipulate($q);
1427 $q =
"DELETE FROM style_parameter WHERE ".
1428 " style_id = ".$ilDB->quote($this->
getId(),
"integer").
" AND ".
1429 " tag = ".$ilDB->quote($a_tag,
"text").
" AND ".
1430 " class = ".$ilDB->quote($a_class,
"text").
" AND ".
1431 " mq_id = ".$ilDB->quote($a_mq_id,
"integer").
" AND ".
1432 " custom = ".$ilDB->quote(1,
"integer").
" AND ".
1433 " ".$ilDB->equals(
"type",
$a_type,
"text",
true);
1435 $ilDB->manipulate($q);
1450 $q =
"DELETE FROM style_parameter WHERE ".
1451 " style_id = ".$ilDB->quote($this->
getId(),
"integer").
" AND ".
1452 " class = ".$ilDB->quote($a_class,
"text").
" AND ".
1453 " ".$ilDB->equals(
"type",
$a_type,
"text",
true);
1455 $ilDB->manipulate($q);
1470 $def_style = $this->
ilias->getSetting(
"default_content_style_id");
1471 if ($def_style == $this->
getId())
1473 $this->
ilias->deleteSetting(
"default_content_style_id");
1477 $fixed_style = $this->
ilias->getSetting(
"fixed_content_style_id");
1478 if ($fixed_style == $this->
getId())
1480 $this->
ilias->deleteSetting(
"fixed_content_style_id");
1484 $q =
"DELETE FROM style_parameter WHERE style_id = ".
1486 $ilDB->manipulate($q);
1490 if (is_file($css_file_name))
1492 unlink($css_file_name);
1496 $ilDB->manipulate(
"DELETE FROM sty_media_query WHERE ".
1497 " style_id = ".
$ilDB->quote($this->getId(),
"integer")
1501 include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
1505 $q =
"DELETE FROM style_data WHERE id = ".
1507 $ilDB->manipulate($q);
1521 $q =
"SELECT * FROM style_parameter WHERE style_id = ".
1522 $ilDB->quote($this->
getId(),
"integer").
" ORDER BY tag, class, type, mq_id ";
1523 $style_set =
$ilDB->query($q);
1528 $this->style = array();
1532 $this->end_styles = array();
1533 while($style_rec =
$ilDB->fetchAssoc($style_set))
1535 if ($style_rec[
"tag"] != $ctag || $style_rec[
"class"] != $cclass
1536 || $style_rec[
"type"] != $ctype || $style_rec[
"mq_id"] != $cmq_id)
1541 if (in_array($ctype, array(
"ha_iheada",
"va_iheada")))
1543 $this->end_styles[] = $tag;
1547 $this->style[] = $tag;
1552 $ctag = $style_rec[
"tag"];
1553 $cclass = $style_rec[
"class"];
1554 $ctype = $style_rec[
"type"];
1555 $cmq_id = $style_rec[
"mq_id"];
1556 $tag[] = $style_rec;
1558 $this->style_class[$ctype][$cclass][$cmq_id][$style_rec[
"parameter"]] = $style_rec[
"value"];
1562 $this->style[] = $tag;
1564 foreach ($this->end_styles as $s)
1566 $this->style[] = $s;
1569 $q =
"SELECT * FROM style_data WHERE id = ".
1571 $res = $ilDB->query($q);
1577 $this->chars = array();
1578 $this->chars_by_type = array();
1579 $q =
"SELECT * FROM style_char WHERE style_id = ".
1581 " ORDER BY type ASC, characteristic ASC";
1582 $par_set =
$ilDB->query($q);
1583 while($par_rec =
$ilDB->fetchAssoc($par_set))
1585 $this->chars[] = array(
"type" => $par_rec[
"type"],
"class" => $par_rec[
"characteristic"],
"hide" => $par_rec[
"hide"]);
1586 $this->chars_by_type[$par_rec[
"type"]][] = $par_rec[
"characteristic"];
1587 if ($par_rec[
"hide"])
1589 $this->hidden_chars[$par_rec[
"type"].
":".$par_rec[
"characteristic"]] =
true;
1602 if ($a_target_file ==
"")
1608 $css_file_name = $a_target_file;
1610 $css_file = fopen($css_file_name,
"w");
1612 $page_background =
"";
1614 $mqs = array(array(
"mquery" =>
"",
"id" => 0));
1621 foreach ($mqs as $mq)
1625 fwrite ($css_file,
"@media ".$mq[
"mquery"].
" {\n");
1630 if ($tag[0][
"mq_id"] != $mq[
"id"])
1634 fwrite ($css_file, $tag[0][
"tag"].
".ilc_".$tag[0][
"type"].
"_".$tag[0][
"class"].
"\n");
1637 if ($tag[0][
"tag"] ==
"td")
1639 fwrite ($css_file,
",th".
".ilc_".$tag[0][
"type"].
"_".$tag[0][
"class"].
"\n");
1641 if (in_array($tag[0][
"tag"], array(
"h1",
"h2",
"h3")))
1643 fwrite ($css_file,
",div.ilc_text_block_".$tag[0][
"class"].
"\n");
1644 fwrite ($css_file,
",body.ilc_text_block_".$tag[0][
"class"].
"\n");
1646 if ($tag[0][
"type"] ==
"section")
1648 fwrite ($css_file,
",a.ilc_".$tag[0][
"type"].
"_".$tag[0][
"class"].
"\n");
1650 if ($tag[0][
"type"] ==
"text_block")
1652 fwrite ($css_file,
",body.ilc_text_block_".$tag[0][
"class"].
"\n");
1654 fwrite ($css_file,
"{\n");
1657 $t_border = array();
1659 foreach($tag as $par)
1661 $cur_par = $par[
"parameter"];
1662 $cur_val = $par[
"value"];
1665 if (is_int(strpos($cur_par,
"color")) && substr(trim($cur_val), 0, 1) ==
"!")
1670 if ($tag[0][
"type"] ==
"table" && is_int(strpos($par[
"parameter"],
"border")))
1672 $t_border[$cur_par] = $cur_val;
1675 if (in_array($cur_par, array(
"background-image",
"list-style-image")))
1677 if (is_int(strpos($cur_val,
"/")))
1679 $cur_val =
"url(".$cur_val.
")";
1683 if ($a_image_dir ==
"")
1685 $cur_val =
"url(../sty/sty_".$this->getId().
"/images/".$cur_val.
")";
1689 $cur_val =
"url(".$a_image_dir.
"/".$cur_val.
")";
1694 if ($cur_par ==
"opacity")
1696 $cur_val = ((int) $cur_val) / 100;
1699 fwrite ($css_file,
"\t".$cur_par.
": ".$cur_val.
";\n");
1702 if ($cur_par ==
"min-height")
1704 fwrite ($css_file,
"\t".
"height".
": ".
"auto !important".
";\n");
1705 fwrite ($css_file,
"\t".
"height".
": ".$cur_val.
";\n");
1709 if ($cur_par ==
"opacity")
1711 fwrite ($css_file,
"\t".
'-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity='.($cur_val * 100).
')"'.
";\n");
1712 fwrite ($css_file,
"\t".
'filter: alpha(opacity='.($cur_val * 100).
')'.
";\n");
1713 fwrite ($css_file,
"\t".
'-moz-opacity: '.$cur_val.
";\n");
1717 if ($cur_par ==
"transform")
1719 fwrite ($css_file,
"\t".
'-webkit-transform: '.$cur_val.
";\n");
1720 fwrite ($css_file,
"\t".
'-moz-transform: '.$cur_val.
";\n");
1721 fwrite ($css_file,
"\t".
'-ms-transform: '.$cur_val.
";\n");
1725 if ($cur_par ==
"transform-origin")
1727 fwrite ($css_file,
"\t".
'-webkit-transform-origin: '.$cur_val.
";\n");
1728 fwrite ($css_file,
"\t".
'-moz-transform-origin: '.$cur_val.
";\n");
1729 fwrite ($css_file,
"\t".
'-ms-transform-origin: '.$cur_val.
";\n");
1733 if ($tag[0][
"tag"] ==
"div" && $tag[0][
"class"] ==
"Page"
1734 && $cur_par ==
"background-color")
1736 $page_background = $cur_val;
1739 fwrite ($css_file,
"}\n");
1740 fwrite ($css_file,
"\n");
1760 if ($page_background !=
"")
1762 fwrite ($css_file,
"td.ilc_Page\n");
1763 fwrite ($css_file,
"{\n");
1764 fwrite ($css_file,
"\t".
"background-color: ".$page_background.
";\n");
1765 fwrite ($css_file,
"}\n");
1769 fwrite ($css_file,
"}\n");
1789 $fixed_style =
$ilSetting->get(
"fixed_content_style_id");
1790 if ($fixed_style > 0)
1792 $a_style_id = $fixed_style;
1796 if ($a_style_id <= 0)
1798 $a_style_id =
$ilSetting->get(
"default_content_style_id");
1817 if (is_array($this->style_class[
$a_type][$a_class][$a_mq_id]))
1819 return $this->style_class[
$a_type][$a_class][$a_mq_id];
1833 $rand = rand(1,999999);
1837 $fixed_style =
$ilias->getSetting(
"fixed_content_style_id");
1838 if ($fixed_style > 0)
1840 $a_style_id = $fixed_style;
1844 if ($a_style_id <= 0)
1846 $a_style_id =
$ilias->getSetting(
"default_content_style_id");
1859 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
1866 return "./Services/COPage/css/content.css";
1877 return "./Services/COPage/css/print_content.css";
1887 return "./Services/COPage/css/syntaxhighlight.css";
1897 return "./Services/COPage/css/placeholder.css";
1908 $q =
"UPDATE style_data ".
1909 "SET category = ".$ilDB->quote((
int) $this->
getScope(),
"integer").
1910 " WHERE id = ".$ilDB->quote($this->
getId(),
"integer");
1911 $ilDB->manipulate($q);
1924 $q =
"UPDATE style_parameter SET VALUE = ".
1925 $ilDB->quote($a_value,
"text").
" WHERE id = ".
1926 $ilDB->quote($a_id,
"integer");
1927 $style_set =
$ilDB->manipulate($q);
1944 $q =
"SELECT * FROM style_parameter WHERE ".
1945 " style_id = ".$ilDB->quote($style_id,
"integer").
" AND ".
1946 " tag = ".$ilDB->quote($a_tag,
"text").
" AND ".
1947 " class = ".$ilDB->quote($a_class,
"text").
" AND ".
1948 " mq_id = ".$ilDB->quote($a_mq_id,
"integer").
" AND ".
1949 " custom = ".$ilDB->quote($a_custom,
"integer").
" AND ".
1950 " ".$ilDB->equals(
"type",
$a_type,
"text",
true).
" AND ".
1951 " parameter = ".$ilDB->quote($a_par,
"text");
1953 $set =
$ilDB->query($q);
1955 if ($rec = $set->fetchRow())
1957 $q =
"UPDATE style_parameter SET ".
1958 " value = ".$ilDB->quote($a_val,
"text").
" WHERE ".
1959 " style_id = ".$ilDB->quote($style_id,
"integer").
" AND ".
1960 " tag = ".$ilDB->quote($a_tag,
"text").
" AND ".
1961 " class = ".$ilDB->quote($a_class,
"text").
" AND ".
1962 " mq_id = ".$ilDB->quote($a_mq_id,
"integer").
" AND ".
1963 " custom = ".$ilDB->quote($a_custom,
"integer").
" AND ".
1964 " ".$ilDB->equals(
"type",
$a_type,
"text",
true).
" AND ".
1965 " parameter = ".$ilDB->quote($a_par,
"text");
1967 $ilDB->manipulate($q);
1971 $id =
$ilDB->nextId(
"style_parameter");
1972 $q =
"INSERT INTO style_parameter (id, value, style_id, tag, class, type, parameter, mq_id, custom) VALUES ".
1975 $ilDB->quote($a_val,
"text").
",".
1976 " ".$ilDB->quote($style_id,
"integer").
",".
1977 " ".$ilDB->quote($a_tag,
"text").
",".
1978 " ".$ilDB->quote($a_class,
"text").
",".
1979 " ".$ilDB->quote(
$a_type,
"text").
",".
1980 " ".$ilDB->quote($a_par,
"text").
",".
1981 " ".$ilDB->quote($a_mq_id,
"integer").
",".
1982 " ".$ilDB->quote($a_custom,
"integer").
1985 $ilDB->manipulate($q);
2003 $this->style = $a_style;
2015 return str_replace(
"&",
"&", $a_str);
2024 $xml.=
"<StyleSheet>\n";
2027 $xml.=
"<Title>".$this->handleXmlString($this->
getTitle()).
"</Title>";
2028 $xml.=
"<Description>".$this->handleXmlString($this->
getDescription()).
"</Description>\n";
2031 foreach($this->chars as $char)
2033 $xml.=
"<Style Tag=\"".ilObjStyleSheet::_determineTag($char[
"type"]).
2034 "\" Type=\"".$char[
"type"].
"\" Class=\"".$char[
"class"].
"\">\n";
2035 foreach($this->style as
$style)
2037 if (
$style[0][
"type"] == $char[
"type"] &&
$style[0][
"class"] == $char[
"class"])
2041 $xml.=
"<StyleParameter Name=\"".$tag[
"parameter"].
"\" Value=\"".$tag[
"value"].
"\" Custom=\"".$tag[
"custom"].
"\" />\n";
2045 $xml.=
"</Style>\n";
2051 $xml.=
"<StyleColor Name=\"".$color[
"name"].
"\" Code=\"".$color[
"code"].
"\"/>\n";
2056 foreach ($tcts as $tct => $v)
2062 $xml.=
"<StyleTemplate Type=\"".$tct.
"\" Name=\"".
$t[
"name"].
"\">\n";
2063 foreach (
$t[
"classes"] as $ct => $c)
2067 $xml.=
"<StyleTemplateClass ClassType=\"".$ct.
"\" Class=\"".$c.
"\"/>\n";
2070 $xml.=
"</StyleTemplate>\n";
2075 $xml.=
"</StyleSheet>";
2088 if(!is_writable($sty_data_dir))
2090 $this->
ilias->raiseError(
"Style data directory (".$sty_data_dir
2091 .
") not writeable.",$this->
ilias->error_obj->FATAL);
2094 $style_dir = $sty_data_dir.
"/sty_".$this->
getId();
2096 if(!@is_dir($style_dir))
2098 $this->
ilias->raiseError(
"Creation of style directory failed (".
2099 $style_dir.
").",$this->ilias->error_obj->FATAL);
2103 $ex_dir = $style_dir.
"/export";
2105 if(!@is_dir($ex_dir))
2107 $this->
ilias->raiseError(
"Creation of Import Directory failed (".
2108 $ex_dir.
").",$this->ilias->error_obj->FATAL);
2120 $style_dir = $sty_data_dir.
"/sty_".$this->
getId();
2122 $ex_dir = $style_dir.
"/export";
2124 if (is_dir($ex_dir))
2139 if(!is_writable($ex_sub_dir))
2141 $this->
ilias->raiseError(
"Style data directory (".$ex_sub_dir
2142 .
") not writeable.",$this->
ilias->error_obj->FATAL);
2144 $ex_sub_images_dir = $ex_sub_dir.
"/images";
2146 if(!is_writable($ex_sub_images_dir))
2148 $this->
ilias->raiseError(
"Style data directory (".$ex_sub_images_dir
2149 .
") not writeable.",$this->
ilias->error_obj->FATAL);
2158 $this->export_sub_dir = $a_dir;
2166 if ($this->export_sub_dir ==
"")
2168 return "sty_".$this->getId();
2172 return $this->export_sub_dir;
2186 $this->
exportXML($ex_dir.
"/".$this->getExportSubDir());
2189 $ex_dir.
"/".$this->getExportSubDir().
"/images");
2190 if (is_file($ex_dir.
"/".$this->getExportSubDir().
".zip"))
2192 unlink($ex_dir.
"/".$this->getExportSubDir().
".zip");
2195 $ex_dir.
"/".$this->getExportSubDir().
".zip");
2205 $file = $a_dir.
"/style.xml";
2208 if (!($fp = @fopen(
$file,
"w")))
2210 die (
"<b>Error</b>: Could not open \"".
$file.
"\" for writing".
2211 " in <b>".__FILE__.
"</b> on line <b>".__LINE__.
"</b><br />");
2218 fwrite($fp, $this->
getXML());
2232 if(!is_writable($sty_data_dir))
2234 $this->
ilias->raiseError(
"Style data directory (".$sty_data_dir
2235 .
") not writeable.",$this->
ilias->error_obj->FATAL);
2238 $style_dir = $sty_data_dir.
"/sty_".$this->
getId();
2240 if(!@is_dir($style_dir))
2242 $this->
ilias->raiseError(
"Creation of style directory failed (".
2243 $style_dir.
").",$this->ilias->error_obj->FATAL);
2247 $im_dir = $style_dir.
"/import";
2249 if(!@is_dir($im_dir))
2251 $this->
ilias->raiseError(
"Creation of Import Directory failed (".
2252 $im_dir.
").",$this->ilias->error_obj->FATAL);
2261 function import($a_file)
2268 if (is_array($a_file))
2271 $a_file[
"name"], $im_dir.
"/".$a_file[
"name"]);
2272 $file_name = $a_file[
"name"];
2276 $pi = pathinfo($a_file);
2277 $file_name = $pi[
"basename"];
2278 copy($a_file, $im_dir.
"/".$file_name);
2280 $file = pathinfo($file_name);
2283 if (strtolower(
$file[
"extension"] ==
"zip"))
2286 $subdir = basename(
$file[
"basename"],
".".
$file[
"extension"]);
2287 if (!is_dir($im_dir.
"/".$subdir))
2291 $xml_file = $im_dir.
"/".$subdir.
"/style.xml";
2295 $xml_file = $im_dir.
"/".$file_name;
2304 if (is_dir($im_dir.
"/".$subdir.
"/images"))
2307 $this->getImagesDirectory());
2323 $this->is_3_10_skin =
false;
2325 if (!$a_skip_parent_create)
2329 include_once(
"./Services/Style/Content/classes/class.ilStyleImportParser.php");
2331 $importParser->startParsing();
2334 foreach ($this->style as
$style)
2338 $id =
$ilDB->nextId(
"style_parameter");
2341 if (in_array($tag[
"class"], array(
"PageFrame",
"PageContainer")) &&
2342 $tag[
"tag"] ==
"table")
2344 $tag[
"tag"] =
"div";
2345 if ($tag[
"parameter"] ==
"width" && $tag[
"value"] ==
"100%")
2351 $q =
"INSERT INTO style_parameter (id,style_id, tag, class, parameter, type, value, custom) VALUES ".
2355 $ilDB->quote($tag[
"tag"],
"text").
",".
2356 $ilDB->quote($tag[
"class"],
"text").
",".
2357 $ilDB->quote($tag[
"parameter"],
"text").
",".
2358 $ilDB->quote($tag[
"type"],
"text").
",".
2359 $ilDB->quote($tag[
"value"],
"text").
",".
2360 $ilDB->quote((
bool) $tag[
"custom"],
"integer").
2362 $ilDB->manipulate($q);
2367 $this->is_3_10_skin =
true;
2368 if (is_array($this->chars))
2370 foreach ($this->chars as $char)
2372 if ($char[
"type"] !=
"")
2374 $s = substr($char[
"class"], strlen($char[
"class"]) - 6);
2377 $q =
"INSERT INTO style_char (style_id, type, characteristic) VALUES ".
2378 "(".$ilDB->quote($this->
getId(),
"integer").
",".
2379 $ilDB->quote($char[
"type"],
"text").
",".
2380 $ilDB->quote($char[
"class"],
"text").
")";
2381 $ilDB->manipulate($q);
2382 $this->is_3_10_skin =
false;
2389 $q =
"INSERT INTO style_data (id, uptodate) VALUES ".
2390 "(".$ilDB->quote($this->
getId(),
"integer").
", 0)";
2391 $ilDB->manipulate($q);
2396 if ($this->is_3_10_skin)
2410 foreach (self::$parameter as
$parameter => $props)
2419 $input = self::$parameter[$par][
"input"];
2425 $subpar = self::$parameter[$par][
"subpar"];
2436 foreach (self::$parameter as $k => $v)
2438 if (is_array(self::$filtered_groups[$v[
"group"]]) &&
2439 !in_array($a_tag, self::$filtered_groups[$v[
"group"]]))
2455 if ($a_no_percentage)
2464 return self::$parameter[$par][
"values"];
2479 return in_array(
$a_type, self::$expandable_types);
2484 return in_array(
$a_type, self::$hideable_types);
2489 foreach (self::$style_super_types as $s =>
$t)
2507 $c_styles = array();
2508 foreach (self::$core_styles as $cstyle)
2511 = array(
"type" => $cstyle[
"type"],
2513 "class" => $cstyle[
"class"]);
2526 foreach (self::$core_styles as $s)
2528 if ($s[
"type"] ==
$a_type && $s[
"class"] == $a_class)
2542 if ($a_template_type ==
"")
2547 return self::$templates[$a_template_type];
2553 return self::$pseudo_classes[$tag];
2558 return self::$templates[
$t][$k];
2563 return self::$assigned_tags[
$a_type];
2572 foreach(self::$parameter as $p => $v)
2574 $pars[$p] = $v[
"values"];
2586 $styles = array(array(
"id" => $a_id));
2598 if ($a_styles ==
"")
2610 $core_images = array();
2612 if (is_dir($core_dir))
2614 $dir = opendir($core_dir);
2615 while(
$file = readdir($dir))
2617 if (substr(
$file, 0, 1) !=
"." && is_file($core_dir.
"/".
$file))
2619 $core_images[] =
$file;
2631 $set =
$ilDB->queryF(
"SELECT * FROM style_char WHERE style_id = %s ".
2632 "AND type = %s AND characteristic = %s",
2633 array(
"integer",
"text",
"text"),
2634 array(
$id, $cs[
"type"], $cs[
"class"]));
2637 if (!($rec =
$ilDB->fetchAssoc($set)))
2640 "INSERT INTO style_char (style_id, type, characteristic) ".
2641 " VALUES (%s,%s,%s) ",
2642 array(
"integer",
"text",
"text"),
2643 array(
$id, $cs[
"type"], $cs[
"class"]));
2645 $xpath =
new DOMXPath($bdom);
2646 $par_nodes = $xpath->query(
"/StyleSheet/Style[@Tag = '".$cs[
"tag"].
"' and @Type='".
2647 $cs[
"type"].
"' and @Class='".$cs[
"class"].
"']/StyleParameter");
2648 foreach ($par_nodes as $par_node)
2651 $set =
$ilDB->queryF(
"SELECT * FROM style_parameter WHERE style_id = %s ".
2652 "AND type = %s AND class = %s AND tag = %s AND parameter = %s",
2653 array(
"integer",
"text",
"text",
"text",
"text"),
2654 array(
$id, $cs[
"type"], $cs[
"class"],
2655 $cs[
"tag"], $par_node->getAttribute(
"Name")));
2658 if (!($rec =
$ilDB->fetchAssoc($set)))
2660 $spid =
$ilDB->nextId(
"style_parameter");
2661 $st =
$ilDB->manipulateF(
"INSERT INTO style_parameter (id, style_id, type, class, tag, parameter, value) ".
2662 " VALUES (%s,%s,%s,%s,%s,%s,%s)",
2663 array(
"integer",
"integer",
"text",
"text",
"text",
"text",
"text"),
2664 array($spid,
$id, $cs[
"type"], $cs[
"class"], $cs[
"tag"],
2665 $par_node->getAttribute(
"Name"), $par_node->getAttribute(
"Value")));
2674 reset($core_images);
2675 foreach($core_images as $cim)
2677 if (!is_file($imdir.
"/".$cim))
2679 copy($core_dir.
"/".$cim, $imdir.
"/".$cim);
2704 $st =
$ilDB->prepareManip(
"UPDATE style_char SET type = ? WHERE characteristic = ?".
2705 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2706 $ilDB->execute($st, array(
"media_cont",
"Media", $this->
getId()));
2707 $ilDB->execute($st, array(
"media_caption",
"MediaCaption", $this->
getId()));
2708 $ilDB->execute($st, array(
"page_fn",
"Footnote", $this->
getId()));
2709 $ilDB->execute($st, array(
"page_nav",
"LMNavigation", $this->
getId()));
2710 $ilDB->execute($st, array(
"page_title",
"PageTitle", $this->
getId()));
2711 $ilDB->execute($st, array(
"page_cont",
"Page", $this->
getId()));
2714 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET type = ? WHERE class = ?".
2715 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2716 $ilDB->execute($st, array(
"media_cont",
"Media", $this->
getId()));
2717 $ilDB->execute($st, array(
"media_caption",
"MediaCaption", $this->
getId()));
2718 $ilDB->execute($st, array(
"page_fn",
"Footnote", $this->
getId()));
2719 $ilDB->execute($st, array(
"page_nav",
"LMNavigation", $this->
getId()));
2720 $ilDB->execute($st, array(
"page_title",
"PageTitle", $this->
getId()));
2721 $ilDB->execute($st, array(
"table",
"Page", $this->
getId()));
2723 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET tag = ? WHERE class = ?".
2724 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2725 $ilDB->execute($st, array(
"div",
"MediaCaption", $this->
getId()));
2728 $st =
$ilDB->prepareManip(
"UPDATE style_char SET characteristic = ? WHERE characteristic = ?".
2729 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2730 $ilDB->execute($st, array(
"MediaContainer",
"Media", $this->
getId()));
2731 $ilDB->execute($st, array(
"PageContainer",
"Page", $this->
getId()));
2734 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET class = ? WHERE class = ?".
2735 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2736 $ilDB->execute($st, array(
"MediaContainer",
"Media", $this->
getId()));
2737 $ilDB->execute($st, array(
"PageContainer",
"Page", $this->
getId()));
2740 $st =
$ilDB->prepareManip(
"DELETE FROM style_char WHERE type = ?".
2741 " AND style_id = ? ", array(
"text",
"integer"));
2742 $ilDB->execute($st, array(
"page_cont", $this->
getId()));
2743 $st =
$ilDB->prepareManip(
"DELETE FROM style_parameter WHERE type = ?".
2744 " AND style_id = ? ", array(
"text",
"integer"));
2745 $ilDB->execute($st, array(
"page_cont", $this->
getId()));
2762 $add_str =
" AND style_id = ".$ilDB->quote($a_id,
"integer");
2765 $set =
$ilDB->query($q =
"SELECT DISTINCT style_id, tag, class FROM style_parameter WHERE ".
2766 $ilDB->equals(
"type",
"",
"text",
true).
" ".$add_str);
2768 while ($rec =
$ilDB->fetchAssoc($set))
2772 switch ($rec[
"tag"])
2776 if (in_array($rec[
"class"], array(
"Headline3",
"Headline1",
2777 "Headline2",
"TableContent",
"List",
"Standard",
"Remark",
2778 "Additional",
"Mnemonic",
"Citation",
"Example")))
2780 $types[] =
"text_block";
2782 if (in_array($rec[
"class"], array(
"Block",
"Remark",
2783 "Additional",
"Mnemonic",
"Example",
"Excursus",
"Special")))
2785 $types[] =
"section";
2787 if (in_array($rec[
"class"], array(
"Page",
"Footnote",
"PageTitle",
"LMNavigation")))
2794 $types[] =
"table_cell";
2798 if (in_array($rec[
"class"], array(
"ExtLink",
"IntLink",
"FootnoteLink")))
2805 $types[] =
"text_inline";
2814 foreach ($types as
$t)
2817 $set4 =
$ilDB->queryF(
"SELECT * FROM style_char ".
2818 " WHERE style_id = %s AND type = %s AND characteristic = %s",
2819 array(
"integer",
"text",
"text"),
2820 array($rec[
"style_id"],
$t, $rec[
"class"]));
2821 if ($rec4 =
$ilDB->fetchAssoc($set4))
2828 $ilDB->manipulateF(
"INSERT INTO style_char ".
2829 " (style_id, type, characteristic) VALUES ".
2831 array(
"integer",
"text",
"text"),
2832 array($rec[
"style_id"],
$t, $rec[
"class"]));
2837 if ($rec[
"type"] ==
"")
2839 if (count($types) > 0)
2841 $ilDB->manipulateF(
"UPDATE style_parameter SET type = %s ".
2842 " WHERE style_id = %s AND class = %s AND ".
$ilDB->equals(
"type",
"",
"text",
true),
2843 array(
"text",
"integer",
"text"),
2844 array($types[0], $rec[
"style_id"], $rec[
"class"]));
2848 if ($types[0] ==
"link")
2850 $ilDB->manipulateF(
"UPDATE style_parameter SET type = %s ".
2851 " WHERE style_id = %s AND (class = %s OR class = %s) AND ".
$ilDB->equals(
"type",
"",
"text",
true),
2852 array(
"text",
"integer",
"text",
"text"),
2853 array($types[0], $rec[
"style_id"], $rec[
"class"].
":visited",
2854 $rec[
"class"].
":hover"));
2858 if (count($types) == 2)
2862 $set2 =
$ilDB->queryF(
"SELECT * FROM style_parameter ".
2863 " WHERE style_id = %s AND class = %s AND type = %s",
2864 array(
"integer",
"text",
"text"),
2865 array($rec[
"style_id"], $rec[
"class"], $types[0]));
2866 while ($rec2 =
$ilDB->fetchAssoc($set2))
2869 $set3 =
$ilDB->queryF(
"SELECT * FROM style_parameter ".
2870 " WHERE style_id = %s AND tag = %s AND class = %s AND type = %s AND parameter = %s",
2871 array(
"integer",
"text",
"text",
"text",
"text"),
2872 array($rec[
"style_id"], $rec[
"tag"], $rec[
"class"], $types[1], $rec[
"parameter"]));
2873 if ($rec3 =
$ilDB->fetchAssoc($set3))
2879 $nid =
$ilDB->nextId(
"style_parameter");
2880 $ilDB->manipulateF(
"INSERT INTO style_parameter ".
2881 " (id, style_id, tag, class, parameter, value, type) VALUES ".
2882 " (%s, %s,%s,%s,%s,%s,%s) ",
2883 array(
"integer",
"integer",
"text",
"text",
"text",
"text",
"text"),
2884 array($nid, $rec2[
"style_id"], $rec2[
"tag"], $rec2[
"class"],
2885 $rec2[
"parameter"], $rec2[
"value"], $types[1]));
2900 $classes = array(
"Example",
"Additional",
"Citation",
"Mnemonic",
"Remark");
2901 $pars = array(
"margin-top",
"margin-bottom");
2903 foreach ($classes as $curr_class)
2905 foreach ($pars as $curr_par)
2907 $res2 =
$ilDB->queryF(
"SELECT id FROM style_parameter WHERE style_id = %s".
2908 " AND tag = %s AND class= %s AND parameter = %s",
2909 array(
"integer",
"text",
"text",
"text"),
2910 array($a_id,
"p", $curr_class, $curr_par));
2911 if ($row2 =
$ilDB->fetchAssoc($res2))
2913 $ilDB->manipulateF(
"UPDATE style_parameter SET value= %s WHERE id = %s",
2914 array(
"text",
"integer"),
2915 array(
"10px", $row2[
"id"]));
2919 $nid =
$ilDB->nextId(
"style_parameter");
2920 $ilDB->manipulateF(
"INSERT INTO style_parameter ".
2921 "(id, style_id, tag, class, parameter,value) VALUES (%s,%s,%s,%s,%s,%s)",
2922 array(
"integer",
"integer",
"text",
"text",
"text",
"text"),
2923 array($nid, $a_id,
"div", $curr_class, $curr_par,
"10px"));
2928 $ilDB->manipulateF(
"UPDATE style_parameter SET tag = %s WHERE tag = %s and style_id = %s",
2929 array(
"text",
"text",
"integer"),
2930 array(
"div",
"p", $a_id));
2945 $set =
$ilDB->query(
"SELECT * FROM style_color WHERE ".
2946 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" ".
2947 "ORDER BY color_name");
2950 while ($rec =
$ilDB->fetchAssoc($set))
2953 "name" => $rec[
"color_name"],
2954 "code" => $rec[
"color_code"]
2968 $ilDB->manipulate(
"INSERT INTO style_color (style_id, color_name, color_code)".
2970 $ilDB->quote($this->getId(),
"integer").
",".
2971 $ilDB->quote($a_name,
"text").
",".
2972 $ilDB->quote($a_code,
"text").
2985 $ilDB->manipulate(
"UPDATE style_color SET ".
2986 "color_name = ".
$ilDB->quote($a_new_name,
"text").
", ".
2987 "color_code = ".$ilDB->quote($a_code,
"text").
2988 " WHERE style_id = ".$ilDB->quote($this->getId(),
"integer").
2989 " AND color_name = ".$ilDB->quote($a_name,
"text"));
2993 if ($a_name != $a_new_name)
2995 $set =
$ilDB->query(
"SELECT * FROM style_parameter ".
2996 " WHERE style_id = ".
$ilDB->quote($this->getId(),
"integer").
2998 " parameter = ".$ilDB->quote(
"background-color",
"text").
" OR ".
2999 " parameter = ".$ilDB->quote(
"color",
"text").
" OR ".
3000 " parameter = ".$ilDB->quote(
"border-color",
"text").
" OR ".
3001 " parameter = ".$ilDB->quote(
"border-top-color",
"text").
" OR ".
3002 " parameter = ".$ilDB->quote(
"border-bottom-color",
"text").
" OR ".
3003 " parameter = ".$ilDB->quote(
"border-left-color",
"text").
" OR ".
3004 " parameter = ".$ilDB->quote(
"border-right-color",
"text").
3006 while ($rec =
$ilDB->fetchAssoc($set))
3008 if ($rec[
"value"] ==
"!".$a_name ||
3009 is_int(strpos($rec[
"value"],
"!".$a_name.
"(")))
3013 $rec[
"parameter"], str_replace($a_name, $a_new_name, $rec[
"value"]), $rec[
"type"], $rec[
"mq_id"], $rec[
"custom"]);
3026 $ilDB->manipulate(
"DELETE FROM style_color WHERE ".
3027 " style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3028 " color_name = ".$ilDB->quote($a_name,
"text"));
3038 $set =
$ilDB->query(
"SELECT * FROM style_color WHERE ".
3039 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3040 "color_name = ".$ilDB->quote($a_color_name,
"text"));
3041 if ($rec =
$ilDB->fetchAssoc($set))
3055 $pos = strpos($a_name,
"(");
3058 $a_i = substr($a_name, $pos + 1);
3059 $a_i = str_replace(
")",
"", $a_i);
3060 $a_name = substr($a_name, 0, $pos);
3063 $set =
$ilDB->query(
"SELECT color_code FROM style_color WHERE ".
3064 " style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3065 " color_name = ".$ilDB->quote($a_name,
"text"));
3066 if ($rec =
$ilDB->fetchAssoc($set))
3070 return "#".$rec[
"color_code"];
3074 return "#".ilObjStyleSheet::_getColorFlavor($rec[
"color_code"],
3090 $hls[
"l"] = $hls[
"l"] + ((255 - $hls[
"l"]) * ($a_i / 100));
3094 $hls[
"l"] = $hls[
"l"] - (($hls[
"l"]) * (-$a_i / 100));
3099 foreach ($rgb as $k => $v)
3101 $rgb[$k] = str_pad(dechex($v), 2,
"0", STR_PAD_LEFT);
3104 return $rgb[
"r"].$rgb[
"g"].$rgb[
"b"];
3112 $r[
"r"] = substr($a_rgb, 0, 2);
3113 $r[
"g"] = substr($a_rgb, 2, 2);
3114 $r[
"b"] = substr($a_rgb, 4, 2);
3118 $r[
"r"] = (int) hexdec(
$r[
"r"]);
3119 $r[
"g"] = (int) hexdec(
$r[
"g"]);
3120 $r[
"b"] = (int) hexdec(
$r[
"b"]);
3131 $r = $a_rgb[
"r"] / 255;
3132 $g = $a_rgb[
"g"] / 255;
3133 $b = $a_rgb[
"b"] / 255;
3136 $max = max(
$r,$g,$b);
3137 $min = min(
$r,$g,$b);
3140 $l = ($max + $min) / 2;
3151 $s = ($max - $min) / ($max + $min);
3155 $s = ($max - $min) / (2.0 - $max - $min);
3160 $h = ($g - $b) / ($max - $min);
3162 else if ($g == $max)
3164 $h = 2.0 + ($b -
$r) / ($max - $min);
3166 else if ($b == $max)
3168 $h = 4.0 + (
$r - $g) / ($max - $min);
3172 $hls[
"h"] = round((
$h / 6) * 255);
3173 $hls[
"l"] = round(
$l * 255);
3174 $hls[
"s"] = round($s * 255);
3184 $h = $a_hls[
"h"] / 255;
3185 $l = $a_hls[
"l"] / 255;
3186 $s = $a_hls[
"s"] / 255;
3188 $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 0;
3193 $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] =
$l;
3200 $temp2 =
$l * (1.0 + $s);
3204 $temp2 =
$l + $s -
$l * $s;
3207 $temp1 = 2.0 *
$l - $temp2;
3210 # For each of R, G, B, compute another temporary value, temp3, as follows:
3211 foreach ($rgb as $k => $v)
3216 $temp3 =
$h + 1.0 / 3.0;
3224 $temp3 =
$h - 1.0/3.0;
3229 $temp3 = $temp3 + 1.0;
3233 $temp3 = $temp3 - 1.0;
3236 if (6.0 * $temp3 < 1)
3238 $rgb[$k] = $temp1 + ($temp2 - $temp1) * 6.0 * $temp3;
3240 else if (2.0 * $temp3 < 1)
3244 else if (3.0 * $temp3 < 2)
3246 $rgb[$k] = $temp1 + ($temp2 - $temp1) * ((2.0/3.0) - $temp3) * 6.0;
3255 $rgb[
"r"] = round($rgb[
"r"] * 255);
3256 $rgb[
"g"] = round($rgb[
"g"] * 255);
3257 $rgb[
"b"] = round($rgb[
"b"] * 255);
3277 $set =
$ilDB->query(
"SELECT * FROM sty_media_query WHERE ".
3278 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" ".
3279 "ORDER BY order_nr");
3282 while ($rec =
$ilDB->fetchAssoc($set))
3298 $id =
$ilDB->nextId(
"sty_media_query");
3304 $ilDB->manipulate(
"INSERT INTO sty_media_query (id, style_id, mquery, order_nr)".
3307 $ilDB->quote($this->getId(),
"integer").
",".
3308 $ilDB->quote($a_mquery,
"text").
",".
3309 $ilDB->quote($order_nr,
"integer").
3323 $set =
$ilDB->query(
"SELECT max(order_nr) mnr FROM sty_media_query ".
3324 " WHERE style_id = ".
$ilDB->quote($this->getId(),
"integer")
3326 $rec =
$ilDB->fetchAssoc($set);
3328 return (
int) $rec[
"mnr"];
3341 $ilDB->manipulate(
"UPDATE sty_media_query SET ".
3342 " mquery = ".
$ilDB->quote($a_mquery,
"text").
3343 " WHERE id = ".$ilDB->quote($a_id,
"integer")
3357 $set =
$ilDB->query(
"SELECT * FROM sty_media_query ".
3358 " WHERE id = ".
$ilDB->quote($a_id,
"integer")
3360 return $ilDB->fetchAssoc($set);
3372 $ilDB->manipulate(
"DELETE FROM sty_media_query WHERE ".
3373 " style_id = ".
$ilDB->quote($this->getId(),
"integer").
3374 " AND id = ".$ilDB->quote($a_id,
"integer")
3389 if (is_array ($a_order_nr))
3391 foreach ($mqueries as $k => $mq)
3393 $mqueries[$k][
"order_nr"] = $a_order_nr[$mq[
"id"]];
3398 foreach ($mqueries as $mq)
3400 $ilDB->manipulate(
"UPDATE sty_media_query SET ".
3401 " order_nr = ".
$ilDB->quote($cnt,
"integer").
3402 " WHERE id = ".$ilDB->quote($mq[
"id"],
"integer")
3420 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE ".
3421 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3422 "temp_type = ".$ilDB->quote(
$a_type,
"text").
" ".
3426 while ($rec =
$ilDB->fetchAssoc($set))
3441 $set =
$ilDB->query(
"SELECT * FROM style_template_class WHERE ".
3442 "template_id = ".
$ilDB->quote($a_tid,
"integer"));
3445 while ($rec =
$ilDB->fetchAssoc($set))
3447 $key = $rec[
"class_type"];
3448 $class[$key] = $rec[
"class"];
3462 $tid =
$ilDB->nextId(
"style_template");
3463 $ilDB->manipulate($q =
"INSERT INTO style_template ".
3464 "(id, style_id, name, temp_type)".
3466 $ilDB->quote($tid,
"integer").
",".
3467 $ilDB->quote($this->getId(),
"integer").
",".
3468 $ilDB->quote($a_name,
"text").
",".
3472 foreach ($a_classes as
$t => $c)
3474 $ilDB->manipulate($q =
"INSERT INTO style_template_class ".
3475 "(template_id, class_type, class)".
3477 $ilDB->quote($tid,
"integer").
",".
3479 $ilDB->quote($c,
"text").
3483 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheetGUI.php");
3497 $ilDB->manipulate(
"UPDATE style_template SET ".
3498 "name = ".
$ilDB->quote($a_name,
"text").
3499 " WHERE id = ".$ilDB->quote($a_t_id,
"integer"));
3501 $ilDB->manipulate(
"DELETE FROM style_template_class WHERE ".
3502 "template_id = ".
$ilDB->quote($a_t_id,
"integer")
3504 foreach ($a_classes as
$t => $c)
3506 $ilDB->manipulate($q =
"INSERT INTO style_template_class ".
3507 "(template_id, class_type, class)".
3509 $ilDB->quote($a_t_id,
"integer").
",".
3511 $ilDB->quote($c,
"text").
3524 $ilDB->manipulate($q =
"INSERT INTO style_template_class ".
3525 "(template_id, class_type, class)".
3527 $ilDB->quote($a_t_id,
"integer").
",".
3529 $ilDB->quote($a_class,
"text").
3541 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE ".
3542 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3543 "name = ".$ilDB->quote($a_template_name,
"text"));
3544 if ($rec =
$ilDB->fetchAssoc($set))
3558 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE ".
3559 "style_id = ".
$ilDB->quote($this->getId(),
"integer").
" ".
3560 " AND id = ".$ilDB->quote($a_t_id,
"integer"));
3562 if ($rec =
$ilDB->fetchAssoc($set))
3587 $set =
$ilDB->query(
"SELECT name FROM style_template WHERE ".
3588 " id = ".
$ilDB->quote($a_t_id,
"integer"));
3590 if ($rec =
$ilDB->fetchAssoc($set))
3592 return $rec[
"name"];
3605 $tag =
"<StyleTemplates>";
3607 $ttypes = array(
"table",
"vaccordion",
"haccordion",
"carousel");
3609 foreach ($ttypes as $ttype)
3628 $tag.=
'<StyleTemplate Name="'.$t[
"name"].
'">';
3630 foreach ($atts as
$type =>
$t)
3632 if ($c[
$type] !=
"")
3634 $tag.=
'<StyleClass Type="'.$type.
'" Value="'.$c[
$type].
'" />';
3638 $tag.=
"</StyleTemplate>";
3642 $tag.=
"</StyleTemplates>";
3654 $a_preview_html = str_replace(
' width=""',
"", $a_preview_html);
3655 $a_preview_html = str_replace(
' valign="top"',
"", $a_preview_html);
3656 $a_preview_html = str_replace(
'<div class="ilc_text_block_TableContent">',
"<div>", $a_preview_html);
3659 if (strlen($a_preview_html) > 4000)
3662 $a_preview_html =
"";
3664 $ilDB->manipulate(
"UPDATE style_template SET ".
3665 "preview = ".
$ilDB->quote($a_preview_html,
"text").
3666 " WHERE id = ".$ilDB->quote($a_t_id,
"integer"));
3676 $set =
$ilDB->query(
"SELECT preview FROM style_template ".
3677 " WHERE id = ".
$ilDB->quote($a_t_id,
"integer"));
3678 if ($rec =
$ilDB->fetchAssoc($set))
3680 return $rec[
"preview"];
3693 $set =
$ilDB->query(
"SELECT id FROM style_template ".
3694 " WHERE style_id = ".
$ilDB->quote($a_style_id,
"integer").
3695 " AND name = ".$ilDB->quote($a_name,
"text"));
3696 if ($rec =
$ilDB->fetchAssoc($set))
3711 $ilDB->manipulate(
"DELETE FROM style_template WHERE ".
3712 " style_id = ".
$ilDB->quote($this->getId(),
"integer").
" AND ".
3713 " id = ".$ilDB->quote($a_t_id,
"integer"));
3715 $ilDB->manipulate(
"DELETE FROM style_template_class WHERE ".
3716 "template_id = ".
$ilDB->quote($a_t_id,
"integer")
3728 $ilDB->manipulate(
"DELETE FROM style_setting WHERE ".
3729 " style_id = ".
$ilDB->quote($this->getId(),
"integer").
3730 " AND name = ".$ilDB->quote($a_name,
"text")
3733 $ilDB->manipulate(
"INSERT INTO style_setting ".
3734 "(style_id, name, value) VALUES (".
3735 $ilDB->quote($this->getId(),
"integer").
",".
3736 $ilDB->quote($a_name,
"text").
",".
3737 $ilDB->quote($a_value,
"text").
3748 $set =
$ilDB->query(
"SELECT value FROM style_setting ".
3749 " WHERE style_id = ".
$ilDB->quote($this->getId(),
"integer").
3750 " AND name = ".$ilDB->quote($a_name,
"text")
3752 $rec =
$ilDB->fetchAssoc($set);
3754 return $rec[
"value"];
3764 $ilDB->replace(
"style_usage", array(
3765 "obj_id" => array(
"integer", (
int) $a_obj_id)),
3767 "style_id" => array(
"integer", (
int) $a_style_id))
3778 $set =
$ilDB->query(
"SELECT style_id FROM style_usage ".
3779 " WHERE obj_id = ".
$ilDB->quote($a_obj_id,
"integer")
3781 $rec =
$ilDB->fetchAssoc($set);
3785 return (
int) $rec[
"style_id"];
3801 $set =
$ilDB->query(
"SELECT DISTINCT obj_id FROM style_usage " .
3802 " WHERE style_id = " .
$ilDB->quote($a_style_id,
"integer")
3805 while ($rec =
$ilDB->fetchAssoc($set))
3807 $obj_ids[] = $rec[
"obj_id"];
An exception for terminatinating execution or to throw for unit testing.
static _lookupContObjIdByStyleId($a_style_id)
lookup style sheet ID
static _deleteStyleAssignments($a_style_id)
delete all style references to style
static _getTemplatePreview($a_style, $a_type, $a_t_id, $a_small_mode=false)
Get table template preview.
determineTemplateStyleClassType($t, $k)
setExportSubDir($a_dir)
Set local directory, that will be included within the zip file.
static _lookupActive($a_id)
Lookup active flag.
static _lookupStandard($a_id)
Lookup standard flag.
getMediaQueries()
Get colors of style.
getMaxMQueryOrderNr()
Get maximum media query order nr.
export()
Create export file.
getRefId()
Get ref id (show error message, since styles do not use ref ids)
static _getStyleParameterInputType($par)
updateTemplate($a_t_id, $a_name, $a_classes)
Update table template.
static getContentPrintStyle()
get content print style
addMediaQuery($a_mquery, $order_nr=0)
Add media query.
getColorCodeForName($a_name)
Remove a color.
deleteMediaQuery($a_id)
Delete media query.
do_3_9_Migration($a_id)
Migrate old 3.9 styles.
getCharacteristics($a_type="", $a_no_hidden=false, $a_include_core=true)
Get characteristics.
writeTemplatePreview($a_t_id, $a_preview_html)
Write table template preview.
read()
read style properties
static _getTemplateClassTypes($a_template_type="")
Get template class types.
deleteStylePar($a_tag, $a_class, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
Delete style parameter by tag/class/parameter.
static _getClonableContentStyles()
Get all clonable styles (active standard styles and individual learning module styles with write perm...
addColor($a_name, $a_code)
Add color.
static _getFilteredGroups()
createReference()
Create a reference (show error message, since styles do not use ref ids)
static _lookupUpToDate($a_id)
Looup up to date.
static _replaceStylePar($style_id, $a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id=0, $a_custom=false)
createExportDirectory()
Create export directory.
update()
update object in db
static _getStyleParameters($a_tag="")
putInTree($a_parent_ref)
Put in tree (show error message, since styles do not use ref ids)
static _HLSToRGB($a_hls)
HLS to RGB (both arrays, 0..255)
getParametersOfClass($a_type, $a_class, $a_mq_id=0)
Get parameters of class.
updateStyleParameter($a_id, $a_value)
update style parameter per id
uploadImage($a_file)
Upload image.
copyImagesToDir($a_target)
Copy images to directory.
createFromXMLFile($a_file, $a_skip_parent_create=false)
create style from xml file todo: add mq_id and custom
static lookupObjectForStyle($a_style_id)
Lookup object style.
characteristicExists($a_char, $a_style_type)
Check whether characteristic exists.
saveMediaQueryOrder($a_order_nr=null)
Save media query order.
addCharacteristic($a_type, $a_char, $a_hidden=false)
Add characteristic.
lookupTemplateName($a_t_id)
Lookup table template name for template ID.
getImagesDirectory()
Get images directory.
addTemplateClass($a_t_id, $a_type, $a_class)
Update table template.
getTemplates($a_type)
Get table templates of style.
removeColor($a_name)
Remove a color.
do_3_10_CharMigration($a_id="")
This is more or less a copy of Services/Migration/DBUpdate_1385/classes ilStyleMigration->addMissingS...
static getAvailableParameters()
Get available parameters.
updateMediaQuery($a_id, $a_mquery)
Update media query.
ilClone()
clone style sheet (note: styles have no ref ids and return an object id)
static _writeStandard($a_id, $a_std)
Write standard flag.
exportXML($a_dir)
export style xml file to directory
static _isExpandable($a_type)
setStyle($a_style)
set styles
cleanExportDirectory()
Clear export directory.
static lookupObjectStyle($a_obj_id)
Lookup object style.
handleXmlString($a_str)
Handle xml strin.
__construct($a_id=0, $a_call_by_reference=false)
Constructor @access public.
deleteCustomStylePars($a_tag, $a_class, $a_type, $a_mq_id=0)
Delete style parameter by tag/class/parameter.
& getMetaData()
get meta data object
addParameter($a_tag, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
write style parameter to db
static _getColorFlavor($a_rgb, $a_i)
Get color flavor.
replaceStylePar($a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id=0, $a_custom=false)
Set style parameter per tag/class/parameter.
static _getStyleParameterNumericUnits($a_no_percentage=false)
static _createImagesDirectory($a_style_id)
Create images directory <data_dir>/sty/sty_<id>/images.
deleteParameter($a_id)
delete style parameter
getTemplateXML()
Get table template xml.
setRefId($a_ref_id)
Set ref id (show error message, since styles do not use ref ids)
setCharacteristics($a_chars)
Set characteristics.
static _getPseudoClasses($tag)
saveHideStatus($a_type, $a_char, $a_hide)
Save characteristic hide status.
writeStyleSetting($a_name, $a_value)
Write Style Setting.
static _addMissingStyleClassesToStyle($a_id)
Add missing style classes to all styles.
static _RGBToHLS($a_rgb)
RGB to HLS (both arrays, 0..255)
static _isHideable($a_type)
getStyleParameterGroups()
Get grouped parameter.
lookupStyleSetting($a_name)
Lookup style setting.
getThumbnailsDirectory()
Get thumbnails directory.
getTemplateClasses($a_tid)
Get template classes.
getHideStatus($a_type, $a_char)
Get characteristic hide status.
lookupTemplatePreview($a_t_id)
Lookup table template preview.
create($a_from_style=0, $a_import_mode=false)
Create a new style.
static _getStyleParameterSubPar($par)
writeCSSFile($a_target_file="", $a_image_dir="")
write css file to webspace directory
static getSyntaxStylePath()
get syntax style path
colorExists($a_color_name)
Check whether color exists.
static _determineTag($a_type)
getUpToDate()
Get up to date.
removeTemplate($a_t_id)
Remove table template.
getExportSubDir()
The local directory, that will be included within the zip file.
getStyle()
todo: bad style! should return array of objects, not multi-dim-arrays
static _lookupTemplateIdByName($a_style_id, $a_name)
Lookup table template preview.
static _writeActive($a_id, $a_active)
Write active flag.
addTemplate($a_type, $a_name, $a_classes)
Add table template.
setScope($a_scope)
Set scope.
static _getStyleSuperTypeForType($a_type)
updateColor($a_name, $a_new_name, $a_code)
Update color.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
static getContentStylePath($a_style_id)
get content style path
getImages()
Get images of style.
getMediaQueryForId($a_id)
Get media query for id.
static _lookupTemplateName($a_t_id)
Lookup table template name for template ID.
static _writeUpToDate($a_id, $a_up_to_date)
Write up to date.
do_3_10_Migration()
Migrates 3.10 style to 3.11 style.
copyCharacteristic($a_from_style_id, $a_from_type, $a_from_char, $a_to_char)
Copy characteristic.
static isCoreStyle($a_type, $a_class)
Is core style.
static getPlaceHolderStylePath()
get placeholder style path (for Page Layouts)
createImportDirectory()
Create import directory.
deleteCharacteristic($a_type, $a_tag, $a_class)
Delete Characteristic.
getColors()
Get colors of style.
static $style_super_types
createImagesDirectory()
Create images directory <data_dir>/sty/sty_<id>/images.
getTemplate($a_t_id)
Get template.
assignMetaData(&$a_meta_data)
assign meta data object
setUpToDate($a_up_to_date=true)
Set style up to date (false + update will trigger css generation next time)
static _explodeRGB($a_rgb, $as_dec=false)
Explode an RGB string into an array.
static _getImagesDirectory($a_style_id)
Get images directory.
static _getStyleParameterValues($par)
static _getStyleSuperTypes()
static _writeScope($a_id, $a_scope)
Write scope.
deleteImage($a_file)
Delete an image.
static _getCoreStyles()
Get core styles.
static _addMissingStyleClassesToAllStyles($a_styles="")
Add missing style classes to all styles todo: add mq_id and custom handling.
static writeStyleUsage($a_obj_id, $a_style_id)
Write style usage.
createExportSubDirectory()
Create export directory.
static $basic_style_image_dir
getXML()
get xml representation of style object todo: add mq_id
static _getStandardStyles($a_exclude_default_style=false, $a_include_deactivated=false, $a_scope=0)
Get standard styles.
static _getBasicStyleDom()
Get basic style dom.
templateExists($a_template_name)
Check whether template exists.
deleteStyleParOfChar($a_type, $a_class)
Delete style parameters of characteristic.
Class ilObject Basic functions for all objects.
getType()
get object type @access public
static _lookupTitle($a_id)
lookup object title
static _getAllReferences($a_id)
get all reference ids of object
getDescription()
get object description
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
getId()
get object id @access public
static _getObjectsDataForType($a_type, $a_omit_trash=false)
get all objects of a certain type
static _lookupType($a_id, $a_reference=false)
lookup object type
getTitle()
get object title @access public
static getDataDir()
get data directory (outside webspace)
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static getWebspaceDir($mode="filesystem")
get webspace directory
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
static resizeImage($a_from, $a_to, $a_width, $a_height, $a_constrain_prop=false)
resize image
static zip($a_dir, $a_file, $compress_content=false)
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static signFile($path_to_file)
redirection script todo: (a better solution should control the processing via a xml file)
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file