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",
"figure"));
248 "text_block" => array(
"text_block",
"heading1",
"heading2",
"heading3",
"code_block"),
249 "text_inline" => array(
"text_inline",
"sub",
"sup",
"code_inline"),
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 "code_block" =>
"pre",
290 "text_inline" =>
"span",
291 "code_inline" =>
"code",
297 "table_cell" =>
"td",
298 "table_caption" =>
"caption",
299 "media_cont" =>
"figure",
300 "media_caption" =>
"div",
303 "glo_overlay" =>
"div",
304 "glo_ovtitle" =>
"h1",
305 "glo_ovclink" =>
"a",
306 "glo_ovuglink" =>
"a",
307 "glo_ovuglistlink" =>
"a",
308 "sco_title" =>
"div",
312 "sco_desct" =>
"div",
314 "sco_fmess" =>
"div",
321 "rte_status" =>
"div",
329 "flist_cont" =>
"div",
330 "flist_head" =>
"div",
344 "qlinput" =>
"textarea",
345 "qsubmit" =>
"input",
349 "page_frame" =>
"div",
350 "page_cont" =>
"div",
353 "page_tnav" =>
"div",
354 "page_bnav" =>
"div",
355 "page_lnav" =>
"div",
356 "page_rnav" =>
"div",
357 "page_lnavlink" =>
"a",
358 "page_rnavlink" =>
"a",
359 "page_lnavimage" =>
"img",
360 "page_rnavimage" =>
"img",
361 "page_title" =>
"h1",
366 "va_iheada" =>
"div",
371 "ha_iheada" =>
"div",
382 array(
"a" => array(
"hover"),
"div" => array(
"hover"),
"img" => array(
"hover"));
386 array(
"type" =>
"text_block",
"class" =>
"Standard"),
387 array(
"type" =>
"text_block",
"class" =>
"List"),
388 array(
"type" =>
"text_block",
"class" =>
"TableContent"),
389 array(
"type" =>
"code_block",
"class" =>
"Code"),
390 array(
"type" =>
"heading1",
"class" =>
"Headline1"),
391 array(
"type" =>
"heading2",
"class" =>
"Headline2"),
392 array(
"type" =>
"heading3",
"class" =>
"Headline3"),
393 array(
"type" =>
"text_inline",
"class" =>
"Comment"),
394 array(
"type" =>
"text_inline",
"class" =>
"Emph"),
395 array(
"type" =>
"text_inline",
"class" =>
"Quotation"),
396 array(
"type" =>
"text_inline",
"class" =>
"Strong"),
397 array(
"type" =>
"text_inline",
"class" =>
"Accent"),
398 array(
"type" =>
"text_inline",
"class" =>
"Important"),
399 array(
"type" =>
"code_inline",
"class" =>
"CodeInline"),
400 array(
"type" =>
"sup",
"class" =>
"Sup"),
401 array(
"type" =>
"sub",
"class" =>
"Sub"),
402 array(
"type" =>
"link",
"class" =>
"IntLink"),
403 array(
"type" =>
"link",
"class" =>
"ExtLink"),
404 array(
"type" =>
"link",
"class" =>
"FootnoteLink"),
405 array(
"type" =>
"link",
"class" =>
"FileLink"),
406 array(
"type" =>
"link",
"class" =>
"GlossaryLink"),
407 array(
"type" =>
"media_cont",
"class" =>
"MediaContainer"),
408 array(
"type" =>
"media_cont",
"class" =>
"MediaContainerMax50"),
409 array(
"type" =>
"media_cont",
"class" =>
"MediaContainerFull100"),
410 array(
"type" =>
"table",
"class" =>
"StandardTable"),
411 array(
"type" =>
"media_caption",
"class" =>
"MediaCaption"),
412 array(
"type" =>
"iim",
"class" =>
"ContentPopup"),
413 array(
"type" =>
"marker",
"class" =>
"Marker"),
414 array(
"type" =>
"page_frame",
"class" =>
"PageFrame"),
415 array(
"type" =>
"page_cont",
"class" =>
"PageContainer"),
416 array(
"type" =>
"page",
"class" =>
"Page"),
417 array(
"type" =>
"page_tnav",
"class" =>
"TopNavigation"),
418 array(
"type" =>
"page_bnav",
"class" =>
"BottomNavigation"),
419 array(
"type" =>
"page_lnav",
"class" =>
"LeftNavigation"),
420 array(
"type" =>
"page_rnav",
"class" =>
"RightNavigation"),
421 array(
"type" =>
"page_lnavlink",
"class" =>
"LeftNavigationLink"),
422 array(
"type" =>
"page_rnavlink",
"class" =>
"RightNavigationLink"),
423 array(
"type" =>
"page_lnavimage",
"class" =>
"LeftNavigationImage"),
424 array(
"type" =>
"page_rnavimage",
"class" =>
"RightNavigationImage"),
425 array(
"type" =>
"page_fn",
"class" =>
"Footnote"),
426 array(
"type" =>
"page_title",
"class" =>
"PageTitle"),
427 array(
"type" =>
"glo_overlay",
"class" =>
"GlossaryOverlay"),
428 array(
"type" =>
"glo_ovtitle",
"class" =>
"GlossaryOvTitle"),
429 array(
"type" =>
"glo_ovclink",
"class" =>
"GlossaryOvCloseLink"),
430 array(
"type" =>
"glo_ovuglink",
"class" =>
"GlossaryOvUnitGloLink"),
431 array(
"type" =>
"glo_ovuglistlink",
"class" =>
"GlossaryOvUGListLink"),
432 array(
"type" =>
"sco_title",
"class" =>
"Title"),
433 array(
"type" =>
"sco_desc",
"class" =>
"Description"),
434 array(
"type" =>
"sco_desct",
"class" =>
"DescriptionTop"),
435 array(
"type" =>
"sco_keyw",
"class" =>
"Keywords"),
436 array(
"type" =>
"sco_obj",
"class" =>
"Objective"),
437 array(
"type" =>
"sco_objt",
"class" =>
"ObjectiveTop"),
438 array(
"type" =>
"sco_fmess",
"class" =>
"FinalMessage"),
439 array(
"type" =>
"rte_menu",
"class" =>
"RTEMenu"),
440 array(
"type" =>
"rte_menu",
"class" =>
"RTELogo"),
441 array(
"type" =>
"rte_menu",
"class" =>
"RTELinkBar"),
442 array(
"type" =>
"rte_mlink",
"class" =>
"RTELink"),
443 array(
"type" =>
"rte_mlink",
"class" =>
"RTELinkDisabled"),
444 array(
"type" =>
"rte_tree",
"class" =>
"RTETree"),
445 array(
"type" =>
"rte_node",
"class" =>
"RTECourse"),
446 array(
"type" =>
"rte_node",
"class" =>
"RTEChapter"),
447 array(
"type" =>
"rte_node",
"class" =>
"RTESco"),
448 array(
"type" =>
"rte_node",
"class" =>
"RTEAsset"),
449 array(
"type" =>
"rte_node",
"class" =>
"RTECourseDisabled"),
450 array(
"type" =>
"rte_node",
"class" =>
"RTEChapterDisabled"),
451 array(
"type" =>
"rte_node",
"class" =>
"RTEScoDisabled"),
452 array(
"type" =>
"rte_node",
"class" =>
"RTEAssetDisabled"),
453 array(
"type" =>
"rte_status",
"class" =>
"RTEAsset"),
454 array(
"type" =>
"rte_status",
"class" =>
"RTECompleted"),
455 array(
"type" =>
"rte_status",
"class" =>
"RTENotAttempted"),
456 array(
"type" =>
"rte_status",
"class" =>
"RTERunning"),
457 array(
"type" =>
"rte_status",
"class" =>
"RTEIncomplete"),
458 array(
"type" =>
"rte_status",
"class" =>
"RTEPassed"),
459 array(
"type" =>
"rte_status",
"class" =>
"RTEFailed"),
460 array(
"type" =>
"rte_status",
"class" =>
"RTEBrowsed"),
461 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeLink"),
462 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeLinkDisabled"),
463 array(
"type" =>
"rte_tlink",
"class" =>
"RTETreeCurrent"),
464 array(
"type" =>
"rte_tul",
"class" =>
"RTETreeList"),
465 array(
"type" =>
"rte_tli",
"class" =>
"RTETreeItem"),
466 array(
"type" =>
"rte_texp",
"class" =>
"RTETreeExpanded"),
467 array(
"type" =>
"rte_texp",
"class" =>
"RTETreeCollapsed"),
468 array(
"type" =>
"rte_tree",
"class" =>
"RTETreeControl"),
469 array(
"type" =>
"rte_tclink",
"class" =>
"RTETreeControlLink"),
470 array(
"type" =>
"rte_drag",
"class" =>
"RTEDragBar"),
471 array(
"type" =>
"list_o",
"class" =>
"NumberedList"),
472 array(
"type" =>
"list_u",
"class" =>
"BulletedList"),
473 array(
"type" =>
"list_item",
"class" =>
"StandardListItem"),
474 array(
"type" =>
"question",
"class" =>
"Standard"),
475 array(
"type" =>
"question",
"class" =>
"SingleChoice"),
476 array(
"type" =>
"question",
"class" =>
"MultipleChoice"),
477 array(
"type" =>
"question",
"class" =>
"TextQuestion"),
478 array(
"type" =>
"question",
"class" =>
"OrderingQuestion"),
479 array(
"type" =>
"question",
"class" =>
"MatchingQuestion"),
480 array(
"type" =>
"question",
"class" =>
"ImagemapQuestion"),
481 array(
"type" =>
"question",
"class" =>
"ErrorText"),
482 array(
"type" =>
"question",
"class" =>
"TextSubset"),
483 array(
"type" =>
"question",
"class" =>
"ClozeTest"),
484 array(
"type" =>
"qtitle",
"class" =>
"Title"),
485 array(
"type" =>
"qanswer",
"class" =>
"Answer"),
486 array(
"type" =>
"qimg",
"class" =>
"QuestionImage"),
487 array(
"type" =>
"qimgd",
"class" =>
"ImageDetailsLink"),
488 array(
"type" =>
"qordul",
"class" =>
"OrderList"),
489 array(
"type" =>
"qordli",
"class" =>
"OrderListItem"),
490 array(
"type" =>
"qordul",
"class" =>
"OrderListHorizontal"),
491 array(
"type" =>
"qordli",
"class" =>
"OrderListItemHorizontal"),
492 array(
"type" =>
"qetitem",
"class" =>
"ErrorTextItem"),
493 array(
"type" =>
"qetitem",
"class" =>
"ErrorTextSelected"),
494 array(
"type" =>
"qetcorr",
"class" =>
"ErrorTextCorrected"),
495 array(
"type" =>
"qinput",
"class" =>
"TextInput"),
496 array(
"type" =>
"qlinput",
"class" =>
"LongTextInput"),
497 array(
"type" =>
"qsubmit",
"class" =>
"Submit"),
498 array(
"type" =>
"qfeedr",
"class" =>
"FeedbackRight"),
499 array(
"type" =>
"qfeedw",
"class" =>
"FeedbackWrong"),
500 array(
"type" =>
"qover",
"class" =>
"Correct"),
501 array(
"type" =>
"qover",
"class" =>
"Inorrect"),
502 array(
"type" =>
"qover",
"class" =>
"StatusMessage"),
503 array(
"type" =>
"qover",
"class" =>
"WrongAnswersMessage"),
504 array(
"type" =>
"flist_cont",
"class" =>
"FileListContainer"),
505 array(
"type" =>
"flist_head",
"class" =>
"FileListHeading"),
506 array(
"type" =>
"flist",
"class" =>
"FileList"),
507 array(
"type" =>
"flist_li",
"class" =>
"FileListItem"),
508 array(
"type" =>
"flist_a",
"class" =>
"FileListItemLink")
514 "caption" =>
"table_caption",
515 "row_head" =>
"table_cell",
516 "row_foot" =>
"table_cell",
517 "col_head" =>
"table_cell",
518 "col_foot" =>
"table_cell",
519 "odd_row" =>
"table_cell",
520 "even_row" =>
"table_cell",
521 "odd_col" =>
"table_cell",
522 "even_col" =>
"table_cell"),
523 "vaccordion" => array(
524 "va_cntr" =>
"va_cntr",
525 "va_icntr" =>
"va_icntr",
526 "va_ihead" =>
"va_ihead",
527 "va_iheada" =>
"va_iheada",
528 "va_ihcap" =>
"va_ihcap",
529 "va_icont" =>
"va_icont"
531 "haccordion" => array(
532 "ha_cntr" =>
"ha_cntr",
533 "ha_icntr" =>
"ha_icntr",
534 "ha_ihead" =>
"ha_ihead",
535 "ha_iheada" =>
"ha_iheada",
536 "ha_ihcap" =>
"ha_ihcap",
537 "ha_icont" =>
"ha_icont"
540 "ca_cntr" =>
"ca_cntr",
541 "ca_icntr" =>
"ca_icntr",
542 "ca_ihead" =>
"ca_ihead",
543 "ca_icont" =>
"ca_icont"
559 public function __construct($a_id = 0, $a_call_by_reference =
false)
563 $this->db =
$DIC->database();
564 $this->lng =
$DIC->language();
566 $this->style = array();
567 if ($a_call_by_reference) {
568 $this->
ilias->raiseError(
"Can't instantiate style object via reference id.", $this->
ilias->error_obj->FATAL);
589 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::setRefId() not allowed.", $this->
ilias->error_obj->FATAL);
606 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::putInTree() not allowed.", $this->
ilias->error_obj->FATAL);
614 $this->
ilias->raiseError(
"Operation ilObjStyleSheet::createReference() not allowed.", $this->
ilias->error_obj->FATAL);
622 $this->up_to_date = $a_up_to_date;
630 return $this->up_to_date;
638 $this->scope = $a_scope;
658 $q =
"UPDATE style_data SET uptodate = " .
659 $ilDB->quote((
int) $a_up_to_date,
"integer") .
660 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
661 $ilDB->manipulate($q);
673 $q =
"SELECT uptodate FROM style_data " .
674 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
678 return (
boolean) $sty[
"uptodate"];
690 $q =
"UPDATE style_data SET standard = " .
691 $ilDB->quote((
int) $a_std,
"integer") .
692 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
693 $ilDB->manipulate($q);
705 $q =
"UPDATE style_data SET category = " .
706 $ilDB->quote((
int) $a_scope,
"integer") .
707 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
708 $ilDB->manipulate($q);
720 $q =
"SELECT * FROM style_data " .
721 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
725 return (
boolean) $sty[
"standard"];
737 $q =
"UPDATE style_data SET active = " .
738 $ilDB->quote((
int) $a_active,
"integer") .
739 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
740 $ilDB->manipulate($q);
752 $q =
"SELECT * FROM style_data " .
753 " WHERE id = " .
$ilDB->quote($a_id,
"integer");
757 return (
boolean) $sty[
"active"];
764 $a_exclude_default_style =
false,
765 $a_include_deactivated =
false,
774 $default_style =
$ilSetting->get(
"default_content_style_id");
777 if (!$a_include_deactivated) {
778 $and_str =
" AND active = 1";
781 $q =
"SELECT * FROM style_data " .
782 " WHERE standard = 1" . $and_str;
786 if (!$a_exclude_default_style || $default_style != $sty[
"id"]) {
788 if ($a_scope > 0 && $sty[
"category"] > 0) {
789 if (
$tree->isInTree($sty[
"category"]) &&
790 $tree->isInTree($a_scope)) {
791 $path =
$tree->getPathId($a_scope);
792 if (!in_array($sty[
"category"], $path)) {
813 $ilAccess =
$DIC->access();
816 $clonable_styles = array();
818 $q =
"SELECT * FROM style_data";
819 $style_set =
$ilDB->query($q);
820 while ($style_rec =
$ilDB->fetchAssoc($style_set)) {
822 if ($style_rec[
"standard"] == 1) {
823 if ($style_rec[
"active"] == 1) {
827 include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
829 if (count($obj_ids) == 0) {
832 foreach ($obj_ids as
$id) {
835 if ($ilAccess->checkAccess(
"write",
"",
$ref_id)) {
842 $clonable_styles[$style_rec[
"id"]] =
847 asort($clonable_styles);
849 return $clonable_styles;
857 $this->meta_data = $a_meta_data;
865 if (!is_object(self::$basic_style_dom)) {
866 self::$basic_style_dom =
new DOMDocument();
867 self::$basic_style_dom->load(self::$basic_style_file);
878 return $this->meta_data;
894 public function create($a_from_style = 0, $a_import_mode =
false)
900 if ($a_from_style == 0) {
901 if (!$a_import_mode) {
908 self::$basic_style_image_dir,
913 $q =
"INSERT INTO style_data (id, uptodate, category) VALUES " .
914 "(" .
$ilDB->quote($this->
getId(),
"integer") .
", 0," .
916 $ilDB->manipulate($q);
922 $q =
"SELECT * FROM style_parameter WHERE style_id = " .
923 $ilDB->quote($a_from_style,
"integer");
924 $par_set =
$ilDB->query($q);
925 while ($par_rec =
$ilDB->fetchAssoc($par_set)) {
926 $def[] = array(
"tag" => $par_rec[
"tag"],
"class" => $par_rec[
"class"],
927 "parameter" => $par_rec[
"parameter"],
"value" => $par_rec[
"value"],
928 "type" => $par_rec[
"type"],
"mq_id" => $par_rec[
"mq_id"],
"custom" => $par_rec[
"custom"]);
933 $q =
"SELECT * FROM style_char WHERE style_id = " .
934 $ilDB->quote($a_from_style,
"integer");
935 $par_set =
$ilDB->query($q);
936 while ($par_rec =
$ilDB->fetchAssoc($par_set)) {
937 $chars[] = array(
"type" => $par_rec[
"type"],
"characteristic" => $par_rec[
"characteristic"]);
943 $mqs = $from_style->getMediaQueries();
944 $mq_mapping = array();
945 foreach ($mqs as $mq) {
947 $mq_mapping[$mq[
"id"]] = $nid;
951 foreach ($def as $sty) {
952 $id =
$ilDB->nextId(
"style_parameter");
953 $q =
"INSERT INTO style_parameter (id, style_id, tag, class, parameter, value, type, mq_id, custom) VALUES " .
955 $ilDB->quote(
$id,
"integer") .
"," .
956 $ilDB->quote($this->
getId(),
"integer") .
"," .
957 $ilDB->quote($sty[
"tag"],
"text") .
"," .
958 $ilDB->quote($sty[
"class"],
"text") .
"," .
959 $ilDB->quote($sty[
"parameter"],
"text") .
"," .
960 $ilDB->quote($sty[
"value"],
"text") .
"," .
961 $ilDB->quote($sty[
"type"],
"text") .
"," .
962 $ilDB->quote((
int) $mq_mapping[$sty[
"mq_id"]],
"integer") .
"," .
963 $ilDB->quote($sty[
"custom"],
"integer") .
965 $ilDB->manipulate($q);
969 foreach ($chars as $char) {
970 $q =
"INSERT INTO style_char (style_id, type, characteristic) VALUES " .
971 "(" .
$ilDB->quote($this->
getId(),
"integer") .
"," .
972 $ilDB->quote($char[
"type"],
"text") .
"," .
973 $ilDB->quote($char[
"characteristic"],
"text") .
")";
974 $ilDB->manipulate($q);
978 $q =
"INSERT INTO style_data (id, uptodate, category) VALUES " .
979 "(" .
$ilDB->quote($this->
getId(),
"integer") .
", 0," .
981 $ilDB->manipulate($q);
986 $from_style->getImagesDirectory(),
987 $this->getImagesDirectory()
991 $colors = $from_style->getColors();
992 foreach ($colors as
$c) {
998 foreach ($tcts as $tct => $v) {
1001 $this->
addTemplate($tct, $t[
"name"], $t[
"classes"]);
1007 if (!$a_import_mode) {
1021 if (empty(
$core_styles[$a_type .
"." . $a_tag .
"." . $a_class])) {
1023 $st =
$ilDB->manipulateF(
1024 "DELETE FROM style_char WHERE style_id = %s AND type = %s AND characteristic = %s",
1025 array(
"integer",
"text",
"text"),
1026 array($this->
getId(), $a_type, $a_class)
1030 $st =
$ilDB->manipulateF(
1031 "DELETE FROM style_parameter WHERE style_id = %s AND tag = %s AND type = %s AND class = %s",
1032 array(
"integer",
"text",
"text",
"text"),
1033 array($this->
getId(), $a_tag, $a_type, $a_class)
1048 $set =
$ilDB->queryF(
1049 "SELECT style_id FROM style_char WHERE style_id = %s AND characteristic = %s AND type = %s",
1050 array(
"integer",
"text",
"text"),
1051 array($this->
getId(), $a_char, $a_style_type)
1053 if ($rec =
$ilDB->fetchAssoc($set)) {
1068 "INSERT INTO style_char (style_id, type, characteristic, hide)" .
1069 " VALUES (%s,%s,%s,%s) ",
1070 array(
"integer",
"text",
"text",
"integer"),
1071 array($this->
getId(), $a_type, $a_char, $a_hidden)
1100 $pars = $from_style->getParametersOfClass($a_from_type, $a_from_char);
1103 foreach ($pars as $p => $v) {
1104 if (substr($v, 0, 1) ==
"!") {
1105 $colors[] = substr($v, 1);
1117 foreach ($colors as
$c) {
1119 $this->
addColor($c, $from_style->getColorCodeForName(
$c));
1131 if ($a_type ==
"") {
1132 $chars = $this->chars;
1134 if (is_array($this->chars_by_type[$a_type])) {
1135 foreach ($this->chars_by_type[$a_type] as
$c) {
1136 if ($a_include_core || !self::isCoreStyle($a_type,
$c)) {
1143 foreach ($chars as $k => $char) {
1144 if ($a_type ==
"" && $this->hidden_chars[$char[
"type"] .
":" . $char[
"class"]]) {
1146 } elseif ($this->hidden_chars[$a_type .
":" . $char]) {
1160 $this->chars = $a_chars;
1172 "UPDATE style_char SET " .
1173 " hide = " .
$ilDB->quote((
int) $a_hide,
"integer") .
1174 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
1175 " type = " .
$ilDB->quote($a_type,
"text") .
" AND " .
1176 " characteristic = " .
$ilDB->quote($a_char,
"text")
1187 $set =
$ilDB->query(
1188 "SELECT hide FROM style_char " .
1189 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
1190 " type = " .
$ilDB->quote($a_type,
"text") .
" AND " .
1191 " characteristic = " .
$ilDB->quote($a_char,
"text")
1193 $rec =
$ilDB->fetchAssoc($set);
1195 return $rec[
"hide"];
1208 $lng->loadLanguageModule(
"style");
1211 $new_obj->setTitle($this->
getTitle() .
" (" .
$lng->txt(
"sty_acopy") .
")");
1212 $new_obj->setType($this->
getType());
1214 $new_obj->create($this->
getId());
1216 $new_obj->writeStyleSetting(
1217 "disable_auto_margins",
1221 return $new_obj->getId();
1241 public function addParameter($a_tag, $a_par, $a_type, $a_mq_id = 0, $a_custom =
false)
1246 $tag = explode(
".", $a_tag);
1247 $value = $avail_params[$a_par][0];
1248 $id =
$ilDB->nextId(
"style_parameter");
1249 $q =
"INSERT INTO style_parameter (id,style_id, type, tag, class, parameter, value, mq_id, custom) VALUES " .
1251 $ilDB->quote(
$id,
"integer") .
"," .
1252 $ilDB->quote($this->
getId(),
"integer") .
"," .
1253 $ilDB->quote($a_type,
"text") .
"," .
1254 $ilDB->quote($tag[0],
"text") .
"," .
1255 $ilDB->quote($tag[1],
"text") .
"," .
1256 $ilDB->quote($a_par,
"text") .
"," .
1257 $ilDB->quote($value,
"text") .
"," .
1258 $ilDB->quote($a_mq_id,
"integer") .
"," .
1259 $ilDB->quote($a_custom,
"integer") .
1261 $ilDB->manipulate($q);
1287 if (!is_writable($sty_data_dir)) {
1288 $ilErr->raiseError(
"Style data directory (" . $sty_data_dir
1289 .
") not writeable.",
$ilErr->FATAL);
1292 $style_dir = $sty_data_dir .
"/sty_" . $a_style_id;
1294 if (!@is_dir($style_dir)) {
1295 $ilErr->raiseError(
"Creation of style directory failed (" .
1296 $style_dir .
").",
$ilErr->FATAL);
1300 $im_dir = $style_dir .
"/images";
1302 if (!@is_dir($im_dir)) {
1303 $ilErr->raiseError(
"Creation of Import Directory failed (" .
1304 $im_dir .
").",
$ilErr->FATAL);
1308 $thumb_dir = $style_dir .
"/images/thumbnails";
1310 if (!@is_dir($thumb_dir)) {
1311 $ilErr->raiseError(
"Creation of Import Directory failed (" .
1312 $thumb_dir .
").",
$ilErr->FATAL);
1351 foreach ($entries as $entry) {
1352 if (substr($entry[
"entry"], 0, 1) ==
".") {
1355 if ($entry[
"type"] !=
"dir") {
1371 $a_file[
"tmp_name"],
1405 $q =
"DELETE FROM style_parameter WHERE id = " .
1406 $ilDB->quote($a_id,
"integer");
1419 public function deleteStylePar($a_tag, $a_class, $a_par, $a_type, $a_mq_id = 0, $a_custom =
false)
1423 $q =
"DELETE FROM style_parameter WHERE " .
1424 " style_id = " .
$ilDB->quote($this->
getId(),
"integer") .
" AND " .
1425 " tag = " .
$ilDB->quote($a_tag,
"text") .
" AND " .
1426 " class = " .
$ilDB->quote($a_class,
"text") .
" AND " .
1427 " mq_id = " .
$ilDB->quote($a_mq_id,
"integer") .
" AND " .
1428 " custom = " .
$ilDB->quote($a_custom,
"integer") .
" AND " .
1429 " " .
$ilDB->equals(
"type", $a_type,
"text",
true) .
" AND " .
1430 " parameter = " .
$ilDB->quote($a_par,
"text");
1432 $ilDB->manipulate($q);
1448 $q =
"DELETE FROM style_parameter WHERE " .
1449 " style_id = " .
$ilDB->quote($this->
getId(),
"integer") .
" AND " .
1450 " tag = " .
$ilDB->quote($a_tag,
"text") .
" AND " .
1451 " class = " .
$ilDB->quote($a_class,
"text") .
" AND " .
1452 " mq_id = " .
$ilDB->quote($a_mq_id,
"integer") .
" AND " .
1453 " custom = " .
$ilDB->quote(1,
"integer") .
" AND " .
1454 " " .
$ilDB->equals(
"type", $a_type,
"text",
true);
1456 $ilDB->manipulate($q);
1471 $q =
"DELETE FROM style_parameter WHERE " .
1472 " style_id = " .
$ilDB->quote($this->
getId(),
"integer") .
" AND " .
1473 " class = " .
$ilDB->quote($a_class,
"text") .
" AND " .
1474 " " .
$ilDB->equals(
"type", $a_type,
"text",
true);
1476 $ilDB->manipulate($q);
1483 public function delete()
1491 $def_style = $this->
ilias->getSetting(
"default_content_style_id");
1492 if ($def_style == $this->
getId()) {
1493 $this->
ilias->deleteSetting(
"default_content_style_id");
1497 $fixed_style = $this->
ilias->getSetting(
"fixed_content_style_id");
1498 if ($fixed_style == $this->
getId()) {
1499 $this->
ilias->deleteSetting(
"fixed_content_style_id");
1503 $q =
"DELETE FROM style_parameter WHERE style_id = " .
1505 $ilDB->manipulate($q);
1509 if (is_file($css_file_name)) {
1510 unlink($css_file_name);
1515 "DELETE FROM sty_media_query WHERE " .
1516 " style_id = " .
$ilDB->quote($this->getId(),
"integer")
1520 include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
1524 $q =
"DELETE FROM style_data WHERE id = " .
1526 $ilDB->manipulate($q);
1539 $q =
"SELECT * FROM style_parameter WHERE style_id = " .
1540 $ilDB->quote($this->
getId(),
"integer") .
" ORDER BY tag, class, type, mq_id ";
1541 $style_set =
$ilDB->query($q);
1546 $this->style = array();
1550 $this->end_styles = array();
1551 while ($style_rec =
$ilDB->fetchAssoc($style_set)) {
1552 if ($style_rec[
"tag"] != $ctag || $style_rec[
"class"] != $cclass
1553 || $style_rec[
"type"] != $ctype || $style_rec[
"mq_id"] != $cmq_id) {
1555 if (is_array($tag)) {
1556 if (in_array($ctype, array(
"ha_iheada",
"va_iheada"))) {
1557 $this->end_styles[] = $tag;
1559 $this->style[] = $tag;
1564 $ctag = $style_rec[
"tag"];
1565 $cclass = $style_rec[
"class"];
1566 $ctype = $style_rec[
"type"];
1567 $cmq_id = $style_rec[
"mq_id"];
1568 $tag[] = $style_rec;
1570 $this->style_class[$ctype][$cclass][$cmq_id][$style_rec[
"parameter"]] = $style_rec[
"value"];
1572 if (is_array($tag)) {
1573 $this->style[] = $tag;
1575 foreach ($this->end_styles as $s) {
1576 $this->style[] = $s;
1579 $q =
"SELECT * FROM style_data WHERE id = " .
1587 $this->chars = array();
1588 $this->chars_by_type = array();
1589 $q =
"SELECT * FROM style_char WHERE style_id = " .
1591 " ORDER BY type ASC, characteristic ASC";
1592 $par_set =
$ilDB->query($q);
1593 while ($par_rec =
$ilDB->fetchAssoc($par_set)) {
1594 $this->chars[] = array(
"type" => $par_rec[
"type"],
"class" => $par_rec[
"characteristic"],
"hide" => $par_rec[
"hide"]);
1595 $this->chars_by_type[$par_rec[
"type"]][] = $par_rec[
"characteristic"];
1596 if ($par_rec[
"hide"]) {
1597 $this->hidden_chars[$par_rec[
"type"] .
":" . $par_rec[
"characteristic"]] =
true;
1614 if ($a_target_file ==
"") {
1617 $css_file_name = $a_target_file;
1619 $css_file = fopen($css_file_name,
"w");
1621 $page_background =
"";
1623 $mqs = array(array(
"mquery" =>
"",
"id" => 0));
1629 foreach ($mqs as $mq) {
1630 if ($mq[
"id"] > 0) {
1631 fwrite($css_file,
"@media " . $mq[
"mquery"] .
" {\n");
1634 foreach (
$style as $tag) {
1635 if ($tag[0][
"mq_id"] != $mq[
"id"]) {
1638 fwrite($css_file, $tag[0][
"tag"] .
".ilc_" . $tag[0][
"type"] .
"_" . $tag[0][
"class"] .
"\n");
1641 if ($tag[0][
"tag"] ==
"td") {
1642 fwrite($css_file,
",th" .
".ilc_" . $tag[0][
"type"] .
"_" . $tag[0][
"class"] .
"\n");
1644 if (in_array($tag[0][
"tag"], array(
"h1",
"h2",
"h3"))) {
1645 fwrite($css_file,
",div.ilc_text_block_" . $tag[0][
"class"] .
"\n");
1646 fwrite($css_file,
",html.il-no-tiny-bg body#tinymce.ilc_text_block_" . $tag[0][
"class"] .
"\n");
1648 if ($tag[0][
"type"] ==
"section") {
1649 fwrite($css_file,
",a.ilc_" . $tag[0][
"type"] .
"_" . $tag[0][
"class"] .
"\n");
1651 if ($tag[0][
"type"] ==
"text_block") {
1652 fwrite($css_file,
",html.il-no-tiny-bg body#tinymce.ilc_text_block_" . $tag[0][
"class"] .
"\n");
1654 fwrite($css_file,
"{\n");
1657 $t_border = array();
1659 foreach ($tag as $par) {
1660 $cur_par = $par[
"parameter"];
1661 $cur_val = $par[
"value"];
1664 if (is_int(strpos($cur_par,
"color")) && substr(trim($cur_val), 0, 1) ==
"!") {
1668 if ($tag[0][
"type"] ==
"table" && is_int(strpos($par[
"parameter"],
"border"))) {
1669 $t_border[$cur_par] = $cur_val;
1672 if (in_array($cur_par, array(
"background-image",
"list-style-image"))) {
1673 if (is_int(strpos($cur_val,
"/"))) {
1674 $cur_val =
"url(" . $cur_val .
")";
1676 if ($a_image_dir ==
"") {
1677 $cur_val =
"url(../sty/sty_" . $this->
getId() .
"/images/" . $cur_val .
")";
1679 $cur_val =
"url(" . $a_image_dir .
"/" . $cur_val .
")";
1684 if ($cur_par ==
"opacity") {
1685 $cur_val = ((int) $cur_val) / 100;
1688 fwrite($css_file,
"\t" . $cur_par .
": " . $cur_val .
";\n");
1698 if ($cur_par ==
"opacity") {
1699 fwrite($css_file,
"\t" .
'-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=' . ($cur_val * 100) .
')"' .
";\n");
1700 fwrite($css_file,
"\t" .
'filter: alpha(opacity=' . ($cur_val * 100) .
')' .
";\n");
1701 fwrite($css_file,
"\t" .
'-moz-opacity: ' . $cur_val .
";\n");
1705 if ($cur_par ==
"transform") {
1706 fwrite($css_file,
"\t" .
'-webkit-transform: ' . $cur_val .
";\n");
1707 fwrite($css_file,
"\t" .
'-moz-transform: ' . $cur_val .
";\n");
1708 fwrite($css_file,
"\t" .
'-ms-transform: ' . $cur_val .
";\n");
1712 if ($cur_par ==
"transform-origin") {
1713 fwrite($css_file,
"\t" .
'-webkit-transform-origin: ' . $cur_val .
";\n");
1714 fwrite($css_file,
"\t" .
'-moz-transform-origin: ' . $cur_val .
";\n");
1715 fwrite($css_file,
"\t" .
'-ms-transform-origin: ' . $cur_val .
";\n");
1719 if ($tag[0][
"tag"] ==
"div" && $tag[0][
"class"] ==
"Page"
1720 && $cur_par ==
"background-color") {
1721 $page_background = $cur_val;
1724 fwrite($css_file,
"}\n");
1725 fwrite($css_file,
"\n");
1745 if ($page_background !=
"") {
1746 fwrite($css_file,
"td.ilc_Page\n");
1747 fwrite($css_file,
"{\n");
1748 fwrite($css_file,
"\t" .
"background-color: " . $page_background .
";\n");
1749 fwrite($css_file,
"}\n");
1751 if ($mq[
"id"] > 0) {
1752 fwrite($css_file,
"}\n");
1774 $fixed_style =
$ilSetting->get(
"fixed_content_style_id");
1775 if ($fixed_style > 0) {
1776 $a_style_id = $fixed_style;
1780 if ($a_style_id <= 0) {
1781 $a_style_id =
$ilSetting->get(
"default_content_style_id");
1799 if (is_array($this->style_class[$a_type][$a_class][$a_mq_id])) {
1800 return $this->style_class[$a_type][$a_class][$a_mq_id];
1816 $random = new \ilRandom();
1817 $rand = $random->int(1, 999999);
1821 $fixed_style =
$ilSetting->get(
"fixed_content_style_id");
1822 if ($fixed_style > 0) {
1823 $a_style_id = $fixed_style;
1827 if ($a_style_id <= 0) {
1828 $a_style_id =
$ilSetting->get(
"default_content_style_id");
1840 $path .=
"?dummy=$rand";
1843 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
1849 return "./Services/COPage/css/content.css";
1860 return "./Services/COPage/css/print_content.css";
1870 return "./Services/COPage/css/syntaxhighlight.css";
1880 return "./Services/COPage/css/placeholder.css";
1891 $q =
"UPDATE style_data " .
1892 "SET category = " .
$ilDB->quote((
int) $this->
getScope(),
"integer") .
1893 " WHERE id = " .
$ilDB->quote($this->
getId(),
"integer");
1894 $ilDB->manipulate($q);
1907 $q =
"UPDATE style_parameter SET VALUE = " .
1908 $ilDB->quote($a_value,
"text") .
" WHERE id = " .
1909 $ilDB->quote($a_id,
"integer");
1910 $style_set =
$ilDB->manipulate($q);
1918 public function replaceStylePar($a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id = 0, $a_custom =
false)
1923 public static function _replaceStylePar($style_id, $a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id = 0, $a_custom =
false)
1929 $q =
"SELECT * FROM style_parameter WHERE " .
1930 " style_id = " .
$ilDB->quote($style_id,
"integer") .
" AND " .
1931 " tag = " .
$ilDB->quote($a_tag,
"text") .
" AND " .
1932 " class = " .
$ilDB->quote($a_class,
"text") .
" AND " .
1933 " mq_id = " .
$ilDB->quote($a_mq_id,
"integer") .
" AND " .
1934 " custom = " .
$ilDB->quote($a_custom,
"integer") .
" AND " .
1935 " " .
$ilDB->equals(
"type", $a_type,
"text",
true) .
" AND " .
1936 " parameter = " .
$ilDB->quote($a_par,
"text");
1938 $set =
$ilDB->query($q);
1940 if ($rec = $set->fetchRow()) {
1941 $q =
"UPDATE style_parameter SET " .
1942 " value = " .
$ilDB->quote($a_val,
"text") .
" WHERE " .
1943 " style_id = " .
$ilDB->quote($style_id,
"integer") .
" AND " .
1944 " tag = " .
$ilDB->quote($a_tag,
"text") .
" AND " .
1945 " class = " .
$ilDB->quote($a_class,
"text") .
" AND " .
1946 " mq_id = " .
$ilDB->quote($a_mq_id,
"integer") .
" AND " .
1947 " custom = " .
$ilDB->quote($a_custom,
"integer") .
" AND " .
1948 " " .
$ilDB->equals(
"type", $a_type,
"text",
true) .
" AND " .
1949 " parameter = " .
$ilDB->quote($a_par,
"text");
1951 $ilDB->manipulate($q);
1953 $id =
$ilDB->nextId(
"style_parameter");
1954 $q =
"INSERT INTO style_parameter (id, value, style_id, tag, class, type, parameter, mq_id, custom) VALUES " .
1956 $ilDB->quote(
$id,
"integer") .
"," .
1957 $ilDB->quote($a_val,
"text") .
"," .
1958 " " .
$ilDB->quote($style_id,
"integer") .
"," .
1959 " " .
$ilDB->quote($a_tag,
"text") .
"," .
1960 " " .
$ilDB->quote($a_class,
"text") .
"," .
1961 " " .
$ilDB->quote($a_type,
"text") .
"," .
1962 " " .
$ilDB->quote($a_par,
"text") .
"," .
1963 " " .
$ilDB->quote($a_mq_id,
"integer") .
"," .
1964 " " .
$ilDB->quote($a_custom,
"integer") .
1967 $ilDB->manipulate($q);
1985 $this->style = $a_style;
1997 return str_replace(
"&",
"&", $a_str);
2006 $xml .=
"<StyleSheet>\n";
2013 foreach ($this->chars as $char) {
2015 "\" Type=\"" . $char[
"type"] .
"\" Class=\"" . $char[
"class"] .
"\">\n";
2016 foreach ($this->style as
$style) {
2017 if (
$style[0][
"type"] == $char[
"type"] &&
$style[0][
"class"] == $char[
"class"]) {
2018 foreach (
$style as $tag) {
2019 $xml .=
"<StyleParameter Name=\"" . $tag[
"parameter"] .
"\" Value=\"" . $tag[
"value"] .
"\" Custom=\"" . $tag[
"custom"] .
"\" />\n";
2023 $xml .=
"</Style>\n";
2027 foreach ($this->
getColors() as $color) {
2028 $xml .=
"<StyleColor Name=\"" . $color[
"name"] .
"\" Code=\"" . $color[
"code"] .
"\"/>\n";
2033 foreach ($tcts as $tct => $v) {
2036 foreach ($ts as $t) {
2037 $xml .=
"<StyleTemplate Type=\"" . $tct .
"\" Name=\"" . $t[
"name"] .
"\">\n";
2038 foreach ($t[
"classes"] as $ct =>
$c) {
2040 $xml .=
"<StyleTemplateClass ClassType=\"" . $ct .
"\" Class=\"" .
$c .
"\"/>\n";
2043 $xml .=
"</StyleTemplate>\n";
2048 $xml .=
"</StyleSheet>";
2061 if (!is_writable($sty_data_dir)) {
2062 $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
2063 .
") not writeable.", $this->
ilias->error_obj->FATAL);
2066 $style_dir = $sty_data_dir .
"/sty_" . $this->
getId();
2068 if (!@is_dir($style_dir)) {
2069 $this->
ilias->raiseError(
"Creation of style directory failed (" .
2070 $style_dir .
").", $this->
ilias->error_obj->FATAL);
2074 $ex_dir = $style_dir .
"/export";
2076 if (!@is_dir($ex_dir)) {
2077 $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
2078 $ex_dir .
").", $this->
ilias->error_obj->FATAL);
2090 $style_dir = $sty_data_dir .
"/sty_" . $this->
getId();
2092 $ex_dir = $style_dir .
"/export";
2094 if (is_dir($ex_dir)) {
2108 if (!is_writable($ex_sub_dir)) {
2109 $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_dir
2110 .
") not writeable.", $this->
ilias->error_obj->FATAL);
2112 $ex_sub_images_dir = $ex_sub_dir .
"/images";
2114 if (!is_writable($ex_sub_images_dir)) {
2115 $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_images_dir
2116 .
") not writeable.", $this->
ilias->error_obj->FATAL);
2125 $this->export_sub_dir = $a_dir;
2133 if ($this->export_sub_dir ==
"") {
2134 return "sty_" . $this->
getId();
2136 return $this->export_sub_dir;
2172 $file = $a_dir .
"/style.xml";
2175 if (!($fp = @fopen($file,
"w"))) {
2176 die(
"<b>Error</b>: Could not open \"" . $file .
"\" for writing" .
2177 " in <b>" . __FILE__ .
"</b> on line <b>" . __LINE__ .
"</b><br />");
2184 fwrite($fp, $this->
getXML());
2197 if (!is_writable($sty_data_dir)) {
2198 $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
2199 .
") not writeable.", $this->
ilias->error_obj->FATAL);
2202 $style_dir = $sty_data_dir .
"/sty_" . $this->
getId();
2204 if (!@is_dir($style_dir)) {
2205 $this->
ilias->raiseError(
"Creation of style directory failed (" .
2206 $style_dir .
").", $this->
ilias->error_obj->FATAL);
2210 $im_dir = $style_dir .
"/import";
2212 if (!@is_dir($im_dir)) {
2213 $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
2214 $im_dir .
").", $this->
ilias->error_obj->FATAL);
2223 public function import($a_file)
2230 if (is_array($a_file)) {
2232 $a_file[
"tmp_name"],
2234 $im_dir .
"/" . $a_file[
"name"]
2236 $file_name = $a_file[
"name"];
2238 $pi = pathinfo($a_file);
2239 $file_name = $pi[
"basename"];
2240 copy($a_file, $im_dir .
"/" . $file_name);
2242 $file = pathinfo($file_name);
2245 if (strtolower($file[
"extension"] ==
"zip")) {
2247 $subdir = basename($file[
"basename"],
"." . $file[
"extension"]);
2248 if (!is_dir($im_dir .
"/" . $subdir)) {
2251 $xml_file = $im_dir .
"/" . $subdir .
"/style.xml";
2253 $xml_file = $im_dir .
"/" . $file_name;
2262 if (is_dir($im_dir .
"/" . $subdir .
"/images")) {
2264 $im_dir .
"/" . $subdir .
"/images",
2282 $this->is_3_10_skin =
false;
2284 if (!$a_skip_parent_create) {
2287 include_once(
"./Services/Style/Content/classes/class.ilStyleImportParser.php");
2289 $importParser->startParsing();
2292 foreach ($this->style as
$style) {
2293 foreach (
$style as $tag) {
2294 $id =
$ilDB->nextId(
"style_parameter");
2297 if (in_array($tag[
"class"], array(
"PageFrame",
"PageContainer")) &&
2298 $tag[
"tag"] ==
"table") {
2299 $tag[
"tag"] =
"div";
2300 if ($tag[
"parameter"] ==
"width" && $tag[
"value"] ==
"100%") {
2305 $q =
"INSERT INTO style_parameter (id,style_id, tag, class, parameter, type, value, custom) VALUES " .
2307 $ilDB->quote(
$id,
"integer") .
"," .
2308 $ilDB->quote($this->
getId(),
"integer") .
"," .
2309 $ilDB->quote($tag[
"tag"],
"text") .
"," .
2310 $ilDB->quote($tag[
"class"],
"text") .
"," .
2311 $ilDB->quote($tag[
"parameter"],
"text") .
"," .
2312 $ilDB->quote($tag[
"type"],
"text") .
"," .
2313 $ilDB->quote($tag[
"value"],
"text") .
"," .
2314 $ilDB->quote((
bool) $tag[
"custom"],
"integer") .
2316 $ilDB->manipulate($q);
2321 $this->is_3_10_skin =
true;
2322 if (is_array($this->chars)) {
2323 foreach ($this->chars as $char) {
2324 if ($char[
"type"] !=
"") {
2325 $s = substr($char[
"class"], strlen($char[
"class"]) - 6);
2326 if ($s !=
":hover") {
2330 "style_id" => array(
"integer", $this->
getId()),
2331 "type" => array(
"text", $char[
"type"]),
2332 "characteristic" => array(
"text", $char[
"class"])),
2333 array(
"hide" => array(
"integer", 0))
2341 $this->is_3_10_skin =
false;
2348 $q =
"INSERT INTO style_data (id, uptodate) VALUES " .
2349 "(" .
$ilDB->quote($this->
getId(),
"integer") .
", 0)";
2350 $ilDB->manipulate($q);
2355 if ($this->is_3_10_skin) {
2368 foreach (self::$parameter as
$parameter => $props) {
2376 $input = self::$parameter[$par][
"input"];
2382 $subpar = self::$parameter[$par][
"subpar"];
2392 foreach (self::$parameter as $k => $v) {
2393 if (is_array(self::$filtered_groups[$v[
"group"]]) &&
2394 !in_array($a_tag, self::$filtered_groups[$v[
"group"]])) {
2409 if ($a_no_percentage) {
2417 return self::$parameter[$par][
"values"];
2432 return in_array($a_type, self::$expandable_types);
2437 return in_array($a_type, self::$hideable_types);
2442 foreach (self::$style_super_types as $s => $t) {
2443 if (in_array($a_type, $t)) {
2446 if ($a_type == $s) {
2457 $c_styles = array();
2458 foreach (self::$core_styles as $cstyle) {
2460 = array(
"type" => $cstyle[
"type"],
2462 "class" => $cstyle[
"class"]);
2475 foreach (self::$core_styles as $s) {
2476 if ($s[
"type"] == $a_type && $s[
"class"] == $a_class) {
2489 if ($a_template_type ==
"") {
2493 return self::$templates[$a_template_type];
2499 return self::$pseudo_classes[$tag];
2504 return self::$templates[$t][$k];
2509 return self::$assigned_tags[$a_type];
2518 foreach (self::$parameter as $p => $v) {
2519 $pars[$p] = $v[
"values"];
2531 $styles = array(array(
"id" => $a_id));
2545 if ($a_styles ==
"") {
2548 $styles = $a_styles;
2554 $core_images = array();
2556 if (is_dir($core_dir)) {
2557 $dir = opendir($core_dir);
2558 while ($file = readdir($dir)) {
2559 if (substr($file, 0, 1) !=
"." && is_file($core_dir .
"/" . $file)) {
2560 $core_images[] = $file;
2565 foreach ($styles as
$style) {
2570 $set =
$ilDB->queryF(
2571 "SELECT * FROM style_char WHERE style_id = %s " .
2572 "AND type = %s AND characteristic = %s",
2573 array(
"integer",
"text",
"text"),
2574 array(
$id, $cs[
"type"], $cs[
"class"])
2578 if (!($rec =
$ilDB->fetchAssoc($set))) {
2580 "INSERT INTO style_char (style_id, type, characteristic) " .
2581 " VALUES (%s,%s,%s) ",
2582 array(
"integer",
"text",
"text"),
2583 array(
$id, $cs[
"type"], $cs[
"class"])
2586 $xpath =
new DOMXPath($bdom);
2587 $par_nodes = $xpath->query(
"/StyleSheet/Style[@Tag = '" . $cs[
"tag"] .
"' and @Type='" .
2588 $cs[
"type"] .
"' and @Class='" . $cs[
"class"] .
"']/StyleParameter");
2589 foreach ($par_nodes as $par_node) {
2591 $set =
$ilDB->queryF(
2592 "SELECT * FROM style_parameter WHERE style_id = %s " .
2593 "AND type = %s AND class = %s AND tag = %s AND parameter = %s",
2594 array(
"integer",
"text",
"text",
"text",
"text"),
2595 array(
$id, $cs[
"type"], $cs[
"class"],
2596 $cs[
"tag"], $par_node->getAttribute(
"Name"))
2600 if (!($rec =
$ilDB->fetchAssoc($set))) {
2601 $spid =
$ilDB->nextId(
"style_parameter");
2602 $st =
$ilDB->manipulateF(
2603 "INSERT INTO style_parameter (id, style_id, type, class, tag, parameter, value) " .
2604 " VALUES (%s,%s,%s,%s,%s,%s,%s)",
2605 array(
"integer",
"integer",
"text",
"text",
"text",
"text",
"text"),
2606 array($spid,
$id, $cs[
"type"], $cs[
"class"], $cs[
"tag"],
2607 $par_node->getAttribute(
"Name"), $par_node->getAttribute(
"Value"))
2617 reset($core_images);
2618 foreach ($core_images as $cim) {
2619 if (!is_file($imdir .
"/" . $cim)) {
2620 copy($core_dir .
"/" . $cim, $imdir .
"/" . $cim);
2645 $st =
$ilDB->prepareManip(
"UPDATE style_char SET type = ? WHERE characteristic = ?" .
2646 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2647 $ilDB->execute($st, array(
"media_cont",
"Media", $this->
getId()));
2648 $ilDB->execute($st, array(
"media_caption",
"MediaCaption", $this->
getId()));
2649 $ilDB->execute($st, array(
"page_fn",
"Footnote", $this->
getId()));
2650 $ilDB->execute($st, array(
"page_nav",
"LMNavigation", $this->
getId()));
2651 $ilDB->execute($st, array(
"page_title",
"PageTitle", $this->
getId()));
2652 $ilDB->execute($st, array(
"page_cont",
"Page", $this->
getId()));
2655 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET type = ? WHERE class = ?" .
2656 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2657 $ilDB->execute($st, array(
"media_cont",
"Media", $this->
getId()));
2658 $ilDB->execute($st, array(
"media_caption",
"MediaCaption", $this->
getId()));
2659 $ilDB->execute($st, array(
"page_fn",
"Footnote", $this->
getId()));
2660 $ilDB->execute($st, array(
"page_nav",
"LMNavigation", $this->
getId()));
2661 $ilDB->execute($st, array(
"page_title",
"PageTitle", $this->
getId()));
2662 $ilDB->execute($st, array(
"table",
"Page", $this->
getId()));
2664 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET tag = ? WHERE class = ?" .
2665 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2666 $ilDB->execute($st, array(
"div",
"MediaCaption", $this->
getId()));
2669 $st =
$ilDB->prepareManip(
"UPDATE style_char SET characteristic = ? WHERE characteristic = ?" .
2670 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2671 $ilDB->execute($st, array(
"MediaContainer",
"Media", $this->
getId()));
2672 $ilDB->execute($st, array(
"PageContainer",
"Page", $this->
getId()));
2675 $st =
$ilDB->prepareManip(
"UPDATE style_parameter SET class = ? WHERE class = ?" .
2676 " AND style_id = ? ", array(
"text",
"text",
"integer"));
2677 $ilDB->execute($st, array(
"MediaContainer",
"Media", $this->
getId()));
2678 $ilDB->execute($st, array(
"PageContainer",
"Page", $this->
getId()));
2681 $st =
$ilDB->prepareManip(
"DELETE FROM style_char WHERE type = ?" .
2682 " AND style_id = ? ", array(
"text",
"integer"));
2683 $ilDB->execute($st, array(
"page_cont", $this->
getId()));
2684 $st =
$ilDB->prepareManip(
"DELETE FROM style_parameter WHERE type = ?" .
2685 " AND style_id = ? ", array(
"text",
"integer"));
2686 $ilDB->execute($st, array(
"page_cont", $this->
getId()));
2701 $add_str =
" AND style_id = " .
$ilDB->quote($a_id,
"integer");
2704 $set =
$ilDB->query($q =
"SELECT DISTINCT style_id, tag, class FROM style_parameter WHERE " .
2705 $ilDB->equals(
"type",
"",
"text",
true) .
" " . $add_str);
2707 while ($rec =
$ilDB->fetchAssoc($set)) {
2710 switch ($rec[
"tag"]) {
2713 if (in_array($rec[
"class"], array(
"Headline3",
"Headline1",
2714 "Headline2",
"TableContent",
"List",
"Standard",
"Remark",
2715 "Additional",
"Mnemonic",
"Citation",
"Example"))) {
2716 $types[] =
"text_block";
2718 if (in_array($rec[
"class"], array(
"Block",
"Remark",
2719 "Additional",
"Mnemonic",
"Example",
"Excursus",
"Special"))) {
2720 $types[] =
"section";
2722 if (in_array($rec[
"class"], array(
"Page",
"Footnote",
"PageTitle",
"LMNavigation"))) {
2728 $types[] =
"table_cell";
2732 if (in_array($rec[
"class"], array(
"ExtLink",
"IntLink",
"FootnoteLink"))) {
2738 $types[] =
"text_inline";
2747 foreach ($types as $t) {
2749 $set4 =
$ilDB->queryF(
2750 "SELECT * FROM style_char " .
2751 " WHERE style_id = %s AND type = %s AND characteristic = %s",
2752 array(
"integer",
"text",
"text"),
2753 array($rec[
"style_id"], $t, $rec[
"class"])
2755 if ($rec4 =
$ilDB->fetchAssoc($set4)) {
2760 "INSERT INTO style_char " .
2761 " (style_id, type, characteristic) VALUES " .
2763 array(
"integer",
"text",
"text"),
2764 array($rec[
"style_id"], $t, $rec[
"class"])
2770 if ($rec[
"type"] ==
"") {
2771 if (count($types) > 0) {
2773 "UPDATE style_parameter SET type = %s " .
2774 " WHERE style_id = %s AND class = %s AND " .
$ilDB->equals(
"type",
"",
"text",
true),
2775 array(
"text",
"integer",
"text"),
2776 array($types[0], $rec[
"style_id"], $rec[
"class"])
2781 if ($types[0] ==
"link") {
2783 "UPDATE style_parameter SET type = %s " .
2784 " WHERE style_id = %s AND (class = %s OR class = %s) AND " .
$ilDB->equals(
"type",
"",
"text",
true),
2785 array(
"text",
"integer",
"text",
"text"),
2786 array($types[0], $rec[
"style_id"], $rec[
"class"] .
":visited",
2787 $rec[
"class"] .
":hover")
2792 if (count($types) == 2) {
2795 $set2 =
$ilDB->queryF(
2796 "SELECT * FROM style_parameter " .
2797 " WHERE style_id = %s AND class = %s AND type = %s",
2798 array(
"integer",
"text",
"text"),
2799 array($rec[
"style_id"], $rec[
"class"], $types[0])
2801 while ($rec2 =
$ilDB->fetchAssoc($set2)) {
2803 $set3 =
$ilDB->queryF(
2804 "SELECT * FROM style_parameter " .
2805 " WHERE style_id = %s AND tag = %s AND class = %s AND type = %s AND parameter = %s",
2806 array(
"integer",
"text",
"text",
"text",
"text"),
2807 array($rec[
"style_id"], $rec[
"tag"], $rec[
"class"], $types[1], $rec[
"parameter"])
2809 if ($rec3 =
$ilDB->fetchAssoc($set3)) {
2812 $nid =
$ilDB->nextId(
"style_parameter");
2814 "INSERT INTO style_parameter " .
2815 " (id, style_id, tag, class, parameter, value, type) VALUES " .
2816 " (%s, %s,%s,%s,%s,%s,%s) ",
2817 array(
"integer",
"integer",
"text",
"text",
"text",
"text",
"text"),
2818 array($nid, $rec2[
"style_id"], $rec2[
"tag"], $rec2[
"class"],
2819 $rec2[
"parameter"], $rec2[
"value"], $types[1])
2835 $classes = array(
"Example",
"Additional",
"Citation",
"Mnemonic",
"Remark");
2836 $pars = array(
"margin-top",
"margin-bottom");
2838 foreach ($classes as $curr_class) {
2839 foreach ($pars as $curr_par) {
2840 $res2 =
$ilDB->queryF(
2841 "SELECT id FROM style_parameter WHERE style_id = %s" .
2842 " AND tag = %s AND class= %s AND parameter = %s",
2843 array(
"integer",
"text",
"text",
"text"),
2844 array($a_id,
"p", $curr_class, $curr_par)
2846 if ($row2 =
$ilDB->fetchAssoc($res2)) {
2848 "UPDATE style_parameter SET value= %s WHERE id = %s",
2849 array(
"text",
"integer"),
2850 array(
"10px", $row2[
"id"])
2853 $nid =
$ilDB->nextId(
"style_parameter");
2855 "INSERT INTO style_parameter " .
2856 "(id, style_id, tag, class, parameter,value) VALUES (%s,%s,%s,%s,%s,%s)",
2857 array(
"integer",
"integer",
"text",
"text",
"text",
"text"),
2858 array($nid, $a_id,
"div", $curr_class, $curr_par,
"10px")
2865 "UPDATE style_parameter SET tag = %s WHERE tag = %s and style_id = %s",
2866 array(
"text",
"text",
"integer"),
2867 array(
"div",
"p", $a_id)
2882 $set =
$ilDB->query(
"SELECT * FROM style_color WHERE " .
2883 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" " .
2884 "ORDER BY color_name");
2887 while ($rec =
$ilDB->fetchAssoc($set)) {
2889 "name" => $rec[
"color_name"],
2890 "code" => $rec[
"color_code"]
2904 $ilDB->manipulate(
"INSERT INTO style_color (style_id, color_name, color_code)" .
2906 $ilDB->quote($this->getId(),
"integer") .
"," .
2907 $ilDB->quote($a_name,
"text") .
"," .
2908 $ilDB->quote($a_code,
"text") .
2921 $ilDB->manipulate(
"UPDATE style_color SET " .
2922 "color_name = " .
$ilDB->quote($a_new_name,
"text") .
", " .
2923 "color_code = " .
$ilDB->quote($a_code,
"text") .
2924 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer") .
2925 " AND color_name = " .
$ilDB->quote($a_name,
"text"));
2929 if ($a_name != $a_new_name) {
2930 $set =
$ilDB->query(
"SELECT * FROM style_parameter " .
2931 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer") .
2933 " parameter = " .
$ilDB->quote(
"background-color",
"text") .
" OR " .
2934 " parameter = " .
$ilDB->quote(
"color",
"text") .
" OR " .
2935 " parameter = " .
$ilDB->quote(
"border-color",
"text") .
" OR " .
2936 " parameter = " .
$ilDB->quote(
"border-top-color",
"text") .
" OR " .
2937 " parameter = " .
$ilDB->quote(
"border-bottom-color",
"text") .
" OR " .
2938 " parameter = " .
$ilDB->quote(
"border-left-color",
"text") .
" OR " .
2939 " parameter = " .
$ilDB->quote(
"border-right-color",
"text") .
2941 while ($rec =
$ilDB->fetchAssoc($set)) {
2942 if ($rec[
"value"] ==
"!" . $a_name ||
2943 is_int(strpos($rec[
"value"],
"!" . $a_name .
"("))) {
2949 str_replace($a_name, $a_new_name, $rec[
"value"]),
2966 $ilDB->manipulate(
"DELETE FROM style_color WHERE " .
2967 " style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
2968 " color_name = " .
$ilDB->quote($a_name,
"text"));
2978 $set =
$ilDB->query(
"SELECT * FROM style_color WHERE " .
2979 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
2980 "color_name = " .
$ilDB->quote($a_color_name,
"text"));
2981 if ($rec =
$ilDB->fetchAssoc($set)) {
2994 $pos = strpos($a_name,
"(");
2996 $a_i = substr($a_name, $pos + 1);
2997 $a_i = str_replace(
")",
"", $a_i);
2998 $a_name = substr($a_name, 0, $pos);
3001 $set =
$ilDB->query(
"SELECT color_code FROM style_color WHERE " .
3002 " style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
3003 " color_name = " .
$ilDB->quote($a_name,
"text"));
3004 if ($rec =
$ilDB->fetchAssoc($set)) {
3006 return "#" . $rec[
"color_code"];
3025 $hls[
"l"] = $hls[
"l"] + ((255 - $hls[
"l"]) * ($a_i / 100));
3028 $hls[
"l"] = $hls[
"l"] - (($hls[
"l"]) * (-$a_i / 100));
3033 foreach ($rgb as $k => $v) {
3034 $rgb[$k] = str_pad(dechex($v), 2,
"0", STR_PAD_LEFT);
3037 return $rgb[
"r"] . $rgb[
"g"] . $rgb[
"b"];
3045 $r[
"r"] = substr($a_rgb, 0, 2);
3046 $r[
"g"] = substr($a_rgb, 2, 2);
3047 $r[
"b"] = substr($a_rgb, 4, 2);
3050 $r[
"r"] = (int) hexdec($r[
"r"]);
3051 $r[
"g"] = (int) hexdec($r[
"g"]);
3052 $r[
"b"] = (int) hexdec($r[
"b"]);
3063 $r = $a_rgb[
"r"] / 255;
3064 $g = $a_rgb[
"g"] / 255;
3065 $b = $a_rgb[
"b"] / 255;
3068 $max = max($r, $g,
$b);
3069 $min = min($r, $g,
$b);
3072 $l = ($max + $min) / 2;
3079 $s = ($max - $min) / ($max + $min);
3081 $s = ($max - $min) / (2.0 - $max - $min);
3085 $h = ($g -
$b) / ($max - $min);
3086 } elseif ($g == $max) {
3087 $h = 2.0 + (
$b - $r) / ($max - $min);
3088 } elseif (
$b == $max) {
3089 $h = 4.0 + ($r - $g) / ($max - $min);
3093 $hls[
"h"] = round(($h / 6) * 255);
3094 $hls[
"l"] = round($l * 255);
3095 $hls[
"s"] = round($s * 255);
3105 $h = $a_hls[
"h"] / 255;
3106 $l = $a_hls[
"l"] / 255;
3107 $s = $a_hls[
"s"] / 255;
3109 $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 0;
3113 $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = $l;
3116 $temp2 = $l * (1.0 + $s);
3118 $temp2 = $l + $s - $l * $s;
3121 $temp1 = 2.0 * $l - $temp2;
3124 # For each of R, G, B, compute another temporary value, temp3, as follows:
3125 foreach ($rgb as $k => $v) {
3128 $temp3 = $h + 1.0 / 3.0;
3136 $temp3 = $h - 1.0 / 3.0;
3140 $temp3 = $temp3 + 1.0;
3143 $temp3 = $temp3 - 1.0;
3146 if (6.0 * $temp3 < 1) {
3147 $rgb[$k] = $temp1 + ($temp2 - $temp1) * 6.0 * $temp3;
3148 } elseif (2.0 * $temp3 < 1) {
3150 } elseif (3.0 * $temp3 < 2) {
3151 $rgb[$k] = $temp1 + ($temp2 - $temp1) * ((2.0 / 3.0) - $temp3) * 6.0;
3158 $rgb[
"r"] = round($rgb[
"r"] * 255);
3159 $rgb[
"g"] = round($rgb[
"g"] * 255);
3160 $rgb[
"b"] = round($rgb[
"b"] * 255);
3180 $set =
$ilDB->query(
"SELECT * FROM sty_media_query WHERE " .
3181 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" " .
3182 "ORDER BY order_nr");
3185 while ($rec =
$ilDB->fetchAssoc($set)) {
3200 $id =
$ilDB->nextId(
"sty_media_query");
3201 if ($order_nr == 0) {
3205 $ilDB->manipulate(
"INSERT INTO sty_media_query (id, style_id, mquery, order_nr)" .
3207 $ilDB->quote(
$id,
"integer") .
"," .
3208 $ilDB->quote($this->getId(),
"integer") .
"," .
3209 $ilDB->quote($a_mquery,
"text") .
"," .
3210 $ilDB->quote($order_nr,
"integer") .
3224 $set =
$ilDB->query(
3225 "SELECT max(order_nr) mnr FROM sty_media_query " .
3226 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer")
3228 $rec =
$ilDB->fetchAssoc($set);
3230 return (
int) $rec[
"mnr"];
3244 "UPDATE sty_media_query SET " .
3245 " mquery = " .
$ilDB->quote($a_mquery,
"text") .
3246 " WHERE id = " .
$ilDB->quote($a_id,
"integer")
3260 $set =
$ilDB->query(
3261 "SELECT * FROM sty_media_query " .
3262 " WHERE id = " .
$ilDB->quote($a_id,
"integer")
3264 return $ilDB->fetchAssoc($set);
3277 "DELETE FROM sty_media_query WHERE " .
3278 " style_id = " .
$ilDB->quote($this->getId(),
"integer") .
3279 " AND id = " .
$ilDB->quote($a_id,
"integer")
3294 if (is_array($a_order_nr)) {
3295 foreach ($mqueries as $k => $mq) {
3296 $mqueries[$k][
"order_nr"] = $a_order_nr[$mq[
"id"]];
3301 foreach ($mqueries as $mq) {
3303 "UPDATE sty_media_query SET " .
3304 " order_nr = " .
$ilDB->quote($cnt,
"integer") .
3305 " WHERE id = " .
$ilDB->quote($mq[
"id"],
"integer")
3323 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE " .
3324 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
3325 "temp_type = " .
$ilDB->quote($a_type,
"text") .
" " .
3329 while ($rec =
$ilDB->fetchAssoc($set)) {
3343 $set =
$ilDB->query(
"SELECT * FROM style_template_class WHERE " .
3344 "template_id = " .
$ilDB->quote($a_tid,
"integer"));
3347 while ($rec =
$ilDB->fetchAssoc($set)) {
3348 $key = $rec[
"class_type"];
3349 $class[$key] = $rec[
"class"];
3363 $tid =
$ilDB->nextId(
"style_template");
3364 $ilDB->manipulate($q =
"INSERT INTO style_template " .
3365 "(id, style_id, name, temp_type)" .
3367 $ilDB->quote($tid,
"integer") .
"," .
3368 $ilDB->quote($this->getId(),
"integer") .
"," .
3369 $ilDB->quote($a_name,
"text") .
"," .
3370 $ilDB->quote($a_type,
"text") .
3373 foreach ($a_classes as $t =>
$c) {
3374 $ilDB->manipulate($q =
"INSERT INTO style_template_class " .
3375 "(template_id, class_type, class)" .
3377 $ilDB->quote($tid,
"integer") .
"," .
3378 $ilDB->quote($t,
"text") .
"," .
3383 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheetGUI.php");
3399 $ilDB->manipulate(
"UPDATE style_template SET " .
3400 "name = " .
$ilDB->quote($a_name,
"text") .
3401 " WHERE id = " .
$ilDB->quote($a_t_id,
"integer"));
3404 "DELETE FROM style_template_class WHERE " .
3405 "template_id = " .
$ilDB->quote($a_t_id,
"integer")
3407 foreach ($a_classes as $t =>
$c) {
3408 $ilDB->manipulate($q =
"INSERT INTO style_template_class " .
3409 "(template_id, class_type, class)" .
3411 $ilDB->quote($a_t_id,
"integer") .
"," .
3412 $ilDB->quote($t,
"text") .
"," .
3425 $ilDB->manipulate($q =
"INSERT INTO style_template_class " .
3426 "(template_id, class_type, class)" .
3428 $ilDB->quote($a_t_id,
"integer") .
"," .
3429 $ilDB->quote($a_type,
"text") .
"," .
3430 $ilDB->quote($a_class,
"text") .
3442 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE " .
3443 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
3444 "name = " .
$ilDB->quote($a_template_name,
"text"));
3445 if ($rec =
$ilDB->fetchAssoc($set)) {
3458 $set =
$ilDB->query(
"SELECT * FROM style_template WHERE " .
3459 "style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" " .
3460 " AND id = " .
$ilDB->quote($a_t_id,
"integer"));
3462 if ($rec =
$ilDB->fetchAssoc($set)) {
3488 $set =
$ilDB->query(
"SELECT name FROM style_template WHERE " .
3489 " id = " .
$ilDB->quote($a_t_id,
"integer"));
3491 if ($rec =
$ilDB->fetchAssoc($set)) {
3492 return $rec[
"name"];
3505 $tag =
"<StyleTemplates>";
3507 $ttypes = array(
"table",
"vaccordion",
"haccordion",
"carousel");
3509 foreach ($ttypes as $ttype) {
3512 foreach ($ts as $t) {
3526 $tag .=
'<StyleTemplate Name="' . $t[
"name"] .
'">';
3528 foreach ($atts as
$type => $t) {
3530 $tag .=
'<StyleClass Type="' .
$type .
'" Value="' .
$c[
$type] .
'" />';
3534 $tag .=
"</StyleTemplate>";
3538 $tag .=
"</StyleTemplates>";
3550 $a_preview_html = str_replace(
' width=""',
"", $a_preview_html);
3551 $a_preview_html = str_replace(
' valign="top"',
"", $a_preview_html);
3552 $a_preview_html = str_replace(
'<div class="ilc_text_block_TableContent">',
"<div>", $a_preview_html);
3555 if (strlen($a_preview_html) > 4000) {
3557 $a_preview_html =
"";
3559 $ilDB->manipulate(
"UPDATE style_template SET " .
3560 "preview = " .
$ilDB->quote($a_preview_html,
"text") .
3561 " WHERE id = " .
$ilDB->quote($a_t_id,
"integer"));
3571 $set =
$ilDB->query(
"SELECT preview FROM style_template " .
3572 " WHERE id = " .
$ilDB->quote($a_t_id,
"integer"));
3573 if ($rec =
$ilDB->fetchAssoc($set)) {
3574 return $rec[
"preview"];
3589 $set =
$ilDB->query(
"SELECT id FROM style_template " .
3590 " WHERE style_id = " .
$ilDB->quote($a_style_id,
"integer") .
3591 " AND name = " .
$ilDB->quote($a_name,
"text"));
3592 if ($rec =
$ilDB->fetchAssoc($set)) {
3606 $ilDB->manipulate(
"DELETE FROM style_template WHERE " .
3607 " style_id = " .
$ilDB->quote($this->getId(),
"integer") .
" AND " .
3608 " id = " .
$ilDB->quote($a_t_id,
"integer"));
3611 "DELETE FROM style_template_class WHERE " .
3612 "template_id = " .
$ilDB->quote($a_t_id,
"integer")
3624 "DELETE FROM style_setting WHERE " .
3625 " style_id = " .
$ilDB->quote($this->getId(),
"integer") .
3626 " AND name = " .
$ilDB->quote($a_name,
"text")
3629 $ilDB->manipulate(
"INSERT INTO style_setting " .
3630 "(style_id, name, value) VALUES (" .
3631 $ilDB->quote($this->getId(),
"integer") .
"," .
3632 $ilDB->quote($a_name,
"text") .
"," .
3633 $ilDB->quote($a_value,
"text") .
3644 $set =
$ilDB->query(
3645 "SELECT value FROM style_setting " .
3646 " WHERE style_id = " .
$ilDB->quote($this->getId(),
"integer") .
3647 " AND name = " .
$ilDB->quote($a_name,
"text")
3649 $rec =
$ilDB->fetchAssoc($set);
3651 return $rec[
"value"];
3666 "obj_id" => array(
"integer", (
int) $a_obj_id)),
3668 "style_id" => array(
"integer", (
int) $a_style_id))
3681 $set =
$ilDB->query(
3682 "SELECT style_id FROM style_usage " .
3683 " WHERE obj_id = " .
$ilDB->quote($a_obj_id,
"integer")
3685 $rec =
$ilDB->fetchAssoc($set);
3688 return (
int) $rec[
"style_id"];
3705 $set =
$ilDB->query(
3706 "SELECT DISTINCT obj_id FROM style_usage " .
3707 " WHERE style_id = " .
$ilDB->quote($a_style_id,
"integer")
3710 while ($rec =
$ilDB->fetchAssoc($set)) {
3711 $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)
static getBasicZipPath()
Get basic zip path.
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)
static getBasicImageDir()
Get basic image dir.
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.
static _getStandardStyles( $a_exclude_default_style=false, $a_include_deactivated=false, $a_scope=0)
Get standard styles.
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.
getImages()
Get images of style.
getMediaQueryForId($a_id)
Get media query for id.
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
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 _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)
zips given directory/file into given zip.file
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static unzip(string $path_to_zip_file, bool $overwrite_existing=false, bool $unpack_flat=false)
static makeDirParents($a_dir)
Create a new directory and all parent directories.
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)
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
redirection script todo: (a better solution should control the processing via a xml file)
foreach($_POST as $key=> $value) $res