Example #1
0
function i18n_gallery_save($gallery, $oldname)
{
    if ($oldname) {
        if (!copy(GSDATAPATH . I18N_GALLERY_DIR . $oldname . '.xml', GSBACKUPSPATH . I18N_GALLERY_DIR . $oldname . '.xml')) {
            return false;
        }
    }
    $data = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><gallery></gallery>');
    foreach ($gallery as $key => $value) {
        if ($key != 'items' && $key != 'item') {
            $data->addChild($key)->addCData(stripslashes($value));
        }
    }
    foreach ($gallery['items'] as $item) {
        $node = $data->addChild('item');
        foreach ($item as $key => $value) {
            $node->addChild($key)->addCData(stripslashes($value));
        }
        list($width, $height) = @getimagesize(GSDATAUPLOADPATH . $item['filename']);
        $node->addChild('width', $width);
        $node->addChild('height', $height);
        $ss = @stat(GSDATAUPLOADPATH . $item['filename']);
        $node->addChild('size', $ss['size']);
    }
    if (!XMLsave($data, GSDATAPATH . I18N_GALLERY_DIR . $gallery['name'] . '.xml')) {
        return false;
    }
    if ($oldname && $oldname != $gallery['name']) {
        unlink(GSDATAPATH . I18N_GALLERY_DIR . $oldname . '.xml');
    }
    return true;
}
Example #2
0
function items_customfields_save_them()
{
    if (!copy(GSDATAOTHERPATH . IM_CUSTOMFIELDS_FILE, GSBACKUPSPATH . 'other/' . IM_CUSTOMFIELDS_FILE)) {
        return false;
    }
    $data = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><channel></channel>');
    for ($i = 0; isset($_POST['cf_' . $i . '_key']); $i++) {
        if ($_POST['cf_' . $i . '_key']) {
            $item = $data->addChild('item');
            $item->addChild('desc')->addCData(htmlspecialchars(stripslashes($_POST['cf_' . $i . '_key']), ENT_QUOTES));
            $item->addChild('label')->addCData(htmlspecialchars(stripslashes($_POST['cf_' . $i . '_label']), ENT_QUOTES));
            $item->addChild('type')->addCData(htmlspecialchars(stripslashes($_POST['cf_' . $i . '_type']), ENT_QUOTES));
            if ($_POST['cf_' . $i . '_value']) {
                $item->addChild('value')->addCData(htmlspecialchars(stripslashes($_POST['cf_' . $i . '_value']), ENT_QUOTES));
            }
            if ($_POST['cf_' . $i . '_options']) {
                $options = preg_split("/\r?\n/", rtrim(stripslashes($_POST['cf_' . $i . '_options'])));
                foreach ($options as $option) {
                    $item->addChild('option')->addCData(htmlspecialchars($option, ENT_QUOTES));
                }
            }
        }
    }
    XMLsave($data, GSDATAOTHERPATH . IM_CUSTOMFIELDS_FILE);
    return true;
}
Example #3
0
 private static function saveSettings()
 {
     $data = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><settings></settings>');
     foreach (self::$settings as $key => $value) {
         if ($value != null) {
             $data->addChild($key)->addCData((string) $value);
         }
     }
     XMLsave($data, GSDATAOTHERPATH . I18N_SETTINGS_FILE);
 }
Example #4
0
 public static function generateSitemapWithoutPing()
 {
     global $SITEURL;
     $filenames = getFiles(GSDATAPAGESPATH);
     if (count($filenames)) {
         foreach ($filenames as $file) {
             if (isFile($file, GSDATAPAGESPATH, 'xml')) {
                 $data = getXML(GSDATAPAGESPATH . $file);
                 if ($data->url != '404' && $data->private != 'Y') {
                     $pagesArray[] = array('url' => (string) $data->url, 'parent' => (string) $data->parent, 'date' => (string) $data->pubDate, 'menuStatus' => (string) $data->menuStatus);
                 }
             }
         }
     }
     $pagesSorted = subval_sort($pagesArray, 'menuStatus');
     $languages = return_i18n_available_languages();
     $deflang = return_i18n_default_language();
     $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset></urlset>');
     $xml->addAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd', 'http://www.w3.org/2001/XMLSchema-instance');
     $xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
     if (count($pagesSorted)) {
         foreach ($pagesSorted as $page) {
             // set <loc>
             if (count($languages) > 1) {
                 $pos = strrpos($page['url'], '_');
                 if ($pos !== false) {
                     $pageLoc = find_i18n_url(substr($page['url'], 0, $pos), $page['parent'], substr($page['url'], $pos + 1));
                 } else {
                     $pageLoc = find_i18n_url($page['url'], $page['parent'], $deflang);
                 }
             } else {
                 $pageLoc = find_i18n_url($page['url'], $page['parent']);
             }
             // set <lastmod>
             $pageLastMod = makeIso8601TimeStamp(date("Y-m-d H:i:s", strtotime($page['date'])));
             // set <changefreq>
             $pageChangeFreq = 'weekly';
             // set <priority>
             $pagePriority = $page['menuStatus'] == 'Y' ? '1.0' : '0.5';
             //add to sitemap
             $url_item = $xml->addChild('url');
             $url_item->addChild('loc', htmlspecialchars($pageLoc));
             $url_item->addChild('lastmod', $pageLastMod);
             $url_item->addChild('changefreq', $pageChangeFreq);
             $url_item->addChild('priority', $pagePriority);
         }
     }
     //create xml file
     $file = GSROOTPATH . 'sitemap.xml';
     XMLsave($xml, $file);
 }
