function _package_edition_package_list_xml($base, $edition_tag, $url_root = '', $cdn = '', $output = 'string', $timestamp = '*', $content_xml_url = "content.xml")
{
    $url_root = pugpig_strip_domain($url_root);
    $contents = _package_edition_package_contents($base, $edition_tag, $timestamp);
    if (!file_exists($contents['html_archive'])) {
        return NULL;
    }
    $total_size = 0;
    //$content_xml = "content.xml";
    $d = new DomDocument('1.0', 'UTF-8');
    $d->formatOutput = TRUE;
    $package = $d->createElement('package');
    $package->setAttribute('root', $content_xml_url);
    $comment = "Generated: " . date(DATE_RFC822);
    $package->appendChild($d->createComment($comment));
    $part = $d->createElement('part');
    $part->setAttribute('name', 'html');
    $part->setAttribute('src', $url_root . $contents['html_url']);
    $part->setAttribute('size', $contents['html_size']);
    $total_size += $contents['html_size'];
    $part->setAttribute('modified', gmdate(DATE_ATOM, $contents['html_timestamp']));
    $package->appendChild($part);
    if (is_numeric($contents['assets_size']) && $contents['assets_size'] > 0) {
        $part = $d->createElement('part');
        $part->setAttribute('name', 'assets');
        $part->setAttribute('src', $cdn . $url_root . $contents['assets_url']);
        $part->setAttribute('size', $contents['assets_size']);
        $total_size += $contents['assets_size'];
        $part->setAttribute('modified', gmdate(DATE_ATOM, $contents['assets_timestamp']));
        $package->appendChild($part);
    }
    $package->setAttribute('size', $total_size);
    $d->appendChild($package);
    if ($output == 'string') {
        return $d->saveXML();
    } else {
        $d->save($output);
        return $output;
    }
}
function _package_edition_package_list_xml_using_files($base, $edition_tag, $url_root = '', $cdn = '', $output_type = 'string', $timestamp = '*', $content_xml_url = "content.xml")
{
    $content = _package_edition_package_contents($base, $edition_tag, $timestamp);
    $bucket_infos = array();
    $url_root_without_domain = pugpig_strip_domain($url_root);
    foreach ($content as $key => $values) {
        if ($key === 'xml_timestamp' || endsWith($key, '_size') || endsWith($key, '_is_cdn')) {
            continue;
        }
        $bucket_infos[$key] = array('zips' => array(), 'is_cdn' => empty($content[$key . '_is_cdn']) ? false : $content[$key . '_is_cdn']);
        foreach ($values as $value) {
            $bucket_infos[$key]['zips'][] = $value['archive'];
        }
    }
    return _package_edition_package_list_xml_core($base, $edition_tag, $bucket_infos, $url_root, $cdn, $output_type, $timestamp, $content_xml_url);
}