Subversion Repositories travelsized

Rev

Rev 3 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?PHP
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * This file is part of Uberghey CMS
 *              A content management system with modules, based on wiki syntax
 *
 * Author: Dan Jensen <admin@leinir.dk>
 * Copyright 2003/2004
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * The GNU General Public License is available at: http://www.gnu.org/copyleft/
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */


function isUpdated030() {
        global $userinfo_folder;
        if (is_dir("$userinfo_folder/admin")) return true;
        return false;
}

function updateTo030() {
        if (!isUpdated030()) {
                global $userinfo_folder;
                $dir = dir("./$userinfo_folder");
                while($file = $dir->read()) {
                        if($file != '.' && $file != '..') $files[] = $file;
                }
                $dir->close();
               
                $fp = fopen("setup/password.txt", "r");
                while (!feof($fp)) {
                        $line = trim(fgets($fp, 1000));
                        list($l, $p) = explode(",", $line);
                        $userlist[] = $l;
                }
                fclose($fp);
                foreach($userlist as $key => $value) {
                        global $userinfo_folder;
                        mkdir("./$userinfo_folder/$value");
                }
               
                foreach($files as $key => $value) {
                        global $userinfo_folder;
                        $where = strpos($value, ".");
                        $username = substr($value, 0, $where);
                        $filename = substr($value, $where + 1);
                        rename("./$userinfo_folder/$value", "./$userinfo_folder/$username/$filename");
                }
        }
}

function updateTo020() {
        if (!file_exists("setup/recent_pages.txt")) {
                $setup_folder = "setup";
                $page_folder = "$setup_folder/pages";
               
                /* Begin define functions { */
                        function fetchNode($txtfile) {
                                $fp = fopen($txtfile, "r");
                                $contents = fread($fp, filesize($txtfile));
                                $contents = unserialize($contents);
                                if (!empty($contents["date"])) {
                                        $data = $contents;
                                }
                                $data = array_reverse($data);
                                fclose($fp);
                                return $data;
                        }
               
                        function savePageData($page_folder, $page_id, $page_language = "en", $page_author, $page_author_email, $page_menu, $page_title, $page_content, $page_date) {
                                if ($page_language == "") $page_language = "en";
                                $txtfile = "$page_folder/$page_id.$page_language.txt";
                               
                                //These regular expression replaces make sure the botched up data from web forms
                                $page_content = preg_replace("/\\\'/", "'", $page_content);
                                $page_content = preg_replace("/\\\\\"/", "\"", $page_content);
                                $page_content = preg_replace("/\\\\\\\\/", "\\", $page_content);
                               
                                $data = array(  "id"                    => $page_id,
                                                "language"              => $page_language,
                                                "author"                => $page_author,
                                                "email"                 => $page_author_email,
                                                "menu"                  => $page_menu,
                                                "title"                 => $page_title,
                                                "content"               => $page_content,
                                                "date"                  => $page_date);
                                $data = serialize($data);
                                if (file_exists($txtfile)) unlink($txtfile);
                                $fp = fopen($txtfile, "a");
                                if ($fp) {
                                        $fp = fwrite($fp, $data);
                                        chmod(dirname($_SERVER['SCRIPT_FILENAME'])."/".$txtfile, 0777);
                                        return true;
                                } else {
                                        $this->ERRORS = "Could not save page.";
                                        return false;
                                }
                        }
                /* End define functions } */
               
               
                echo "Please wait while running the updater...<br />";
               
                /* Convert nodes to pages */
                        echo "Converting nodes to pages...<br /><ul>";
                        // 1. Create new folder called pages
                        if (!mkdir("$setup_folder/pages", 0777)) echo "Could not create new folder for pages. Please make sure you have the corrent permissions set.";
               
                        // 2. Load existing nodes one by one, change the id "subject" to "menu"
                        //   and save them to the new folder, delete the old file when done
                        $dirName = "./$setup_folder/nodes";
                        $dir = dir($dirName);
                        while($file = $dir->read()) {
                                if($file != '.' && $file != '..') {
                                        echo "<li>Converting $dirName/$file...";
                                        $data = fetchNode($dirName."/".$file);
                                        if (savePageData("$setup_folder/pages", $data["id"], $data["language"], $data["author"], $data["email"], $data["subject"], $data["title"], $data["content"], $data["date"])) {
                                                unlink($dirName.'/'.$file);
                                        } else {
                                                echo "Error while converting node from file &quot;$dirName/$file&quot;";
                                        }
                                }
                        }
                        $dir->close();
               
                        // 3. Delete old folder
                        rmdir($dirName);
                       
                        echo "</ul>";
               
                /* Convert front pages */
                        echo "Converting front page data...<br /><ul>";
                        // First, get a list of all the languages
                        $fp = opendir("./$setup_folder/i18n/");
                        while ($file = readdir($fp)) {
                                if ($file != "." && $file != "..") {
                                        //Only include the folder, if there is actually a theme in there
                                        $languages[] = $file;
                                }
                        }
                        closedir($fp);
                       
                        //cycle through the languages
                        foreach($languages as $key => $value) {
                                $fileName = "$setup_folder/i18n/$value/0.inc";
                                include($fileName);
                                $datatosave = "<?PHP\n\$page_title = \"$node_title\";\n\$page_content = \"$node_content\";\n?>";
                                if (unlink("$fileName")) {
                                        if ($fp = fopen($fileName, 'a')) {
                                                if (fwrite($fp, $datatosave) === FALSE) {
                                                        echo "Could not convert front page. Please make sure you have the correct permissions set.";
                                                } else {
                                                        echo "<li>$value</li>";
                                                }
                                        } else {
                                                echo "Could not convert front page. Please make sure you have the correct permissions set.";
                                        }
                                } else {
                                        echo "Could not convert front page. Please make sure you have the correct permissions set.";
                                }
                        }
                        echo "</ul>";
                       
                /* Convert subjectmenus to menus (just rename the folder from setup/subjects to setup/menus */
                        echo "Converting subject menus to menus...<br />";
                        if (!rename("$setup_folder/subjects", "$setup_folder/menus")) echo "Could not convert subject menus to menus. Please make sure you have the corrent permissions set.";
               
                /* Rename node_backwards.txt to page_backwards.txt */
                        echo "Converting backwards lookup index...<br />";
                        if (!rename("$setup_folder/node_backwards.txt", "$setup_folder/page_backwards.txt")) echo "Could not convert subject menus to menus. Please make sure you have the corrent permissions set.";
                       
                /* Rename recent_nodes.txt to recent_pages.txt */
                        echo "Converting recent nodes lookup index...<br />";
                        if (!rename("$setup_folder/recent_nodes.txt", "$setup_folder/recent_pages.txt")) echo "Could not convert subject menus to menus. Please make sure you have the corrent permissions set.";

                echo "Done! Remember to update your themes to the new format (no more NODE and SUBJECT, say hello to PAGE and MENU). <a href=\"index.php\">Click here to refresh the page</a>.<hr />";
                return true;
        } else {
                return false;
        }
}
?>