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"),
 
  249        "text_inline" => array(
"text_inline", 
"sub", 
"sup"),
 
  250        "section" => array(
"section"),
 
  251        "link" => array(
"link"),
 
  252        "table" => array(
"table", 
"table_cell", 
"table_caption"),
 
  253        "list" => array(
"list_o", 
"list_u", 
"list_item"),
 
  254        "flist" => array(
"flist_cont", 
"flist_head", 
"flist", 
"flist_li", 
"flist_a"),
 
  255        "media" => array(
"media_cont", 
"media_caption", 
"iim", 
"marker"),
 
  256        "tabs" => array(
"va_cntr", 
"va_icntr", 
"va_ihead", 
"va_iheada", 
"va_ihcap", 
"va_icont",
 
  257            "ha_cntr", 
"ha_icntr", 
"ha_ihead", 
"ha_iheada", 
"ha_ihcap", 
"ha_icont", 
"ca_cntr", 
"ca_icntr", 
"ca_ihead", 
"ca_icont"),
 
  258        "question" => array(
"question", 
"qtitle", 
"qanswer", 
"qinput", 
"qlinput", 
"qsubmit", 
"qfeedr", 
"qfeedw",
 
  259            "qimg", 
"qordul", 
"qordli", 
"qimgd", 
"qetitem", 
"qetcorr", 
"qover"),
 
  260        "page" => array(
"page_frame", 
"page_cont", 
"page_title", 
"page_fn",
 
  261            "page_tnav", 
"page_bnav", 
"page_lnav", 
"page_rnav", 
"page_lnavlink", 
"page_rnavlink",
 
  262            "page_lnavimage", 
"page_rnavimage"),
 
  263        "glo" => array(
"glo_overlay", 
"glo_ovtitle", 
"glo_ovclink", 
"glo_ovuglink", 
"glo_ovuglistlink"),
 
  264        "sco" => array(
"sco_title", 
"sco_keyw", 
"sco_desc", 
"sco_desct", 
"sco_obj", 
"sco_objt", 
"sco_fmess"),
 
  265        "rte" => array(
"rte_menu", 
"rte_mlink", 
"rte_tree", 
"rte_node", 
"rte_tlink",
"rte_status",
 
  266            "rte_tul", 
"rte_tli", 
"rte_texp", 
"rte_tclink", 
"rte_drag")
 
  271            "text_block", 
"text_inline", 
"section", 
"media_cont", 
"table", 
"table_cell", 
"flist_li", 
"table_caption",
 
  273                "va_cntr", 
"va_icntr", 
"va_ihead", 
"va_iheada", 
"va_ihcap", 
"va_icont",
 
  274                "ha_cntr", 
"ha_icntr", 
"ha_ihead", 
"ha_iheada", 
"ha_ihcap", 
"ha_icont",
 
  275                "ca_cntr", 
"ca_icntr", 
"ca_ihead", 
"ca_icont" 
  280            "table", 
"table_cell" 
  285        "text_block" => 
"div",
 
  289        "text_inline" => 
"span",
 
  295        "table_cell" => 
"td",
 
  296        "table_caption" => 
"caption",
 
  297        "media_cont" => 
"figure",
 
  298        "media_caption" => 
"div",
 
  301        "glo_overlay" => 
"div",
 
  302        "glo_ovtitle" => 
"h1",
 
  303        "glo_ovclink" => 
"a",
 
  304        "glo_ovuglink" => 
"a",
 
  305        "glo_ovuglistlink" => 
"a",
 
  306        "sco_title" => 
"div",
 
  310        "sco_desct" => 
"div",
 
  312        "sco_fmess" => 
"div",
 
  319        "rte_status" => 
"div",
 
  327        "flist_cont" => 
"div",
 
  328        "flist_head" => 
"div",
 
  342        "qlinput" => 
"textarea",
 
  343        "qsubmit" => 
"input",
 
  347        "page_frame" => 
"div",
 
  348        "page_cont" => 
"div",
 
  351        "page_tnav" => 
"div",
 
  352        "page_bnav" => 
"div",
 
  353        "page_lnav" => 
"div",
 
  354        "page_rnav" => 
"div",
 
  355        "page_lnavlink" => 
"a",
 
  356        "page_rnavlink" => 
"a",
 
  357        "page_lnavimage" => 
"img",
 
  358        "page_rnavimage" => 
"img",
 
  359        "page_title" => 
"h1",
 
  364        "va_iheada" => 
"div",
 
  369        "ha_iheada" => 
"div",
 
  380        array(
"a" => array(
"hover"), 
"div" => array(
"hover"), 
"img" => array(
"hover"));
 
  384            array(
"type" => 
"text_block", 
"class" => 
"Standard"),
 
  385            array(
"type" => 
"text_block", 
"class" => 
"List"),
 
  386            array(
"type" => 
"text_block", 
"class" => 
"TableContent"),
 
  387            array(
"type" => 
"heading1", 
"class" => 
"Headline1"),
 
  388            array(
"type" => 
"heading2", 
"class" => 
"Headline2"),
 
  389            array(
"type" => 
"heading3", 
"class" => 
"Headline3"),
 
  390            array(
"type" => 
"text_inline", 
"class" => 
"Comment"),
 
  391            array(
"type" => 
"text_inline", 
"class" => 
"Emph"),
 
  392            array(
"type" => 
"text_inline", 
"class" => 
"Quotation"),
 
  393            array(
"type" => 
"text_inline", 
"class" => 
"Strong"),
 
  394            array(
"type" => 
"text_inline", 
"class" => 
"Accent"),
 
  395            array(
"type" => 
"text_inline", 
"class" => 
"Important"),
 
  396            array(
"type" => 
"sup", 
"class" => 
"Sup"),
 
  397            array(
"type" => 
"sub", 
"class" => 
"Sub"),
 
  398            array(
"type" => 
"link", 
"class" => 
"IntLink"),
 
  399            array(
"type" => 
"link", 
"class" => 
"ExtLink"),
 
  400            array(
"type" => 
"link", 
"class" => 
"FootnoteLink"),
 
  401            array(
"type" => 
"link", 
"class" => 
"FileLink"),
 
  402            array(
"type" => 
"link", 
"class" => 
"GlossaryLink"),
 
  403            array(
"type" => 
"media_cont", 
"class" => 
"MediaContainer"),
 
  404            array(
"type" => 
"media_cont", 
"class" => 
"MediaContainerMax50"),
 
  405            array(
"type" => 
"media_cont", 
"class" => 
"MediaContainerFull100"),
 
  406            array(
"type" => 
"table", 
"class" => 
"StandardTable"),
 
  407            array(
"type" => 
"media_caption", 
"class" => 
"MediaCaption"),
 
  408            array(
"type" => 
"iim", 
"class" => 
"ContentPopup"),
 
  409            array(
"type" => 
"marker", 
"class" => 
"Marker"),
 
  410            array(
"type" => 
"page_frame", 
"class" => 
"PageFrame"),
 
  411            array(
"type" => 
"page_cont", 
"class" => 
"PageContainer"),
 
  412            array(
"type" => 
"page", 
"class" => 
"Page"),
 
  413            array(
"type" => 
"page_tnav", 
"class" => 
"TopNavigation"),
 
  414            array(
"type" => 
"page_bnav", 
"class" => 
"BottomNavigation"),
 
  415            array(
"type" => 
"page_lnav", 
"class" => 
"LeftNavigation"),
 
  416            array(
"type" => 
"page_rnav", 
"class" => 
"RightNavigation"),
 
  417            array(
"type" => 
"page_lnavlink", 
"class" => 
"LeftNavigationLink"),
 
  418            array(
"type" => 
"page_rnavlink", 
"class" => 
"RightNavigationLink"),
 
  419            array(
"type" => 
"page_lnavimage", 
"class" => 
"LeftNavigationImage"),
 
  420            array(
"type" => 
"page_rnavimage", 
"class" => 
"RightNavigationImage"),
 
  421            array(
"type" => 
"page_fn", 
"class" => 
"Footnote"),
 
  422            array(
"type" => 
"page_title", 
"class" => 
"PageTitle"),
 
  423            array(
"type" => 
"glo_overlay", 
"class" => 
"GlossaryOverlay"),
 
  424            array(
"type" => 
"glo_ovtitle", 
"class" => 
"GlossaryOvTitle"),
 
  425            array(
"type" => 
"glo_ovclink", 
"class" => 
"GlossaryOvCloseLink"),
 
  426            array(
"type" => 
"glo_ovuglink", 
"class" => 
"GlossaryOvUnitGloLink"),
 
  427            array(
"type" => 
"glo_ovuglistlink", 
"class" => 
"GlossaryOvUGListLink"),
 
  428            array(
"type" => 
"sco_title", 
"class" => 
"Title"),
 
  429            array(
"type" => 
"sco_desc", 
"class" => 
"Description"),
 
  430            array(
"type" => 
"sco_desct", 
"class" => 
"DescriptionTop"),
 
  431            array(
"type" => 
"sco_keyw", 
"class" => 
"Keywords"),
 
  432            array(
"type" => 
"sco_obj", 
"class" => 
"Objective"),
 
  433            array(
"type" => 
"sco_objt", 
"class" => 
"ObjectiveTop"),
 
  434            array(
"type" => 
"sco_fmess", 
"class" => 
"FinalMessage"),
 
  435            array(
"type" => 
"rte_menu", 
"class" => 
"RTEMenu"),
 
  436            array(
"type" => 
"rte_menu", 
"class" => 
"RTELogo"),
 
  437            array(
"type" => 
"rte_menu", 
"class" => 
"RTELinkBar"),
 
  438            array(
"type" => 
"rte_mlink", 
"class" => 
"RTELink"),
 
  439            array(
"type" => 
"rte_mlink", 
"class" => 
"RTELinkDisabled"),
 
  440            array(
"type" => 
"rte_tree", 
"class" => 
"RTETree"),
 
  441            array(
"type" => 
"rte_node", 
"class" => 
"RTECourse"),
 
  442            array(
"type" => 
"rte_node", 
"class" => 
"RTEChapter"),
 
  443            array(
"type" => 
"rte_node", 
"class" => 
"RTESco"),
 
  444            array(
"type" => 
"rte_node", 
"class" => 
"RTEAsset"),
 
  445            array(
"type" => 
"rte_node", 
"class" => 
"RTECourseDisabled"),
 
  446            array(
"type" => 
"rte_node", 
"class" => 
"RTEChapterDisabled"),
 
  447            array(
"type" => 
"rte_node", 
"class" => 
"RTEScoDisabled"),
 
  448            array(
"type" => 
"rte_node", 
"class" => 
"RTEAssetDisabled"),
 
  449            array(
"type" => 
"rte_status", 
"class" => 
"RTEAsset"),
 
  450            array(
"type" => 
"rte_status", 
"class" => 
"RTECompleted"),
 
  451            array(
"type" => 
"rte_status", 
"class" => 
"RTENotAttempted"),
 
  452            array(
"type" => 
"rte_status", 
"class" => 
"RTERunning"),
 
  453            array(
"type" => 
"rte_status", 
"class" => 
"RTEIncomplete"),
 
  454            array(
"type" => 
"rte_status", 
"class" => 
"RTEPassed"),
 
  455            array(
"type" => 
"rte_status", 
"class" => 
"RTEFailed"),
 
  456            array(
"type" => 
"rte_status", 
"class" => 
"RTEBrowsed"),
 
  457            array(
"type" => 
"rte_tlink", 
"class" => 
"RTETreeLink"),
 
  458            array(
"type" => 
"rte_tlink", 
"class" => 
"RTETreeLinkDisabled"),
 
  459            array(
"type" => 
"rte_tlink", 
"class" => 
"RTETreeCurrent"),
 
  460            array(
"type" => 
"rte_tul", 
"class" => 
"RTETreeList"),
 
  461            array(
"type" => 
"rte_tli", 
"class" => 
"RTETreeItem"),
 
  462            array(
"type" => 
"rte_texp", 
"class" => 
"RTETreeExpanded"),
 
  463            array(
"type" => 
"rte_texp", 
"class" => 
"RTETreeCollapsed"),
 
  464            array(
"type" => 
"rte_tree", 
"class" => 
"RTETreeControl"),
 
  465            array(
"type" => 
"rte_tclink", 
"class" => 
"RTETreeControlLink"),
 
  466            array(
"type" => 
"rte_drag", 
"class" => 
"RTEDragBar"),
 
  467            array(
"type" => 
"list_o", 
"class" => 
"NumberedList"),
 
  468            array(
"type" => 
"list_u", 
"class" => 
"BulletedList"),
 
  469            array(
"type" => 
"list_item", 
"class" => 
"StandardListItem"),
 
  470            array(
"type" => 
"question", 
"class" => 
"Standard"),
 
  471            array(
"type" => 
"question", 
"class" => 
"SingleChoice"),
 
  472            array(
"type" => 
"question", 
"class" => 
"MultipleChoice"),
 
  473            array(
"type" => 
"question", 
"class" => 
"TextQuestion"),
 
  474            array(
"type" => 
"question", 
"class" => 
"OrderingQuestion"),
 
  475            array(
"type" => 
"question", 
"class" => 
"MatchingQuestion"),
 
  476            array(
"type" => 
"question", 
"class" => 
"ImagemapQuestion"),
 
  477            array(
"type" => 
"question", 
"class" => 
"ErrorText"),
 
  478            array(
"type" => 
"question", 
"class" => 
"TextSubset"),
 
  479            array(
"type" => 
"question", 
"class" => 
"ClozeTest"),
 
  480            array(
"type" => 
"qtitle", 
"class" => 
"Title"),
 
  481            array(
"type" => 
"qanswer", 
"class" => 
"Answer"),
 
  482            array(
"type" => 
"qimg", 
"class" => 
"QuestionImage"),
 
  483            array(
"type" => 
"qimgd", 
"class" => 
"ImageDetailsLink"),
 
  484            array(
"type" => 
"qordul", 
"class" => 
"OrderList"),
 
  485            array(
"type" => 
"qordli", 
"class" => 
"OrderListItem"),
 
  486            array(
"type" => 
"qordul", 
"class" => 
"OrderListHorizontal"),
 
  487            array(
"type" => 
"qordli", 
"class" => 
"OrderListItemHorizontal"),
 
  488            array(
"type" => 
"qetitem", 
"class" => 
"ErrorTextItem"),
 
  489            array(
"type" => 
"qetitem", 
"class" => 
"ErrorTextSelected"),
 
  490            array(
"type" => 
"qetcorr", 
"class" => 
"ErrorTextCorrected"),
 
  491            array(
"type" => 
"qinput", 
"class" => 
"TextInput"),
 
  492            array(
"type" => 
"qlinput", 
"class" => 
"LongTextInput"),
 
  493            array(
"type" => 
"qsubmit", 
"class" => 
"Submit"),
 
  494            array(
"type" => 
"qfeedr", 
"class" => 
"FeedbackRight"),
 
  495            array(
"type" => 
"qfeedw", 
"class" => 
"FeedbackWrong"),
 
  496            array(
"type" => 
"qover", 
"class" => 
"Correct"),
 
  497            array(
"type" => 
"qover", 
"class" => 
"Inorrect"),
 
  498            array(
"type" => 
"qover", 
"class" => 
"StatusMessage"),
 
  499            array(
"type" => 
"qover", 
"class" => 
"WrongAnswersMessage"),
 
  500            array(
"type" => 
"flist_cont", 
"class" => 
"FileListContainer"),
 
  501            array(
"type" => 
"flist_head", 
"class" => 
"FileListHeading"),
 
  502            array(
"type" => 
"flist", 
"class" => 
"FileList"),
 
  503            array(
"type" => 
"flist_li", 
"class" => 
"FileListItem"),
 
  504            array(
"type" => 
"flist_a", 
"class" => 
"FileListItemLink")
 
  510            "caption" => 
