Version 1.2 of Meta-Generator module (xoops RC3):
--------

Full install:
Upload the whole meta-generator folder and files to your /modules/
directory. Change file permissions on all files in the /cache directory
to 666 so settings can be saved, and follow the below instructions.

--------

Upgrade only:
If your upgrading from 1.1, then overwrite ALL your module files,
except the ones in your /cache folder, then follow the below steps.
You do need to upload the new file: header.php and chmod it to 666

You also have to configure some new options in the admin interface,
and be sure to "update" the module in the admin/modules section.

--------

www.mysite.com/include/functions.php

NOTE: For your conveniance functions.php is included here, but if
      you made custom changes to your functions.php, then i suggest
      replacing the following function in that file with this one:

Replace the entire xoops_header() function with this one below:
Don't worry, this is even compatible with the latest CVS version,
and also adds some cleanups & extra tweaks.

// START FUNCTION xoops_header()
function xoops_header($closehead=true) {
global $xoopsConfig, $xoopsTheme;

if ( !headers_sent() ) {
// No need to do 10K checks, either gzip is on or off: don't matter if it's installed or not.
// PHP will default to ob_start() if ob_gzhandler is unavailable.
if ( $xoopsConfig['gzip_compression'] ) {
	ob_start("ob_gzhandler");
	} else {
	ob_start();
	}

// Grab the custom config
include(XOOPS_ROOT_PATH . "/modules/meta-generator/cache/meta.php");

// Cache control settings -> Has no influence on search engines (browser & proxy related)
if ($pragma == 1) {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, max-age=1, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
} // END no-cache
}


// We only generate keywords if in debug mode, or if it's really a search engine.
global $HTTP_SERVER_VARS;

if ($meta_cfg["extractor"]) {
	if (!$meta_cfg["cloaking"]) {
		include_once(XOOPS_ROOT_PATH . "/modules/meta-generator/include/functions.php");
	} elseif ( $meta_cfg["cloaking"] && !preg_match("/(".$meta_cfg["user_agents"].")/i", $HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ) {
		include_once(XOOPS_ROOT_PATH . "/modules/meta-generator/include/functions.php");
	}
}

// Print out the meta-stuff
?>
<html>
<head>
<title><?php echo $title;?></title>
<meta http-equiv="content-type" content="text/html; charset=<?php echo _CHARSET;?>">
<meta http-equiv="content-language" content="<?php echo $langcode;?>">
<?php if ($pragma) { ?>
<meta http-equiv="pragma" content="no-cache">
<?php } ?>
<meta name="rating" content="<?php echo $rating;?>">
<meta name="robots" content="<?php echo $index;?>, <?php echo $follow;?>">
<meta name="generator" content="<?php echo XOOPS_VERSION;?>">
<meta name="keywords" content="<?php echo $keywords;?>">
<meta name="description" content="<?php echo $description;?>">
<meta name="author" content="<?php echo $author;?>">
<meta name="copyright" content="<?php echo $copyright;?>">
<link rel="shortcut icon" href="<?php echo $icon;?>">

<?php
readfile(XOOPS_ROOT_PATH . "/modules/meta-generator/cache/header.php");

$themecss = getcss(getTheme());
if ($themecss) {
	echo "\n<style type='text/css' media='all'>\n<!-- @import url($themecss); -->\n</style>\n\n";
	} else {
	echo "\n<style type='text/css' media='all'>\n<!-- @import url(".XOOPS_URL."/xoops.css); -->\n</style>\n\n";
	}

include(XOOPS_ROOT_PATH . "/include/xoopsjs.php");

if ($closehead) {
	echo "</head><body>";
	}

} // END FUNCTION xoops_header()

--------

xoops root/footer.php

replace:
$footer = getFooter();

with:
$footer = join('', file(XOOPS_ROOT_PATH . "/modules/meta-generator/cache/footer.php"));

--------

Log into your site as admin, and goto admin/modules, and activate the
module. Now you can access the module and configure it to your needs.

No need to set any group permissions.