/**
  * 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;
 }
Пример #2
0
 /**
  * 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;
 }