_xml; } /** * Singleton, return instance of class * * @access public * @return CreateText * @static */ public static function getInstance() { if (self::$_instance == NULL) { self::$_instance = new CreateText(); } return self::$_instance; } /** * Create text * * @access public * @param mixed $args[0] * @param array $args[1] */ public function createText() { $this->_xml = ''; $args = func_get_args(); $this->generateP(); $this->generatePPR(); if (!empty($args[1]['pStyle'])) { $this->generatePSTYLE($args[1]['pStyle']); } if (!empty($args[1]['keepNext'])) { $this->generateKEEPNEXT($args[1]['keepNext']); } if (!empty($args[1]['keepLines'])) { $this->generateKEEPLINES($args[1]['keepLines']); } if (!empty($args[1]['jc'])) { $this->generateJC($args[1]['jc']); } if (!empty($args[1]['pageBreakBefore'])) { $this->generatePAGEBREAKBEFORE($args[1]['pageBreakBefore']); } if (!empty($args[1]['widowControl'])) { $this->generateWIDOWCONTROL($args[1]['widowControl']); } if (!empty($args[1]['tabPositions']) && is_array($args[1]['tabPositions'])) { $this->generateTABPOSITIONS($args[1]['tabPositions']); } if (!empty($args[1]['wordWrap'])) { $this->generateWORDWRAP($args[1]['wordWrap']); } if (!empty($args[1]['lineSpacing']) || !empty($args[1]['spacingTop']) || !empty($args[1]['spacingBottom'])) { if(empty($args[1]['lineSpacing'])){ $args[1]['lineSpacing'] = 240; } if(empty($args[1]['spacingTop'])){ $args[1]['spacingTop'] = ''; } if(empty($args[1]['spacingBottom'])){ $args[1]['spacingBottom'] = ''; } $this->generateSPACING($args[1]['lineSpacing'], $args[1]['spacingTop'], $args[1]['spacingBottom']); } if ( !empty($args[1]['indent_left']) || !empty($args[1]['indent_right']) ) { if (!!empty($args[1]['indent_left'])) { $args[1]['indent_left'] = ''; } if (!!empty($args[1]['indent_right'])) { $args[1]['indent_right'] = ''; } $this->generateINDENT($args[1]['indent_left'], $args[1]['indent_right']); } if (!empty($args[1]['contextualSpacing'])) { $this->generateCONTEXTUALSPACING($args[1]['contextualSpacing']); } if (!empty($args[1]['textDirection'])) { $this->generateTEXTDIRECTION($args[1]['textDirection']); } if (!empty($args[1]['headingLevel'])) { $this->generateHEADINGLEVEL($args[1]['headingLevel']); } //We include now paragraph wide run properties $this->generatePPRRPR(); if (!empty($args[1]['rStyle'])) { $this->generateRSTYLE($args[1]['rStyle']); } if (!empty($args[1]['font'])) { $this->generateRFONTS($args[1]['font']); } if (!empty($args[1]['b'])) { $this->generateB($args[1]['b']); } if (!empty($args[1]['i'])) { $this->generateI($args[1]['i']); } if (!empty($args[1]['caps'])) { $this->generateCAPS($args[1]['caps']); } if (!empty($args[1]['color'])) { $this->generateCOLOR($args[1]['color']); } if (!empty($args[1]['sz'])) { $this->generateSZ($args[1]['sz']); } if (!empty($args[1]['u'])) { $this->generateU($args[1]['u']); } if (!empty($args[1]['tab']) && $args[1]['tab']) { $this->generateTABS(); } $this->cleanTemplateFirstRPR(); $this->generateR(); $this->generateRPR(); if (!empty($args[1]['rStyle'])) { $this->generateRSTYLE($args[1]['rStyle']); } if (!empty($args[1]['font'])) { $this->generateRFONTS($args[1]['font']); } if (!empty($args[1]['b'])) { $this->generateB($args[1]['b']); } if (!empty($args[1]['i'])) { $this->generateI($args[1]['i']); } if (!empty($args[1]['caps'])) { $this->generateCAPS($args[1]['caps']); } if (!empty($args[1]['color'])) { $this->generateCOLOR($args[1]['color']); } if (!empty($args[1]['sz'])) { $this->generateSZ($args[1]['sz']); } if (!empty($args[1]['u'])) { $this->generateU($args[1]['u']); } if (!empty($args[1]['tab']) && $args[1]['tab']) { $this->generateTABS(); } if (empty($args[1]['spaces'])) { $args[1]['spaces'] = ''; } if (!isset($args[1]['lineBreak'])) { $args[1]['lineBreak'] = false; } if (!isset($args[1]['columnBreak'])) { $args[1]['columnBreak'] = false; $this->generateT($args[0], $args[1]['spaces'], $args[1]['lineBreak'], $args[1]['columnBreak']); $this->cleanTemplateFirstRPR(); } } /** * Init text * * @access public * @param array $args[0] */ public function initText() { $args = func_get_args(); $this->_embeddedText = $args[0]; } /** * Generate w:bookmarkend * * @access protected * @param int $id */ protected function generateBOOKMARKEND($id) { $this->_xml = str_replace( '__GENERATEBOOKMARKEND__', '<' . CreateElement::NAMESPACEWORD . ':bookmarkEnd ' . CreateElement::NAMESPACEWORD . ':id="' . $id . '">', $this->_xml ); } /** * Generate w:bookmarkstart * * @access protected * @param int $id * @param string $name */ protected function generateBOOKMARKSTART($id, $name) { $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':bookmarkStart ' . CreateElement::NAMESPACEWORD . ':id="' . $id . '" ' . CreateElement::NAMESPACEWORD . ':name="' . $name . '">__GENERATER____GENERATEBOOKMARKEND__', $this->_xml ); } /** * Generate w:color * * @access protected * @param string $val */ protected function generateCOLOR($val = '000000') { $this->_xml = str_replace( '__GENERATERPR__', '<' . CreateElement::NAMESPACEWORD . ':color ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATERPR__', $this->_xml ); } /** * Generate w:contextualSpacing * * @access protected * @param string $val */ protected function generateCONTEXTUALSPACING($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':contextualSpacing w:val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:caps * * @access protected * @param string $val */ protected function generateCAPS($val = 'on') { $this->_xml = str_replace( '__GENERATERPR__', '<' . CreateElement::NAMESPACEWORD . ':caps ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATERPR__', $this->_xml ); } /** * Generate w:outlineLvl * * @access protected * @param string $val */ protected function generateHEADINGLEVEL($val) { if(is_integer($val) && $val > 0){ $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':outlineLvl w:val="' . $val . '">__GENERATEPPR__', $this->_xml ); } } /** * Generate w:i * * @access protected * @param string $val */ protected function generateI($val = 'single') { $this->_xml = str_replace( '__GENERATERPR__', '<' . CreateElement::NAMESPACEWORD . ':i ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATERPR__', $this->_xml ); } /** * Generate w:ind * * @access protected * @param string $val */ protected function generateINDENT($indent_left = 0, $indent_right = 0) { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':ind ' . CreateElement::NAMESPACEWORD . ':left="' . $indent_left . '" ' . CreateElement::NAMESPACEWORD . ':right="' . $indent_right . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:keepLines * * @access protected * @param string $val */ protected function generateKEEPLINES($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':keepLines w:val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:keepNext * * @access protected * @param string $val */ protected function generateKEEPNEXT($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':keepNext w:val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:jc * * @access protected * @param string $val */ protected function generateJC($val = '') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':jc ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:pagebreakbefore * * @access protected * @param string $val */ protected function generatePAGEBREAKBEFORE($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':pageBreakBefore val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:ppr * * @access protected */ protected function generatePPR() { $xml = '<' . CreateElement::NAMESPACEWORD . ':pPr>__GENERATEPPR____GENERATER__'; $this->_xml = str_replace('__GENERATEP__', $xml, $this->_xml); } /** * Generate w:rPr within a w:pPr tag * * @access protected */ protected function generatePPRRPR() { /*$xml = '<' . CreateElement::NAMESPACEWORD . ':rPr>__GENERATERPR____GENERATER__'; $this->_xml = str_replace('__GENERATER__', $xml, $this->_xml);*/ $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':rPr >__GENERATERPR____GENERATEPPR__', $this->_xml ); } /** * Generate w:pstyle * * @access protected * @param string $val */ protected function generatePSTYLE($val = 'TitlePHPDOCX') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':pStyle ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:spacing * * @access protected */ protected function generateSPACING($line = '240', $spacingTop, $spacingBottom) { $xml = '<' . CreateElement::NAMESPACEWORD . ':spacing '; if(!empty($spacingTop)){ $xml .= CreateElement::NAMESPACEWORD . ':before="' . (int) $spacingTop . '" '; } if(!empty($spacingBottom)){ $xml .= CreateElement::NAMESPACEWORD . ':after="' . (int) $spacingBottom . '" '; } $xml .= CreateElement::NAMESPACEWORD . ':line="' . $line . '" ' . CreateElement::NAMESPACEWORD . ':lineRule="auto"/>__GENERATEPPR__'; $this->_xml = str_replace('__GENERATEPPR__', $xml, $this->_xml); } /** * Generate w:sz * * @access protected * @param string $val */ protected function generateSZ($val = '11') { $val *= 2; $this->_xml = str_replace( '__GENERATERPR__', '<' . CreateElement::NAMESPACEWORD . ':sz ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATERPR__', $this->_xml ); } /** * Generate w:t * * @access protected * @param string $dat * @param int $spaces * @param string $lineBreak * @param string $columnBreak */ protected function generateT($dat, $spaces = 0, $lineBreak = false, $columnBreak = false) { $strSpaces = ''; if ($spaces) { $i = 0; while ($i < $spaces) { $strSpaces .= ' '; $i++; } } if($lineBreak == 'before'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else if($lineBreak == 'after'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else if($lineBreak == 'both'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else if($columnBreak == 'before'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else if($columnBreak == 'after'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else if($columnBreak == 'both'){ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); }else{ $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':t xml:space="preserve">' . $strSpaces . htmlspecialchars($dat) . '', $this->_xml ); } } /** * Generate w:abs * * @access protected * @param array $tabs */ protected function generateTABPOSITIONS($tabs) { $typesArray = array('clear', 'left', 'center', 'right', 'decimal', 'bar', 'num'); $leaderArray = array('none', 'dot', 'hyphen', 'underscore', 'heavy', 'middleDot'); $xml = ''; foreach($tabs as $key => $tab){ if(isset($tab['type']) && in_array($tab['type'], $typesArray)){ $type = $tab['type']; }else{ $type = 'left'; } if(isset($tab['leader']) && in_array($tab['leader'], $leaderArray)){ $leader = $tab['leader']; }else{ $leader = 'none'; } if(isset($tab['position']) && is_int($tab['position'])){ $xml .=''; } } $xml .=''; $this->_xml = str_replace('__GENERATEPPR__', $xml . '__GENERATEPPR__', $this->_xml); } /** * Generate w:abs * * @access protected */ protected function generateTABS() { $this->_xml = str_replace( '__GENERATER__', '<' . CreateElement::NAMESPACEWORD . ':tab/>__GENERATER__', $this->_xml ); } /** * Generate w:textDirection * * @access protected * @param string $val */ protected function generateTEXTDIRECTION($val = 'lrTb') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':textDirection w:val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:u * * @access protected * @param string $val */ protected function generateU($val = 'single') { $this->_xml = str_replace( '__GENERATERPR__', '<' . CreateElement::NAMESPACEWORD . ':u ' . CreateElement::NAMESPACEWORD . ':val="' . $val . '">__GENERATERPR__', $this->_xml ); } /** * Generate w:widowcontrol * * @access protected * @param string $val */ protected function generateWIDOWCONTROL($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':widowControl val="' . $val . '">__GENERATEPPR__', $this->_xml ); } /** * Generate w:wordwrap * * @access protected * @param string $val */ protected function generateWORDWRAP($val = 'on') { $this->_xml = str_replace( '__GENERATEPPR__', '<' . CreateElement::NAMESPACEWORD . ':wordWrap val="' . $val . '">__GENERATEPPR__', $this->_xml ); } }