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; }
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; }