moved header version number to the version.inc.php and adjusted the phpgw.inc.php to reflext that change. Upgrades of the header will be done in the new setup program

This commit is contained in:
seek3r 2000-11-30 21:20:07 +00:00
parent cc10ad0f54
commit dbdf4c5f64
4 changed files with 137 additions and 401 deletions

View File

@ -1,55 +1,45 @@
<?php <?php
include("./inc/functions.inc.php");
include("../version.inc.php");
if ($download) { if ($download) {
header("Content-disposition: attachment; filename=header.inc.php"); header("Content-disposition: attachment; filename=header.inc.php");
header("Content-type: application/octet-stream"); header("Content-type: application/octet-stream");
header("Pragma: no-cache"); header("Pragma: no-cache");
header("Expires: 0"); header("Expires: 0");
$ftemplate = fopen(dirname($SCRIPT_FILENAME)."../header.inc.php.template","r"); echo $newheader;
$template = fread($ftemplate,filesize(dirname($SCRIPT_FILENAME)."../header.inc.php.template"));
fclose($ftemplate);
while(list($k,$v) = each($HTTP_POST_VARS)) {
$template = ereg_replace("__".strtoupper($k)."__",$v,$template);
}
echo $template;
exit; exit;
}else{ }elseif ($view) {
?> show_header("Generated header.inc.php");
<html><head></head><body bgcolor="#ffffff"> echo "<br>Save this text as contents of your header.inc.php<br><hr>";
if you are done and wrote the config without errors you can go <a href="./">here</a> to $newheader = generate_header();
finish the setup echo "<pre>";
<table> echo htmlentities($newheader);
<tr bgcolor="486591"> echo "</pre></body></html>";
<th colspan=2><font color="fefefe"> Analysis </font></th></tr> exit;
<tr><td colspan=2> }elseif ($createfile) {
<? if(!is_writeable ($server_root."/header.inc.php")){
// Hardly try to find what DB-support is compiled in show_header("Error generating header.inc.php");
// this dont work with PHP 3.0.10 and lower ! echo "Could not open header.inc.php for writing!<br>\n";
if(isset($write_config) && !empty($write_config)) { echo "Please check read/write permissions on directories or back up and use another option.<br>";
$fsetup = true;
$ftemplate = fopen(dirname($SCRIPT_FILENAME)."../header.inc.php.template","r");
if($ftemplate){
$fsetup = fopen($server_root."/header.inc.php","w");
if(!$fsetup){
echo "could not open header.inc.php for writing !<br>";
echo "please check read/write permissions on directories or back up and download the file. Then save it to the correct location<br>";
echo "</td></tr></table></body></html>"; echo "</td></tr></table></body></html>";
exit; exit;
}else{ }else{
$template = fread($ftemplate,filesize(dirname($SCRIPT_FILENAME)."../header.inc.php.template")); show_header("Saved header.inc.php");
fclose($ftemplate); $newheader = generate_header();
while(list($k,$v) = each($HTTP_POST_VARS)) { $fsetup = fopen($server_root."/header.inc.php","w");
echo "Replace token '__".strtoupper($k)."__' with value '$v'<br>\n"; fwrite($fsetup,$newheader);
$template = ereg_replace("__".strtoupper($k)."__",$v,$template);
}
fwrite($fsetup,$template);
fclose($fsetup); fclose($fsetup);
echo "Created header.inc.php!<br>"; echo "Created header.inc.php!<br>";
}
}else{
echo "could not open template header for reading !<br>";
exit; exit;
} }
} }else{
show_header("Create/Edit your header.inc.php");
echo '<table>
<tr bgcolor="486591"><th colspan=2><font color="fefefe"> Analysis </font></th></tr>
<tr><td colspan=2>';
// Hardly try to find what DB-support is compiled in
// this dont work with PHP 3.0.10 and lower !
$supported_db = array(); $supported_db = array();
if(extension_loaded("mysql")) { if(extension_loaded("mysql")) {
@ -79,15 +69,32 @@ finish the setup
echo "<b><p align=center><font size=+2 color=red>did not found any valid DB support !<br>try to configure your php to support one of the above mentioned dbs or install phpgroupware by hand </font></p></b><td></tr></table></body></html>"; echo "<b><p align=center><font size=+2 color=red>did not found any valid DB support !<br>try to configure your php to support one of the above mentioned dbs or install phpgroupware by hand </font></p></b><td></tr></table></body></html>";
exit; exit;
} }
$no_guess = false; $no_guess = false;
$may_test = false;
if(file_exists("../header.inc.php") && is_file("../header.inc.php")) { if(file_exists("../header.inc.php") && is_file("../header.inc.php")) {
echo "found configuration. using this for defaults<br>\n"; echo "Found existing configuration file. Loading settings from the file...<br>\n";
$phpgw_info["flags"]["noapi"] = True; $phpgw_info["flags"]["noapi"] = True;
include("../header.inc.php"); include("../header.inc.php");
$no_guess = true; $no_guess = true;
$may_test = true; /* This code makes sure the newer multi-domain supporting header.inc.php is being used */
if (!isset($phpgw_domain)) {
echo "Your using an old configuration file format...<br>\n";
echo "Importing old settings into the new format....<br>\n";
}else{
if ($phpgw_info["server"]["header_version"] != $phpgw_info["server"]["current_header_version"]) {
echo "Your using an old header.inc.php version...<br>\n";
echo "Importing old settings into the new format....<br>\n";
}
reset($phpgw_domain);
$default_domain = each($phpgw_domain);
$phpgw_info["server"]["default_domain"] = $default_domain[0];
unset ($default_domain); // we kill this for security reasons
$phpgw_info["server"]["db_host"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["db_host"];
$phpgw_info["server"]["db_name"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["db_name"];
$phpgw_info["server"]["db_user"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["db_user"];
$phpgw_info["server"]["db_pass"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["db_pass"];
$phpgw_info["server"]["db_type"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["db_type"];
$phpgw_info["server"]["config_passwd"] = $phpgw_domain[$phpgw_info["server"]["default_domain"]]["config_passwd"];
}
} else { } else {
echo "sample configuration not found. using built in defaults<br>\n"; echo "sample configuration not found. using built in defaults<br>\n";
$phpgw_info["server"]["server_root"] = "/path/to/phpgroupware"; $phpgw_info["server"]["server_root"] = "/path/to/phpgroupware";
@ -119,21 +126,6 @@ finish the setup
} }
?> ?>
</td></tr> </td></tr>
<?
if($may_test) {
?>
<tr bgcolor=486591><th colspan=2><font color="fefefe">Test DB Connection</font></th></tr>
<tr><td colspan=2 align=center><form action="<? echo $PHP_SELF ?>" method=post>
<input type=hidden name=test_con value=1>
<input type=submit value="Test Connection Now">
</form>
<?
if(isset($test_con) && $test_con == 1) {
echo "Not yet implemented !<br>\n";
}
echo "</td></tr>\n";
}
?>
<tr bgcolor=486591><th colspan=2><font color="fefefe">Settings</font></th></tr> <tr bgcolor=486591><th colspan=2><font color="fefefe">Settings</font></th></tr>
<form action="<? echo $PHP_SELF ?>" method=post> <form action="<? echo $PHP_SELF ?>" method=post>
<input type=hidden name=write_config value=true> <input type=hidden name=write_config value=true>
@ -179,7 +171,7 @@ finish the setup
<tr><td><b>Configuration Password</b><br><input type=text name=config_pass value="<? echo $phpgw_info["server"]["config_passwd"] ?>"></td><td>Password needed for configuration</td></tr> <tr><td><b>Configuration Password</b><br><input type=text name=config_pass value="<? echo $phpgw_info["server"]["config_passwd"] ?>"></td><td>Password needed for configuration</td></tr>
<tr><td colspan=2><b>Enable MCrypt<br> <tr><td colspan=2><b>Enable MCrypt<br>
<select name=mcrypt_enabled > <select name=enable_mcrypt >
<? if($phpgw_info["flags"]["mcrypt_enabled"] == True) { ?> <? if($phpgw_info["flags"]["mcrypt_enabled"] == True) { ?>
<option value=True selected>True <option value=True selected>True
<option value=False>False <option value=False>False
@ -191,16 +183,26 @@ finish the setup
</td></tr> </td></tr>
<tr><td><b>MCrypt version</b><br><input type=text name=mcrypt_version value="<? echo $phpgw_info["server"]["mcrypt_version"] ?>"></td><td>Set this to "old" for versions < 2.4, otherwise the exact mcrypt version you use</td></tr> <tr><td><b>MCrypt version</b><br><input type=text name=mcrypt_version value="<? echo $phpgw_info["server"]["mcrypt_version"] ?>"></td><td>Set this to "old" for versions < 2.4, otherwise the exact mcrypt version you use</td></tr>
<tr><td><b>MCrypt initilazation vector</b><br><input type=text name=mcrypt_iv value="<? echo $phpgw_info["server"]["mcrypt_iv"] ?>"></td><td>It should be around 30 bytes in length</td></tr> <tr><td><b>MCrypt initilazation vector</b><br><input type=text name=mcrypt_iv value="<? echo $phpgw_info["server"]["mcrypt_iv"] ?>"></td><td>It should be around 30 bytes in length</td></tr>
</table>
<? <?
if(!$found_dbtype) { if(!$found_dbtype) {
echo "<br><font color=red>Warning!<br>The db_type in defaults (".$phpgw_info["server"]["db_type"].") is not supported on this server. using first supported type.</font>"; echo "<br><font color=red>Warning!<br>The db_type in defaults (".$phpgw_info["server"]["db_type"].") is not supported on this server. using first supported type.</font>";
} }
?> ?>
</td></tr> <br>
<tr><th colspan=2 align=center><input type=submit value="write config"> or <input type=submit name="download" value="download"></th></tr> <form>
<?php
if(is_writeable ($server_root."/header.inc.php")){
echo '<input type=submit name="createfile" value="write config">';
}else{
echo 'Cannot create the header.inc.php due to file permission restrictions.<br> Instead you can ';
echo'<input type=submit name="download" value="download">or <input type=submit name="view" value="view"> the file.';
echo'<br> After retrieving the file put it into place as the header.inc.php, then click continue.<br>';
echo'<input type=submit name="continue" value="continue">';
}
?>
</form> </form>
</td></tr>
</table>
</body> </body>
</html> </html>
<?php } ?> <?php } ?>

View File

@ -84,8 +84,8 @@
echo "</body></html>\n"; echo "</body></html>\n";
} }
// function loaddb(){ function loaddb(){
// global $phpgw_domain, $FormLogout, $FormDomain, $SetupPW, $SetupDomain, $db, $PHP_SELF; global $phpgw_domain, $FormLogout, $FormDomain, $SetupPW, $SetupDomain, $db, $PHP_SELF, $HTTP_POST_VARS;
/* This code makes sure the newer multi-domain supporting header.inc.php is being used */ /* This code makes sure the newer multi-domain supporting header.inc.php is being used */
if (!isset($phpgw_domain)) { if (!isset($phpgw_domain)) {
@ -134,6 +134,6 @@
$db->Database = $phpgw_domain[$SetupDomain]["db_name"]; $db->Database = $phpgw_domain[$SetupDomain]["db_name"];
$db->User = $phpgw_domain[$SetupDomain]["db_user"]; $db->User = $phpgw_domain[$SetupDomain]["db_user"];
$db->Password = $phpgw_domain[$SetupDomain]["db_pass"]; $db->Password = $phpgw_domain[$SetupDomain]["db_pass"];
// } }
// loaddb(); loaddb();
?> ?>

View File

@ -16,338 +16,72 @@
// page explaining what to do from there (ie, create there own account) // page explaining what to do from there (ie, create there own account)
$phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True, "currentapp" => "home", "noapi" => True); $phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True, "currentapp" => "home", "noapi" => True);
include("./inc/functions.inc.php");
if(!file_exists("../header.inc.php") || !is_file("../header.inc.php")) {
$stage = 1.1;
$header_msg = "Stage One";
}else{
include("../header.inc.php"); include("../header.inc.php");
include("../version.inc.php"); // To set the current core version if (!isset($phpgw_domain) || $phpgw_info["server"]["header_version"] != $phpgw_info["server"]["current_header_version"]) {
$stage = 1.2;
// Authorize the user to use setup app and load the database $header_msg = "Stage One (Upgrade your header.inc.php)";
include("./inc/setup_auth.inc.php"); }else{ /* header.inc.php part settled. Moving to authentication */
// Does not return unless user is authorized $stage = 1.3;
$header_msg = "Stage One (Completed)";
// $db->Halt_On_Error = "report"; if (!auth()){
show_header("Please login",True);
loginForm($login_msg);
exit;
}else{ /* authentication settled. Moving to the database portion. */
loaddb();
$db->Halt_On_Error = "no"; $db->Halt_On_Error = "no";
if (!isset($oldversion)){ $db->query("show tables");
@$db->query("select app_version from applications where app_name='admin'"); if ($db->num_rows()){
@$db->next_record(); /* tables exists. checking for post beta version */
$oldversion = $db->f("app_version"); $db->free();
}
/**********************************************************************\
* First order of business is to upgrade or install the core. *
* if $ok is set to false after this include, the setup stops here *
* otherwise, we display the app setup form. *
* This is sorta kludgy still, but until I can figure out a clean way *
* for applications to inteact with the user, this is how it is. *
* *
\**********************************************************************/
/* Commenting out the following header since it breaks necessary
redirections in the setup code (core_setup.inc.php). -mr_e
echo ' <table border="0" width="100%"><tr>'
. '<td align="left" bgcolor="486591">&nbsp;<font color="fefefe">phpGroupWare version '
. $phpgw_info["server"]["version"] . ' setup</font></td><td align="right" bgcolor="486591">';
echo "<form action='".$PHP_SELF."' method='POST'>\n";
echo " <input type='hidden' name='FormLogout' value='True'>\n";
echo " <input type='submit' name='Logout' value='Logout'>\n";
echo " </form>\n";
echo "</td></tr></table>";
*/
$ok = true;
$baseDir = $phpgw_info["server"]["server_root"];
include("./inc/core_setup.inc.php");
if (!$ok) {
exit;
} else {
setup_header();
echo "<p><table width=\"70%\" border='0' align='center' bgcolor='#e6e6e6' cellpadding='3' cellspacing='0'>\n";
echo "<tr bgcolor='#486591'>";
echo "<th align=\"center\"><font color='#fefefe'>phpGroupWare Core Staus</font></th>";
echo "</tr>\n";
$db->query("select app_version from applications where app_name='admin'"); $db->query("select app_version from applications where app_name='admin'");
$db->next_record(); $db->next_record();
$curversion = $db->f("app_version"); $oldversion = $db->f("app_version");
echo "<tr><td align=\"center\">Core version $curversion. No updates needed.</td></tr>\n"; $db->free();
echo "</table>\n\n"; if (isset($oldversion)){
} if ($oldversion == $phpgw_info["server"]["version"]){
// Remove the appName from all users and groupws on the system $stage = 2.5;
function removeAppPerms($appName) { $header_msg = "Stage 2 (Tables are Current)";
global $db;
}
/**********************************************************************\
* See the Developers HOWTO and the example app in phpgwapps for more *
* info on how to integrate your application with this system. *
\**********************************************************************/
// Called by the app setup classes to add/remove lang records
// it acts correctly according to the current action,
// for an install/upgrade it removes the old record & installes the new one
// for an uninstall it removes the record (as long is as it NOT in common)
//
// TODO: This mechanism is VERY TEMPORARY until jengo and blinky can figure
// out a clean way to use transy for this!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function do_lang($msg_id,$app,$lang,$content) {
global $db,$currentAction;
$msg_id = strtolower($msg_id);
$act = strtolower($currentAction);
//echo "Do Lang: $act, $msg_id, $app, $lang, $content<br>\n";
// Remove the old one
if ($act == "uninstall" || $act == "upgrade") {
if ($app == "common") {
echo "<!-- Not touching message_id '".$msg_id."' as it is in app common. -->\n";
}else{ }else{
$sql = "DELETE FROM lang WHERE message_id='" . $msg_id . "' AND app_name='". $app ."'"; $stage = 2.4;
$db->query($sql); $header_msg = "Stage 2 (Tables need upgrading)";
} }
}
// Add the new one
// By setting $content == "", it allows you to prune old messages from the system
if ($content != "" && $act == "install") {
$sql = "INSERT INTO lang(message_id,app_name,lang,content) VALUES(";
$sql .= "'".$msg_id."',";
$sql .= "'".$app."',";
$sql .= "'".$lang."',";
$sql .= "'".$content."')";
$db->query($sql);
}
if ($content != "" && $act == "upgrade") {
$sql = "UPDATE lang SET ";
$sql .= "content='".$content."' WHERE";
$sql .= " message_id ='".$msg_id."'";
$sql .= " AND app_name = '".$app."'";
$sql .= " AND lang = '".$lang."'";
$db->query($sql);
}
}
/**********************************************************************\
* *
\**********************************************************************/
/**********************************************************************\
* Apps should call this function to report errors if possible to *
* display them in a nice and controlled format *
\**********************************************************************/
function error($msg) {
global $error_count;
++$error_count;
echo "<tr><td><font color='#ff0000'>".$msg."</font></td></tr>\n";
}
/**********************************************************************\
* Apps should call this function to report warnings if possible to *
* display them in a nice and controlled format *
\**********************************************************************/
function warn($msg) {
echo "<tr><td><font color='#ff00ff'>".$msg."</font></td></tr>\n";
}
/**********************************************************************\
* Applications (and the core) inherit from this class which provides *
* all the hooks that setup needs to call for the app. *
* *
* Applications should call warn() or error() to communicate with *
* the user. *
\**********************************************************************/
// Template for the app-specific setup classes
class Setup {
// Is *ANY* version of the app currently installed ?
function is_installed() {
return false;
}
// Is the app installed and up to date?
function is_current() {
return true;
}
// Can the installed version be upgraded to the
// new one?
function can_upgrade() {
return false;
}
// If this application dpends on any other apps
// this shouldd return an array of the app names (the directory name)
// or return false if it can stand alone
function dependant_apps() {
return false;
}
// Called to actually upgrade the app
function upgrade() {
return true;
}
function install() {
return false;
}
// Called to uninstall the app
// You should remove all tables and files you created,
// and return the system to the state it was before upgrade/install was called
function uninstall() {
}
}
// Loop through all the directories looking for possible 3rd party apps
$baseDir = $phpgw_info["server"]["server_root"];
$setupFile = "/inc/setup.inc.php"; // File to look for to identify apps
$dh = opendir($baseDir);
while ($dir = readdir($dh)) {
$fp = $baseDir . "/" . $dir;
if ($dir[0] != '.' && is_dir($fp)) {
$fp .= $setupFile;
if (is_file($fp) && $dir != "setup") {
//echo "found a setup! in $fp<br>\n";
$detectedApps[$dir]["path"] = $fp;
$detectedApps[$dir]["name"] = $dir;
$detectedApps[$dir]["dir"] = $baseDir."/".$dir;
}
}
}
closedir($dh);
while ($detectedApps && list($name,$app) = each($detectedApps)) {
include($app["path"]);
$detectedApps[$name]["setup"] = new $classname($app["dir"]);
}
// If the user wanted to upgrade/install/remove an app, now is the time
if ((isset($submit) && $submit == "Perform Actions") &&
is_array($appAction)) {
echo "<p>\n";
echo "<table border='0' align='center' bgcolor='#e6e6e6' cellpadding='3' cellspacing='0'>\n";
echo "<tr bgcolor='#486591'>";
echo "<th><font color='#fefefe'>Making Application Changes</font></th>";
echo "</tr>\n";
reset($detectedApps);
$numAltered = 0;
while ($detectedApps && list($name,$a) = each($detectedApps)) {
$app = $a["setup"];
switch ($appAction[$name]) {
case "ignore":
break;
case "upgrade":
$currentAction = "upgrade";
if ($app->upgrade()) {
echo "<tr><td><b>$name</b> upgraded.</td></tr>\n";
}else{ }else{
echo "<tr bgcolor='#ff4444'><td><b>$name</b> - upgrade failed!</td></tr>\n"; $stage = 2.2;
$header_msg = "Stage 2 (Tables appear to be pre-beta)";
} }
++$numAltered;
break;
case "install":
$currentAction = "install";
if ($app->install()) {
echo "<tr><td><b>$name</b> installed.</td></tr>\n";
}else{ }else{
echo "<tr bgcolor='#ff4444'><td><b>$name</b> - install failed!</td></tr>\n"; /* no tables, so checking if we can create them */
} $db->free();
++$numAltered; $isdb = $db->connect("kljkjh", "localhost", "phpgroupware", "phpgr0upwar3");
break; echo "isdb: ".$isdb."<br>\n";
case "uninstall":
$currentAction = "uninstall";
if ($app->uninstall()) { $db->free();
echo "<tr><td><b>$name</b> uninstalled.</td></tr>\n"; $db_rights = $db->query("CREATE TABLE phpgw_testrights ( testfield varchar(5) NOT NULL )");
removeAppPerms($name); echo "db_rights: ".$db_rights."<br>\n";
if (isset($db_rights)){
$stage = 2.3;
$header_msg = "Stage 2 (Create tables)";
}else{ }else{
echo "<tr bgcolor='#ff4444'><td><b>$name</b> - uninstall failed!</td></tr>\n"; $stage = 2.1;
$header_msg = "Stage 2 (Create Database)";
} }
++$numAltered; $db->query("DROP TABLE phpgw_testrights");
break;
} }
} } /* from authentication check */
if ($numAltered == 0) { } /* from header version check */
echo "<tr><td>No applications altered.</td></tr>\n"; } /* From header.inc.php not existing */
} show_header($header_msg);
echo "</table>\n"; show_steps($stage);
}
echo "<form action='".$PHP_SELF."' method='POST'>\n";
echo "<table border='0' align='center' bgcolor='#e6e6e6' cellpadding='3' cellspacing='1' width=\"70%\">\n";
echo "<tr bgcolor='#486591'><th colspan='7'><font color='#fefefe'>Application Setup</font></th></tr>\n";
echo "<tr bgcolor='#486591'>";
echo "<td align=\"center\"><font color='#fefefe'>Application</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Installed Version</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Detected Version</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Install</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Upgrade</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Remove</font></td>";
echo "<td align=\"center\"><font color='#fefefe'>Do Nothing</font></td>";
echo "</tr>\n";
$numApps = 0;
if (isSet($detectedApps)) reset($detectedApps);
while ($detectedApps && list($name,$a) = each($detectedApps)) {
$app = $a["setup"];
echo "<tr>";
echo " <td>".$name."</td>\n";
if (is_object($a["setup"])) {
$installed = $app->is_installed();
$code = $app->code_version();
}
if (!$installed) {
echo " <td>-not yet installed-</td>\n";
} else if ($installed == "0.0.0" || $installed == "0.0") {
echo " <td>Pre-Beta</td>";
} else {
echo " <td>".$installed."</td>\n";
}
echo " <td>".$code."</td>\n";
if ($installed && $app->is_current()) {
echo " <td>N/A</td>"; // Can't install
echo " <td>N/A</td>"; // Can't upgrade
echo " <td><input type='radio' name='appAction[".$name."]' value='uninstall'>"; // Can remove
echo " <td><input type='radio' name='appAction[".$name."]' value='ignore' checked>"; // Can ignore
} else if ($installed) {
echo " <td>N/A</td>"; // Can't install
echo " <td><input type='radio' name='appAction[".$name."]' value='upgrade' checked>"; // Can upgrade
echo " <td><input type='radio' name='appAction[".$name."]' value='uninstall'>"; // Can remove
echo " <td><input type='radio' name='appAction[".$name."]' value='ignore'>"; // Can ignore
} else {
echo " <td><input type='radio' name='appAction[".$name."]' value='install' checked>"; // Can install
echo " <td>N/A</td>"; // Can't upgrade
echo " <td>N/A</td>"; // Can't remove
echo " <td><input type='radio' name='appAction[".$name."]' value='ignore'>"; // Can ignore
}
echo "</tr>\n";
++$numApps;
}
if ($numApps) {
echo "<tr><td colspan='7' align='right'><input type='submit' name='submit' value='Perform Actions'></td></tr>\n";
} else {
echo "<tr><td colspan='7' align='right'>Found no non-core applications. ";
echo "Visit <a href='http://phpgroupware.org/'>phpGroupWare.org</a> to obtain add-on applications.</td></tr>\n";
}
echo "</table>\n";
echo "</form>\n";
echo "Applications not in the table above are either part of the phpGroupWare core, or ";
echo "have not been upgraded to the new phpGroupWare application setup code.";
echo "<p>When you are done installing and upgrading applications, you should ";
echo "continue to the <a href='config.php'>Configuration Page</a>";
echo "<br>or skip to <a href='lang.php'>Configure multi-language support</a>.\n";
echo "<br><br>or for a drastic measure, you can delete all your tables and data and recreate the new empty tables.\n";
echo " <form method=\"POST\" action=\"$PHP_SELF\">\n";
echo " <input type=\"submit\" name=\"action\" value=\"Delete my old tables\">\n";
echo " </form>\n";
?> ?>
</body> </body>
</html> </html>

View File

@ -12,4 +12,4 @@
/* $Id$ */ /* $Id$ */
$phpgw_info["server"]["version"] = "0.9.7pre1"; $phpgw_info["server"]["version"] = "0.9.7pre1";
?> $phpgw_info["server"]["current_header_version"] = "1.4";