(root)/update.php - Rev 438
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 "$dirName/$file"";
}
}
}
$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;
}
}
?>