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);
 
  571        parent::__construct($a_id, 
false);
 
  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)) {
 
  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;
 
  884    public function create($a_from_style = 0, $a_import_mode = 
false)
 
  890        if ($a_from_style == 0) {
 
  891            if (!$a_import_mode) {
 
  898                    self::$basic_style_image_dir,
 
  903                $q = 
"INSERT INTO style_data (id, uptodate, category) VALUES " .
 
  904                    "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0," .
 
  906                $ilDB->manipulate($q);
 
  912            $q = 
"SELECT * FROM style_parameter WHERE style_id = " .
 
  913                $ilDB->quote($a_from_style, 
"integer");
 
  914            $par_set = 
$ilDB->query($q);
 
  915            while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
  916                $def[] = array(
"tag" => $par_rec[
"tag"], 
"class" => $par_rec[
"class"],
 
  917                    "parameter" => $par_rec[
"parameter"], 
"value" => $par_rec[
"value"],
 
  918                    "type" => $par_rec[
"type"], 
"mq_id" => $par_rec[
"mq_id"], 
"custom" => $par_rec[
"custom"]);
 
  923            $q = 
"SELECT * FROM style_char WHERE style_id = " .
 
  924                $ilDB->quote($a_from_style, 
"integer");
 
  925            $par_set = 
$ilDB->query($q);
 
  926            while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
  927                $chars[] = array(
"type" => $par_rec[
"type"], 
"characteristic" => $par_rec[
"characteristic"]);
 
  933            $mqs = $from_style->getMediaQueries();
 
  934            $mq_mapping = array();
 
  935            foreach ($mqs as $mq) {
 
  937                $mq_mapping[$mq[
"id"]] = $nid;
 
  941            foreach (
$def as $sty) {
 
  942                $id = 
$ilDB->nextId(
"style_parameter");
 
  943                $q = 
"INSERT INTO style_parameter (id, style_id, tag, class, parameter, value, type, mq_id, custom) VALUES " .
 
  945                    $ilDB->quote(
$id, 
"integer") . 
"," .
 
  946                    $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
  947                    $ilDB->quote($sty[
"tag"], 
"text") . 
"," .
 
  948                    $ilDB->quote($sty[
"class"], 
"text") . 
"," .
 
  949                    $ilDB->quote($sty[
"parameter"], 
"text") . 
"," .
 
  950                    $ilDB->quote($sty[
"value"], 
"text") . 
"," .
 
  951                    $ilDB->quote($sty[
"type"], 
"text") . 
"," .
 
  952                    $ilDB->quote((
int) $mq_mapping[$sty[
"mq_id"]], 
"integer") . 
"," .
 
  953                    $ilDB->quote($sty[
"custom"], 
"integer") .
 
  955                $ilDB->manipulate($q);
 
  959            foreach ($chars as $char) {
 
  960                $q = 
"INSERT INTO style_char (style_id, type, characteristic) VALUES " .
 
  961                    "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
  962                    $ilDB->quote($char[
"type"], 
"text") . 
"," .
 
  963                    $ilDB->quote($char[
"characteristic"], 
"text") . 
")";
 
  964                $ilDB->manipulate($q);
 
  968            $q = 
"INSERT INTO style_data (id, uptodate, category) VALUES " .
 
  969                "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0," .
 
  971            $ilDB->manipulate($q);
 
  976                $from_style->getImagesDirectory(),
 
  977                $this->getImagesDirectory()
 
  981            $colors = $from_style->getColors();
 
  982            foreach ($colors as 
$c) {
 
  988            foreach ($tcts as $tct => $v) {
 
  997        if (!$a_import_mode) {
 
 1013            $st = 
$ilDB->manipulateF(
 
 1014                "DELETE FROM style_char WHERE style_id = %s AND type = %s AND characteristic = %s",
 
 1015                array(
"integer", 
"text", 
"text"),
 
 1020            $st = 
$ilDB->manipulateF(
 
 1021                "DELETE FROM style_parameter WHERE style_id = %s AND tag = %s AND type = %s AND class = %s",
 
 1022                array(
"integer", 
"text", 
"text", 
"text"),
 
 1038        $set = 
$ilDB->queryF(
 
 1039            "SELECT style_id FROM style_char WHERE style_id = %s AND characteristic = %s AND type = %s",
 
 1040            array(
"integer", 
"text", 
"text"),
 
 1041            array($this->
getId(), $a_char, $a_style_type)
 
 1043        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 1058            "INSERT INTO style_char (style_id, type, characteristic, hide)" .
 
 1059            " VALUES (%s,%s,%s,%s) ",
 
 1060            array(
"integer", 
"text", 
"text", 
"integer"),
 
 1090        $pars = $from_style->getParametersOfClass($a_from_type, $a_from_char);
 
 1093        foreach ($pars as $p => $v) {
 
 1094            if (substr($v, 0, 1) == 
"!") {
 
 1095                $colors[] = substr($v, 1);
 
 1107        foreach ($colors as 
$c) {
 
 1109                $this->
addColor($c, $from_style->getColorCodeForName(
$c));
 
 1122            $chars = $this->chars;
 
 1124        if (is_array($this->chars_by_type[
$a_type])) {
 
 1125            foreach ($this->chars_by_type[
$a_type] as 
$c) {
 
 1126                if ($a_include_core || !self::isCoreStyle(
$a_type, 
$c)) {
 
 1133            foreach ($chars as $k => $char) {
 
 1134                if (
$a_type == 
"" && $this->hidden_chars[$char[
"type"] . 
":" . $char[
"class"]]) {
 
 1136                } elseif ($this->hidden_chars[
$a_type . 
":" . $char]) {
 
 1150        $this->chars = $a_chars;
 
 1162            "UPDATE style_char SET " .
 
 1163            " hide = " . 
$ilDB->quote((
int) $a_hide, 
"integer") .
 
 1164            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 1166            " characteristic = " . 
$ilDB->quote($a_char, 
"text")
 
 1177        $set = 
$ilDB->query(
 
 1178            "SELECT hide FROM  style_char " .
 
 1179            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 1181            " characteristic = " . 
$ilDB->quote($a_char, 
"text")
 
 1183        $rec = 
$ilDB->fetchAssoc($set);
 
 1185        return $rec[
"hide"];
 
 1198        $lng->loadLanguageModule(
"style");
 
 1201        $new_obj->setTitle($this->
getTitle() . 
" (" . 
$lng->txt(
"sty_acopy") . 
")");
 
 1202        $new_obj->setType($this->
getType());
 
 1204        $new_obj->create($this->
getId());
 
 1206        $new_obj->writeStyleSetting(
 
 1207            "disable_auto_margins",
 
 1211        return $new_obj->getId();
 
 1236        $tag = explode(
".", $a_tag);
 
 1237        $value = $avail_params[$a_par][0];
 
 1238        $id = 
$ilDB->nextId(
"style_parameter");
 
 1239        $q = 
"INSERT INTO style_parameter (id,style_id, type, tag, class, parameter, value, mq_id, custom) VALUES " .
 
 1241            $ilDB->quote(
$id, 
"integer") . 
"," .
 
 1242            $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
 1246            $ilDB->quote($a_par, 
"text") . 
"," .
 
 1247            $ilDB->quote($value, 
"text") . 
"," .
 
 1248            $ilDB->quote($a_mq_id, 
"integer") . 
"," .
 
 1249            $ilDB->quote($a_custom, 
"integer") .
 
 1251        $ilDB->manipulate($q);
 
 1277        if (!is_writable($sty_data_dir)) {
 
 1278            $ilErr->raiseError(
"Style data directory (" . $sty_data_dir
 
 1279                . 
") not writeable.", 
$ilErr->FATAL);
 
 1282        $style_dir = $sty_data_dir . 
"/sty_" . $a_style_id;
 
 1284        if (!@is_dir($style_dir)) {
 
 1285            $ilErr->raiseError(
"Creation of style directory failed (" .
 
 1286                $style_dir . 
").", 
$ilErr->FATAL);
 
 1290        $im_dir = $style_dir . 
"/images";
 
 1292        if (!@is_dir($im_dir)) {
 
 1293            $ilErr->raiseError(
"Creation of Import Directory failed (" .
 
 1294                $im_dir . 
").", 
$ilErr->FATAL);
 
 1298        $thumb_dir = $style_dir . 
"/images/thumbnails";
 
 1300        if (!@is_dir($thumb_dir)) {
 
 1301            $ilErr->raiseError(
"Creation of Import Directory failed (" .
 
 1302                $thumb_dir . 
").", 
$ilErr->FATAL);
 
 1341            foreach ($entries as $entry) {
 
 1342                if (substr($entry[
"entry"], 0, 1) == 
".") {
 
 1345                if ($entry[
"type"] != 
"dir") {
 
 1360        @ilUtil::moveUploadedFile(
 
 1361            $a_file[
"tmp_name"],
 
 1395        $q = 
"DELETE FROM style_parameter WHERE id = " .
 
 1396            $ilDB->quote($a_id, 
"integer");
 
 1413        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1414            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1415            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1416            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1417            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1418            " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1419            " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1420            " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1422        $ilDB->manipulate($q);
 
 1438        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1439            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1440            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1441            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1442            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1443            " custom = " . 
$ilDB->quote(1, 
"integer") . 
" AND " .
 
 1446        $ilDB->manipulate($q);
 
 1461        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1462            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1463            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1466        $ilDB->manipulate($q);
 
 1473    public function delete()
 
 1481        $def_style = $this->
ilias->getSetting(
"default_content_style_id");
 
 1482        if ($def_style == $this->
getId()) {
 
 1483            $this->
ilias->deleteSetting(
"default_content_style_id");
 
 1487        $fixed_style = $this->
ilias->getSetting(
"fixed_content_style_id");
 
 1488        if ($fixed_style == $this->
getId()) {
 
 1489            $this->
ilias->deleteSetting(
"fixed_content_style_id");
 
 1493        $q = 
"DELETE FROM style_parameter WHERE style_id = " .
 
 1495        $ilDB->manipulate($q);
 
 1499        if (is_file($css_file_name)) {
 
 1500            unlink($css_file_name);
 
 1505            "DELETE FROM sty_media_query WHERE " .
 
 1506            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer")
 
 1510        include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
 
 1514        $q = 
"DELETE FROM style_data WHERE id = " .
 
 1516        $ilDB->manipulate($q);
 
 1529        $q = 
"SELECT * FROM style_parameter WHERE style_id = " .
 
 1530            $ilDB->quote($this->
getId(), 
"integer") . 
" ORDER BY tag, class, type, mq_id ";
 
 1531        $style_set = 
$ilDB->query($q);
 
 1536        $this->style = array();
 
 1540        $this->end_styles = array();
 
 1541        while ($style_rec = 
$ilDB->fetchAssoc($style_set)) {
 
 1542            if ($style_rec[
"tag"] != $ctag || $style_rec[
"class"] != $cclass
 
 1543                || $style_rec[
"type"] != $ctype || $style_rec[
"mq_id"] != $cmq_id) {
 
 1545                if (is_array(
$tag)) {
 
 1546                    if (in_array($ctype, array(
"ha_iheada", 
"va_iheada"))) {
 
 1547                        $this->end_styles[] = 
$tag;
 
 1549                        $this->style[] = 
$tag;
 
 1554            $ctag = $style_rec[
"tag"];
 
 1555            $cclass = $style_rec[
"class"];
 
 1556            $ctype = $style_rec[
"type"];
 
 1557            $cmq_id = $style_rec[
"mq_id"];
 
 1558            $tag[] = $style_rec;
 
 1560            $this->style_class[$ctype][$cclass][$cmq_id][$style_rec[
"parameter"]] = $style_rec[
"value"];
 
 1562        if (is_array(
$tag)) {
 
 1563            $this->style[] = 
$tag;
 
 1565        foreach ($this->end_styles as 
$s) {
 
 1566            $this->style[] = 
$s;
 
 1569        $q = 
"SELECT * FROM style_data WHERE id = " .
 
 1577        $this->chars = array();
 
 1578        $this->chars_by_type = array();
 
 1579        $q = 
"SELECT * FROM style_char WHERE style_id = " .
 
 1581            " ORDER BY type ASC, characteristic ASC";
 
 1582        $par_set = 
$ilDB->query($q);
 
 1583        while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
 1584            $this->chars[] = array(
"type" => $par_rec[
"type"], 
"class" => $par_rec[
"characteristic"], 
"hide" => $par_rec[
"hide"]);
 
 1585            $this->chars_by_type[$par_rec[
"type"]][] = $par_rec[
"characteristic"];
 
 1586            if ($par_rec[
"hide"]) {
 
 1587                $this->hidden_chars[$par_rec[
"type"] . 
":" . $par_rec[
"characteristic"]] = 
true;
 
 1600        if ($a_target_file == 
"") {
 
 1603            $css_file_name = $a_target_file;
 
 1605        $css_file = fopen($css_file_name, 
"w");
 
 1607        $page_background = 
"";
 
 1609        $mqs = array(array(
"mquery" => 
"", 
"id" => 0));
 
 1615        foreach ($mqs as $mq) {
 
 1616            if ($mq[
"id"] > 0) {
 
 1617                fwrite($css_file, 
"@media " . $mq[
"mquery"] . 
" {\n");
 
 1621                if (
$tag[0][
"mq_id"] != $mq[
"id"]) {
 
 1624                fwrite($css_file, 
$tag[0][
"tag"] . 
".ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1627                if (
$tag[0][
"tag"] == 
"td") {
 
 1628                    fwrite($css_file, 
",th" . 
".ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1630                if (in_array(
$tag[0][
"tag"], array(
"h1", 
"h2", 
"h3"))) {
 
 1631                    fwrite($css_file, 
",div.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1632                    fwrite($css_file, 
",body.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1634                if (
$tag[0][
"type"] == 
"section") {     
 
 1635                    fwrite($css_file, 
",a.ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1637                if (
$tag[0][
"type"] == 
"text_block") {
 
 1638                    fwrite($css_file, 
",body.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1640                fwrite($css_file, 
"{\n");
 
 1643                $t_border = array();
 
 1645                foreach (
$tag as $par) {
 
 1646                    $cur_par = $par[
"parameter"];
 
 1647                    $cur_val = $par[
"value"];
 
 1650                    if (is_int(strpos($cur_par, 
"color")) && substr(trim($cur_val), 0, 1) == 
"!") {
 
 1654                    if (
$tag[0][
"type"] == 
"table" && is_int(strpos($par[
"parameter"], 
"border"))) {
 
 1655                        $t_border[$cur_par] = $cur_val;
 
 1658                    if (in_array($cur_par, array(
"background-image", 
"list-style-image"))) {
 
 1659                        if (is_int(strpos($cur_val, 
"/"))) {    
 
 1660                            $cur_val = 
"url(" . $cur_val . 
")";
 
 1662                            if ($a_image_dir == 
"") {
 
 1663                                $cur_val = 
"url(../sty/sty_" . $this->
getId() . 
"/images/" . $cur_val . 
")";
 
 1665                                $cur_val = 
"url(" . $a_image_dir . 
"/" . $cur_val . 
")";
 
 1670                    if ($cur_par == 
"opacity") {
 
 1671                        $cur_val = ((int) $cur_val) / 100;
 
 1674                    fwrite($css_file, 
"\t" . $cur_par . 
": " . $cur_val . 
";\n");
 
 1677                    if ($cur_par == 
"min-height") {
 
 1678                        fwrite($css_file, 
"\t" . 
"height" . 
": " . 
"auto !important" . 
";\n");
 
 1679                        fwrite($css_file, 
"\t" . 
"height" . 
": " . $cur_val . 
";\n");
 
 1683                    if ($cur_par == 
"opacity") {
 
 1684                        fwrite($css_file, 
"\t" . 
'-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=' . ($cur_val * 100) . 
')"' . 
";\n");
 
 1685                        fwrite($css_file, 
"\t" . 
'filter: alpha(opacity=' . ($cur_val * 100) . 
')' . 
";\n");
 
 1686                        fwrite($css_file, 
"\t" . 
'-moz-opacity: ' . $cur_val . 
";\n");
 
 1690                    if ($cur_par == 
"transform") {
 
 1691                        fwrite($css_file, 
"\t" . 
'-webkit-transform: ' . $cur_val . 
";\n");
 
 1692                        fwrite($css_file, 
"\t" . 
'-moz-transform: ' . $cur_val . 
";\n");
 
 1693                        fwrite($css_file, 
"\t" . 
'-ms-transform: ' . $cur_val . 
";\n");
 
 1697                    if ($cur_par == 
"transform-origin") {
 
 1698                        fwrite($css_file, 
"\t" . 
'-webkit-transform-origin: ' . $cur_val . 
";\n");
 
 1699                        fwrite($css_file, 
"\t" . 
'-moz-transform-origin: ' . $cur_val . 
";\n");
 
 1700                        fwrite($css_file, 
"\t" . 
'-ms-transform-origin: ' . $cur_val . 
";\n");
 
 1704                    if (
$tag[0][
"tag"] == 
"div" && 
$tag[0][
"class"] == 
"Page" 
 1705                        && $cur_par == 
"background-color") {
 
 1706                        $page_background = $cur_val;
 
 1709                fwrite($css_file, 
"}\n");
 
 1710                fwrite($css_file, 
"\n");
 
 1730            if ($page_background != 
"") {
 
 1731                fwrite($css_file, 
"td.ilc_Page\n");
 
 1732                fwrite($css_file, 
"{\n");
 
 1733                fwrite($css_file, 
"\t" . 
"background-color: " . $page_background . 
";\n");
 
 1734                fwrite($css_file, 
"}\n");
 
 1736            if ($mq[
"id"] > 0) {
 
 1737                fwrite($css_file, 
"}\n");
 
 1759        $fixed_style = 
$ilSetting->get(
"fixed_content_style_id");
 
 1760        if ($fixed_style > 0) {
 
 1761            $a_style_id = $fixed_style;
 
 1765        if ($a_style_id <= 0) {
 
 1766            $a_style_id = 
$ilSetting->get(
"default_content_style_id");
 
 1784        if (is_array($this->style_class[
$a_type][$a_class][$a_mq_id])) {
 
 1785            return $this->style_class[
$a_type][$a_class][$a_mq_id];
 
 1801        $random = new \ilRandom();
 
 1802        $rand = $random->int(1, 999999);
 
 1806        $fixed_style = 
$ilSetting->get(
"fixed_content_style_id");
 
 1807        if ($fixed_style > 0) {
 
 1808            $a_style_id = $fixed_style;
 
 1812        if ($a_style_id <= 0) {
 
 1813            $a_style_id = 
$ilSetting->get(
"default_content_style_id");
 
 1825                $path .= 
"?dummy=$rand";
 
 1827            require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
 
 1832            return "./Services/COPage/css/content.css";
 
 1843        return "./Services/COPage/css/print_content.css";
 
 1853        return "./Services/COPage/css/syntaxhighlight.css";
 
 1863        return "./Services/COPage/css/placeholder.css";
 
 1874        $q = 
"UPDATE style_data " .
 
 1875            "SET category = " . 
$ilDB->quote((
int) $this->
getScope(), 
"integer") .
 
 1876            " WHERE id = " . 
$ilDB->quote($this->
getId(), 
"integer");
 
 1877        $ilDB->manipulate($q);
 
 1890        $q = 
"UPDATE style_parameter SET VALUE = " .
 
 1891            $ilDB->quote($a_value, 
"text") . 
" WHERE id = " .
 
 1892            $ilDB->quote($a_id, 
"integer");
 
 1893        $style_set = 
$ilDB->manipulate($q);
 
 1912        $q = 
"SELECT * FROM style_parameter WHERE " .
 
 1913            " style_id = " . 
$ilDB->quote($style_id, 
"integer") . 
" AND " .
 
 1914            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1915            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1916            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1917            " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1918            " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1919            " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1921        $set = 
$ilDB->query($q);
 
 1923        if ($rec = $set->fetchRow()) {
 
 1924            $q = 
"UPDATE style_parameter SET " .
 
 1925                " value = " . 
$ilDB->quote($a_val, 
"text") . 
" WHERE " .
 
 1926                " style_id = " . 
$ilDB->quote($style_id, 
"integer") . 
" AND " .
 
 1927                " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1928                " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1929                " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1930                " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1931                " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1932                " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1934            $ilDB->manipulate($q);
 
 1936            $id = 
$ilDB->nextId(
"style_parameter");
 
 1937            $q = 
"INSERT INTO style_parameter (id, value, style_id, tag,  class, type, parameter, mq_id, custom) VALUES " .
 
 1939                $ilDB->quote(
$id, 
"integer") . 
"," .
 
 1940                $ilDB->quote($a_val, 
"text") . 
"," .
 
 1941                " " . 
$ilDB->quote($style_id, 
"integer") . 
"," .
 
 1942                " " . 
$ilDB->quote($a_tag, 
"text") . 
"," .
 
 1943                " " . 
$ilDB->quote($a_class, 
"text") . 
"," .
 
 1945                " " . 
$ilDB->quote($a_par, 
"text") . 
"," .
 
 1946                " " . 
$ilDB->quote($a_mq_id, 
"integer") . 
"," .
 
 1947                " " . 
$ilDB->quote($a_custom, 
"integer") .
 
 1950            $ilDB->manipulate($q);
 
 1968        $this->style = $a_style;
 
 1980        return str_replace(
"&", 
"&", $a_str);
 
 1989        $xml .= 
"<StyleSheet>\n";
 
 1996        foreach ($this->chars as $char) {
 
 1998                "\" Type=\"" . $char[
"type"] . 
"\" Class=\"" . $char[
"class"] . 
"\">\n";
 
 1999            foreach ($this->style as 
$style) {
 
 2000                if (
$style[0][
"type"] == $char[
"type"] && 
$style[0][
"class"] == $char[
"class"]) {
 
 2002                        $xml .= 
"<StyleParameter Name=\"" . 
$tag[
"parameter"] . 
"\" Value=\"" . 
$tag[
"value"] . 
"\" Custom=\"" . 
$tag[
"custom"] . 
"\" />\n";
 
 2006            $xml .= 
"</Style>\n";
 
 2010        foreach ($this->
getColors() as $color) {
 
 2011            $xml .= 
"<StyleColor Name=\"" . $color[
"name"] . 
"\" Code=\"" . $color[
"code"] . 
"\"/>\n";
 
 2016        foreach ($tcts as $tct => $v) {
 
 2019            foreach ($ts as 
$t) {
 
 2020                $xml .= 
"<StyleTemplate Type=\"" . $tct . 
"\" Name=\"" . 
$t[
"name"] . 
"\">\n";
 
 2021                foreach (
$t[
"classes"] as $ct => 
$c) {
 
 2023                        $xml .= 
"<StyleTemplateClass ClassType=\"" . $ct . 
"\" Class=\"" . 
$c . 
"\"/>\n";
 
 2026                $xml .= 
"</StyleTemplate>\n";
 
 2031        $xml .= 
"</StyleSheet>";
 
 2044        if (!is_writable($sty_data_dir)) {
 
 2045            $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
 
 2046                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2049        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2051        if (!@is_dir($style_dir)) {
 
 2052            $this->
ilias->raiseError(
"Creation of style directory failed (" .
 
 2053                $style_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2057        $ex_dir = $style_dir . 
"/export";
 
 2059        if (!@is_dir($ex_dir)) {
 
 2060            $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
 
 2061                $ex_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2073        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2075        $ex_dir = $style_dir . 
"/export";
 
 2077        if (is_dir($ex_dir)) {
 
 2091        if (!is_writable($ex_sub_dir)) {
 
 2092            $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_dir
 
 2093                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2095        $ex_sub_images_dir = $ex_sub_dir . 
"/images";
 
 2097        if (!is_writable($ex_sub_images_dir)) {
 
 2098            $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_images_dir
 
 2099                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2108        $this->export_sub_dir = $a_dir;
 
 2116        if ($this->export_sub_dir == 
"") {
 
 2117            return "sty_" . $this->
getId();
 
 2119            return $this->export_sub_dir;
 
 2155        $file = $a_dir . 
"/style.xml";
 
 2158        if (!($fp = @fopen($file, 
"w"))) {
 
 2159            die(
"<b>Error</b>: Could not open \"" . $file . 
"\" for writing" .
 
 2160                    " in <b>" . __FILE__ . 
"</b> on line <b>" . __LINE__ . 
"</b><br />");
 
 2167        fwrite($fp, $this->
getXML());
 
 2180        if (!is_writable($sty_data_dir)) {
 
 2181            $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
 
 2182                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2185        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2187        if (!@is_dir($style_dir)) {
 
 2188            $this->
ilias->raiseError(
"Creation of style directory failed (" .
 
 2189                $style_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2193        $im_dir = $style_dir . 
"/import";
 
 2195        if (!@is_dir($im_dir)) {
 
 2196            $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
 
 2197                $im_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2206    public function import($a_file)
 
 2213        if (is_array($a_file)) {
 
 2214            ilUtil::moveUploadedFile(
 
 2215                $a_file[
"tmp_name"],
 
 2217                $im_dir . 
"/" . $a_file[
"name"]
 
 2219            $file_name = $a_file[
"name"];
 
 2221            $pi = pathinfo($a_file);
 
 2222            $file_name = $pi[
"basename"];
 
 2223            copy($a_file, $im_dir . 
"/" . $file_name);
 
 2225        $file = pathinfo($file_name);
 
 2228        if (strtolower($file[
"extension"] == 
"zip")) {
 
 2230            $subdir = basename($file[
"basename"], 
"." . $file[
"extension"]);
 
 2231            if (!is_dir($im_dir . 
"/" . $subdir)) {
 
 2234            $xml_file = $im_dir . 
"/" . $subdir . 
"/style.xml";
 
 2236            $xml_file = $im_dir . 
"/" . $file_name;
 
 2245        if (is_dir($im_dir . 
"/" . $subdir . 
"/images")) {
 
 2247                $im_dir . 
"/" . $subdir . 
"/images",
 
 2265        $this->is_3_10_skin = 
false;
 
 2267        if (!$a_skip_parent_create) {
 
 2270        include_once(
"./Services/Style/Content/classes/class.ilStyleImportParser.php");
 
 2272        $importParser->startParsing();
 
 2275        foreach ($this->style as 
$style) {
 
 2277                $id = 
$ilDB->nextId(
"style_parameter");
 
 2280                if (in_array(
$tag[
"class"], array(
"PageFrame", 
"PageContainer")) &&
 
 2281                    $tag[
"tag"] == 
"table") {
 
 2282                    $tag[
"tag"] = 
"div";
 
 2283                    if (
$tag[
"parameter"] == 
"width" && 
$tag[
"value"] == 
"100%") {
 
 2288                $q = 
"INSERT INTO style_parameter (id,style_id, tag, class, parameter, type, value, custom) VALUES " .
 
 2290                    $ilDB->quote(
$id, 
"integer") . 
"," .
 
 2291                    $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
 2292                    $ilDB->quote($tag[
"tag"], 
"text") . 
"," .
 
 2293                    $ilDB->quote(
$tag[
"class"], 
"text") . 
"," .
 
 2294                    $ilDB->quote(
$tag[
"parameter"], 
"text") . 
"," .
 
 2295                    $ilDB->quote(
$tag[
"type"], 
"text") . 
"," .
 
 2296                    $ilDB->quote(
$tag[
"value"], 
"text") . 
"," .
 
 2297                    $ilDB->quote((
bool) 
$tag[
"custom"], 
"integer") .
 
 2299                $ilDB->manipulate($q);
 
 2304        $this->is_3_10_skin = 
true;
 
 2305        if (is_array($this->chars)) {
 
 2306            foreach ($this->chars as $char) {
 
 2307                if ($char[
"type"] != 
"") {
 
 2308                    $s = substr($char[
"class"], strlen($char[
"class"]) - 6);
 
 2309                    if (
$s != 
":hover") {
 
 2313                                "style_id" => array(
"integer", $this->
getId()),
 
 2314                                "type" => array(
"text", $char[
"type"]),
 
 2315                                "characteristic" => array(
"text", $char[
"class"])),
 
 2316                            array(
"hide" => array(
"integer", 0))
 
 2324                        $this->is_3_10_skin = 
false;
 
 2331        $q = 
"INSERT INTO style_data (id, uptodate) VALUES " .
 
 2332            "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0)";
 
 2333        $ilDB->manipulate($q);
 
 2338        if ($this->is_3_10_skin) {
 
 2351        foreach (self::$parameter as 
$parameter => $props) {
 
 2359        $input = self::$parameter[$par][
"input"];
 
 2365        $subpar = self::$parameter[$par][
"subpar"];
 
 2375        foreach (self::$parameter as $k => $v) {
 
 2376            if (is_array(self::$filtered_groups[$v[
"group"]]) &&
 
 2377                !in_array($a_tag, self::$filtered_groups[$v[
"group"]])) {
 
 2392        if ($a_no_percentage) {
 
 2400        return self::$parameter[$par][
"values"];
 
 2415        return in_array(
$a_type, self::$expandable_types);
 
 2420        return in_array(
$a_type, self::$hideable_types);
 
 2425        foreach (self::$style_super_types as 
$s => 
$t) {
 
 2440        $c_styles = array();
 
 2441        foreach (self::$core_styles as $cstyle) {
 
 2443                = array(
"type" => $cstyle[
"type"],
 
 2445                    "class" => $cstyle[
"class"]);
 
 2458        foreach (self::$core_styles as 
$s) {
 
 2459            if (
$s[
"type"] == 
$a_type && 
$s[
"class"] == $a_class) {
 
 2472        if ($a_template_type == 
"") {
 
 2476        return self::$templates[$a_template_type];
 
 2482        return self::$pseudo_classes[
$tag];
 
 2487        return self::$templates[
$t][$k];
 
 2492        return self::$assigned_tags[
$a_type];
 
 2501        foreach (self::$parameter as $p => $v) {
 
 2502            $pars[$p] = $v[
"values"];
 
 2514        $styles = array(array(
"id" => $a_id));
 
 2528        if ($a_styles == 
"") {
 
 2531            $styles = $a_styles;
 
 2537        $core_images = array();
 
 2539        if (is_dir($core_dir)) {
 
 2540            $dir = opendir($core_dir);
 
 2541            while ($file = readdir($dir)) {
 
 2542                if (substr($file, 0, 1) != 
"." && is_file($core_dir . 
"/" . $file)) {
 
 2543                    $core_images[] = $file;
 
 2548        foreach ($styles as 
$style) {
 
 2553                $set = 
$ilDB->queryF(
 
 2554                    "SELECT * FROM style_char WHERE style_id = %s " .
 
 2555                    "AND type = %s AND characteristic = %s",
 
 2556                    array(
"integer", 
"text", 
"text"),
 
 2557                    array(
$id, $cs[
"type"], $cs[
"class"])
 
 2561                if (!($rec = 
$ilDB->fetchAssoc($set))) {
 
 2563                        "INSERT INTO style_char (style_id, type, characteristic) " .
 
 2564                        " VALUES (%s,%s,%s) ",
 
 2565                        array(
"integer", 
"text", 
"text"),
 
 2566                        array(
$id, $cs[
"type"], $cs[
"class"])
 
 2569                    $xpath = 
new DOMXPath($bdom);
 
 2570                    $par_nodes = $xpath->query(
"/StyleSheet/Style[@Tag = '" . $cs[
"tag"] . 
"' and @Type='" .
 
 2571                        $cs[
"type"] . 
"' and @Class='" . $cs[
"class"] . 
"']/StyleParameter");
 
 2572                    foreach ($par_nodes as $par_node) {
 
 2574                        $set = 
$ilDB->queryF(
 
 2575                            "SELECT * FROM style_parameter WHERE style_id = %s " .
 
 2576                            "AND type = %s AND class = %s AND tag = %s AND parameter = %s",
 
 2577                            array(
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2578                            array(
$id, $cs[
"type"], $cs[
"class"],
 
 2579                            $cs[
"tag"], $par_node->getAttribute(
"Name"))
 
 2583                        if (!($rec = 
$ilDB->fetchAssoc($set))) {
 
 2584                            $spid = 
$ilDB->nextId(
"style_parameter");
 
 2585                            $st = 
$ilDB->manipulateF(
 
 2586                                "INSERT INTO style_parameter (id, style_id, type, class, tag, parameter, value) " .
 
 2587                                " VALUES (%s,%s,%s,%s,%s,%s,%s)",
 
 2588                                array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text", 
"text"),
 
 2589                                array($spid, 
$id, $cs[
"type"], $cs[
"class"], $cs[
"tag"],
 
 2590                                $par_node->getAttribute(
"Name"), $par_node->getAttribute(
"Value"))
 
 2600            reset($core_images);
 
 2601            foreach ($core_images as $cim) {
 
 2602                if (!is_file($imdir . 
"/" . $cim)) {
 
 2603                    copy($core_dir . 
"/" . $cim, $imdir . 
"/" . $cim);
 
 2628        $st = 
$ilDB->prepareManip(
"UPDATE style_char SET type = ? WHERE characteristic = ?" .
 
 2629            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2630        $ilDB->execute($st, array(
"media_cont", 
"Media", $this->
getId()));
 
 2631        $ilDB->execute($st, array(
"media_caption", 
"MediaCaption", $this->
getId()));
 
 2632        $ilDB->execute($st, array(
"page_fn", 
"Footnote", $this->
getId()));
 
 2633        $ilDB->execute($st, array(
"page_nav", 
"LMNavigation", $this->
getId()));
 
 2634        $ilDB->execute($st, array(
"page_title", 
"PageTitle", $this->
getId()));
 
 2635        $ilDB->execute($st, array(
"page_cont", 
"Page", $this->
getId()));
 
 2638        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET type = ? WHERE class = ?" .
 
 2639            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2640        $ilDB->execute($st, array(
"media_cont", 
"Media", $this->
getId()));
 
 2641        $ilDB->execute($st, array(
"media_caption", 
"MediaCaption", $this->
getId()));
 
 2642        $ilDB->execute($st, array(
"page_fn", 
"Footnote", $this->
getId()));
 
 2643        $ilDB->execute($st, array(
"page_nav", 
"LMNavigation", $this->
getId()));
 
 2644        $ilDB->execute($st, array(
"page_title", 
"PageTitle", $this->
getId()));
 
 2645        $ilDB->execute($st, array(
"table", 
"Page", $this->
getId()));
 
 2647        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET tag = ? WHERE class = ?" .
 
 2648            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2649        $ilDB->execute($st, array(
"div", 
"MediaCaption", $this->
getId()));
 
 2652        $st = 
$ilDB->prepareManip(
"UPDATE style_char SET characteristic = ? WHERE characteristic = ?" .
 
 2653            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2654        $ilDB->execute($st, array(
"MediaContainer", 
"Media", $this->
getId()));
 
 2655        $ilDB->execute($st, array(
"PageContainer", 
"Page", $this->
getId()));
 
 2658        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET class = ? WHERE class = ?" .
 
 2659            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2660        $ilDB->execute($st, array(
"MediaContainer", 
"Media", $this->
getId()));
 
 2661        $ilDB->execute($st, array(
"PageContainer", 
"Page", $this->
getId()));
 
 2664        $st = 
$ilDB->prepareManip(
"DELETE FROM style_char WHERE type = ?" .
 
 2665            " AND style_id = ? ", array(
"text", 
"integer"));
 
 2666        $ilDB->execute($st, array(
"page_cont", $this->
getId()));
 
 2667        $st = 
$ilDB->prepareManip(
"DELETE FROM style_parameter WHERE type = ?" .
 
 2668            " AND style_id = ? ", array(
"text", 
"integer"));
 
 2669        $ilDB->execute($st, array(
"page_cont", $this->
getId()));
 
 2684            $add_str = 
" AND style_id = " . 
$ilDB->quote($a_id, 
"integer");
 
 2687        $set = 
$ilDB->query($q = 
"SELECT DISTINCT style_id, tag, class FROM style_parameter WHERE " .
 
 2688            $ilDB->equals(
"type", 
"", 
"text", 
true) . 
" " . $add_str);
 
 2690        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2693            switch ($rec[
"tag"]) {
 
 2696                    if (in_array($rec[
"class"], array(
"Headline3", 
"Headline1",
 
 2697                        "Headline2", 
"TableContent", 
"List", 
"Standard", 
"Remark",
 
 2698                        "Additional", 
"Mnemonic", 
"Citation", 
"Example"))) {
 
 2699                        $types[] = 
"text_block";
 
 2701                    if (in_array($rec[
"class"], array(
"Block", 
"Remark",
 
 2702                        "Additional", 
"Mnemonic", 
"Example", 
"Excursus", 
"Special"))) {
 
 2703                        $types[] = 
"section";
 
 2705                    if (in_array($rec[
"class"], array(
"Page", 
"Footnote", 
"PageTitle", 
"LMNavigation"))) {
 
 2711                    $types[] = 
"table_cell";
 
 2715                    if (in_array($rec[
"class"], array(
"ExtLink", 
"IntLink", 
"FootnoteLink"))) {
 
 2721                    $types[] = 
"text_inline";
 
 2730            foreach ($types as 
$t) {
 
 2732                $set4 = 
$ilDB->queryF(
 
 2733                    "SELECT * FROM style_char " .
 
 2734                    " WHERE style_id = %s AND type = %s AND characteristic = %s",
 
 2735                    array(
"integer", 
"text", 
"text"),
 
 2736                    array($rec[
"style_id"], 
$t, $rec[
"class"])
 
 2738                if ($rec4 = 
$ilDB->fetchAssoc($set4)) {
 
 2743                        "INSERT INTO style_char " .
 
 2744                        " (style_id, type, characteristic) VALUES " .
 
 2746                        array(
"integer", 
"text", 
"text"),
 
 2747                        array($rec[
"style_id"], 
$t, $rec[
"class"])
 
 2753            if ($rec[
"type"] == 
"") {
 
 2754                if (count($types) > 0) {
 
 2756                        "UPDATE style_parameter SET type = %s " .
 
 2757                        " WHERE style_id = %s AND class = %s AND " . 
$ilDB->equals(
"type", 
"", 
"text", 
true),
 
 2758                        array(
"text", 
"integer", 
"text"),
 
 2759                        array($types[0], $rec[
"style_id"], $rec[
"class"])
 
 2764                    if ($types[0] == 
"link") {
 
 2766                            "UPDATE style_parameter SET type = %s " .
 
 2767                            " WHERE style_id = %s AND (class = %s OR class = %s) AND " . 
$ilDB->equals(
"type", 
"", 
"text", 
true),
 
 2768                            array(
"text", 
"integer", 
"text", 
"text"),
 
 2769                            array($types[0], $rec[
"style_id"], $rec[
"class"] . 
":visited",
 
 2770                            $rec[
"class"] . 
":hover")
 
 2775                if (count($types) == 2) {
 
 2778                    $set2 = 
$ilDB->queryF(
 
 2779                        "SELECT * FROM style_parameter " .
 
 2780                        " WHERE style_id = %s AND class = %s AND type = %s",
 
 2781                        array(
"integer", 
"text", 
"text"),
 
 2782                        array($rec[
"style_id"], $rec[
"class"], $types[0])
 
 2784                    while ($rec2 = 
$ilDB->fetchAssoc($set2)) {
 
 2786                        $set3 = 
$ilDB->queryF(
 
 2787                            "SELECT * FROM style_parameter " .
 
 2788                            " WHERE style_id = %s AND tag = %s AND class = %s AND type = %s AND parameter = %s",
 
 2789                            array(
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2790                            array($rec[
"style_id"], $rec[
"tag"], $rec[
"class"], $types[1], $rec[
"parameter"])
 
 2792                        if ($rec3 = 
$ilDB->fetchAssoc($set3)) {
 
 2795                            $nid = 
$ilDB->nextId(
"style_parameter");
 
 2797                                "INSERT INTO style_parameter " .
 
 2798                                " (id, style_id, tag, class, parameter, value, type) VALUES " .
 
 2799                                " (%s, %s,%s,%s,%s,%s,%s) ",
 
 2800                                array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text", 
"text"),
 
 2801                                array($nid, $rec2[
"style_id"], $rec2[
"tag"], $rec2[
"class"],
 
 2802                                    $rec2[
"parameter"], $rec2[
"value"], $types[1])
 
 2818        $classes = array(
"Example", 
"Additional", 
"Citation", 
"Mnemonic", 
"Remark");
 
 2819        $pars = array(
"margin-top", 
"margin-bottom");
 
 2821        foreach ($classes as $curr_class) {
 
 2822            foreach ($pars as $curr_par) {
 
 2823                $res2 = 
$ilDB->queryF(
 
 2824                    "SELECT id FROM style_parameter WHERE style_id = %s" .
 
 2825                    " AND tag = %s AND class= %s AND parameter = %s",
 
 2826                    array(
"integer", 
"text", 
"text", 
"text"),
 
 2827                    array($a_id, 
"p", $curr_class, $curr_par)
 
 2829                if ($row2 = 
$ilDB->fetchAssoc($res2)) {
 
 2831                        "UPDATE style_parameter SET value= %s WHERE id = %s",
 
 2832                        array(
"text", 
"integer"),
 
 2833                        array(
"10px", $row2[
"id"])
 
 2836                    $nid = 
$ilDB->nextId(
"style_parameter");
 
 2838                        "INSERT INTO style_parameter " .
 
 2839                        "(id, style_id, tag, class, parameter,value) VALUES (%s,%s,%s,%s,%s,%s)",
 
 2840                        array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2841                        array($nid, $a_id, 
"div", $curr_class, $curr_par, 
"10px")
 
 2848            "UPDATE style_parameter SET tag = %s WHERE tag = %s and style_id = %s",
 
 2849            array(
"text", 
"text", 
"integer"),
 
 2850            array(
"div", 
"p", $a_id)
 
 2865        $set = 
$ilDB->query(
"SELECT * FROM style_color WHERE " .
 
 2866            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 2867            "ORDER BY color_name");
 
 2870        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2872                "name" => $rec[
"color_name"],
 
 2873                "code" => $rec[
"color_code"]
 
 2887        $ilDB->manipulate(
"INSERT INTO style_color (style_id, color_name, color_code)" .
 
 2889            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 2890            $ilDB->quote($a_name, 
"text") . 
"," .
 
 2891            $ilDB->quote($a_code, 
"text") .
 
 2904        $ilDB->manipulate(
"UPDATE style_color SET " .
 
 2905            "color_name = " . 
$ilDB->quote($a_new_name, 
"text") . 
", " .
 
 2906            "color_code = " . 
$ilDB->quote($a_code, 
"text") .
 
 2907            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 2908            " AND color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2912        if ($a_name != $a_new_name) {
 
 2913            $set = 
$ilDB->query(
"SELECT * FROM style_parameter " .
 
 2914                " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 2916                " parameter = " . 
$ilDB->quote(
"background-color", 
"text") . 
" OR " .
 
 2917                " parameter = " . 
$ilDB->quote(
"color", 
"text") . 
" OR " .
 
 2918                " parameter = " . 
$ilDB->quote(
"border-color", 
"text") . 
" OR " .
 
 2919                " parameter = " . 
$ilDB->quote(
"border-top-color", 
"text") . 
" OR " .
 
 2920                " parameter = " . 
$ilDB->quote(
"border-bottom-color", 
"text") . 
" OR " .
 
 2921                " parameter = " . 
$ilDB->quote(
"border-left-color", 
"text") . 
" OR " .
 
 2922                " parameter = " . 
$ilDB->quote(
"border-right-color", 
"text") .
 
 2924            while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2925                if ($rec[
"value"] == 
"!" . $a_name ||
 
 2926                    is_int(strpos($rec[
"value"], 
"!" . $a_name . 
"("))) {
 
 2932                        str_replace($a_name, $a_new_name, $rec[
"value"]),
 
 2949        $ilDB->manipulate(
"DELETE FROM style_color WHERE " .
 
 2950            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2951            " color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2961        $set = 
$ilDB->query(
"SELECT * FROM style_color WHERE " .
 
 2962            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2963            "color_name = " . 
$ilDB->quote($a_color_name, 
"text"));
 
 2964        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2977        $pos = strpos($a_name, 
"(");
 
 2979            $a_i = substr($a_name, $pos + 1);
 
 2980            $a_i = str_replace(
")", 
"", $a_i);
 
 2981            $a_name = substr($a_name, 0, $pos);
 
 2984        $set = 
$ilDB->query(
"SELECT color_code FROM style_color WHERE " .
 
 2985            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2986            " color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2987        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2989                return "#" . $rec[
"color_code"];
 
 3008            $hls[
"l"] = $hls[
"l"] + ((255 - $hls[
"l"]) * ($a_i / 100));
 
 3011            $hls[
"l"] = $hls[
"l"] - (($hls[
"l"]) * (-$a_i / 100));
 
 3016        foreach ($rgb as $k => $v) {
 
 3017            $rgb[$k] = str_pad(dechex($v), 2, 
"0", STR_PAD_LEFT);
 
 3020        return $rgb[
"r"] . $rgb[
"g"] . $rgb[
"b"];
 
 3028        $r[
"r"] = substr($a_rgb, 0, 2);
 
 3029        $r[
"g"] = substr($a_rgb, 2, 2);
 
 3030        $r[
"b"] = substr($a_rgb, 4, 2);
 
 3033            $r[
"r"] = (int) hexdec(
$r[
"r"]);
 
 3034            $r[
"g"] = (int) hexdec(
$r[
"g"]);
 
 3035            $r[
"b"] = (int) hexdec(
$r[
"b"]);
 
 3046        $r = $a_rgb[
"r"] / 255;
 
 3047        $g = $a_rgb[
"g"] / 255;
 
 3048        $b = $a_rgb[
"b"] / 255;
 
 3051        $max = max(
$r, $g, $b);
 
 3052        $min = min(
$r, $g, $b);
 
 3055        $l = ($max + $min) / 2;
 
 3062                $s = ($max - $min) / ($max + $min);
 
 3064                $s = ($max - $min) / (2.0 - $max - $min);
 
 3068                $h = ($g - $b) / ($max - $min);
 
 3069            } elseif ($g == $max) {
 
 3070                $h = 2.0 + ($b - 
$r) / ($max - $min);
 
 3071            } elseif ($b == $max) {
 
 3072                $h = 4.0 + (
$r - $g) / ($max - $min);
 
 3076        $hls[
"h"] = round((
$h / 6) * 255);
 
 3077        $hls[
"l"] = round(
$l * 255);
 
 3078        $hls[
"s"] = round(
$s * 255);
 
 3088        $h = $a_hls[
"h"] / 255;
 
 3089        $l = $a_hls[
"l"] / 255;
 
 3090        $s = $a_hls[
"s"] / 255;
 
 3092        $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 0;
 
 3096            $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 
$l;
 
 3099                $temp2 = 
$l * (1.0 + 
$s);
 
 3104            $temp1 = 2.0 * 
$l - $temp2;
 
 3107            # For each of R, G, B, compute another temporary value, temp3, as follows: 
 3108            foreach ($rgb as $k => $v) {
 
 3111                        $temp3 = 
$h + 1.0 / 3.0;
 
 3119                        $temp3 = 
$h - 1.0 / 3.0;
 
 3123                    $temp3 = $temp3 + 1.0;
 
 3126                    $temp3 = $temp3 - 1.0;
 
 3129                if (6.0 * $temp3 < 1) {
 
 3130                    $rgb[$k] = $temp1 + ($temp2 - $temp1) * 6.0 * $temp3;
 
 3131                } elseif (2.0 * $temp3 < 1) {
 
 3133                } elseif (3.0 * $temp3 < 2) {
 
 3134                    $rgb[$k] = $temp1 + ($temp2 - $temp1) * ((2.0 / 3.0) - $temp3) * 6.0;
 
 3141        $rgb[
"r"] = round($rgb[
"r"] * 255);
 
 3142        $rgb[
"g"] = round($rgb[
"g"] * 255);
 
 3143        $rgb[
"b"] = round($rgb[
"b"] * 255);
 
 3163        $set = 
$ilDB->query(
"SELECT * FROM sty_media_query WHERE " .
 
 3164            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 3165            "ORDER BY order_nr");
 
 3168        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3183        $id = 
$ilDB->nextId(
"sty_media_query");
 
 3184        if ($order_nr == 0) {
 
 3188        $ilDB->manipulate(
"INSERT INTO sty_media_query (id, style_id, mquery, order_nr)" .
 
 3190            $ilDB->quote(
$id, 
"integer") . 
"," .
 
 3191            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3192            $ilDB->quote($a_mquery, 
"text") . 
"," .
 
 3193            $ilDB->quote($order_nr, 
"integer") .
 
 3207        $set = 
$ilDB->query(
 
 3208            "SELECT max(order_nr) mnr FROM sty_media_query " .
 
 3209            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer")
 
 3211        $rec = 
$ilDB->fetchAssoc($set);
 
 3213        return (
int) $rec[
"mnr"];
 
 3227            "UPDATE sty_media_query SET " .
 
 3228            " mquery = " . 
$ilDB->quote($a_mquery, 
"text") .
 
 3229            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3243        $set = 
$ilDB->query(
 
 3244            "SELECT * FROM sty_media_query " .
 
 3245            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3247        return $ilDB->fetchAssoc($set);
 
 3260            "DELETE FROM sty_media_query WHERE " .
 
 3261            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3262            " AND id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3277        if (is_array($a_order_nr)) {
 
 3278            foreach ($mqueries as $k => $mq) {
 
 3279                $mqueries[$k][
"order_nr"] = $a_order_nr[$mq[
"id"]];
 
 3284        foreach ($mqueries as $mq) {
 
 3286                "UPDATE sty_media_query SET " .
 
 3287                " order_nr = " . 
$ilDB->quote($cnt, 
"integer") .
 
 3288                " WHERE id = " . 
$ilDB->quote($mq[
"id"], 
"integer")
 
 3306        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3307            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3312        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3326        $set = 
$ilDB->query(
"SELECT * FROM style_template_class WHERE " .
 
 3327            "template_id = " . 
$ilDB->quote($a_tid, 
"integer"));
 
 3330        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3331            $key = $rec[
"class_type"];
 
 3332            $class[
$key] = $rec[
"class"];
 
 3346        $tid = 
$ilDB->nextId(
"style_template");
 
 3347        $ilDB->manipulate($q = 
"INSERT INTO style_template " .
 
 3348            "(id, style_id, name, temp_type)" .
 
 3350            $ilDB->quote($tid, 
"integer") . 
"," .
 
 3351            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3352            $ilDB->quote($a_name, 
"text") . 
"," .
 
 3356        foreach ($a_classes as 
$t => 
$c) {
 
 3357            $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3358                "(template_id, class_type, class)" .
 
 3360                $ilDB->quote($tid, 
"integer") . 
"," .
 
 3361                $ilDB->quote(
$t, 
"text") . 
"," .
 
 3366        include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheetGUI.php");
 
 3382        $ilDB->manipulate(
"UPDATE style_template SET " .
 
 3383            "name = " . 
$ilDB->quote($a_name, 
"text") .
 
 3384            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3387            "DELETE FROM style_template_class WHERE " .
 
 3388            "template_id = " . 
$ilDB->quote($a_t_id, 
"integer")
 
 3390        foreach ($a_classes as 
$t => 
$c) {
 
 3391            $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3392                "(template_id, class_type, class)" .
 
 3394                $ilDB->quote($a_t_id, 
"integer") . 
"," .
 
 3395                $ilDB->quote(
$t, 
"text") . 
"," .
 
 3408        $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3409            "(template_id, class_type, class)" .
 
 3411            $ilDB->quote($a_t_id, 
"integer") . 
"," .
 
 3413            $ilDB->quote($a_class, 
"text") .
 
 3425        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3426            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3427            "name = " . 
$ilDB->quote($a_template_name, 
"text"));
 
 3428        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3441        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3442            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 3443            " AND id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3445        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3471        $set = 
$ilDB->query(
"SELECT name FROM style_template WHERE " .
 
 3472            " id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3474        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3475            return $rec[
"name"];
 
 3488        $tag = 
"<StyleTemplates>";
 
 3490        $ttypes = array(
"table", 
"vaccordion", 
"haccordion", 
"carousel");
 
 3492        foreach ($ttypes as $ttype) {
 
 3495            foreach ($ts as 
$t) {
 
 3509                $tag .= 
'<StyleTemplate Name="' . 
$t[
"name"] . 
'">';
 
 3511                foreach ($atts as 
$type => 
$t) {
 
 3517                $tag .= 
"</StyleTemplate>";
 
 3521        $tag .= 
"</StyleTemplates>";
 
 3533        $a_preview_html = str_replace(
' width=""', 
"", $a_preview_html);
 
 3534        $a_preview_html = str_replace(
' valign="top"', 
"", $a_preview_html);
 
 3535        $a_preview_html = str_replace(
'<div class="ilc_text_block_TableContent">', 
"<div>", $a_preview_html);
 
 3538        if (strlen($a_preview_html) > 4000) {
 
 3540            $a_preview_html = 
"";
 
 3542        $ilDB->manipulate(
"UPDATE style_template SET " .
 
 3543            "preview = " . 
$ilDB->quote($a_preview_html, 
"text") .
 
 3544            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3554        $set = 
$ilDB->query(
"SELECT preview FROM style_template " .
 
 3555            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3556        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3557            return $rec[
"preview"];
 
 3572        $set = 
$ilDB->query(
"SELECT id FROM style_template " .
 
 3573            " WHERE style_id = " . 
$ilDB->quote($a_style_id, 
"integer") .
 
 3574            " AND name = " . 
$ilDB->quote($a_name, 
"text"));
 
 3575        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3589        $ilDB->manipulate(
"DELETE FROM style_template WHERE " .
 
 3590            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3591            " id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3594            "DELETE FROM style_template_class WHERE " .
 
 3595            "template_id = " . 
$ilDB->quote($a_t_id, 
"integer")
 
 3607            "DELETE FROM style_setting WHERE " .
 
 3608            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3609            " AND name = " . 
$ilDB->quote($a_name, 
"text")
 
 3612        $ilDB->manipulate(
"INSERT INTO style_setting " .
 
 3613            "(style_id, name, value) VALUES (" .
 
 3614            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3615            $ilDB->quote($a_name, 
"text") . 
"," .
 
 3616            $ilDB->quote($a_value, 
"text") .
 
 3627        $set = 
$ilDB->query(
 
 3628            "SELECT value FROM style_setting " .
 
 3629            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3630            " AND name = " . 
$ilDB->quote($a_name, 
"text")
 
 3632        $rec = 
$ilDB->fetchAssoc($set);
 
 3634        return $rec[
"value"];
 
 3649            "obj_id" => array(
"integer", (
int) $a_obj_id)),
 
 3651                "style_id" => array(
"integer", (
int) $a_style_id))
 
 3664        $set = 
$ilDB->query(
 
 3665            "SELECT style_id FROM style_usage " .
 
 3666            " WHERE obj_id = " . 
$ilDB->quote($a_obj_id, 
"integer")
 
 3668        $rec = 
$ilDB->fetchAssoc($set);
 
 3671            return (
int) $rec[
"style_id"];
 
 3688            $set = 
$ilDB->query(
 
 3689                "SELECT DISTINCT obj_id FROM style_usage " .
 
 3690                " WHERE style_id = " . 
$ilDB->quote($a_style_id, 
"integer")
 
 3693            while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3694                $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)
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 _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 getContentStylePath($a_style_id, $add_random=true)
get content style path
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 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($a_file, $overwrite=false, $a_flat=false)
unzip file
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static signFile($path_to_file)
if(function_exists( 'posix_getuid') &&posix_getuid()===0) if(!array_key_exists('t', $options)) $tag
update($pash, $contents, Config $config)
redirection script todo: (a better solution should control the processing via a xml file)
foreach($_POST as $key=> $value) $res