fligtar%gmail.com ca8cb8917f Adding Sunbird support, mostly lilmatt's patch - bug 352641
git-svn-id: svn://10.0.0.236/trunk@214508 18797224-902f-48f8-a5cc-f745e15eee43
2006-11-01 00:50:55 +00:00

208 lines
5.8 KiB
PHP

<?php
/**
* Global initialization script.
*
* @package amo
* @subpackage docs
*/
/**
* Require our config.
*/
require_once('config.php');
/**
* Set runtime options.
*/
ini_set('display_errors',DISPLAY_ERRORS);
ini_set('error_reporting',ERROR_REPORTING);
ini_set('magic_quotes_gpc',0);
/**
* Name of the current script.
*
* This is used in important comparisons with $shadow_config and $cache_config,
* so it was pulled out of config.php so it's immutable.
*/
define('SCRIPT_NAME',basename($_SERVER['PHP_SELF']));
/*
* Add-on ID for which we show the extra EULA link and text -- do not look directly into
* this code with remaining eye.
*/
define('SUPER_MAGIC_YAHOO_ID', 3615);
/**
* Page output caching.
*
* First we will create a memcache object.
* Second, we will check to see if the cache has already been compiled for our ID.
* This is all done before anything else happens because we want to save cycles.
*/
/**
* Set our memcacheId based on our params.
* We'll keep it around even if we aren't using the cache.
*/
$memcacheId = md5(SCRIPT_NAME.$_SERVER['QUERY_STRING']);
/**
* Check the cache_config to see if the current page is supposed to be cached.
* If it is, try to connect. If connection to the cache server fails, fall back on regular runtime.
* We also are storing the status of the connection in $memcacheConnected for use in finish.php.
*/
if (!empty($cache_config[SCRIPT_NAME]) && class_exists('Memcache') ) {
/**
* Instantiate our memcache object.
*/
$cache = new Memcache();
/**
* Boolean so we know whether or not we've found a valid memcached server.
*/
$memcacheConnected = false;
if (is_array($memcache_config)) {
foreach ($memcache_config as $host=>$options) {
if ($cache->addServer($host, $options['port'], $options['persistent'], $options['weight'], $options['timeout'], $options['retry_interval'])) {
$memcacheConnected = true;
}
}
}
if ($memcacheConnected) {
// If our page is already cached, display from cache and exit.
if ($cacheData = $cache->get($memcacheId)) {
// If we have specified a custom content-type for this script, echo the header here.
if (!empty($contentType_config[SCRIPT_NAME])) {
header('Content-type: '.$contentType_config[SCRIPT_NAME]);
}
echo $cacheData;
exit;
}
} else {
/**
* If we get here, it means we were supposed to read from cache, but couldn't connect to memcached.
* Log the message, then continue with runtime.
*/
error_log('Memcache Error: Unable connect to memcache server. Please check configuration and try again.');
}
}
/**
* Set up global variables.
*/
$tpl = null; // Smarty.
$content = null; // Name of .tpl file to be called for content.
$pageType = null; // Wrapper type for wrapping content .tpl.
$cacheId = null; // Name of the page cache for use with Smarty caching.
$currentTab = null; // Name of the currentTab selected in the header.tpl. This is also the cacheId for header.tpl.
$compileId = null; // Name of the compileId for use with Smarty caching.
$clean = array(); // General array for verified inputs. These variables should not be formatted for a specific medium.
$sql = array(); // Trusted for SQL. Items in this array must be trusted through logic or through escaping.
/**
* CompileId is used for the compiled template generated by Smarty.
* If app is not a valid format, not set or just empty, set it to firefox.
*/
$compileId = (!empty($_GET['app']) && ctype_alpha($_GET['app'])) ? $_GET['app'] : 'firefox';
$app = $compileId;
/**
* Smarty configuration.
*
* Include Smarty class. If we get here, we're going to generate the page.
*/
require_once(SMARTY_BASEDIR.'/Smarty.class.php'); // Smarty
/**
* Smarty configuration.
*/
class AMO_Smarty extends Smarty
{
function AMO_Smarty()
{
$this->template_dir = TEMPLATE_DIR;
$this->compile_dir = COMPILE_DIR;
$this->cache_dir = CACHE_DIR;
$this->config_dir = CONFIG_DIR;
// Pass config variables to Smarty object.
$this->assign('config',
array( 'webpath' => WEB_PATH,
'rootpath' => ROOT_PATH,
'host' => HTTP_HOST)
);
}
}
/**
* Set $clean['app'] and $sql['app'] based on incoming params.
*/
function setApp()
{
global $clean, $sql;
// If app is not set or empty, set it to null for our switch.
$_GET['app'] = (!empty($_GET['app'])) ? $_GET['app'] : null;
// Determine our application.
switch( $_GET['app'] ) {
case 'seamonkey':
case 'mozilla':
$clean['app'] = 'Mozilla';
break;
case 'thunderbird':
$clean['app'] = 'Thunderbird';
break;
case 'sunbird':
$clean['app'] = 'Sunbird';
break;
case 'firefox':
default:
$clean['app'] = 'Firefox';
break;
}
// $sql['app'] can equal $clean['app'] since it was assigned in a switch().
$sql['app'] = $clean['app'];
}
/**
* Begin template processing.
*
* @param string $aTplName name of the template to process
* @param string $aCacheId name of the cache to check - this corresponds to other $_GET params
* @param string $aCompileId name of the compileId to check - this is $_GET['app']
* @param string $aPageType type of the page - nonav, default, etc.
*/
function startProcessing($aTplName, $aCacheId, $aCompileId, $aPageType='default')
{
// Pass in our global variables.
global $tpl, $pageType, $content, $cacheId, $compileId, $cache_config;
$pageType = $aPageType;
$content = $aTplName;
$cacheId = $aCacheId;
$compileId = $aCompileId;
$tpl = new AMO_Smarty();
}
?>