diff --git a/setup/inc/functions.inc.php b/setup/inc/functions.inc.php new file mode 100644 index 0000000000..fe5d52d87e --- /dev/null +++ b/setup/inc/functions.inc.php @@ -0,0 +1,198 @@ + + + phpGroupWare Setup + <?php + if ($title != ""){echo " - ".$title;} ?> + + + + + + + +
 phpGroupWare version setup + + Logout '; + } + + echo "
"; + } + function loginForm($err=""){ + global $phpgw_info, $phpgw_domain, $SetupDomain, $SetupPW, $PHP_SELF; + echo "

\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($err != "") { + echo " \n"; + } + echo " \n"; + echo " \n"; + echo " \n"; + echo "
 Setup Login
".$err."
\n"; + if (count($phpgw_domain) > 1){ + echo " \n"; + echo "
Domain:
Password:
\n"; + }else{ + echo " \n"; + echo " \n"; + } + echo " \n"; + echo "
\n"; + echo "\n"; + } + function auth(){ + global $phpgw_domain, $FormLogout, $FormDomain, $FormPW, $SetupPW, $SetupDomain, $db, $HTTP_POST_VARS, $login_msg; + if (isset($FormLogout)) { + setcookie("SetupPW"); // scrub the old one + setcookie("SetupDomain"); // scrub the old one + $login_msg = "You have sucessfully logged out"; + return False; + } elseif (isset($SetupPW)) { + if ($SetupPW != $phpgw_domain[$SetupDomain]["config_passwd"]) { + setcookie("SetupPW"); // scrub the old one + setcookie("SetupDomain"); // scrub the old one + $login_msg = "Invalid session cookie (cookies must be enabled)"; + return False; + }else{ + return True; + } + } elseif (isset($FormPW)) { + if ($FormPW == $phpgw_domain[$FormDomain]["config_passwd"]) { + setcookie("SetupPW",$FormPW); + setcookie("SetupDomain",$FormDomain); + $SetupDomain = $FormDomain; + return True; + }else{ + $login_msg = "Invalid password"; + return False; + } + } else { + return False; + } + } + + function loaddb(){ + global $phpgw_info, $phpgw_domain, $SetupDomain, $db; + /* Database setup */ + $phpgw_info["server"]["api_dir"] = $phpgw_info["server"]["include_root"]."/phpgwapi"; + include($phpgw_info["server"]["api_dir"] . "/phpgw_db_".$phpgw_domain[$SetupDomain]["db_type"].".inc.php"); + $db = new db; + $db->Host = $phpgw_domain[$SetupDomain]["db_host"]; + $db->Type = $phpgw_domain[$SetupDomain]["db_type"]; + $db->Database = $phpgw_domain[$SetupDomain]["db_name"]; + $db->User = $phpgw_domain[$SetupDomain]["db_user"]; + $db->Password = $phpgw_domain[$SetupDomain]["db_pass"]; + + } + + function show_steps($stage, $note = False) { + global $phpgw_info, $PHP_SELF; + + /* The stages are as follows: + Stage 1.1 = header does not exists yet + Stage 1.2 = header exists, but is the wrong version + Stage 1.3 = header exists and is current + Stage 2.1 = database does not exists yet + Stage 2.2 = database exists pre-beta tables + Stage 2.3 = database exists but no tables + Stage 2.4 = database and tables exists but need upgrading + Stage 2.5 = database and tables exists and are current + Stage 3 = + Stage 4 = + Stage 5 = + */ + + echo ''; + echo ' '; + if ($stage == 1.1) { + echo ''; + }elseif ($stage == 1.2) { + echo ''; + }elseif ($stage >= 1.3) { + echo ''; + } + echo ' '; + if ($stage < 2.1) { + echo ''; + }elseif ($stage == 2.1) { + echo ''; + }elseif ($stage == 2.2) { + echo ''; + }elseif ($stage == 2.3) { + echo ''; + }elseif ($stage == 2.4) { + echo ''; + }elseif ($stage == 2.5) { + echo ''; + } + + echo ' '; + if ($stage < 3.1) { + echo ''; + }elseif ($stage == 3.1) { + echo ''; + }elseif ($stage == 3.2) { + echo ''; + } + + echo '
Step 1 - header.inc.php 
O
You have not created your header.inc.php yet.
O
Your header.inc.php is out of date. Please upgrade it.
X
+ Your header.inc.php is in place and current.
Step 2 - database management 
ONot ready for this stage yet.
O
Your database does not exist.
O
Your database exist but your pre-beta tables need upgrading.
O
Your database exist, would you like to create your tables now?
O
Your database exist but your tables need upgrading.
XYour tables are current.
Step 3 - language management 
ONot ready for this stage yet.
Ostage 3.1.
Ostage 3.2.
'; + } + + function generate_header(){ + Global $SCRIPT_FILENAME, $HTTP_POST_VARS, $k, $v; + $ftemplate = fopen(dirname($SCRIPT_FILENAME)."/../header.inc.php.template","r"); + if($ftemplate){ + $ftemplate = fopen(dirname($SCRIPT_FILENAME)."/../header.inc.php.template","r"); + $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); + } + return $template; + }else{ + echo "Could not open the header template for reading!
"; + exit; + } + } +?> diff --git a/setup/tables.php b/setup/tables.php new file mode 100644 index 0000000000..495ca12258 --- /dev/null +++ b/setup/tables.php @@ -0,0 +1,353 @@ + True, "nonavbar" => True, "currentapp" => "home", "noapi" => True); + include("../header.inc.php"); + include("../version.inc.php"); // To set the current core version + + // Authorize the user to use setup app and load the database + include("./inc/setup_auth.inc.php"); + // Does not return unless user is authorized + +// $db->Halt_On_Error = "report"; + $db->Halt_On_Error = "no"; + + if (!isset($oldversion)){ + @$db->query("select app_version from applications where app_name='admin'"); + @$db->next_record(); + $oldversion = $db->f("app_version"); + } + + /**********************************************************************\ + * 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 ' ' + . '
 phpGroupWare version ' + . $phpgw_info["server"]["version"] . ' setup'; + echo "