Example #5
0
function i18n_gallery_settings_save($settings)
{
    if (file_exists(GSDATAOTHERPATH . 'i18n_gallery_settings.xml')) {
        if (!copy(GSDATAOTHERPATH . 'i18n_gallery_settings.xml', GSBACKUPSPATH . 'i18n_gallery_settings.xml')) {
            return false;
        }
    }
    $data = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><settings></settings>');
    foreach ($settings as $key => $value) {
        $data->addChild($key)->addCData(stripslashes($value));
    }
    if (!XMLsave($data, GSDATAOTHERPATH . 'i18n_gallery_settings.xml')) {
        return false;
    }
    return true;
}
Example #6
0
function bm_cache_to_xml($books)
{
    $xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><channel></channel>');
    foreach ($books as $book) {
        $item = $xml->addChild('item');
        $elem = $item->addChild('slug');
        $elem->addCData($book['slug']);
        $elem = $item->addChild('title');
        $elem->addCData($book['title']);
        $elem = $item->addChild('date');
        $elem->addCData($book['date']);
        $elem = $item->addChild('tags');
        $elem->addCData($book['tags']);
        $elem = $item->addChild('private');
        $elem->addCData($book['private']);
    }
    return @XMLsave($xml, BMBOOKCACHE);
}
Example #7
0
function nm_cache_to_xml($posts)
{
    $xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><channel></channel>');
    foreach ($posts as $post) {
        $item = $xml->addChild('item');
        $elem = $item->addChild('slug');
        $elem->addCData($post['slug']);
        $elem = $item->addChild('title');
        $elem->addCData($post['title']);
        $elem = $item->addChild('date');
        $elem->addCData($post['date']);
        $elem = $item->addChild('tags');
        $elem->addCData($post['tags']);
        $elem = $item->addChild('private');
        $elem->addCData($post['private']);
        $elem = $item->addChild('image');
        $elem->addCData($post['image']);
        if (!empty($post['author'])) {
            $elem = $item->addChild('author');
            $elem->addCData($post['author']);
        }
    }
    return @XMLsave($xml, NMPOSTCACHE);
}
Example #8
0
    }
    # backup old GSWEBSITEFILE (website.xml) file
    $bakpath = GSBACKUPSPATH . getRelPath(GSDATAOTHERPATH, GSDATAPATH);
    // backups/other/
    createBak($file, $path, $bakpath);
    # udpate GSWEBSITEFILE (website.xml) file with new theme
    $xml = new SimpleXMLExtended('<item></item>');
    $note = $xml->addChild('SITENAME');
    $note->addCData($SITENAME);
    $note = $xml->addChild('SITEURL');
    $note->addCData($SITEURL);
    $note = $xml->addChild('TEMPLATE');
    $note->addCData($newTemplate);
    $xml->addChild('PRETTYURLS', $PRETTYURLS);
    $xml->addChild('PERMALINK', $PERMALINK);
    XMLsave($xml, $path . $file);
    $success = i18n_r('THEME_CHANGED');
    $TEMPLATE = $newTemplate;
    // set new global
}
# get available themes (only look for folders)
$themes_handle = opendir(GSTHEMESPATH) or die("Unable to open " . GSTHEMESPATH);
while ($file = readdir($themes_handle)) {
    $curpath = GSTHEMESPATH . $file;
    if (is_dir($curpath) && $file != "." && $file != "..") {
        $sel = "";
        if (file_exists($curpath . '/' . GSTEMPLATEFILE)) {
            if ($TEMPLATE == $file) {
                $sel = "selected";
            }
            $theme_options .= '<option ' . $sel . ' value="' . $file . '" >' . $file . '</option>';
    $newfile = GSDATAPAGESPATH . $_GET['id'] . "-" . $count . ".xml";
    if (file_exists($newfile)) {
        while (file_exists($newfile)) {
            $count++;
            $newfile = GSDATAPAGESPATH . $_GET['id'] . "-" . $count . ".xml";
        }
    }
    $newurl = $_GET['id'] . '-' . $count;
    # do the copy
    $status = copy($path . $_GET['id'] . '.xml', $path . $newurl . '.xml');
    if ($status) {
        $newxml = getXML($path . $newurl . '.xml');
        $newxml->url = $newurl;
        $newxml->title = $newxml->title . ' [' . i18n_r('COPY') . ']';
        $newxml->pubDate = date('r');
        $status = XMLsave($newxml, $path . $newurl . '.xml');
        if ($status) {
            create_pagesxml('true');
            header('Location: pages.php?upd=clone-success&id=' . $newurl);
        } else {
            $error = sprintf(i18n_r('CLONE_ERROR'), $_GET['id']);
            header('Location: pages.php?error=' . $error);
        }
    } else {
        $error = sprintf(i18n_r('CLONE_ERROR'), $_GET['id']);
        header('Location: pages.php?error=' . $error);
    }
}
getPagesXmlValues();
$count = 0;
foreach ($pagesArray as $page) {
Example #10
0
                 $pagePriority = '1.0';
             } else {
                 $pagePriority = '0.5';
             }
             //add to sitemap
             $url_item = $xml->addChild('url');
             $url_item->addChild('loc', $pageLoc);
             $url_item->addChild('lastmod', $pageLastMod);
             $url_item->addChild('changefreq', $pageChangeFreq);
             $url_item->addChild('priority', $pagePriority);
             exec_action('sitemap-additem');
         }
         //create xml file
         $file = $relative . 'sitemap.xml';
         exec_action('save-sitemap');
         XMLsave($xml, $file);
     }
 }
 // Variables for website
 $spath = $relative . 'data/other/';
 $sfile = "website.xml";
 $data = getXML($spath . $sfile);
 $SITEURL = $data->SITEURL;
 if (!defined('GSDONOTPING')) {
     if (file_exists($relative . 'sitemap.xml')) {
         if (200 === ($status = pingGoogleSitemaps($SITEURL . 'sitemap.xml'))) {
             $response = $i18n['SITEMAP_CREATED'];
             header('location: theme.php?success=' . $response);
             exit;
         } else {
             $response = $i18n['SITEMAP_ERRORPING'];
Example #11
0
function i18n_navigation_structure_save(&$pages)
{
    $stack = array();
    for ($i = 0; isset($_POST['page_' . $i . '_url']); $i++) {
        $url = $_POST['page_' . $i . '_url'];
        if (isset($pages[$url])) {
            $level = (int) $_POST['page_' . $i . '_level'];
            if ($level > count($stack)) {
                $level = count($stack);
            }
            $parent = $level <= 0 ? '' : $stack[$level - 1];
            $menuOrder = count($stack) <= $level ? 0 : $pages[$stack[$level]]['menuOrder'] + 1;
            $menu = htmlentities($_POST['page_' . $i . '_menu'], ENT_QUOTES, 'UTF-8');
            $menuStatus = $_POST['page_' . $i . '_menuStatus'];
            $private = $_POST['page_' . $i . '_private'];
            if ($menu == $pages[$url]['title']) {
                $menu = '';
            }
            if ($parent != $pages[$url]['parent'] || $menuOrder != $pages[$url]['menuOrder'] || $menu != $pages[$url]['menu'] || $menuStatus != $pages[$url]['menuStatus'] || $private != $pages[$url]['private']) {
                // update pages array
                $pages[$url]['parent'] = $parent;
                $pages[$url]['menuOrder'] = $menuOrder;
                $pages[$url]['menu'] = $menu;
                $pages[$url]['menuStatus'] = $menuStatus;
                $pages[$url]['private'] = $private;
                // backup page file
                if (!copy(GSDATAPAGESPATH . $url . '.xml', GSBACKUPSPATH . 'i18n_navigation/' . $url . '.xml')) {
                    return false;
                }
                // update page file
                $data = getXML(GSDATAPAGESPATH . $url . '.xml');
                $xml = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
                $xml->addChild('pubDate', (string) $data->pubDate);
                if (@$data->creDate) {
                    $xml->addChild('creDate', (string) $data->creDate);
                }
                foreach ($data->children() as $child) {
                    $name = $child->getName();
                    if ($name != 'parent' && $name != 'menuOrder' && $name != 'menu' && $name != 'menuStatus' && $name != 'private' && $name != 'pubDate' && $name != 'creDate') {
                        $xml->addChild($name)->addCData((string) $child);
                    }
                }
                $xml->addChild('parent')->addCData((string) $parent);
                $xml->addChild('menuOrder')->addCData((string) $menuOrder);
                $xml->addChild('menu')->addCData((string) $menu);
                $xml->addChild('menuStatus')->addCData((string) $menuStatus);
                $xml->addChild('private')->addCData((string) $private);
                XMLsave($xml, GSDATAPAGESPATH . $url . '.xml');
            }
            // variants
            if (count($pages[$url]['variants']) > 0) {
                foreach ($pages[$url]['variants'] as $lang => &$variant) {
                    if (isset($_POST['page_' . $i . '_menu' . $lang])) {
                        $menu = htmlentities($_POST['page_' . $i . '_menu' . $lang], ENT_QUOTES, 'UTF-8');
                        if ($menu == $variant['title']) {
                            $menu = '';
                        }
                        if ($menu != $variant['menu'] || $private != $variant['private']) {
                            $variant['menu'] = $menu;
                            // backup variant file
                            if (!copy(GSDATAPAGESPATH . $variant['url'] . '.xml', GSBACKUPSPATH . 'i18n_navigation/' . $variant['url'] . '.xml')) {
                                return false;
                            }
                            // update variant file
                            $data = getXML(GSDATAPAGESPATH . $variant['url'] . '.xml');
                            $xml = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
                            $xml->addChild('pubDate', (string) $data->pubDate);
                            if (@$data->creDate) {
                                $xml->addChild('creDate', (string) $data->creDate);
                            }
                            foreach ($data->children() as $child) {
                                $name = $child->getName();
                                if ($name != 'menu' && $name != 'menuStatus' && $name != 'private' && $name != 'pubDate' && $name != 'creDate') {
                                    $xml->addChild($name)->addCData((string) $child);
                                }
                            }
                            $xml->addChild('menu')->addCData((string) $menu);
                            $xml->addChild('menuStatus')->addCData((string) $menuStatus);
                            $xml->addChild('private')->addCData((string) $private);
                            XMLsave($xml, GSDATAPAGESPATH . $variant['url'] . '.xml');
                        }
                    }
                }
            }
            while (count($stack) > $level) {
                array_pop($stack);
            }
            array_push($stack, $url);
        }
    }
    exec_action('menu-aftersave');
    return true;
}
Example #12
0
function nm_save_post()
{
    # create a backup if necessary
    if (isset($_POST['current-slug'])) {
        $file = $_POST['current-slug'] . '.xml';
        if (dirname(realpath(NMPOSTPATH . $file)) != realpath(NMPOSTPATH)) {
            die('');
        }
        // path traversal
        @nm_rename_file(NMPOSTPATH . $file, NMBACKUPPATH . $file);
    }
    # empty titles are not allowed
    if (empty($_POST['post-title']) || trim($_POST['post-title']) == '') {
        $_POST['post-title'] = '[No Title]';
    }
    # set initial slug and filename
    if (!empty($_POST['post-slug'])) {
        $slug = nm_create_slug($_POST['post-slug']);
    } else {
        $slug = nm_create_slug($_POST['post-title']);
        if ($slug == '') {
            $slug = 'post';
        }
    }
    $file = NMPOSTPATH . $slug . '.xml';
    # do not overwrite other posts
    if (file_exists($file)) {
        $count = 1;
        $file = NMPOSTPATH . $slug . '-' . $count . '.xml';
        while (file_exists($file)) {
            $file = NMPOSTPATH . $slug . '-' . ++$count . '.xml';
        }
        $slug = basename($file, '.xml');
    }
    # create undo target if there's a backup available
    if (isset($_POST['current-slug'])) {
        $backup = $slug . ':' . $_POST['current-slug'];
    }
    # collect $_POST data
    $title = safe_slash_html($_POST['post-title']);
    $timestamp = strtotime($_POST['post-date'] . ' ' . $_POST['post-time']);
    $date = $timestamp ? date('r', $timestamp) : date('r');
    $tags = nm_lowercase_tags(trim(preg_replace(array('/\\s+/', '/\\s*,\\s*/', '/,+/'), array(' ', ',', ','), safe_slash_html(trim($_POST['post-tags']))), ','));
    $private = isset($_POST['post-private']) ? 'Y' : '';
    $image = safe_slash_html($_POST['post-image']);
    $content = safe_slash_html($_POST['post-content']);
    if (defined('NMSAVEAUTHOR') && NMSAVEAUTHOR) {
        if (isset($_POST['author'])) {
            $author = safe_slash_html($_POST['author']);
        } else {
            global $USR;
            $author = $USR ? $USR : '';
        }
    }
    # create xml object
    $xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
    $obj = $xml->addChild('title');
    $obj->addCData($title);
    $obj = $xml->addChild('date');
    $obj->addCData($date);
    $obj = $xml->addChild('tags');
    $obj->addCData($tags);
    $obj = $xml->addChild('private');
    $obj->addCData($private);
    $obj = $xml->addChild('image');
    $obj->addCData($image);
    $obj = $xml->addChild('content');
    $obj->addCData($content);
    if (isset($author)) {
        $obj = $xml->addChild('author');
        $obj->addCData($author);
    }
    # write data to file
    if (@XMLsave($xml, $file) && nm_update_cache()) {
        nm_generate_sitemap();
        nm_display_message(i18n_r('news_manager/SUCCESS_SAVE'), false, @$backup);
    } else {
        nm_display_message(i18n_r('news_manager/ERROR_SAVE'), true);
    }
}
Example #13
0
/**
 * Creates Sitemap
 *
 * Creates sitemap.xml in the site's root.
 * Pending: read the content path (xml's)
 */
function generate_sitemap()
{
    // Variable settings
    global $SITEURL;
    $path = GSDATAPAGESPATH;
    $count = "0";
    $filenames = getFiles($path);
    if (count($filenames) != 0) {
        foreach ($filenames as $file) {
            if (isFile($file, $path, 'xml')) {
                $data = getXML($path . $file);
                if ($data->url != '404') {
                    $status = $data->menuStatus;
                    $pagesArray[$count]['url'] = $data->url;
                    $pagesArray[$count]['parent'] = $data->parent;
                    $pagesArray[$count]['date'] = $data->pubDate;
                    $pagesArray[$count]['private'] = $data->private;
                    $pagesArray[$count]['menuStatus'] = $data->menuStatus;
                    $count++;
                }
            }
        }
    }
    $pagesSorted = subval_sort($pagesArray, 'menuStatus');
    if (count($pagesSorted) != 0) {
        $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset></urlset>');
        $xml->addAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd', 'http://www.w3.org/2001/XMLSchema-instance');
        $xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
        foreach ($pagesSorted as $page) {
            if ($page['private'] != 'Y') {
                // set <loc>
                $pageLoc = find_url($page['url'], $page['parent']);
                // set <lastmod>
                $tmpDate = date("Y-m-d H:i:s", strtotime($page['date']));
                $pageLastMod = makeIso8601TimeStamp($tmpDate);
                // set <changefreq>
                $pageChangeFreq = 'weekly';
                // set <priority>
                if ($page['menuStatus'] == 'Y') {
                    $pagePriority = '1.0';
                } else {
                    $pagePriority = '0.5';
                }
                //add to sitemap
                $url_item = $xml->addChild('url');
                $url_item->addChild('loc', $pageLoc);
                $url_item->addChild('lastmod', $pageLastMod);
                $url_item->addChild('changefreq', $pageChangeFreq);
                $url_item->addChild('priority', $pagePriority);
                exec_action('sitemap-additem');
            }
        }
        //create xml file
        $file = GSROOTPATH . 'sitemap.xml';
        exec_action('save-sitemap');
        XMLsave($xml, $file);
    }
    if (!defined('GSDONOTPING')) {
        if (file_exists(GSROOTPATH . 'sitemap.xml')) {
            if (200 === ($status = pingGoogleSitemaps($SITEURL . 'sitemap.xml'))) {
                #sitemap successfully created & pinged
                return true;
            } else {
                error_log(i18n_r('SITEMAP_ERRORPING'));
                return i18n_r('SITEMAP_ERRORPING');
            }
        } else {
            error_log(i18n_r('SITEMAP_ERROR'));
            return i18n_r('SITEMAP_ERROR');
        }
    } else {
        #sitemap successfully created - did not ping
        return true;
    }
}
Example #14
0
 $note->addCData($menuStatus);
 $note = $xml->addChild('template');
 $note->addCData($template);
 $note = $xml->addChild('parent');
 $note->addCData($parent);
 $note = $xml->addChild('content');
 $note->addCData($content);
 $note = $xml->addChild('private');
 $note->addCData($private);
 $note = $xml->addChild('author');
 $note->addCData($author);
 exec_action('changedata-save');
 if (isset($_POST['autosave']) && $_POST['autosave'] == 'true' && $autoSaveDraft == true) {
     $status = XMLsave($xml, GSAUTOSAVEPATH . $url);
 } else {
     $status = XMLsave($xml, $file);
 }
 //ending actions
 exec_action('changedata-aftersave');
 generate_sitemap();
 // redirect user back to edit page
 if (isset($_POST['autosave']) && $_POST['autosave'] == 'true') {
     echo $status ? 'OK' : 'ERROR';
 } else {
     if (!$status) {
         redirect("edit.php?id=" . $url . "&upd=edit-error&type=edit");
     }
     if ($_POST['redirectto'] != '') {
         $redirect_url = $_POST['redirectto'];
     } else {
         $redirect_url = 'edit.php';
/**
 * create_pluginsxml
 * 
 * If the plugins.xml file does not exists, read in each plugin 
 * and add it to the file. 
 * read_pluginsxml() is called again to repopulate $live_plugins
 *
 * @since 2.04
 * @uses $live_plugins
 *
 */
function create_pluginsxml()
{
    global $live_plugins;
    if (file_exists(GSPLUGINPATH)) {
        $pluginfiles = getFiles(GSPLUGINPATH);
    }
    $xml = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><channel></channel>');
    foreach ($pluginfiles as $fi) {
        $pathExt = pathinfo($fi, PATHINFO_EXTENSION);
        $pathName = pathinfo_filename($fi);
        $count = 0;
        if ($pathExt == "php") {
            $components = $xml->addChild('item');
            $c_note = $components->addChild('plugin');
            $c_note->addCData($fi);
            $c_note = $components->addChild('enabled');
            if (isset($live_plugins[(string) $fi])) {
                $c_note->addCData($live_plugins[(string) $fi]);
            } else {
                $c_note->addCData('true');
            }
        }
    }
    XMLsave($xml, GSDATAOTHERPATH . "plugins.xml");
    read_pluginsxml();
}
Example #16
0
 /** 
  * Creates Blog Posts Cache File
  * 
  * @return bool
  */
 public function createPostsCache()
 {
     $posts = $this->listPosts(true, true);
     if ($posts === false) {
         $posts = array();
     }
     $count = 0;
     $xml = new SimpleXMLExtended('<?xml version="1.0"?><item></item>');
     if (!count($posts) < 1) {
         foreach ($posts as $post) {
             $data = getXML($post['filename']);
             $new_post = $xml->addChild("post");
             foreach ($data as $key => $value) {
                 $post_parent = $new_post->addChild($key);
                 $post_parent->addCData($value);
             }
         }
         $save_cache = XMLsave($xml, BLOGCACHEFILE);
     }
 }
 public function page_save()
 {
     if ($this->auth()) {
         $id = (string) $this->xml->data->slug;
         $thisfile = GSDATAPAGESPATH . $id . '.xml';
         if (file_exists($thisfile)) {
             $page = getXML($thisfile);
             $page->content = safe_slash_html($this->xml->data->content);
             $page->title = safe_slash_html($this->xml->data->title);
             $page->pubDate = date('r');
             $bakfile = GSBACKUPSPATH . "pages/" . $id . ".bak.xml";
             copy($thisfile, $bakfile);
             $status = XMLsave($page, $thisfile);
             if ($status) {
                 touch($thisfile);
                 $wrapper = array('status' => 'success', 'message' => 'page_save ok', 'response' => $page);
             } else {
                 $wrapper = array('status' => 'error', 'message' => 'There was an error saving your page');
             }
             return json_encode($wrapper);
         } else {
             $error = array('status' => 'error', 'message' => sprintf(i18n_r('API_ERR_NOPAGE'), $id));
             return json_encode($error);
         }
     }
 }
Example #18
0
/**
 * Creates Sitemap
 *
 * Creates GSSITEMAPFILE (sitemap.xml) in the site's root.
 */
function generate_sitemap()
{
    if (getDef('GSNOSITEMAP', true)) {
        return;
    }
    global $pagesArray;
    // Variable settings
    $SITEURL = getSiteURL(true);
    $path = GSDATAPAGESPATH;
    getPagesXmlValues(false);
    $pagesSorted = subval_sort($pagesArray, 'menuStatus');
    if (count($pagesSorted) > 0) {
        $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset></urlset>');
        $xml->addAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd', 'http://www.w3.org/2001/XMLSchema-instance');
        $xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
        foreach ($pagesSorted as $page) {
            if ($page['url'] != '404') {
                if ($page['private'] != 'Y') {
                    // set <loc>
                    $pageLoc = find_url($page['url'], $page['parent'], 'full');
                    // set <lastmod>
                    $tmpDate = date("Y-m-d H:i:s", strtotime($page['pubDate']));
                    $pageLastMod = makeIso8601TimeStamp($tmpDate);
                    // set <changefreq>
                    $pageChangeFreq = 'weekly';
                    // set <priority>
                    if ($page['menuStatus'] == 'Y') {
                        $pagePriority = '1.0';
                    } else {
                        $pagePriority = '0.5';
                    }
                    //add to sitemap
                    $url_item = $xml->addChild('url');
                    $url_item->addChild('loc', $pageLoc);
                    $url_item->addChild('lastmod', $pageLastMod);
                    $url_item->addChild('changefreq', $pageChangeFreq);
                    $url_item->addChild('priority', $pagePriority);
                }
            }
        }
        //create xml file
        $file = GSROOTPATH . GSSITEMAPFILE;
        $xml = exec_filter('sitemap', $xml);
        // @filter sitemap (obj) filter the sitemap $xml obj
        $status = XMLsave($xml, $file);
        exec_action('sitemap-aftersave');
        // @hook sitemap-aftersave after a sitemap data file was saved
        #sitemap successfully created
        return $status;
    } else {
        return true;
    }
}
Example #19
0
    $langs .= '</select><br />';
} else {
    $langs = '<b>' . i18n_r('LANGUAGE') . '</b>: &nbsp;<code style="color:red;">' . i18n_r('NONE') . '</code> &nbsp;&nbsp;';
}
# salt value generation
$api_file = GSDATAOTHERPATH . GSAUTHFILE;
if (!file_exists($api_file)) {
    if (getDef('GSUSECUSTOMSALT')) {
        $saltval = sha1(GSUSECUSTOMSALT);
    } else {
        $saltval = generate_salt();
    }
    $xml = new SimpleXMLExtended('<item></item>');
    $note = $xml->addChild('apikey');
    $note->addCData($saltval);
    if (!XMLsave($xml, $api_file)) {
        $kill = i18n_r('CHMOD_ERROR');
    }
}
# get salt value
$data = getXML($api_file);
$APIKEY = $data->apikey;
if (empty($APIKEY)) {
    $kill = i18n_r('CHMOD_ERROR');
}
$pagetitle = $site_full_name . ' &middot; ' . i18n_r('INSTALLATION');
get_template('header');
?>
	
	<h1><?php 
echo $site_full_name;
Example #20
0
function bm_save_book()
{
    # create a backup if necessary
    if (isset($_POST['current-slug'])) {
        $file = $_POST['current-slug'] . '.xml';
        @rename(BMBOOKPATH . $file, BMBACKUPPATH . $file);
    }
    # empty titles are not allowed
    if (empty($_POST['book-title'])) {
        $_POST['book-title'] = '[No Title]';
    }
    # set initial slug and filename
    if (!empty($_POST['book-slug'])) {
        $slug = bm_create_slug($_POST['book-slug']);
    } else {
        $slug = bm_create_slug($_POST['book-title']);
    }
    $file = BMBOOKPATH . "{$slug}.xml";
    # do not overwrite other books
    if (file_exists($file)) {
        $count = 1;
        $file = BMBOOKPATH . "{$slug}-{$count}.xml";
        while (file_exists($file)) {
            $file = BMBOOKPATH . "{$slug}-" . ++$count . '.xml';
        }
        $slug = basename($file, '.xml');
    }
    # create undo target if there's a backup available
    if (isset($_POST['current-slug'])) {
        $backup = $slug . ':' . $_POST['current-slug'];
    }
    # collect $_POST data
    $title = safe_slash_html($_POST['book-title']);
    $timestamp = strtotime($_POST['book-date'] . ' ' . $_POST['book-time']);
    $date = $timestamp ? date('r', $timestamp) : date('r');
    $tags = str_replace(array(' ', ',,'), array('', ','), safe_slash_html($_POST['book-tags']));
    $private = isset($_POST['book-private']) ? 'Y' : '';
    $content = safe_slash_html($_POST['book-content']);
    # create xml object
    $xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
    $obj = $xml->addChild('title');
    $obj->addCData($title);
    $obj = $xml->addChild('date');
    $obj->addCData($date);
    $obj = $xml->addChild('tags');
    $obj->addCData($tags);
    $obj = $xml->addChild('private');
    $obj->addCData($private);
    $obj = $xml->addChild('content');
    $obj->addCData($content);
    # write data to file
    if (@XMLsave($xml, $file) && bm_update_cache()) {
        bm_display_message(i18n_r('books_manager/SUCCESS_SAVE'), false, @$backup);
    } else {
        bm_display_message(i18n_r('books_manager/SUCCESS_SAVE'), false, @$backup);
    }
}
Example #21
0
 $xmls->addChild('PRETTYURLS', '');
 $xmls->addChild('PERMALINK', '');
 $xmls->addChild('SITEUSR', $USR);
 $xmls->addChild('SITEABOUT', '');
 if (!XMLsave($xmls, GSDATAOTHERPATH . $file)) {
     $kill = i18n_r('CHMOD_ERROR');
 }
 # create default index.xml page
 $init = GSDATAPAGESPATH . 'index.xml';
 $temp = GSADMININCPATH . 'tmp/tmp-index.xml';
 if (!file_exists($init)) {
     copy_file($temp, $init);
     $xml = getXML($init);
     $xml->pubDate = date('r');
     # update date
     XMLsave($xml, $init);
 }
 # create default 404.xml page
 $init = GSDATAOTHERPATH . '404.xml';
 $temp = GSADMININCPATH . 'tmp/tmp-404.xml';
 if (!file_exists($init)) {
     copy($temp, $init);
 }
 # create default 404.xml page
 $init = GSDATAOTHERPATH . '403.xml';
 $temp = GSADMININCPATH . 'tmp/tmp-403.xml';
 if (!file_exists($init)) {
     copy($temp, $init);
 }
 # create default components.xml page if not exist
 $init = GSDATAOTHERPATH . 'components.xml';
Example #22
0
    createBak(GSWEBSITEFILE, GSDATAOTHERPATH, $bakpath);
    $xmls = new SimpleXMLExtended('<item></item>');
    $note = $xmls->addChild('SITENAME');
    $note->addCData($SITENAME);
    $note = $xmls->addChild('SITEURL');
    $note->addCData($SITEURL);
    $note = $xmls->addChild('TEMPLATE');
    $note->addCData($TEMPLATE);
    $xmls->addChild('PRETTYURLS', $PRETTYURLS);
    $xmls->addChild('PERMALINK', $PERMALINK);
    $xmls->addChild('EMAIL', $SITEEMAIL);
    $xmls->addChild('TIMEZONE', $TIMEZONE);
    $xmls->addChild('LANG', $LANG);
    $xmls->addChild('SITEUSR', $SITEUSR);
    exec_action('settings-website');
    if (!XMLsave($xmls, GSDATAOTHERPATH . GSWEBSITEFILE)) {
        $error = i18n_r('CHMOD_ERROR');
    }
    # see new language file immediately
    include GSLANGPATH . $LANG . '.php';
    if (!$error) {
        $success = i18n_r('ER_SETTINGS_UPD') . '. <a href="settings.php?undo&nonce=' . get_nonce("undo") . '">' . i18n_r('UNDO') . '</a>';
        generate_sitemap();
    }
}
# are any of the control panel checkboxes checked?
if ($PRETTYURLS != '') {
    $prettychck = 'checked';
}
# get all available language files
if ($LANG == '') {
Example #23
0
 public function save()
 {
     return XMLsave($this->_xml, $this->_xmlfile);
 }
Example #24
0
 if (!file_exists(GSDATAOTHERPATH . '_legacy_website.xml')) {
     $status = rename(GSDATAOTHERPATH . 'website.xml', GSDATAOTHERPATH . '_legacy_website.xml');
     if (!$status) {
         $error .= msgError('Unable to rename website.xml to _legacy_website.xml');
     } else {
         $message .= msgOK('Renamed website.xml to _legacy_website.xml');
     }
 }
 #creating new website file
 $xml = new SimpleXMLElement('<item></item>');
 $xml->addChild('SITENAME', $SITENAME);
 $xml->addChild('SITEURL', $SITEURL);
 $xml->addChild('TEMPLATE', $TEMPLATE);
 $xml->addChild('PRETTYURLS', $PRETTYURLS);
 $xml->addChild('PERMALINK', $PERMALINK);
 $status = XMLsave($xml, GSDATAOTHERPATH . GSWEBSITEFILE);
 if (!$status) {
     $error .= msgError('Unable to update ' . GSWEBSITEFILE . ' file!');
 } else {
     $message .= msgOK('Created updated ' . GSWEBSITEFILE . ' file');
 }
 # rename old user.xml
 if (!file_exists(GSDATAOTHERPATH . '_legacy_user.xml')) {
     $status = rename(GSDATAOTHERPATH . 'user.xml', GSDATAOTHERPATH . '_legacy_user.xml');
     if (!$status) {
         $error .= msgError('Unable to rename user.xml to _legacy_user.xml');
     } else {
         $message .= msgOK('Renamed user.xml to _legacy_user.xml');
     }
 }
 # rename old cp_settings.xml
Example #25
0
/**
 * save a page draft to xml
 *
 * @since  3.4
 * @param  obj $xml simplexmlobj of page
 * @param  bool $backup backup before overwriting
 * @return bool success
 */
function saveDraftXml($xml, $backup = true)
{
    $url = $xml->url;
    if (!isset($url) || trim($url) == '') {
        die('empty slug');
    }
    // @todo need some kind of assert here
    // backup before overwriting
    if ($backup && file_exists(GSDATADRAFTSPATH . $url . ".xml")) {
        backup_draft($url);
    }
    return XMLsave($xml, GSDATADRAFTSPATH . $url . ".xml");
}
Example #26
0
 if (!file_exists(GSDATAOTHERPATH . '_legacy_website.xml')) {
     $status = rename(GSDATAOTHERPATH . 'website.xml', GSDATAOTHERPATH . '_legacy_website.xml');
     if (!$status) {
         $error .= 'Unable to rename website.xml to _legacy_website.xml<br />';
     } else {
         $message .= '<li>Renamed website.xml to _legacy_website.xml</li>';
     }
 }
 #creating new website file
 $xml = new SimpleXMLElement('<item></item>');
 $xml->addChild('SITENAME', $SITENAME);
 $xml->addChild('SITEURL', $SITEURL);
 $xml->addChild('TEMPLATE', $TEMPLATE);
 $xml->addChild('PRETTYURLS', $PRETTYURLS);
 $xml->addChild('PERMALINK', $PERMALINK);
 $status = XMLsave($xml, GSDATAOTHERPATH . 'website.xml');
 if (!$status) {
     $error .= 'Unable to update website.xml file!<br />';
 } else {
     $message .= '<li>Created updated website.xml file</li>';
 }
 # rename old user.xml
 if (!file_exists(GSDATAOTHERPATH . '_legacy_user.xml')) {
     $status = rename(GSDATAOTHERPATH . 'user.xml', GSDATAOTHERPATH . '_legacy_user.xml');
     if (!$status) {
         $error .= 'Unable to rename user.xml to _legacy_user.xml<br />';
     } else {
         $message .= '<li>Renamed user.xml to _legacy_user.xml</li>';
     }
 }
 # rename old cp_settings.xml
Example #27
0
 $data = $xml;
 if (!empty($error) || empty($password)) {
     break;
 }
 # create user xml file
 backup_datafile(GSUSERSPATH . $file);
 // remove pass word reset
 $resetfile = GSUSERSPATH . getPWDresetName(_id($userid), 'xml');
 if (file_exists($resetfile)) {
     delete_file($resetfile);
 }
 exec_action('settings-user');
 // @hook settings-user LEGACY pre-save of a users settings
 exec_action('profile-save');
 // @hook profiel-user pre-save of a users settings
 if (!XMLsave($xml, GSUSERSPATH . $file)) {
     $error = i18n_r('CHMOD_ERROR');
     break;
 }
 # see new language file immediately
 if (!empty($lang)) {
     include GSLANGPATH . $lang . '.php';
 }
 if ($editing) {
     $success = sprintf(i18n_r('ER_YOUR_CHANGES'), $userid) . '. <a href="profile.php?undo&nonce=' . get_nonce("undo") . '&userid=' . $userid . '">' . i18n_r('UNDO') . '</a>';
 } else {
     if ($adding) {
         $success = sprintf(i18n_r('ER_YOUR_CHANGES'), $userid) . '. <a href="profile.php?undo&new&nonce=' . get_nonce("undo") . '&userid=' . $userid . '">' . i18n_r('UNDO') . '</a>';
     }
 }
 if ($adding) {
Example #28
0
            die("CSRF detected!");
        }
    }
    # get passed value from form
    $TEMPLATE = var_out($_POST['template']);
    if (!path_is_safe(GSTHEMESPATH . $TEMPLATE, GSTHEMESPATH)) {
        die;
    }
    # backup old website.xml file
    $bakpath = GSBACKUPSPATH . 'other/';
    createBak($file, $path, $bakpath);
    // # udpate website.xml file with new theme
    $xml = getXML($path . $file);
    $xml->TEMPLATE = null;
    $xml->TEMPLATE->addCData($TEMPLATE);
    $status = XMLsave($xml, $path . $file);
    $success = i18n_r('THEME_CHANGED');
}
# get available themes (only look for folders)
$themes_handle = opendir(GSTHEMESPATH) or die("Unable to open " . GSTHEMESPATH);
while ($file = readdir($themes_handle)) {
    $curpath = GSTHEMESPATH . $file;
    if (is_dir($curpath) && $file != "." && $file != "..") {
        $sel = "";
        if (file_exists($curpath . '/template.php')) {
            if ($TEMPLATE == $file) {
                $sel = "selected";
            }
            $theme_options .= '<option ' . $sel . ' value="' . $file . '" >' . $file . '</option>';
        }
    }
     $kill = i18n_r('CHMOD_ERROR');
 }
 # create password change trigger file
 $flagfile = GSUSERSPATH . _id($USR) . ".xml.reset";
 copy(GSUSERSPATH . $file, $flagfile);
 # create new website.xml file
 $file = 'website.xml';
 $xmls = new SimpleXMLExtended('<item></item>');
 $note = $xmls->addChild('SITENAME');
 $note->addCData($SITENAME);
 $note = $xmls->addChild('SITEURL');
 $note->addCData($SITEURL);
 $xmls->addChild('TEMPLATE', 'Innovation');
 $xmls->addChild('PRETTYURLS', '');
 $xmls->addChild('PERMALINK', '');
 if (!XMLsave($xmls, GSDATAOTHERPATH . $file)) {
     $kill = i18n_r('CHMOD_ERROR');
 }
 # create default index.xml page
 $init = GSDATAPAGESPATH . 'index.xml';
 $temp = GSADMININCPATH . 'tmp/tmp-index.xml';
 if (!file_exists($init)) {
     copy($temp, $init);
 }
 # create default components.xml page
 $init = GSDATAOTHERPATH . 'components.xml';
 $temp = GSADMININCPATH . 'tmp/tmp-components.xml';
 if (!file_exists($init)) {
     copy($temp, $init);
 }
 # create default 404.xml page
Example #30
0
 public static function getPages()
 {
     if (self::$pages) {
         return self::$pages;
     }
     $cachefile = GSDATAOTHERPATH . I18N_CACHE_FILE;
     if (!I18N_USE_CACHE || !file_exists($cachefile)) {
         // read pages into associative array
         self::$pages = array();
         $dir_handle = @opendir(GSDATAPAGESPATH) or die("Unable to open pages directory");
         while ($filename = readdir($dir_handle)) {
             if (strrpos($filename, '.xml') === strlen($filename) - 4 && !is_dir(GSDATAPAGESPATH . $filename)) {
                 $data = getXML(GSDATAPAGESPATH . $filename);
                 if (strpos($filename, '_') !== false) {
                     $pos = strpos($data->url, '_');
                     $url = substr($data->url, 0, $pos);
                     $lang = substr($data->url, $pos + 1);
                     if (!isset(self::$pages[$url])) {
                         self::$pages[$url] = array('url' => $url);
                     }
                     $menu = (string) $data->menu ? (string) $data->menu : (string) $data->title;
                     $title = (string) $data->title ? (string) $data->title : (string) $data->menu;
                     if ($menu) {
                         self::$pages[$url]['menu_' . $lang] = stripslashes($menu);
                     }
                     if ($title) {
                         self::$pages[$url]['title_' . $lang] = stripslashes($title);
                     }
                     if (isset($data->link) && (string) $data->link) {
                         self::$pages[$url]['link_' . $lang] = (string) $data->link;
                     }
                 } else {
                     $url = (string) $data->url;
                     if (!isset(self::$pages[$url])) {
                         self::$pages[$url] = array('url' => $url);
                     }
                     self::$pages[$url]['menuStatus'] = (string) $data->menuStatus;
                     self::$pages[$url]['menuOrder'] = (int) $data->menuOrder;
                     self::$pages[$url]['menu'] = stripslashes($data->menu);
                     self::$pages[$url]['title'] = stripslashes($data->title);
                     self::$pages[$url]['parent'] = (string) $data->parent;
                     self::$pages[$url]['private'] = (string) $data->private;
                     self::$pages[$url]['tags'] = (string) stripslashes($data->meta);
                     if (isset($data->link) && (string) $data->link) {
                         self::$pages[$url]['link'] = (string) $data->link;
                     }
                 }
             }
         }
         // sort pages
         $urlsToDelete = array();
         $sortedpages = array();
         foreach (self::$pages as $url => $page) {
             if (isset($page['parent']) && $page['private'] != 'Y') {
                 $sortedpages[] = array('url' => $url, 'parent' => $page['parent'], 'sort' => sprintf("%s%03s%s", $page['parent'], $page['menuOrder'], $url));
             } else {
                 $urlsToDelete[] = $url;
             }
         }
         $sortedpages = subval_sort($sortedpages, 'sort');
         if (count($urlsToDelete) > 0) {
             foreach ($urlsToDelete as $url) {
                 unset(self::$pages[$url]);
             }
         }
         // save cache file
         if (I18N_USE_CACHE) {
             $data = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><pages></pages>');
             foreach ($sortedpages as $sortedpage) {
                 $url = $sortedpage['url'];
                 $page = self::$pages[$url];
                 $pagedata = $data->addChild('page');
                 foreach ($page as $key => $value) {
                     $propdata = $pagedata->addChild($key);
                     $propdata->addCData($value);
                 }
             }
             XMLsave($data, $cachefile);
         }
     } else {
         $sortedpages = array();
         $data = getXML($cachefile);
         foreach ($data->page as $pagedata) {
             $url = '' . $pagedata->url;
             self::$pages[$url] = array();
             foreach ($pagedata as $propdata) {
                 self::$pages[$url][$propdata->getName()] = (string) $propdata;
             }
             $sortedpages[] = array('url' => $url, 'parent' => self::$pages[$url]['parent']);
         }
     }
     // fill children
     self::$pages[null] = array();
     foreach ($sortedpages as $sortedpage) {
         $parent = $sortedpage['parent'];
         if (isset(self::$pages[$parent])) {
             if (!isset(self::$pages[$parent]['children'])) {
                 self::$pages[$parent]['children'] = array();
             }
             self::$pages[$parent]['children'][] = $sortedpage['url'];
         }
     }
     return self::$pages;
 }