Tinebase_Export_Doc - fix block match / replace regex
authorPaul Mehrer <p.mehrer@metaways.de>
Tue, 8 Aug 2017 15:46:47 +0000 (17:46 +0200)
committerPaul Mehrer <p.mehrer@metaways.de>
Wed, 9 Aug 2017 12:37:24 +0000 (14:37 +0200)
Addressbook_Frontend_Http - accept empty filter

Change-Id: I600beab198789d6455ac09ba5bf3d51e75eaa392
Reviewed-on: http://gerrit.tine20.com/customers/5422
Tested-by: Jenkins CI (http://ci.tine20.com/) <tine20-jenkins@metaways.de>
Reviewed-by: Paul Mehrer <p.mehrer@metaways.de>
Tested-by: Paul Mehrer <p.mehrer@metaways.de>
tine20/Addressbook/Frontend/Http.php
tine20/Tinebase/Export/Richtext/TemplateProcessor.php

index 1bf4aa6..2f845da 100755 (executable)
@@ -36,7 +36,7 @@ class Addressbook_Frontend_Http extends Tinebase_Frontend_Http_Abstract
      */
     public function exportContacts($filter, $options)
     {
-        $decodedFilter = Zend_Json::decode($filter);
+        $decodedFilter = empty($filter) ? null : Zend_Json::decode($filter);
         $decodedOptions = Zend_Json::decode($options);
         
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
@@ -61,7 +61,7 @@ class Addressbook_Frontend_Http extends Tinebase_Frontend_Http_Abstract
      */
     public function exportLists($filter, $options)
     {
-        $decodedFilter = Zend_Json::decode($filter);
+        $decodedFilter = empty($filter) ? null : Zend_Json::decode($filter);
         $decodedOptions = Zend_Json::decode($options);
 
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
index b44e3db..9de40a5 100644 (file)
@@ -259,13 +259,13 @@ class Tinebase_Export_Richtext_TemplateProcessor extends \PhpOffice\PhpWord\Temp
     {
         $xmlBlock = null;
         preg_match(
-            '/(<\?xml.*?)(<w:p>.*\${' . $blockname . '}.*?<\/w:p>)(.*)(<w:p>.*?\${\/' . $blockname . '}.*?<\/w:p>)/is',
+            '/(<\?xml.*)(<w:p(\s+[^>]*)?>.*?\${' . $blockname . '}.*?<\/w:p>)(.*)(<w:p(\s+[^>]*)?>.*?\${\/' . $blockname . '}.*?<\/w:p>)/is',
             $this->tempDocumentMainPart,
             $matches
         );
 
-        if (isset($matches[3])) {
-            $xmlBlock = $matches[3];
+        if (isset($matches[4])) {
+            $xmlBlock = $matches[4];
             $cloned = array();
             for ($i = 1; $i <= $clones; $i++) {
                 $cloned[] = $xmlBlock;
@@ -276,7 +276,7 @@ class Tinebase_Export_Richtext_TemplateProcessor extends \PhpOffice\PhpWord\Temp
                     $matches[2] = substr($matches[2], $pos);
                 }
                 $this->tempDocumentMainPart = str_replace(
-                    $matches[2] . $matches[3] . $matches[4],
+                    $matches[2] . $matches[4] . $matches[5],
                     implode('', $cloned),
                     $this->tempDocumentMainPart
                 );
@@ -297,7 +297,7 @@ class Tinebase_Export_Richtext_TemplateProcessor extends \PhpOffice\PhpWord\Temp
     public function replaceBlock($blockname, $replacement)
     {
         preg_match(
-            '/(<\?xml.*)(<w:p( [^>]+)?>.*\${' . $blockname . '}<\/w:.*?p>)(.*)(<w:p( [^>]+)?>.*\${\/' . $blockname . '}<\/w:.*?p>)/is',
+            '/(<\?xml.*)(<w:p(\s+[^>]*)?>.*?\${' . $blockname . '}.*?<\/w:p>)(.*)(<w:p(\s+[^>]*)?>.*?\${\/' . $blockname . '}.*?<\/w:p>)/is',
             $this->tempDocumentMainPart,
             $matches
         );