Beispiel #1
0
 function array2xml($array, $baseTag = 'data', $level = 0)
 {
     if ($level == 0) {
         $txt = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
         $allAttrs = isset($array['@attributes']) ? ' ' . Array_XML::writeAttributes($array['@attributes']) : '';
         $txt .= "<{$baseTag}{$allAttrs}>\n";
     } else {
         $txt = '';
     }
     $padding = str_repeat(" ", ($level + 1) * 4);
     //echo '<h1>array</h1> '; print_r($array);
     foreach ($array as $key => $value) {
         //echo '<p>"', $key, '" ';
         if (empty($key) || $key === '@attributes') {
             continue;
         }
         if (!is_array($value)) {
             $txt .= "{$padding}<{$key}>{$value}</{$key}>\n";
         } else {
             if (isset($value['value'])) {
                 //echo ' ', $value['value'];
                 $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : '';
                 $txt .= "{$padding}<{$key}{$attrs}>{$value['value']}</{$key}>\n";
             } elseif (isset($value[0])) {
                 //echo ' Array ';
                 $arrAttrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : '';
                 foreach ($value as $i => $v) {
                     if ((string) $i != '@attributes') {
                         //echo $i, ' ';
                         if (isset($v['value'])) {
                             $attrs = isset($v['@attributes']) ? ' ' . Array_XML::writeAttributes($v['@attributes']) : '';
                             //$txt .= "$padding<{$key}{$arrAttrs}>{$v['value']}</{$key}>\n";
                             $txt .= "{$padding}<{$key}{$attrs}>{$v['value']}</{$key}>\n";
                         } else {
                             $attrs = isset($v['@attributes']) ? ' ' . Array_XML::writeAttributes($v['@attributes']) : '';
                             $txt .= "{$padding}<{$key}{$attrs}>\n";
                             $txt .= Array_XML::array2xml($v, $baseTag, $level + 1);
                             $txt .= "{$padding}</{$key}>\n";
                         }
                     }
                 }
             } else {
                 if (isset($value['@attributes']) && count($value) == 1 || count($value) == 0) {
                     $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : '';
                     $txt .= "{$padding}<{$key}{$attrs} />\n";
                 } else {
                     $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : '';
                     $txt .= "{$padding}<{$key}{$attrs}>\n";
                     $txt .= Array_XML::array2xml($value, $baseTag, $level + 1);
                     $txt .= "{$padding}</{$key}>\n";
                 }
             }
         }
     }
     $txt .= $level == 0 ? "</{$baseTag}>" : '';
     return $txt;
 }
Beispiel #2
0
 private function saveDo($settingsCopy)
 {
     $this->addCDATA($settingsCopy);
     if ($xml = Array_XML::array2xml($settingsCopy, 'settings')) {
         if (@file_put_contents(BertaBase::$options['XML_ROOT'] . $this->fileName, $xml) !== false) {
             @chmod(BertaBase::$options['XML_ROOT'] . $this->fileName, 0666);
             return true;
         }
     }
     return false;
 }
 public static function saveTags($tags, $sectionsList = false)
 {
     $arrayToSave = array('section' => array());
     foreach ($tags as $sName => $s) {
         if (!$sectionsList || isset($sectionsList[$sName])) {
             $sectionTags = array();
             $c = 0;
             foreach ($s as $tName => $t) {
                 $sectionTags[] = array('@attributes' => array('name' => $tName, 'entry_count' => $t['entry_count']), 'value' => $t['title']);
                 $c += (int) $t['entry_count'];
             }
             $arrayToSave['section'][] = array('@attributes' => array('name' => $sName, 'entry_count' => $c), 'tag' => $sectionTags);
         }
     }
     Array_XML::addCDATA($arrayToSave);
     if ($xml = Array_XML::array2xml($arrayToSave, 'sections')) {
         $fileName = self::$options['XML_ROOT'] . self::$options['tags.xml'];
         if (@file_put_contents($fileName, $xml)) {
             @chmod($fileName, 0666);
             return true;
         }
     }
     return false;
 }