"table_caption",
 
  511            "row_head" => 
"table_cell",
 
  512            "row_foot" => 
"table_cell",
 
  513            "col_head" => 
"table_cell",
 
  514            "col_foot" => 
"table_cell",
 
  515            "odd_row" => 
"table_cell",
 
  516            "even_row" => 
"table_cell",
 
  517            "odd_col" => 
"table_cell",
 
  518            "even_col" => 
"table_cell"),
 
  519        "vaccordion" => array(
 
  520            "va_cntr" => 
"va_cntr",
 
  521            "va_icntr" => 
"va_icntr",
 
  522            "va_ihead" => 
"va_ihead",
 
  523            "va_iheada" => 
"va_iheada",
 
  524            "va_ihcap" => 
"va_ihcap",
 
  525            "va_icont" => 
"va_icont" 
  527        "haccordion" => array(
 
  528            "ha_cntr" => 
"ha_cntr",
 
  529            "ha_icntr" => 
"ha_icntr",
 
  530            "ha_ihead" => 
"ha_ihead",
 
  531            "ha_iheada" => 
"ha_iheada",
 
  532            "ha_ihcap" => 
"ha_ihcap",
 
  533            "ha_icont" => 
"ha_icont" 
  536            "ca_cntr" => 
"ca_cntr",
 
  537            "ca_icntr" => 
"ca_icntr",
 
  538            "ca_ihead" => 
"ca_ihead",
 
  539            "ca_icont" => 
"ca_icont" 
  554    public function __construct($a_id = 0, $a_call_by_reference = 
false)
 
  558        $this->db = 
$DIC->database();
 
  559        $this->lng = 
$DIC->language();
 
  561        $this->style = array();
 
  562        if ($a_call_by_reference) {
 
  563            $this->
ilias->raiseError(
"Can't instantiate style object via reference id.", $this->
ilias->error_obj->FATAL);
 
  566        parent::__construct($a_id, 
false);
 
  574        $this->
ilias->raiseError(
"Operation ilObjStyleSheet::setRefId() not allowed.", $this->
ilias->error_obj->FATAL);
 
  591        $this->
ilias->raiseError(
"Operation ilObjStyleSheet::putInTree() not allowed.", $this->
ilias->error_obj->FATAL);
 
  599        $this->
ilias->raiseError(
"Operation ilObjStyleSheet::createReference() not allowed.", $this->
ilias->error_obj->FATAL);
 
  607        $this->up_to_date = $a_up_to_date;
 
  615        return $this->up_to_date;
 
  623        $this->scope = $a_scope;
 
  643        $q = 
"UPDATE style_data SET uptodate = " .
 
  644            $ilDB->quote((
int) $a_up_to_date, 
"integer") .
 
  645            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  646        $ilDB->manipulate($q);
 
  658        $q = 
"SELECT uptodate FROM style_data " .
 
  659            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  663        return (
boolean) $sty[
"uptodate"];
 
  675        $q = 
"UPDATE style_data SET standard = " .
 
  676            $ilDB->quote((
int) $a_std, 
"integer") .
 
  677            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  678        $ilDB->manipulate($q);
 
  690        $q = 
"UPDATE style_data SET category = " .
 
  691            $ilDB->quote((
int) $a_scope, 
"integer") .
 
  692            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  693        $ilDB->manipulate($q);
 
  705        $q = 
"SELECT * FROM style_data " .
 
  706            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  710        return (
boolean) $sty[
"standard"];
 
  722        $q = 
"UPDATE style_data SET active = " .
 
  723            $ilDB->quote((
int) $a_active, 
"integer") .
 
  724            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  725        $ilDB->manipulate($q);
 
  737        $q = 
"SELECT * FROM style_data " .
 
  738            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer");
 
  742        return (
boolean) $sty[
"active"];
 
  749        $a_exclude_default_style = 
false,
 
  750        $a_include_deactivated = 
false,
 
  759        $default_style = 
$ilSetting->get(
"default_content_style_id");
 
  762        if (!$a_include_deactivated) {
 
  763            $and_str = 
" AND active = 1";
 
  766        $q = 
"SELECT * FROM style_data " .
 
  767            " WHERE standard = 1" . $and_str;
 
  771            if (!$a_exclude_default_style || $default_style != $sty[
"id"]) {
 
  773                if ($a_scope > 0 && $sty[
"category"] > 0) {
 
  774                    if (
$tree->isInTree($sty[
"category"]) &&
 
  775                        $tree->isInTree($a_scope)) {
 
  777                        if (!in_array($sty[
"category"], 
$path)) {
 
  798        $ilAccess = 
$DIC->access();
 
  801        $clonable_styles = array();
 
  803        $q = 
"SELECT * FROM style_data";
 
  804        $style_set = 
$ilDB->query($q);
 
  805        while ($style_rec = 
$ilDB->fetchAssoc($style_set)) {
 
  807            if ($style_rec[
"standard"] == 1) {
 
  808                if ($style_rec[
"active"] == 1) {
 
  812                include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
 
  814                if (count($obj_ids) == 0) {
 
  817                foreach ($obj_ids as 
$id) {
 
  820                        if ($ilAccess->checkAccess(
"write", 
"", 
$ref_id)) {
 
  827                $clonable_styles[$style_rec[
"id"]] =
 
  832        asort($clonable_styles);
 
  834        return $clonable_styles;
 
  842        $this->meta_data = $a_meta_data;
 
  850        if (!is_object(self::$basic_style_dom)) {
 
  851            self::$basic_style_dom = 
new DOMDocument();
 
  852            self::$basic_style_dom->load(self::$basic_style_file);
 
  863        return $this->meta_data;
 
  869    public function create($a_from_style = 0, $a_import_mode = 
false)
 
  875        if ($a_from_style == 0) {
 
  876            if (!$a_import_mode) {
 
  883                    self::$basic_style_image_dir,
 
  888                $q = 
"INSERT INTO style_data (id, uptodate, category) VALUES " .
 
  889                    "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0," .
 
  891                $ilDB->manipulate($q);
 
  897            $q = 
"SELECT * FROM style_parameter WHERE style_id = " .
 
  898                $ilDB->quote($a_from_style, 
"integer");
 
  899            $par_set = 
$ilDB->query($q);
 
  900            while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
  901                $def[] = array(
"tag" => $par_rec[
"tag"], 
"class" => $par_rec[
"class"],
 
  902                    "parameter" => $par_rec[
"parameter"], 
"value" => $par_rec[
"value"],
 
  903                    "type" => $par_rec[
"type"], 
"mq_id" => $par_rec[
"mq_id"], 
"custom" => $par_rec[
"custom"]);
 
  908            $q = 
"SELECT * FROM style_char WHERE style_id = " .
 
  909                $ilDB->quote($a_from_style, 
"integer");
 
  910            $par_set = 
$ilDB->query($q);
 
  911            while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
  912                $chars[] = array(
"type" => $par_rec[
"type"], 
"characteristic" => $par_rec[
"characteristic"]);
 
  918            $mqs = $from_style->getMediaQueries();
 
  919            $mq_mapping = array();
 
  920            foreach ($mqs as $mq) {
 
  922                $mq_mapping[$mq[
"id"]] = $nid;
 
  926            foreach (
$def as $sty) {
 
  927                $id = 
$ilDB->nextId(
"style_parameter");
 
  928                $q = 
"INSERT INTO style_parameter (id, style_id, tag, class, parameter, value, type, mq_id, custom) VALUES " .
 
  930                    $ilDB->quote(
$id, 
"integer") . 
"," .
 
  931                    $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
  932                    $ilDB->quote($sty[
"tag"], 
"text") . 
"," .
 
  933                    $ilDB->quote($sty[
"class"], 
"text") . 
"," .
 
  934                    $ilDB->quote($sty[
"parameter"], 
"text") . 
"," .
 
  935                    $ilDB->quote($sty[
"value"], 
"text") . 
"," .
 
  936                    $ilDB->quote($sty[
"type"], 
"text") . 
"," .
 
  937                    $ilDB->quote((
int) $mq_mapping[$sty[
"mq_id"]], 
"integer") . 
"," .
 
  938                    $ilDB->quote($sty[
"custom"], 
"integer") .
 
  940                $ilDB->manipulate($q);
 
  944            foreach ($chars as $char) {
 
  945                $q = 
"INSERT INTO style_char (style_id, type, characteristic) VALUES " .
 
  946                    "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
  947                    $ilDB->quote($char[
"type"], 
"text") . 
"," .
 
  948                    $ilDB->quote($char[
"characteristic"], 
"text") . 
")";
 
  949                $ilDB->manipulate($q);
 
  953            $q = 
"INSERT INTO style_data (id, uptodate, category) VALUES " .
 
  954                "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0," .
 
  956            $ilDB->manipulate($q);
 
  961                $from_style->getImagesDirectory(),
 
  962                $this->getImagesDirectory()
 
  966            $colors = $from_style->getColors();
 
  967            foreach ($colors as $c) {
 
  968                $this->
addColor($c[
"name"], $c[
"code"]);
 
  973            foreach ($tcts as $tct => $v) {
 
  982        if (!$a_import_mode) {
 
  998            $st = 
$ilDB->manipulateF(
 
  999                "DELETE FROM style_char WHERE style_id = %s AND type = %s AND characteristic = %s",
 
 1000                array(
"integer", 
"text", 
"text"),
 
 1005            $st = 
$ilDB->manipulateF(
 
 1006                "DELETE FROM style_parameter WHERE style_id = %s AND tag = %s AND type = %s AND class = %s",
 
 1007                array(
"integer", 
"text", 
"text", 
"text"),
 
 1023        $set = 
$ilDB->queryF(
 
 1024            "SELECT style_id FROM style_char WHERE style_id = %s AND characteristic = %s AND type = %s",
 
 1025            array(
"integer", 
"text", 
"text"),
 
 1026            array($this->
getId(), $a_char, $a_style_type)
 
 1028        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 1043            "INSERT INTO style_char (style_id, type, characteristic, hide)" .
 
 1044            " VALUES (%s,%s,%s,%s) ",
 
 1045            array(
"integer", 
"text", 
"text", 
"integer"),
 
 1075        $pars = $from_style->getParametersOfClass($a_from_type, $a_from_char);
 
 1078        foreach ($pars as $p => $v) {
 
 1079            if (substr($v, 0, 1) == 
"!") {
 
 1080                $colors[] = substr($v, 1);
 
 1092        foreach ($colors as $c) {
 
 1094                $this->
addColor($c, $from_style->getColorCodeForName($c));
 
 1107            $chars = $this->chars;
 
 1109        if (is_array($this->chars_by_type[
$a_type])) {
 
 1110            foreach ($this->chars_by_type[
$a_type] as $c) {
 
 1111                if ($a_include_core || !self::isCoreStyle(
$a_type, $c)) {
 
 1118            foreach ($chars as $k => $char) {
 
 1119                if (
$a_type == 
"" && $this->hidden_chars[$char[
"type"] . 
":" . $char[
"class"]]) {
 
 1121                } elseif ($this->hidden_chars[
$a_type . 
":" . $char]) {
 
 1135        $this->chars = $a_chars;
 
 1147            "UPDATE style_char SET " .
 
 1148            " hide = " . 
$ilDB->quote((
int) $a_hide, 
"integer") .
 
 1149            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 1151            " characteristic = " . 
$ilDB->quote($a_char, 
"text")
 
 1162        $set = 
$ilDB->query(
 
 1163            "SELECT hide FROM  style_char " .
 
 1164            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 1166            " characteristic = " . 
$ilDB->quote($a_char, 
"text")
 
 1168        $rec = 
$ilDB->fetchAssoc($set);
 
 1170        return $rec[
"hide"];
 
 1183        $lng->loadLanguageModule(
"style");
 
 1186        $new_obj->setTitle($this->
getTitle() . 
" (" . 
$lng->txt(
"sty_acopy") . 
")");
 
 1187        $new_obj->setType($this->
getType());
 
 1189        $new_obj->create($this->
getId());
 
 1191        $new_obj->writeStyleSetting(
 
 1192            "disable_auto_margins",
 
 1196        return $new_obj->getId();
 
 1221        $tag = explode(
".", $a_tag);
 
 1222        $value = $avail_params[$a_par][0];
 
 1223        $id = 
$ilDB->nextId(
"style_parameter");
 
 1224        $q = 
"INSERT INTO style_parameter (id,style_id, type, tag, class, parameter, value, mq_id, custom) VALUES " .
 
 1226            $ilDB->quote(
$id, 
"integer") . 
"," .
 
 1227            $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
 1231            $ilDB->quote($a_par, 
"text") . 
"," .
 
 1232            $ilDB->quote($value, 
"text") . 
"," .
 
 1233            $ilDB->quote($a_mq_id, 
"integer") . 
"," .
 
 1234            $ilDB->quote($a_custom, 
"integer") .
 
 1236        $ilDB->manipulate($q);
 
 1262        if (!is_writable($sty_data_dir)) {
 
 1263            $ilErr->raiseError(
"Style data directory (" . $sty_data_dir
 
 1264                . 
") not writeable.", 
$ilErr->FATAL);
 
 1267        $style_dir = $sty_data_dir . 
"/sty_" . $a_style_id;
 
 1269        if (!@is_dir($style_dir)) {
 
 1270            $ilErr->raiseError(
"Creation of style directory failed (" .
 
 1271                $style_dir . 
").", 
$ilErr->FATAL);
 
 1275        $im_dir = $style_dir . 
"/images";
 
 1277        if (!@is_dir($im_dir)) {
 
 1278            $ilErr->raiseError(
"Creation of Import Directory failed (" .
 
 1279                $im_dir . 
").", 
$ilErr->FATAL);
 
 1283        $thumb_dir = $style_dir . 
"/images/thumbnails";
 
 1285        if (!@is_dir($thumb_dir)) {
 
 1286            $ilErr->raiseError(
"Creation of Import Directory failed (" .
 
 1287                $thumb_dir . 
").", 
$ilErr->FATAL);
 
 1326            foreach ($entries as $entry) {
 
 1327                if (substr($entry[
"entry"], 0, 1) == 
".") {
 
 1330                if ($entry[
"type"] != 
"dir") {
 
 1345        @ilUtil::moveUploadedFile(
 
 1346            $a_file[
"tmp_name"],
 
 1380        $q = 
"DELETE FROM style_parameter WHERE id = " .
 
 1381            $ilDB->quote($a_id, 
"integer");
 
 1398        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1399            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1400            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1401            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1402            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1403            " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1404            " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1405            " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1407        $ilDB->manipulate($q);
 
 1423        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1424            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1425            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1426            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1427            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1428            " custom = " . 
$ilDB->quote(1, 
"integer") . 
" AND " .
 
 1431        $ilDB->manipulate($q);
 
 1446        $q = 
"DELETE FROM style_parameter WHERE " .
 
 1447            " style_id = " . 
$ilDB->quote($this->
getId(), 
"integer") . 
" AND " .
 
 1448            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1451        $ilDB->manipulate($q);
 
 1458    public function delete()
 
 1466        $def_style = $this->
ilias->getSetting(
"default_content_style_id");
 
 1467        if ($def_style == $this->
getId()) {
 
 1468            $this->
ilias->deleteSetting(
"default_content_style_id");
 
 1472        $fixed_style = $this->
ilias->getSetting(
"fixed_content_style_id");
 
 1473        if ($fixed_style == $this->
getId()) {
 
 1474            $this->
ilias->deleteSetting(
"fixed_content_style_id");
 
 1478        $q = 
"DELETE FROM style_parameter WHERE style_id = " .
 
 1480        $ilDB->manipulate($q);
 
 1484        if (is_file($css_file_name)) {
 
 1485            unlink($css_file_name);
 
 1490            "DELETE FROM sty_media_query WHERE " .
 
 1491            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer")
 
 1495        include_once(
"./Modules/LearningModule/classes/class.ilObjContentObject.php");
 
 1499        $q = 
"DELETE FROM style_data WHERE id = " .
 
 1501        $ilDB->manipulate($q);
 
 1514        $q = 
"SELECT * FROM style_parameter WHERE style_id = " .
 
 1515            $ilDB->quote($this->
getId(), 
"integer") . 
" ORDER BY tag, class, type, mq_id ";
 
 1516        $style_set = 
$ilDB->query($q);
 
 1521        $this->style = array();
 
 1525        $this->end_styles = array();
 
 1526        while ($style_rec = 
$ilDB->fetchAssoc($style_set)) {
 
 1527            if ($style_rec[
"tag"] != $ctag || $style_rec[
"class"] != $cclass
 
 1528                || $style_rec[
"type"] != $ctype || $style_rec[
"mq_id"] != $cmq_id) {
 
 1530                if (is_array(
$tag)) {
 
 1531                    if (in_array($ctype, array(
"ha_iheada", 
"va_iheada"))) {
 
 1532                        $this->end_styles[] = 
$tag;
 
 1534                        $this->style[] = 
$tag;
 
 1539            $ctag = $style_rec[
"tag"];
 
 1540            $cclass = $style_rec[
"class"];
 
 1541            $ctype = $style_rec[
"type"];
 
 1542            $cmq_id = $style_rec[
"mq_id"];
 
 1543            $tag[] = $style_rec;
 
 1545            $this->style_class[$ctype][$cclass][$cmq_id][$style_rec[
"parameter"]] = $style_rec[
"value"];
 
 1547        if (is_array(
$tag)) {
 
 1548            $this->style[] = 
$tag;
 
 1550        foreach ($this->end_styles as 
$s) {
 
 1551            $this->style[] = 
$s;
 
 1554        $q = 
"SELECT * FROM style_data WHERE id = " .
 
 1562        $this->chars = array();
 
 1563        $this->chars_by_type = array();
 
 1564        $q = 
"SELECT * FROM style_char WHERE style_id = " .
 
 1566            " ORDER BY type ASC, characteristic ASC";
 
 1567        $par_set = 
$ilDB->query($q);
 
 1568        while ($par_rec = 
$ilDB->fetchAssoc($par_set)) {
 
 1569            $this->chars[] = array(
"type" => $par_rec[
"type"], 
"class" => $par_rec[
"characteristic"], 
"hide" => $par_rec[
"hide"]);
 
 1570            $this->chars_by_type[$par_rec[
"type"]][] = $par_rec[
"characteristic"];
 
 1571            if ($par_rec[
"hide"]) {
 
 1572                $this->hidden_chars[$par_rec[
"type"] . 
":" . $par_rec[
"characteristic"]] = 
true;
 
 1585        if ($a_target_file == 
"") {
 
 1588            $css_file_name = $a_target_file;
 
 1590        $css_file = fopen($css_file_name, 
"w");
 
 1592        $page_background = 
"";
 
 1594        $mqs = array(array(
"mquery" => 
"", 
"id" => 0));
 
 1600        foreach ($mqs as $mq) {
 
 1601            if ($mq[
"id"] > 0) {
 
 1602                fwrite($css_file, 
"@media " . $mq[
"mquery"] . 
" {\n");
 
 1606                if (
$tag[0][
"mq_id"] != $mq[
"id"]) {
 
 1609                fwrite($css_file, 
$tag[0][
"tag"] . 
".ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1612                if (
$tag[0][
"tag"] == 
"td") {
 
 1613                    fwrite($css_file, 
",th" . 
".ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1615                if (in_array(
$tag[0][
"tag"], array(
"h1", 
"h2", 
"h3"))) {
 
 1616                    fwrite($css_file, 
",div.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1617                    fwrite($css_file, 
",body.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1619                if (
$tag[0][
"type"] == 
"section") {     
 
 1620                    fwrite($css_file, 
",a.ilc_" . 
$tag[0][
"type"] . 
"_" . 
$tag[0][
"class"] . 
"\n");
 
 1622                if (
$tag[0][
"type"] == 
"text_block") {
 
 1623                    fwrite($css_file, 
",body.ilc_text_block_" . 
$tag[0][
"class"] . 
"\n");
 
 1625                fwrite($css_file, 
"{\n");
 
 1628                $t_border = array();
 
 1630                foreach (
$tag as $par) {
 
 1631                    $cur_par = $par[
"parameter"];
 
 1632                    $cur_val = $par[
"value"];
 
 1635                    if (is_int(strpos($cur_par, 
"color")) && substr(trim($cur_val), 0, 1) == 
"!") {
 
 1639                    if (
$tag[0][
"type"] == 
"table" && is_int(strpos($par[
"parameter"], 
"border"))) {
 
 1640                        $t_border[$cur_par] = $cur_val;
 
 1643                    if (in_array($cur_par, array(
"background-image", 
"list-style-image"))) {
 
 1644                        if (is_int(strpos($cur_val, 
"/"))) {    
 
 1645                            $cur_val = 
"url(" . $cur_val . 
")";
 
 1647                            if ($a_image_dir == 
"") {
 
 1648                                $cur_val = 
"url(../sty/sty_" . $this->
getId() . 
"/images/" . $cur_val . 
")";
 
 1650                                $cur_val = 
"url(" . $a_image_dir . 
"/" . $cur_val . 
")";
 
 1655                    if ($cur_par == 
"opacity") {
 
 1656                        $cur_val = ((int) $cur_val) / 100;
 
 1659                    fwrite($css_file, 
"\t" . $cur_par . 
": " . $cur_val . 
";\n");
 
 1662                    if ($cur_par == 
"min-height") {
 
 1663                        fwrite($css_file, 
"\t" . 
"height" . 
": " . 
"auto !important" . 
";\n");
 
 1664                        fwrite($css_file, 
"\t" . 
"height" . 
": " . $cur_val . 
";\n");
 
 1668                    if ($cur_par == 
"opacity") {
 
 1669                        fwrite($css_file, 
"\t" . 
'-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=' . ($cur_val * 100) . 
')"' . 
";\n");
 
 1670                        fwrite($css_file, 
"\t" . 
'filter: alpha(opacity=' . ($cur_val * 100) . 
')' . 
";\n");
 
 1671                        fwrite($css_file, 
"\t" . 
'-moz-opacity: ' . $cur_val . 
";\n");
 
 1675                    if ($cur_par == 
"transform") {
 
 1676                        fwrite($css_file, 
"\t" . 
'-webkit-transform: ' . $cur_val . 
";\n");
 
 1677                        fwrite($css_file, 
"\t" . 
'-moz-transform: ' . $cur_val . 
";\n");
 
 1678                        fwrite($css_file, 
"\t" . 
'-ms-transform: ' . $cur_val . 
";\n");
 
 1682                    if ($cur_par == 
"transform-origin") {
 
 1683                        fwrite($css_file, 
"\t" . 
'-webkit-transform-origin: ' . $cur_val . 
";\n");
 
 1684                        fwrite($css_file, 
"\t" . 
'-moz-transform-origin: ' . $cur_val . 
";\n");
 
 1685                        fwrite($css_file, 
"\t" . 
'-ms-transform-origin: ' . $cur_val . 
";\n");
 
 1689                    if (
$tag[0][
"tag"] == 
"div" && 
$tag[0][
"class"] == 
"Page" 
 1690                        && $cur_par == 
"background-color") {
 
 1691                        $page_background = $cur_val;
 
 1694                fwrite($css_file, 
"}\n");
 
 1695                fwrite($css_file, 
"\n");
 
 1715            if ($page_background != 
"") {
 
 1716                fwrite($css_file, 
"td.ilc_Page\n");
 
 1717                fwrite($css_file, 
"{\n");
 
 1718                fwrite($css_file, 
"\t" . 
"background-color: " . $page_background . 
";\n");
 
 1719                fwrite($css_file, 
"}\n");
 
 1721            if ($mq[
"id"] > 0) {
 
 1722                fwrite($css_file, 
"}\n");
 
 1744        $fixed_style = 
$ilSetting->get(
"fixed_content_style_id");
 
 1745        if ($fixed_style > 0) {
 
 1746            $a_style_id = $fixed_style;
 
 1750        if ($a_style_id <= 0) {
 
 1751            $a_style_id = 
$ilSetting->get(
"default_content_style_id");
 
 1769        if (is_array($this->style_class[
$a_type][$a_class][$a_mq_id])) {
 
 1770            return $this->style_class[
$a_type][$a_class][$a_mq_id];
 
 1786        $random = new \ilRandom();
 
 1787        $rand = $random->int(1, 999999);
 
 1791        $fixed_style = 
$ilSetting->get(
"fixed_content_style_id");
 
 1792        if ($fixed_style > 0) {
 
 1793            $a_style_id = $fixed_style;
 
 1797        if ($a_style_id <= 0) {
 
 1798            $a_style_id = 
$ilSetting->get(
"default_content_style_id");
 
 1810                $path .= 
"?dummy=$rand";
 
 1812            require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
 
 1817            return "./Services/COPage/css/content.css";
 
 1828        return "./Services/COPage/css/print_content.css";
 
 1838        return "./Services/COPage/css/syntaxhighlight.css";
 
 1848        return "./Services/COPage/css/placeholder.css";
 
 1859        $q = 
"UPDATE style_data " .
 
 1860            "SET category = " . 
$ilDB->quote((
int) $this->
getScope(), 
"integer") .
 
 1861            " WHERE id = " . 
$ilDB->quote($this->
getId(), 
"integer");
 
 1862        $ilDB->manipulate($q);
 
 1875        $q = 
"UPDATE style_parameter SET VALUE = " .
 
 1876            $ilDB->quote($a_value, 
"text") . 
" WHERE id = " .
 
 1877            $ilDB->quote($a_id, 
"integer");
 
 1878        $style_set = 
$ilDB->manipulate($q);
 
 1897        $q = 
"SELECT * FROM style_parameter WHERE " .
 
 1898            " style_id = " . 
$ilDB->quote($style_id, 
"integer") . 
" AND " .
 
 1899            " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1900            " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1901            " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1902            " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1903            " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1904            " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1906        $set = 
$ilDB->query($q);
 
 1908        if ($rec = $set->fetchRow()) {
 
 1909            $q = 
"UPDATE style_parameter SET " .
 
 1910                " value = " . 
$ilDB->quote($a_val, 
"text") . 
" WHERE " .
 
 1911                " style_id = " . 
$ilDB->quote($style_id, 
"integer") . 
" AND " .
 
 1912                " tag = " . 
$ilDB->quote($a_tag, 
"text") . 
" AND " .
 
 1913                " class = " . 
$ilDB->quote($a_class, 
"text") . 
" AND " .
 
 1914                " mq_id = " . 
$ilDB->quote($a_mq_id, 
"integer") . 
" AND " .
 
 1915                " custom = " . 
$ilDB->quote($a_custom, 
"integer") . 
" AND " .
 
 1916                " " . 
$ilDB->equals(
"type", 
$a_type, 
"text", 
true) . 
" AND " .
 
 1917                " parameter = " . 
$ilDB->quote($a_par, 
"text");
 
 1919            $ilDB->manipulate($q);
 
 1921            $id = 
$ilDB->nextId(
"style_parameter");
 
 1922            $q = 
"INSERT INTO style_parameter (id, value, style_id, tag,  class, type, parameter, mq_id, custom) VALUES " .
 
 1924                $ilDB->quote(
$id, 
"integer") . 
"," .
 
 1925                $ilDB->quote($a_val, 
"text") . 
"," .
 
 1926                " " . 
$ilDB->quote($style_id, 
"integer") . 
"," .
 
 1927                " " . 
$ilDB->quote($a_tag, 
"text") . 
"," .
 
 1928                " " . 
$ilDB->quote($a_class, 
"text") . 
"," .
 
 1930                " " . 
$ilDB->quote($a_par, 
"text") . 
"," .
 
 1931                " " . 
$ilDB->quote($a_mq_id, 
"integer") . 
"," .
 
 1932                " " . 
$ilDB->quote($a_custom, 
"integer") .
 
 1935            $ilDB->manipulate($q);
 
 1953        $this->style = $a_style;
 
 1965        return str_replace(
"&", 
"&", $a_str);
 
 1974        $xml.= 
"<StyleSheet>\n";
 
 1981        foreach ($this->chars as $char) {
 
 1983                "\" Type=\"" . $char[
"type"] . 
"\" Class=\"" . $char[
"class"] . 
"\">\n";
 
 1984            foreach ($this->style as 
$style) {
 
 1985                if (
$style[0][
"type"] == $char[
"type"] && 
$style[0][
"class"] == $char[
"class"]) {
 
 1987                        $xml.=
"<StyleParameter Name=\"" . 
$tag[
"parameter"] . 
"\" Value=\"" . 
$tag[
"value"] . 
"\" Custom=\"" . 
$tag[
"custom"] . 
"\" />\n";
 
 1991            $xml.= 
"</Style>\n";
 
 1995        foreach ($this->
getColors() as $color) {
 
 1996            $xml.=
"<StyleColor Name=\"" . $color[
"name"] . 
"\" Code=\"" . $color[
"code"] . 
"\"/>\n";
 
 2001        foreach ($tcts as $tct => $v) {
 
 2004            foreach ($ts as 
$t) {
 
 2005                $xml.=
"<StyleTemplate Type=\"" . $tct . 
"\" Name=\"" . 
$t[
"name"] . 
"\">\n";
 
 2006                foreach (
$t[
"classes"] as $ct => $c) {
 
 2008                        $xml.=
"<StyleTemplateClass ClassType=\"" . $ct . 
"\" Class=\"" . $c . 
"\"/>\n";
 
 2011                $xml.=
"</StyleTemplate>\n";
 
 2016        $xml.= 
"</StyleSheet>";
 
 2029        if (!is_writable($sty_data_dir)) {
 
 2030            $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
 
 2031                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2034        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2036        if (!@is_dir($style_dir)) {
 
 2037            $this->
ilias->raiseError(
"Creation of style directory failed (" .
 
 2038                $style_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2042        $ex_dir = $style_dir . 
"/export";
 
 2044        if (!@is_dir($ex_dir)) {
 
 2045            $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
 
 2046                $ex_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2058        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2060        $ex_dir = $style_dir . 
"/export";
 
 2062        if (is_dir($ex_dir)) {
 
 2076        if (!is_writable($ex_sub_dir)) {
 
 2077            $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_dir
 
 2078                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2080        $ex_sub_images_dir = $ex_sub_dir . 
"/images";
 
 2082        if (!is_writable($ex_sub_images_dir)) {
 
 2083            $this->
ilias->raiseError(
"Style data directory (" . $ex_sub_images_dir
 
 2084                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2093        $this->export_sub_dir = $a_dir;
 
 2101        if ($this->export_sub_dir == 
"") {
 
 2102            return "sty_" . $this->
getId();
 
 2104            return $this->export_sub_dir;
 
 2140        $file = $a_dir . 
"/style.xml";
 
 2143        if (!($fp = @fopen(
$file, 
"w"))) {
 
 2144            die(
"<b>Error</b>: Could not open \"" . 
$file . 
"\" for writing" .
 
 2145                    " in <b>" . __FILE__ . 
"</b> on line <b>" . __LINE__ . 
"</b><br />");
 
 2152        fwrite($fp, $this->
getXML());
 
 2165        if (!is_writable($sty_data_dir)) {
 
 2166            $this->
ilias->raiseError(
"Style data directory (" . $sty_data_dir
 
 2167                . 
") not writeable.", $this->
ilias->error_obj->FATAL);
 
 2170        $style_dir = $sty_data_dir . 
"/sty_" . $this->
getId();
 
 2172        if (!@is_dir($style_dir)) {
 
 2173            $this->
ilias->raiseError(
"Creation of style directory failed (" .
 
 2174                $style_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2178        $im_dir = $style_dir . 
"/import";
 
 2180        if (!@is_dir($im_dir)) {
 
 2181            $this->
ilias->raiseError(
"Creation of Import Directory failed (" .
 
 2182                $im_dir . 
").", $this->
ilias->error_obj->FATAL);
 
 2191    public function import($a_file)
 
 2198        if (is_array($a_file)) {
 
 2199            ilUtil::moveUploadedFile(
 
 2200                $a_file[
"tmp_name"],
 
 2202                $im_dir . 
"/" . $a_file[
"name"]
 
 2204            $file_name = $a_file[
"name"];
 
 2206            $pi = pathinfo($a_file);
 
 2207            $file_name = $pi[
"basename"];
 
 2208            copy($a_file, $im_dir . 
"/" . $file_name);
 
 2210        $file = pathinfo($file_name);
 
 2213        if (strtolower(
$file[
"extension"] == 
"zip")) {
 
 2215            $subdir = basename(
$file[
"basename"], 
"." . 
$file[
"extension"]);
 
 2216            if (!is_dir($im_dir . 
"/" . $subdir)) {
 
 2219            $xml_file = $im_dir . 
"/" . $subdir . 
"/style.xml";
 
 2221            $xml_file = $im_dir . 
"/" . $file_name;
 
 2230        if (is_dir($im_dir . 
"/" . $subdir . 
"/images")) {
 
 2232                $im_dir . 
"/" . $subdir . 
"/images",
 
 2250        $this->is_3_10_skin = 
false;
 
 2252        if (!$a_skip_parent_create) {
 
 2255        include_once(
"./Services/Style/Content/classes/class.ilStyleImportParser.php");
 
 2257        $importParser->startParsing();
 
 2260        foreach ($this->style as 
$style) {
 
 2262                $id = 
$ilDB->nextId(
"style_parameter");
 
 2265                if (in_array(
$tag[
"class"], array(
"PageFrame", 
"PageContainer")) &&
 
 2266                    $tag[
"tag"] == 
"table") {
 
 2267                    $tag[
"tag"] = 
"div";
 
 2268                    if (
$tag[
"parameter"] == 
"width" && 
$tag[
"value"] == 
"100%") {
 
 2273                $q = 
"INSERT INTO style_parameter (id,style_id, tag, class, parameter, type, value, custom) VALUES " .
 
 2275                    $ilDB->quote(
$id, 
"integer") . 
"," .
 
 2276                    $ilDB->quote($this->
getId(), 
"integer") . 
"," .
 
 2277                    $ilDB->quote($tag[
"tag"], 
"text") . 
"," .
 
 2278                    $ilDB->quote(
$tag[
"class"], 
"text") . 
"," .
 
 2279                    $ilDB->quote(
$tag[
"parameter"], 
"text") . 
"," .
 
 2280                    $ilDB->quote(
$tag[
"type"], 
"text") . 
"," .
 
 2281                    $ilDB->quote(
$tag[
"value"], 
"text") . 
"," .
 
 2282                    $ilDB->quote((
bool) 
$tag[
"custom"], 
"integer") .
 
 2284                $ilDB->manipulate($q);
 
 2289        $this->is_3_10_skin = 
true;
 
 2290        if (is_array($this->chars)) {
 
 2291            foreach ($this->chars as $char) {
 
 2292                if ($char[
"type"] != 
"") {
 
 2293                    $s = substr($char[
"class"], strlen($char[
"class"]) - 6);
 
 2294                    if (
$s != 
":hover") {
 
 2298                                "style_id" => array(
"integer", $this->
getId()),
 
 2299                                "type" => array(
"text", $char[
"type"]),
 
 2300                                "characteristic" => array(
"text", $char[
"class"])),
 
 2301                            array(
"hide" => array(
"integer", 0))
 
 2309                        $this->is_3_10_skin = 
false;
 
 2316        $q = 
"INSERT INTO style_data (id, uptodate) VALUES " .
 
 2317            "(" . 
$ilDB->quote($this->
getId(), 
"integer") . 
", 0)";
 
 2318        $ilDB->manipulate($q);
 
 2323        if ($this->is_3_10_skin) {
 
 2336        foreach (self::$parameter as 
$parameter => $props) {
 
 2344        $input = self::$parameter[$par][
"input"];
 
 2350        $subpar = self::$parameter[$par][
"subpar"];
 
 2360        foreach (self::$parameter as $k => $v) {
 
 2361            if (is_array(self::$filtered_groups[$v[
"group"]]) &&
 
 2362                !in_array($a_tag, self::$filtered_groups[$v[
"group"]])) {
 
 2377        if ($a_no_percentage) {
 
 2385        return self::$parameter[$par][
"values"];
 
 2400        return in_array(
$a_type, self::$expandable_types);
 
 2405        return in_array(
$a_type, self::$hideable_types);
 
 2410        foreach (self::$style_super_types as 
$s => 
$t) {
 
 2425        $c_styles = array();
 
 2426        foreach (self::$core_styles as $cstyle) {
 
 2428                = array(
"type" => $cstyle[
"type"],
 
 2430                    "class" => $cstyle[
"class"]);
 
 2443        foreach (self::$core_styles as 
$s) {
 
 2444            if (
$s[
"type"] == 
$a_type && 
$s[
"class"] == $a_class) {
 
 2457        if ($a_template_type == 
"") {
 
 2461        return self::$templates[$a_template_type];
 
 2467        return self::$pseudo_classes[
$tag];
 
 2472        return self::$templates[
$t][$k];
 
 2477        return self::$assigned_tags[
$a_type];
 
 2486        foreach (self::$parameter as $p => $v) {
 
 2487            $pars[$p] = $v[
"values"];
 
 2499        $styles = array(array(
"id" => $a_id));
 
 2513        if ($a_styles == 
"") {
 
 2522        $core_images = array();
 
 2524        if (is_dir($core_dir)) {
 
 2525            $dir = opendir($core_dir);
 
 2526            while (
$file = readdir($dir)) {
 
 2527                if (substr(
$file, 0, 1) != 
"." && is_file($core_dir . 
"/" . 
$file)) {
 
 2528                    $core_images[] = 
$file;
 
 2538                $set = 
$ilDB->queryF(
 
 2539                    "SELECT * FROM style_char WHERE style_id = %s " .
 
 2540                    "AND type = %s AND characteristic = %s",
 
 2541                    array(
"integer", 
"text", 
"text"),
 
 2542                    array(
$id, $cs[
"type"], $cs[
"class"])
 
 2546                if (!($rec = 
$ilDB->fetchAssoc($set))) {
 
 2548                        "INSERT INTO style_char (style_id, type, characteristic) " .
 
 2549                        " VALUES (%s,%s,%s) ",
 
 2550                        array(
"integer", 
"text", 
"text"),
 
 2551                        array(
$id, $cs[
"type"], $cs[
"class"])
 
 2554                    $xpath = 
new DOMXPath($bdom);
 
 2555                    $par_nodes = $xpath->query(
"/StyleSheet/Style[@Tag = '" . $cs[
"tag"] . 
"' and @Type='" .
 
 2556                        $cs[
"type"] . 
"' and @Class='" . $cs[
"class"] . 
"']/StyleParameter");
 
 2557                    foreach ($par_nodes as $par_node) {
 
 2559                        $set = 
$ilDB->queryF(
 
 2560                            "SELECT * FROM style_parameter WHERE style_id = %s " .
 
 2561                            "AND type = %s AND class = %s AND tag = %s AND parameter = %s",
 
 2562                            array(
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2563                            array(
$id, $cs[
"type"], $cs[
"class"],
 
 2564                            $cs[
"tag"], $par_node->getAttribute(
"Name"))
 
 2568                        if (!($rec = 
$ilDB->fetchAssoc($set))) {
 
 2569                            $spid = 
$ilDB->nextId(
"style_parameter");
 
 2570                            $st = 
$ilDB->manipulateF(
 
 2571                                "INSERT INTO style_parameter (id, style_id, type, class, tag, parameter, value) " .
 
 2572                                " VALUES (%s,%s,%s,%s,%s,%s,%s)",
 
 2573                                array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text", 
"text"),
 
 2574                                array($spid, 
$id, $cs[
"type"], $cs[
"class"], $cs[
"tag"],
 
 2575                                $par_node->getAttribute(
"Name"), $par_node->getAttribute(
"Value"))
 
 2585            reset($core_images);
 
 2586            foreach ($core_images as $cim) {
 
 2587                if (!is_file($imdir . 
"/" . $cim)) {
 
 2588                    copy($core_dir . 
"/" . $cim, $imdir . 
"/" . $cim);
 
 2613        $st = 
$ilDB->prepareManip(
"UPDATE style_char SET type = ? WHERE characteristic = ?" .
 
 2614            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2615        $ilDB->execute($st, array(
"media_cont", 
"Media", $this->
getId()));
 
 2616        $ilDB->execute($st, array(
"media_caption", 
"MediaCaption", $this->
getId()));
 
 2617        $ilDB->execute($st, array(
"page_fn", 
"Footnote", $this->
getId()));
 
 2618        $ilDB->execute($st, array(
"page_nav", 
"LMNavigation", $this->
getId()));
 
 2619        $ilDB->execute($st, array(
"page_title", 
"PageTitle", $this->
getId()));
 
 2620        $ilDB->execute($st, array(
"page_cont", 
"Page", $this->
getId()));
 
 2623        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET type = ? WHERE class = ?" .
 
 2624            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2625        $ilDB->execute($st, array(
"media_cont", 
"Media", $this->
getId()));
 
 2626        $ilDB->execute($st, array(
"media_caption", 
"MediaCaption", $this->
getId()));
 
 2627        $ilDB->execute($st, array(
"page_fn", 
"Footnote", $this->
getId()));
 
 2628        $ilDB->execute($st, array(
"page_nav", 
"LMNavigation", $this->
getId()));
 
 2629        $ilDB->execute($st, array(
"page_title", 
"PageTitle", $this->
getId()));
 
 2630        $ilDB->execute($st, array(
"table", 
"Page", $this->
getId()));
 
 2632        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET tag = ? WHERE class = ?" .
 
 2633            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2634        $ilDB->execute($st, array(
"div", 
"MediaCaption", $this->
getId()));
 
 2637        $st = 
$ilDB->prepareManip(
"UPDATE style_char SET characteristic = ? WHERE characteristic = ?" .
 
 2638            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2639        $ilDB->execute($st, array(
"MediaContainer", 
"Media", $this->
getId()));
 
 2640        $ilDB->execute($st, array(
"PageContainer", 
"Page", $this->
getId()));
 
 2643        $st = 
$ilDB->prepareManip(
"UPDATE style_parameter SET class = ? WHERE class = ?" .
 
 2644            " AND style_id = ? ", array(
"text", 
"text", 
"integer"));
 
 2645        $ilDB->execute($st, array(
"MediaContainer", 
"Media", $this->
getId()));
 
 2646        $ilDB->execute($st, array(
"PageContainer", 
"Page", $this->
getId()));
 
 2649        $st = 
$ilDB->prepareManip(
"DELETE FROM style_char WHERE type = ?" .
 
 2650            " AND style_id = ? ", array(
"text", 
"integer"));
 
 2651        $ilDB->execute($st, array(
"page_cont", $this->
getId()));
 
 2652        $st = 
$ilDB->prepareManip(
"DELETE FROM style_parameter WHERE type = ?" .
 
 2653            " AND style_id = ? ", array(
"text", 
"integer"));
 
 2654        $ilDB->execute($st, array(
"page_cont", $this->
getId()));
 
 2669            $add_str = 
" AND style_id = " . 
$ilDB->quote($a_id, 
"integer");
 
 2672        $set = 
$ilDB->query($q = 
"SELECT DISTINCT style_id, tag, class FROM style_parameter WHERE " .
 
 2673            $ilDB->equals(
"type", 
"", 
"text", 
true) . 
" " . $add_str);
 
 2675        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2678            switch ($rec[
"tag"]) {
 
 2681                    if (in_array($rec[
"class"], array(
"Headline3", 
"Headline1",
 
 2682                        "Headline2", 
"TableContent", 
"List", 
"Standard", 
"Remark",
 
 2683                        "Additional", 
"Mnemonic", 
"Citation", 
"Example"))) {
 
 2684                        $types[] = 
"text_block";
 
 2686                    if (in_array($rec[
"class"], array(
"Block", 
"Remark",
 
 2687                        "Additional", 
"Mnemonic", 
"Example", 
"Excursus", 
"Special"))) {
 
 2688                        $types[] = 
"section";
 
 2690                    if (in_array($rec[
"class"], array(
"Page", 
"Footnote", 
"PageTitle", 
"LMNavigation"))) {
 
 2696                    $types[] = 
"table_cell";
 
 2700                    if (in_array($rec[
"class"], array(
"ExtLink", 
"IntLink", 
"FootnoteLink"))) {
 
 2706                    $types[] = 
"text_inline";
 
 2715            foreach ($types as 
$t) {
 
 2717                $set4 = 
$ilDB->queryF(
 
 2718                    "SELECT * FROM style_char " .
 
 2719                    " WHERE style_id = %s AND type = %s AND characteristic = %s",
 
 2720                    array(
"integer", 
"text", 
"text"),
 
 2721                    array($rec[
"style_id"], 
$t, $rec[
"class"])
 
 2723                if ($rec4 = 
$ilDB->fetchAssoc($set4)) {
 
 2728                        "INSERT INTO style_char " .
 
 2729                        " (style_id, type, characteristic) VALUES " .
 
 2731                        array(
"integer", 
"text", 
"text"),
 
 2732                        array($rec[
"style_id"], 
$t, $rec[
"class"])
 
 2738            if ($rec[
"type"] == 
"") {
 
 2739                if (count($types) > 0) {
 
 2741                        "UPDATE style_parameter SET type = %s " .
 
 2742                        " WHERE style_id = %s AND class = %s AND " . 
$ilDB->equals(
"type", 
"", 
"text", 
true),
 
 2743                        array(
"text", 
"integer", 
"text"),
 
 2744                        array($types[0], $rec[
"style_id"], $rec[
"class"])
 
 2749                    if ($types[0] == 
"link") {
 
 2751                            "UPDATE style_parameter SET type = %s " .
 
 2752                            " WHERE style_id = %s AND (class = %s OR class = %s) AND " . 
$ilDB->equals(
"type", 
"", 
"text", 
true),
 
 2753                            array(
"text", 
"integer", 
"text", 
"text"),
 
 2754                            array($types[0], $rec[
"style_id"], $rec[
"class"] . 
":visited",
 
 2755                            $rec[
"class"] . 
":hover")
 
 2760                if (count($types) == 2) {
 
 2763                    $set2 = 
$ilDB->queryF(
 
 2764                        "SELECT * FROM style_parameter " .
 
 2765                        " WHERE style_id = %s AND class = %s AND type = %s",
 
 2766                        array(
"integer", 
"text", 
"text"),
 
 2767                        array($rec[
"style_id"], $rec[
"class"], $types[0])
 
 2769                    while ($rec2 = 
$ilDB->fetchAssoc($set2)) {
 
 2771                        $set3 = 
$ilDB->queryF(
 
 2772                            "SELECT * FROM style_parameter " .
 
 2773                            " WHERE style_id = %s AND tag = %s AND class = %s AND type = %s AND parameter = %s",
 
 2774                            array(
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2775                            array($rec[
"style_id"], $rec[
"tag"], $rec[
"class"], $types[1], $rec[
"parameter"])
 
 2777                        if ($rec3 = 
$ilDB->fetchAssoc($set3)) {
 
 2780                            $nid = 
$ilDB->nextId(
"style_parameter");
 
 2782                                "INSERT INTO style_parameter " .
 
 2783                                " (id, style_id, tag, class, parameter, value, type) VALUES " .
 
 2784                                " (%s, %s,%s,%s,%s,%s,%s) ",
 
 2785                                array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text", 
"text"),
 
 2786                                array($nid, $rec2[
"style_id"], $rec2[
"tag"], $rec2[
"class"],
 
 2787                                    $rec2[
"parameter"], $rec2[
"value"], $types[1])
 
 2803        $classes = array(
"Example", 
"Additional", 
"Citation", 
"Mnemonic", 
"Remark");
 
 2804        $pars = array(
"margin-top", 
"margin-bottom");
 
 2806        foreach ($classes as $curr_class) {
 
 2807            foreach ($pars as $curr_par) {
 
 2808                $res2 = 
$ilDB->queryF(
 
 2809                    "SELECT id FROM style_parameter WHERE style_id = %s" .
 
 2810                    " AND tag = %s AND class= %s AND parameter = %s",
 
 2811                    array(
"integer", 
"text", 
"text", 
"text"),
 
 2812                    array($a_id, 
"p", $curr_class, $curr_par)
 
 2814                if ($row2 = 
$ilDB->fetchAssoc($res2)) {
 
 2816                        "UPDATE style_parameter SET value= %s WHERE id = %s",
 
 2817                        array(
"text", 
"integer"),
 
 2818                        array(
"10px", $row2[
"id"])
 
 2821                    $nid = 
$ilDB->nextId(
"style_parameter");
 
 2823                        "INSERT INTO style_parameter " .
 
 2824                        "(id, style_id, tag, class, parameter,value) VALUES (%s,%s,%s,%s,%s,%s)",
 
 2825                        array(
"integer", 
"integer", 
"text", 
"text", 
"text", 
"text"),
 
 2826                        array($nid, $a_id, 
"div", $curr_class, $curr_par, 
"10px")
 
 2833            "UPDATE style_parameter SET tag = %s WHERE tag = %s and style_id = %s",
 
 2834            array(
"text", 
"text", 
"integer"),
 
 2835            array(
"div", 
"p", $a_id)
 
 2850        $set = 
$ilDB->query(
"SELECT * FROM style_color WHERE " .
 
 2851            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 2852            "ORDER BY color_name");
 
 2855        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2857                "name" => $rec[
"color_name"],
 
 2858                "code" => $rec[
"color_code"]
 
 2872        $ilDB->manipulate(
"INSERT INTO style_color (style_id, color_name, color_code)" .
 
 2874            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 2875            $ilDB->quote($a_name, 
"text") . 
"," .
 
 2876            $ilDB->quote($a_code, 
"text") .
 
 2889        $ilDB->manipulate(
"UPDATE style_color SET " .
 
 2890            "color_name = " . 
$ilDB->quote($a_new_name, 
"text") . 
", " .
 
 2891            "color_code = " . 
$ilDB->quote($a_code, 
"text") .
 
 2892            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 2893            " AND color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2897        if ($a_name != $a_new_name) {
 
 2898            $set = 
$ilDB->query(
"SELECT * FROM style_parameter " .
 
 2899                " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 2901                " parameter = " . 
$ilDB->quote(
"background-color", 
"text") . 
" OR " .
 
 2902                " parameter = " . 
$ilDB->quote(
"color", 
"text") . 
" OR " .
 
 2903                " parameter = " . 
$ilDB->quote(
"border-color", 
"text") . 
" OR " .
 
 2904                " parameter = " . 
$ilDB->quote(
"border-top-color", 
"text") . 
" OR " .
 
 2905                " parameter = " . 
$ilDB->quote(
"border-bottom-color", 
"text") . 
" OR " .
 
 2906                " parameter = " . 
$ilDB->quote(
"border-left-color", 
"text") . 
" OR " .
 
 2907                " parameter = " . 
$ilDB->quote(
"border-right-color", 
"text") .
 
 2909            while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2910                if ($rec[
"value"] == 
"!" . $a_name ||
 
 2911                    is_int(strpos($rec[
"value"], 
"!" . $a_name . 
"("))) {
 
 2917                        str_replace($a_name, $a_new_name, $rec[
"value"]),
 
 2934        $ilDB->manipulate(
"DELETE FROM style_color WHERE " .
 
 2935            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2936            " color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2946        $set = 
$ilDB->query(
"SELECT * FROM style_color WHERE " .
 
 2947            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2948            "color_name = " . 
$ilDB->quote($a_color_name, 
"text"));
 
 2949        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2962        $pos = strpos($a_name, 
"(");
 
 2964            $a_i = substr($a_name, $pos + 1);
 
 2965            $a_i = str_replace(
")", 
"", $a_i);
 
 2966            $a_name = substr($a_name, 0, $pos);
 
 2969        $set = 
$ilDB->query(
"SELECT color_code FROM style_color WHERE " .
 
 2970            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 2971            " color_name = " . 
$ilDB->quote($a_name, 
"text"));
 
 2972        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 2974                return "#" . $rec[
"color_code"];
 
 2993            $hls[
"l"] = $hls[
"l"] + ((255 - $hls[
"l"]) * ($a_i / 100));
 
 2996            $hls[
"l"] = $hls[
"l"] - (($hls[
"l"]) * (-$a_i / 100));
 
 3001        foreach ($rgb as $k => $v) {
 
 3002            $rgb[$k] = str_pad(dechex($v), 2, 
"0", STR_PAD_LEFT);
 
 3005        return $rgb[
"r"] . $rgb[
"g"] . $rgb[
"b"];
 
 3013        $r[
"r"] = substr($a_rgb, 0, 2);
 
 3014        $r[
"g"] = substr($a_rgb, 2, 2);
 
 3015        $r[
"b"] = substr($a_rgb, 4, 2);
 
 3018            $r[
"r"] = (int) hexdec(
$r[
"r"]);
 
 3019            $r[
"g"] = (int) hexdec(
$r[
"g"]);
 
 3020            $r[
"b"] = (int) hexdec(
$r[
"b"]);
 
 3031        $r = $a_rgb[
"r"] / 255;
 
 3032        $g = $a_rgb[
"g"] / 255;
 
 3033        $b = $a_rgb[
"b"] / 255;
 
 3036        $max = max(
$r, $g, $b);
 
 3037        $min = min(
$r, $g, $b);
 
 3040        $l = ($max + $min) / 2;
 
 3047                $s = ($max - $min) / ($max + $min);
 
 3049                $s = ($max - $min) / (2.0 - $max - $min);
 
 3053                $h  = ($g - $b) / ($max - $min);
 
 3054            } elseif ($g == $max) {
 
 3055                $h = 2.0 + ($b - 
$r) / ($max - $min);
 
 3056            } elseif ($b == $max) {
 
 3057                $h = 4.0 + (
$r - $g) / ($max - $min);
 
 3061        $hls[
"h"] = round((
$h / 6) * 255);
 
 3062        $hls[
"l"] = round(
$l * 255);
 
 3063        $hls[
"s"] = round(
$s * 255);
 
 3073        $h = $a_hls[
"h"] / 255;
 
 3074        $l = $a_hls[
"l"] / 255;
 
 3075        $s = $a_hls[
"s"] / 255;
 
 3077        $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 0;
 
 3081            $rgb[
"r"] = $rgb[
"g"] = $rgb[
"b"] = 
$l;
 
 3084                $temp2 = 
$l * (1.0 + 
$s);
 
 3089            $temp1 = 2.0 * 
$l - $temp2;
 
 3092            # For each of R, G, B, compute another temporary value, temp3, as follows: 
 3093            foreach ($rgb as $k => $v) {
 
 3096                        $temp3 = 
$h + 1.0 / 3.0;
 
 3104                        $temp3 = 
$h - 1.0/3.0;
 
 3108                    $temp3 = $temp3 + 1.0;
 
 3111                    $temp3 = $temp3 - 1.0;
 
 3114                if (6.0 * $temp3 < 1) {
 
 3115                    $rgb[$k] = $temp1 + ($temp2 - $temp1) * 6.0 * $temp3;
 
 3116                } elseif (2.0 * $temp3 < 1) {
 
 3118                } elseif (3.0 * $temp3 < 2) {
 
 3119                    $rgb[$k] = $temp1 + ($temp2 - $temp1) * ((2.0/3.0) - $temp3) * 6.0;
 
 3126        $rgb[
"r"] = round($rgb[
"r"] * 255);
 
 3127        $rgb[
"g"] = round($rgb[
"g"] * 255);
 
 3128        $rgb[
"b"] = round($rgb[
"b"] * 255);
 
 3148        $set = 
$ilDB->query(
"SELECT * FROM sty_media_query WHERE " .
 
 3149            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 3150            "ORDER BY order_nr");
 
 3153        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3168        $id = 
$ilDB->nextId(
"sty_media_query");
 
 3169        if ($order_nr == 0) {
 
 3173        $ilDB->manipulate(
"INSERT INTO sty_media_query (id, style_id, mquery, order_nr)" .
 
 3175            $ilDB->quote(
$id, 
"integer") . 
"," .
 
 3176            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3177            $ilDB->quote($a_mquery, 
"text") . 
"," .
 
 3178            $ilDB->quote($order_nr, 
"integer") .
 
 3192        $set = 
$ilDB->query(
 
 3193            "SELECT max(order_nr) mnr FROM sty_media_query " .
 
 3194            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer")
 
 3196        $rec = 
$ilDB->fetchAssoc($set);
 
 3198        return (
int) $rec[
"mnr"];
 
 3212            "UPDATE sty_media_query SET " .
 
 3213            " mquery = " . 
$ilDB->quote($a_mquery, 
"text") .
 
 3214            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3228        $set = 
$ilDB->query(
 
 3229            "SELECT * FROM sty_media_query " .
 
 3230            " WHERE id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3232        return $ilDB->fetchAssoc($set);
 
 3245            "DELETE FROM sty_media_query WHERE " .
 
 3246            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3247            " AND id = " . 
$ilDB->quote($a_id, 
"integer")
 
 3262        if (is_array($a_order_nr)) {
 
 3263            foreach ($mqueries as $k => $mq) {
 
 3264                $mqueries[$k][
"order_nr"] = $a_order_nr[$mq[
"id"]];
 
 3269        foreach ($mqueries as $mq) {
 
 3271                "UPDATE sty_media_query SET " .
 
 3272                " order_nr = " . 
$ilDB->quote($cnt, 
"integer") .
 
 3273                " WHERE id = " . 
$ilDB->quote($mq[
"id"], 
"integer")
 
 3291        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3292            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3297        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3311        $set = 
$ilDB->query(
"SELECT * FROM style_template_class WHERE " .
 
 3312            "template_id = " . 
$ilDB->quote($a_tid, 
"integer"));
 
 3315        while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3316            $key = $rec[
"class_type"];
 
 3317            $class[
$key] = $rec[
"class"];
 
 3331        $tid = 
$ilDB->nextId(
"style_template");
 
 3332        $ilDB->manipulate($q = 
"INSERT INTO style_template " .
 
 3333            "(id, style_id, name, temp_type)" .
 
 3335            $ilDB->quote($tid, 
"integer") . 
"," .
 
 3336            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3337            $ilDB->quote($a_name, 
"text") . 
"," .
 
 3341        foreach ($a_classes as 
$t => $c) {
 
 3342            $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3343                "(template_id, class_type, class)" .
 
 3345                $ilDB->quote($tid, 
"integer") . 
"," .
 
 3346                $ilDB->quote(
$t, 
"text") . 
"," .
 
 3347                $ilDB->quote($c, 
"text") .
 
 3351        include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheetGUI.php");
 
 3367        $ilDB->manipulate(
"UPDATE style_template SET " .
 
 3368            "name = " . 
$ilDB->quote($a_name, 
"text") .
 
 3369            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3372            "DELETE FROM style_template_class WHERE " .
 
 3373            "template_id = " . 
$ilDB->quote($a_t_id, 
"integer")
 
 3375        foreach ($a_classes as 
$t => $c) {
 
 3376            $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3377                "(template_id, class_type, class)" .
 
 3379                $ilDB->quote($a_t_id, 
"integer") . 
"," .
 
 3380                $ilDB->quote(
$t, 
"text") . 
"," .
 
 3381                $ilDB->quote($c, 
"text") .
 
 3393        $ilDB->manipulate($q = 
"INSERT INTO style_template_class " .
 
 3394            "(template_id, class_type, class)" .
 
 3396            $ilDB->quote($a_t_id, 
"integer") . 
"," .
 
 3398            $ilDB->quote($a_class, 
"text") .
 
 3410        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3411            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3412            "name = " . 
$ilDB->quote($a_template_name, 
"text"));
 
 3413        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3426        $set = 
$ilDB->query(
"SELECT * FROM style_template WHERE " .
 
 3427            "style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" " .
 
 3428            " AND id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3430        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3456        $set = 
$ilDB->query(
"SELECT name FROM style_template WHERE " .
 
 3457            " id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3459        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3460            return $rec[
"name"];
 
 3473        $tag = 
"<StyleTemplates>";
 
 3475        $ttypes = array(
"table", 
"vaccordion", 
"haccordion", 
"carousel");
 
 3477        foreach ($ttypes as $ttype) {
 
 3480            foreach ($ts as 
$t) {
 
 3494                $tag.= 
'<StyleTemplate Name="' . 
$t[
"name"] . 
'">';
 
 3496                foreach ($atts as 
$type => 
$t) {
 
 3497                    if ($c[
$type] != 
"") {
 
 3498                        $tag.= 
'<StyleClass Type="' . 
$type . 
'" Value="' . $c[
$type] . 
'" />';
 
 3502                $tag.= 
"</StyleTemplate>";
 
 3506        $tag.= 
"</StyleTemplates>";
 
 3518        $a_preview_html = str_replace(
' width=""', 
"", $a_preview_html);
 
 3519        $a_preview_html = str_replace(
' valign="top"', 
"", $a_preview_html);
 
 3520        $a_preview_html = str_replace(
'<div class="ilc_text_block_TableContent">', 
"<div>", $a_preview_html);
 
 3523        if (strlen($a_preview_html) > 4000) {
 
 3525            $a_preview_html = 
"";
 
 3527        $ilDB->manipulate(
"UPDATE style_template SET " .
 
 3528            "preview = " . 
$ilDB->quote($a_preview_html, 
"text") .
 
 3529            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3539        $set = 
$ilDB->query(
"SELECT preview FROM style_template " .
 
 3540            " WHERE id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3541        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3542            return $rec[
"preview"];
 
 3557        $set = 
$ilDB->query(
"SELECT id FROM style_template " .
 
 3558            " WHERE style_id = " . 
$ilDB->quote($a_style_id, 
"integer") .
 
 3559            " AND name = " . 
$ilDB->quote($a_name, 
"text"));
 
 3560        if ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3574        $ilDB->manipulate(
"DELETE FROM style_template WHERE " .
 
 3575            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") . 
" AND " .
 
 3576            " id = " . 
$ilDB->quote($a_t_id, 
"integer"));
 
 3579            "DELETE FROM style_template_class WHERE " .
 
 3580            "template_id = " . 
$ilDB->quote($a_t_id, 
"integer")
 
 3592            "DELETE FROM style_setting WHERE " .
 
 3593            " style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3594            " AND name = " . 
$ilDB->quote($a_name, 
"text")
 
 3597        $ilDB->manipulate(
"INSERT INTO style_setting " .
 
 3598            "(style_id, name, value) VALUES (" .
 
 3599            $ilDB->quote($this->getId(), 
"integer") . 
"," .
 
 3600            $ilDB->quote($a_name, 
"text") . 
"," .
 
 3601            $ilDB->quote($a_value, 
"text") .
 
 3612        $set = 
$ilDB->query(
 
 3613            "SELECT value FROM style_setting " .
 
 3614            " WHERE style_id = " . 
$ilDB->quote($this->getId(), 
"integer") .
 
 3615            " AND name = " . 
$ilDB->quote($a_name, 
"text")
 
 3617        $rec  = 
$ilDB->fetchAssoc($set);
 
 3619        return $rec[
"value"];
 
 3634            "obj_id" => array(
"integer", (
int) $a_obj_id)),
 
 3636                "style_id" => array(
"integer", (
int) $a_style_id))
 
 3649        $set = 
$ilDB->query(
 
 3650            "SELECT style_id FROM style_usage " .
 
 3651            " WHERE obj_id = " . 
$ilDB->quote($a_obj_id, 
"integer")
 
 3653        $rec  = 
$ilDB->fetchAssoc($set);
 
 3656            return (
int) $rec[
"style_id"];
 
 3673            $set = 
$ilDB->query(
 
 3674                "SELECT DISTINCT obj_id FROM style_usage " .
 
 3675                " WHERE style_id = " . 
$ilDB->quote($a_style_id, 
"integer")
 
 3678            while ($rec = 
$ilDB->fetchAssoc($set)) {
 
 3679                $obj_ids[] = $rec[
"obj_id"];
 
An exception for terminatinating execution or to throw for unit testing.
static _lookupContObjIdByStyleId($a_style_id)
lookup style sheet ID
static _deleteStyleAssignments($a_style_id)
delete all style references to style
static _getTemplatePreview($a_style, $a_type, $a_t_id, $a_small_mode=false)
Get table template preview.
determineTemplateStyleClassType($t, $k)
setExportSubDir($a_dir)
Set local directory, that will be included within the zip file.
static _lookupActive($a_id)
Lookup active flag.
static _lookupStandard($a_id)
Lookup standard flag.
getMediaQueries()
Get colors of style.
getMaxMQueryOrderNr()
Get maximum media query order nr.
export()
Create export file.
getRefId()
Get ref id (show error message, since styles do not use ref ids)
static _getStyleParameterInputType($par)
updateTemplate($a_t_id, $a_name, $a_classes)
Update table template.
static getContentPrintStyle()
get content print style
addMediaQuery($a_mquery, $order_nr=0)
Add media query.
getColorCodeForName($a_name)
Remove a color.
deleteMediaQuery($a_id)
Delete media query.
do_3_9_Migration($a_id)
Migrate old 3.9 styles.
getCharacteristics($a_type="", $a_no_hidden=false, $a_include_core=true)
Get characteristics.
writeTemplatePreview($a_t_id, $a_preview_html)
Write table template preview.
read()
read style properties
static _getTemplateClassTypes($a_template_type="")
Get template class types.
deleteStylePar($a_tag, $a_class, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
Delete style parameter by tag/class/parameter.
static _getClonableContentStyles()
Get all clonable styles (active standard styles and individual learning module styles with write perm...
addColor($a_name, $a_code)
Add color.
static _getFilteredGroups()
createReference()
Create a reference (show error message, since styles do not use ref ids)
static _lookupUpToDate($a_id)
Looup up to date.
static _replaceStylePar($style_id, $a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id=0, $a_custom=false)
createExportDirectory()
Create export directory.
update()
update object in db
static _getStyleParameters($a_tag="")
putInTree($a_parent_ref)
Put in tree (show error message, since styles do not use ref ids)
static _HLSToRGB($a_hls)
HLS to RGB (both arrays, 0..255)
getParametersOfClass($a_type, $a_class, $a_mq_id=0)
Get parameters of class.
updateStyleParameter($a_id, $a_value)
update style parameter per id
uploadImage($a_file)
Upload image.
copyImagesToDir($a_target)
Copy images to directory.
createFromXMLFile($a_file, $a_skip_parent_create=false)
create style from xml file todo: add mq_id and custom
static lookupObjectForStyle($a_style_id)
Lookup object style.
characteristicExists($a_char, $a_style_type)
Check whether characteristic exists.
saveMediaQueryOrder($a_order_nr=null)
Save media query order.
addCharacteristic($a_type, $a_char, $a_hidden=false)
Add characteristic.
lookupTemplateName($a_t_id)
Lookup table template name for template ID.
getImagesDirectory()
Get images directory.
addTemplateClass($a_t_id, $a_type, $a_class)
Update table template.
getTemplates($a_type)
Get table templates of style.
removeColor($a_name)
Remove a color.
do_3_10_CharMigration($a_id="")
This is more or less a copy of Services/Migration/DBUpdate_1385/classes ilStyleMigration->addMissingS...
static getAvailableParameters()
Get available parameters.
updateMediaQuery($a_id, $a_mquery)
Update media query.
ilClone()
clone style sheet (note: styles have no ref ids and return an object id)
static _writeStandard($a_id, $a_std)
Write standard flag.
exportXML($a_dir)
export style xml file to directory
static _isExpandable($a_type)
setStyle($a_style)
set styles
cleanExportDirectory()
Clear export directory.
static lookupObjectStyle($a_obj_id)
Lookup object style.
handleXmlString($a_str)
Handle xml strin.
__construct($a_id=0, $a_call_by_reference=false)
Constructor @access public.
deleteCustomStylePars($a_tag, $a_class, $a_type, $a_mq_id=0)
Delete style parameter by tag/class/parameter.
& getMetaData()
get meta data object
addParameter($a_tag, $a_par, $a_type, $a_mq_id=0, $a_custom=false)
write style parameter to db
static _getColorFlavor($a_rgb, $a_i)
Get color flavor.
replaceStylePar($a_tag, $a_class, $a_par, $a_val, $a_type, $a_mq_id=0, $a_custom=false)
Set style parameter per tag/class/parameter.
static _getStyleParameterNumericUnits($a_no_percentage=false)
static _createImagesDirectory($a_style_id)
Create images directory <data_dir>/sty/sty_<id>/images.
deleteParameter($a_id)
delete style parameter
getTemplateXML()
Get table template xml.
setRefId($a_ref_id)
Set ref id (show error message, since styles do not use ref ids)
setCharacteristics($a_chars)
Set characteristics.
static _getPseudoClasses($tag)
saveHideStatus($a_type, $a_char, $a_hide)
Save characteristic hide status.
writeStyleSetting($a_name, $a_value)
Write Style Setting.
static _addMissingStyleClassesToStyle($a_id)
Add missing style classes to all styles.
static _RGBToHLS($a_rgb)
RGB to HLS (both arrays, 0..255)
static _isHideable($a_type)
getStyleParameterGroups()
Get grouped parameter.
lookupStyleSetting($a_name)
Lookup style setting.
getThumbnailsDirectory()
Get thumbnails directory.
getTemplateClasses($a_tid)
Get template classes.
getHideStatus($a_type, $a_char)
Get characteristic hide status.
lookupTemplatePreview($a_t_id)
Lookup table template preview.
create($a_from_style=0, $a_import_mode=false)
Create a new style.
static _getStyleParameterSubPar($par)
writeCSSFile($a_target_file="", $a_image_dir="")
write css file to webspace directory
static getSyntaxStylePath()
get syntax style path
colorExists($a_color_name)
Check whether color exists.
static _determineTag($a_type)
getUpToDate()
Get up to date.
removeTemplate($a_t_id)
Remove table template.
getExportSubDir()
The local directory, that will be included within the zip file.
getStyle()
todo: bad style! should return array of objects, not multi-dim-arrays
static _lookupTemplateIdByName($a_style_id, $a_name)
Lookup table template preview.
static _writeActive($a_id, $a_active)
Write active flag.
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)
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file
foreach($_POST as $key=> $value) $res