\n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo "
"; + */ + + $ok = true; + $baseDir = $phpgw_info["server"]["server_root"]; + include("inc/core_setup.inc.php"); + if (!$ok) { + exit; + } else { + setup_header(); + echo "

\n"; + echo ""; + echo ""; + echo "\n"; + $db->query("select app_version from applications where app_name='admin'"); + $db->next_record(); + $curversion = $db->f("app_version"); + echo "\n"; + echo "
phpGroupWare Core Staus
Core version $curversion. No updates needed.
\n\n"; + } + // Remove the appName from all users and groupws on the system + function removeAppPerms($appName) { + 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
\n"; + // Remove the old one + if ($act == "uninstall" || $act == "upgrade") { + if ($app == "common") { + echo "\n"; + } else { + $sql = "DELETE FROM lang WHERE message_id='" . $msg_id . "' AND app_name='". $app ."'"; + $db->query($sql); + } + } + // 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 "".$msg."\n"; + } + + /**********************************************************************\ + * Apps should call this function to report warnings if possible to * + * display them in a nice and controlled format * + \**********************************************************************/ + function warn($msg) { + echo "".$msg."\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
\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 "

\n"; + echo "\n"; + echo ""; + echo ""; + echo "\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 "\n"; + } else { + echo "\n"; + } + ++$numAltered; + break; + case "install": + $currentAction = "install"; + if ($app->install()) { + echo "\n"; + } else { + echo "\n"; + } + ++$numAltered; + break; + case "uninstall": + $currentAction = "uninstall"; + if ($app->uninstall()) { + echo "\n"; + removeAppPerms($name); + } else { + echo "\n"; + } + ++$numAltered; + break; + } + } + if ($numAltered == 0) { + echo "\n"; + } + echo "
Making Application Changes
$name upgraded.
$name - upgrade failed!
$name installed.
$name - install failed!
$name uninstalled.
$name - uninstall failed!
No applications altered.
\n"; + } + + echo "

\n"; + + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + + $numApps = 0; + if (isSet($detectedApps)) reset($detectedApps); + while ($detectedApps && list($name,$a) = each($detectedApps)) { + $app = $a["setup"]; + + echo ""; + echo " \n"; + + if (is_object($a["setup"])) { + $installed = $app->is_installed(); + $code = $app->code_version(); + } + if (!$installed) { + echo " \n"; + } else if ($installed == "0.0.0" || $installed == "0.0") { + echo " "; + } else { + echo " \n"; + } + + echo " \n"; + + if ($installed && $app->is_current()) { + echo " "; // Can't install + echo " "; // Can't upgrade + echo " "; // Can't install + echo " "; // Can't upgrade + echo " "; // Can't remove + echo " \n"; + ++$numApps; + } + if ($numApps) { + echo "\n"; + } else { + echo "\n"; + } + echo "
Application Setup
ApplicationInstalled VersionDetected VersionInstallUpgradeRemoveDo Nothing
".$name."-not yet installed-Pre-Beta".$installed."".$code."N/AN/A"; // Can remove + echo " "; // Can ignore + } else if ($installed) { + echo " N/A"; // Can upgrade + echo " "; // Can remove + echo " "; // Can ignore + } else { + echo " "; // Can install + echo " N/AN/A"; // Can ignore + } + echo "
Found no non-core applications. "; + echo "Visit phpGroupWare.org to obtain add-on applications.
\n"; + echo "
\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 "

When you are done installing and upgrading applications, you should "; + echo "continue to the Configuration Page"; + echo "
or skip to Configure multi-language support.\n"; + echo "

or for a drastic measure, you can delete all your tables and data and recreate the new empty tables.\n"; + echo "

\n"; + echo " \n"; + echo "
\n"; + +?> + +