@@ -257,6 +257,70 @@ public function cloneRow($search, $numberOfClones)
257257 $ this ->_documentXML = $ result ;
258258 }
259259
260+ /**
261+ * Clone a block
262+ *
263+ * @param mixed $blockname
264+ * @param int $clones
265+ * @param bool $replace
266+ * @return null
267+ */
268+ public function cloneBlock ($ blockname , $ clones = 1 , $ replace = true )
269+ {
270+ $ xmlBlock = null ;
271+ preg_match ('/(<\?xml.*)(<w:p.*>\${ ' .$ blockname .'}<\/w:.*?p>)(.*)(<w:p.*\${\/ ' .$ blockname .'}<\/w:.*?p>)/is ' , $ this ->_documentXML , $ matchs );
272+
273+ if (isset ($ matchs [3 ])) {
274+ $ xmlBlock = $ matchs [3 ];
275+ $ cloned = array ();
276+ for ($ i = 1 ; $ i <= $ clones ; $ i ++) {
277+ $ cloned [] = $ xmlBlock ;
278+ }
279+
280+ if ($ replace ) {
281+ $ this ->_documentXML = str_replace ($ matchs [2 ].$ matchs [3 ].$ matchs [4 ], implode ('' , $ cloned ), $ this ->_documentXML );
282+ }
283+ }
284+ return $ xmlBlock ;
285+ }
286+
287+ /**
288+ * Replace a block
289+ *
290+ * @param mixed $blockname
291+ * @param $replacement
292+ */
293+ public function replaceBlock ($ blockname , $ replacement )
294+ {
295+ $ this ->deleteTemplateBlock ($ blockname , $ replacement );
296+ }
297+
298+ public function xmlpretty ($ xml )
299+ {
300+ $ domxml = new DOMDocument ('1.0 ' );
301+ $ domxml ->preserveWhiteSpace = false ;
302+ $ domxml ->formatOutput = true ;
303+ $ domxml ->loadXML ($ xml );
304+ $ xml_string = $ domxml ->saveXML ();
305+ return $ xml_string ;
306+ }
307+
308+ /**
309+ * Delete a block of text
310+ *
311+ * @param mixed $blockname
312+ * @param string $replacement
313+ */
314+ public function deleteTemplateBlock ($ blockname , $ replacement = '' )
315+ {
316+ $ xmlBlock = null ;
317+ preg_match ('/(<\?xml.*)(<w:p.*>\${ ' .$ blockname .'}<\/w:.*?p>)(.*)(<w:p.*\${\/ ' .$ blockname .'}<\/w:.*?p>)/is ' , $ this ->_documentXML , $ matchs );
318+
319+ if (isset ($ matchs [3 ])) {
320+ $ this ->_documentXML = str_replace ($ matchs [2 ].$ matchs [3 ].$ matchs [4 ], $ replacement , $ this ->_documentXML );
321+ }
322+ }
323+
260324 /**
261325 * Save XML to temporary file
262326 *
0 commit comments