5 require_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"),
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",
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" 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");
653 $res = $ilDB->query($q);
654 $sty = $ilDB->fetchAssoc(
$res);
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");
694 $res = $ilDB->query($q);
695 $sty = $ilDB->fetchAssoc(
$res);
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");
722 $res = $ilDB->query($q);
723 $sty = $ilDB->fetchAssoc(
$res);
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;
746 $res = $ilDB->query($q);
748 while($sty = $ilDB->fetchAssoc(
$res))
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)
801 $obj_ids = self::lookupObjectForStyle($style_rec[
"id"]);
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))
845 self::$basic_style_dom->load(self::$basic_style_file);
848 return self::$basic_style_dom;
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 ".
931 $ilDB->quote(
$id,
"integer").
",".
932 $ilDB->quote($this->
getId(),
"integer").
",".
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);
966 $colors = $from_style->getColors();
967 foreach ($colors as $c)
969 $this->
addColor($c[
"name"], $c[
"code"]);
974 foreach ($tcts as $tct => $v)
979 $this->
addTemplate($tct, $t[
"name"], $t[
"classes"]);
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 ".
1229 $ilDB->quote(
$id,
"integer").
",".
1230 $ilDB->quote($this->
getId(),
"integer").
",".
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 = ".
1485 $ilDB->quote($this->
getId(),
"integer");
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 = ".
1506 $ilDB->quote($this->
getId(),
"integer");
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);
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 = ".
1570 $ilDB->quote($this->
getId(),
"integer");
1571 $res = $ilDB->query($q);
1572 $sty = $ilDB->fetchAssoc(
$res);
1577 $this->chars =
array();
1578 $this->chars_by_type =
array();
1579 $q =
"SELECT * FROM style_char WHERE style_id = ".
1580 $ilDB->quote($this->
getId(),
"integer").
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");
1628 foreach ($style as $tag)
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");
1855 $style->writeCSSFile();
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 ".
1974 $ilDB->quote(
$id,
"integer").
",".
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"])
2039 foreach($style as $tag)
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");
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)
2336 foreach($style as $tag)
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 ".
2353 $ilDB->quote(
$id,
"integer").
",".
2354 $ilDB->quote($this->
getId(),
"integer").
",".
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"];
2433 return self::$parameter;
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"]]))
2450 return self::$filtered_groups;
2455 if ($a_no_percentage)
2457 return self::$num_unit_no_perc;
2459 return self::$num_unit;
2464 return self::$parameter[$par][
"values"];
2474 return self::$style_super_types;
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 ==
"")
2544 return self::$templates;
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"];
2598 if ($a_styles ==
"")
2610 $core_images =
array();
2611 $core_dir = self::$basic_style_image_dir;
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)".
3306 $ilDB->quote(
$id,
"integer").
",".
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").
",".
3469 $ilDB->quote(
$a_type,
"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").
",".
3478 $ilDB->quote(
$t,
"text").
",".
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").
",".
3510 $ilDB->quote(
$t,
"text").
",".
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").
",".
3528 $ilDB->quote(
$a_type,
"text").
",".
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))
3577 return self::_lookupTemplateName($a_t_id);
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"];
static _lookupTemplateIdByName($a_style_id, $a_name)
Lookup table template preview.
static _lookupContObjIdByStyleId($a_style_id)
lookup style sheet ID
deleteMediaQuery($a_id)
Delete media query.
getXML()
get xml representation of style object todo: add mq_id
static _explodeRGB($a_rgb, $as_dec=false)
Explode an RGB string into an array.
static _writeScope($a_id, $a_scope)
Write scope.
static _getTemplateClassTypes($a_template_type="")
Get template class types.
static getContentPrintStyle()
get content print style
getHideStatus($a_type, $a_char)
Get characteristic hide status.
removeColor($a_name)
Remove a color.
characteristicExists($a_char, $a_style_type)
Check whether characteristic exists.
static getPlaceHolderStylePath()
get placeholder style path (for Page Layouts)
exportXML($a_dir)
export style xml file to directory
static _HLSToRGB($a_hls)
HLS to RGB (both arrays, 0..255)
static lookupObjectForStyle($a_style_id)
Lookup object style.
static _lookupTemplateName($a_t_id)
Lookup table template name for template ID.
do_3_10_Migration()
Migrates 3.10 style to 3.11 style.
static _getTemplatePreview($a_style, $a_type, $a_t_id, $a_small_mode=false)
Get table template preview.
setCharacteristics($a_chars)
Set characteristics.
getColors()
Get colors of style.
setRefId($a_ref_id)
Set ref id (show error message, since styles do not use ref ids)
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
read()
read style properties
static _determineTag($a_type)
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
deleteParameter($a_id)
delete style parameter
addTemplate($a_type, $a_name, $a_classes)
Add table template.
static $style_super_types
do_3_9_Migration($a_id)
Migrate old 3.9 styles.
getRefId()
Get ref id (show error message, since styles do not use ref ids)
Class ilObject Basic functions for all objects.
copyImagesToDir($a_target)
Copy images to directory.
setExportSubDir($a_dir)
Set local directory, that will be included within the zip file.
static _getStandardStyles($a_exclude_default_style=false, $a_include_deactivated=false, $a_scope=0)
Get standard styles.
deleteImage($a_file)
Delete an image.
lookupStyleSetting($a_name)
Lookup style setting.
setScope($a_scope)
Set scope.
updateMediaQuery($a_id, $a_mquery)
Update media query.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static _getStyleSuperTypeForType($a_type)
writeTemplatePreview($a_t_id, $a_preview_html)
Write table template preview.
static _lookupTitle($a_id)
lookup object title
static _deleteStyleAssignments($a_style_id)
delete all style references to style
deleteStyleParOfChar($a_type, $a_class)
Delete style parameters of characteristic.
deleteCustomStylePars($a_tag, $a_class, $a_type, $a_mq_id=0)
Delete style parameter by tag/class/parameter.
static _lookupUpToDate($a_id)
Looup up to date.
static _getPseudoClasses($tag)
static _getClonableContentStyles()
Get all clonable styles (active standard styles and individual learning module styles with write perm...
writeCSSFile($a_target_file="", $a_image_dir="")
write css file to webspace directory
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static _getStyleSuperTypes()
static lookupObjectStyle($a_obj_id)
Lookup object style.
& getMetaData()
get meta data object
createExportSubDirectory()
Create export directory.
static _getAllReferences($a_id)
get all reference ids of object
lookupTemplateName($a_t_id)
Lookup table template name for template ID.
do_3_10_CharMigration($a_id="")
This is more or less a copy of Services/Migration/DBUpdate_1385/classes ilStyleMigration->addMissingS...
getThumbnailsDirectory()
Get thumbnails directory.
static _lookupStandard($a_id)
Lookup standard flag.
handleXmlString($a_str)
Handle xml strin.
static writeStyleUsage($a_obj_id, $a_style_id)
Write style usage.
static _writeActive($a_id, $a_active)
Write active flag.
addColor($a_name, $a_code)
Add color.
getTemplate($a_t_id)
Get template.
addTemplateClass($a_t_id, $a_type, $a_class)
Update table template.
static _getBasicStyleDom()
Get basic style dom.
getImagesDirectory()
Get images directory.
templateExists($a_template_name)
Check whether template exists.
static resizeImage($a_from, $a_to, $a_width, $a_height, $a_constrain_prop=false)
resize image
static _addMissingStyleClassesToAllStyles($a_styles="")
Add missing style classes to all styles todo: add mq_id and custom handling.
getId()
get object id public
static _isExpandable($a_type)
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
writeStyleSetting($a_name, $a_value)
Write Style Setting.
static _getFilteredGroups()
getTemplateXML()
Get table template xml.
static _getCoreStyles()
Get core styles.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
getTitle()
get object title public
uploadImage($a_file)
Upload image.
getDescription()
get object description
addParameter($a_tag, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
write style parameter to db
redirection script todo: (a better solution should control the processing via a xml file) ...
setUpToDate($a_up_to_date=true)
Set style up to date (false + update will trigger css generation next time)
copyCharacteristic($a_from_style_id, $a_from_type, $a_from_char, $a_to_char)
Copy characteristic.
saveHideStatus($a_type, $a_char, $a_hide)
Save characteristic hide status.
setStyle($a_style)
set styles
static getSyntaxStylePath()
get syntax style path
static signFile($path_to_file)
getParametersOfClass($a_type, $a_class, $a_mq_id=0)
Get parameters of class.
static $basic_style_image_dir
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
getType()
get object type public
getCharacteristics($a_type="", $a_no_hidden=false, $a_include_core=true)
Get characteristics.
getStyleParameterGroups()
Get grouped parameter.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
__construct($a_id=0, $a_call_by_reference=false)
Constructor public.
export()
Create export file.
getTemplates($a_type)
Get table templates of style.
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
deleteStylePar($a_tag, $a_class, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
Delete style parameter by tag/class/parameter.
static _getColorFlavor($a_rgb, $a_i)
Get color flavor.
determineTemplateStyleClassType($t, $k)
updateColor($a_name, $a_new_name, $a_code)
Update color.
static _createImagesDirectory($a_style_id)
Create images directory <data_dir>/sty/sty_<id>/images.
createExportDirectory()
Create export directory.
getStyle()
todo: bad style! should return array of objects, not multi-dim-arrays
updateStyleParameter($a_id, $a_value)
update style parameter per id
static getContentStylePath($a_style_id)
get content style path
static _addMissingStyleClassesToStyle($a_id)
Add missing style classes to all styles.
createReference()
Create a reference (show error message, since styles do not use ref ids)
static _getImagesDirectory($a_style_id)
Get images directory.
addCharacteristic($a_type, $a_char, $a_hidden=false)
Add characteristic.
static _RGBToHLS($a_rgb)
RGB to HLS (both arrays, 0..255)
getTemplateClasses($a_tid)
Get template classes.
static _getStyleParameterValues($par)
getMaxMQueryOrderNr()
Get maximum media query order nr.
static _writeStandard($a_id, $a_std)
Write standard flag.
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 getDataDir()
get data directory (outside webspace)
colorExists($a_color_name)
Check whether color exists.
deleteCharacteristic($a_type, $a_tag, $a_class)
Delete Characteristic.
static _getStyleParameterNumericUnits($a_no_percentage=false)
create($a_from_style=0, $a_import_mode=false)
Create a new style.
getExportSubDir()
The local directory, that will be included within the zip file.
createImportDirectory()
Create import directory.
getColorCodeForName($a_name)
Remove a color.
updateTemplate($a_t_id, $a_name, $a_classes)
Update table template.
static _getStyleParameters($a_tag="")
removeTemplate($a_t_id)
Remove table template.
static isCoreStyle($a_type, $a_class)
Is core style.
saveMediaQueryOrder($a_order_nr=null)
Save media query order.
static _isHideable($a_type)
assignMetaData(&$a_meta_data)
assign meta data object
cleanExportDirectory()
Clear export directory.
getImages()
Get images of style.
if(!file_exists("$old.txt")) if($old===$new) if(file_exists("$new.txt")) $file
createFromXMLFile($a_file, $a_skip_parent_create=false)
create style from xml file todo: add mq_id and custom
static _lookupActive($a_id)
Lookup active flag.
static _getStyleParameterInputType($par)
addMediaQuery($a_mquery, $order_nr=0)
Add media query.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getWebspaceDir($mode="filesystem")
get webspace directory
static _getObjectsDataForType($a_type, $a_omit_trash=false)
get all objects of a certain type
static _replaceStylePar($style_id, $a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id=0, $a_custom=false)
static _getStyleParameterSubPar($par)
createImagesDirectory()
Create images directory <data_dir>/sty/sty_<id>/images.
getMediaQueries()
Get colors of style.
ilClone()
clone style sheet (note: styles have no ref ids and return an object id)
getMediaQueryForId($a_id)
Get media query for id.
static getAvailableParameters()
Get available parameters.
static _writeUpToDate($a_id, $a_up_to_date)
Write up to date.
lookupTemplatePreview($a_t_id)
Lookup table template preview.
putInTree($a_parent_ref)
Put in tree (show error message, since styles do not use ref ids)
getUpToDate()
Get up to date.