/** * Create new style by importing ODT style definition. * * @param $xmlCode Style definition in ODT XML format * @return ODTStyle New specific style */ public static function importODTStyle($xmlCode) { $style = new ODTPageLayoutStyle(); // Get attributes for element 'style:master-page' $open = XMLUtil::getElementOpenTag('style:page-layout', $xmlCode); if (!empty($open)) { $style->importODTStyleInternal(self::$page_layout_fields, $open, $style->page_layout_style); $childs = XMLUtil::getElementContent('style:page-layout', $xmlCode); if (!empty($childs)) { // Get attributes for element 'style:page-layout-properties' $open = XMLUtil::getElementOpenTag('style:page-layout-properties', $childs); $style->content_header = XMLUtil::getElement('style:header-style', $childs); $style->content_footer = XMLUtil::getElement('style:footer-style', $childs); if (!empty($open)) { $style->importODTStyleInternal(self::$layout_props_fields, $open, $style->layout_props); $childs = XMLUtil::getElementContent('style:page-layout-properties', $xmlCode); if (!empty($childs)) { // Get 'style:background-image' $open = XMLUtil::getElementOpenTag('style:background-image', $childs); if (!empty($open)) { $style->importODTStyleInternal(self::$bgi_fields, $open, $style->bgi_props); $style->content_bgi = XMLUtil::getElementContent('style:background-image', $childs); } // Get 'style:columns' $open = XMLUtil::getElementOpenTag('style:columns', $childs); if (!empty($open)) { $style->importODTStyleInternal(self::$columns_fields, $open, $style->columns_props); $style->content_columns = XMLUtil::getElementContent('style:columns', $childs); } // Get 'style:footnote-sep' $open = XMLUtil::getElementOpenTag('style:footnote-sep', $childs); if (!empty($open)) { $style->importODTStyleInternal(self::$footnote_fields, $open, $style->footnote_props); } } } } } return $style; }
/** * Create new style by importing ODT style definition. * * @param $xmlCode Style definition in ODT XML format * @return ODTStyle New specific style */ public static function importODTStyle($xmlCode) { $matches = array(); $pattern = '/<(\\w)+[^\\s\\/>]+/'; if (preg_match($pattern, $xmlCode, $matches) !== 1) { return NULL; } $element = trim($matches[0], '"<>'); $style = NULL; switch ($element) { case 'style:style': case 'style:default-style': $style = ODTStyleStyle::importODTStyle($xmlCode); break; case 'text:outline-style': $style = ODTTextOutlineStyle::importODTStyle($xmlCode); break; case 'text:list-style': $style = ODTTextListStyle::importODTStyle($xmlCode); break; case 'style:master-page': $style = ODTMasterPageStyle::importODTStyle($xmlCode); break; case 'style:page-layout': $style = ODTPageLayoutStyle::importODTStyle($xmlCode); break; default: break; } if ($style != NULL) { return $style; } // Unknown/not implemented style. // Create generic style which can not be changed. $unknown = ODTUnknownStyle::importODTStyle($xmlCode); $unknown->setElementName($element); return $unknown; }