Source for file options.php
Documentation is available at options.php
* Displays the options page. Pulls from proper user preference files
* and config.php. Displays preferences as selected and other options.
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: options.php,v 1.121.2.14 2006/04/14 22:27:08 jervfors Exp $
* Path for SquirrelMail required files.
/* SquirrelMail required files. */
require_once(SM_PATH .
'include/validate.php');
require_once(SM_PATH .
'functions/global.php');
require_once(SM_PATH .
'functions/display_messages.php');
require_once(SM_PATH .
'functions/imap.php');
require_once(SM_PATH .
'functions/options.php');
require_once(SM_PATH .
'functions/strings.php');
require_once(SM_PATH .
'functions/html.php');
require_once(SM_PATH .
'functions/forms.php');
/*********************************/
/*** Build the resultant page. ***/
/*********************************/
define('SMOPT_MODE_DISPLAY', 'display');
define('SMOPT_MODE_SUBMIT', 'submit');
define('SMOPT_MODE_LINK', 'link');
define('SMOPT_PAGE_MAIN', 'main');
define('SMOPT_PAGE_PERSONAL', 'personal');
define('SMOPT_PAGE_DISPLAY', 'display');
define('SMOPT_PAGE_HIGHLIGHT', 'highlight');
define('SMOPT_PAGE_FOLDER', 'folder');
define('SMOPT_PAGE_ORDER', 'order');
/* Initialize the maximum option refresh level. */
/* Save each option in each option group. */
foreach ($optpage_data['options'] as $option_grp) {
foreach ($option_grp['options'] as $option) {
/* Remove Debug Mode Until Needed
echo "name = '$option->name', "
. "value = '$option->value', "
. "new_value = '$option->new_value'\n";
if ($option->changed()) {
$max_refresh =
max($max_refresh, $option->refresh_level);
/* Return the max refresh level. */
/* There will be something here, later. */
* This function prints out an option page row.
$rightopt_name =
html_tag( 'td', '<a href="' .
$rightopt['url'] .
'">' .
$rightopt['name'] .
'</a>', 'left', $color[9], 'valign="top" width="49%"' );
$rightopt_desc =
html_tag( 'td', $rightopt['desc'], 'left', $color[0], 'valign="top" width="49%"' );
$rightopt_name =
html_tag( 'td', ' ', 'left', $color[4], 'valign="top" width="49%"' );
$rightopt_desc =
html_tag( 'td', ' ', 'left', $color[4], 'valign="top" width="49%"' );
'<a href="' .
$leftopt['url'] .
'">' .
$leftopt['name'] .
'</a>' ,
'left', $color[9], 'valign="top" width="49%"' ) .
'left', $color[4], 'valign="top" width="2%"' ) .
"\n" .
'left', $color[0], 'valign="top" width="49%"' ) .
'left', $color[4], 'valign="top" width="2%"' ) .
"\n" .
'', '', 'width="100%" cellpadding="2" cellspacing="0" border="0"' ) ,
'left', '', 'valign="top"' )
'', $color[4], 'width="100%" cellpadding="0" cellspacing="5" border="0"' );
/* ---------------------------- main ---------------------------- */
/* get the globals that we may need */
/* end of getting globals */
/* Make sure we have an Option Page set. Default to main. */
if ( !isset
($optpage) ||
$optpage ==
'' ) {
/* Make sure we have an Option Mode set. Default to display. */
* First, set the load information for each option page.
/* Initialize load information variables. */
/* Set the load information for each page. */
$optpage_name =
_("Personal Information");
$optpage_file =
SM_PATH .
'include/options/personal.php';
$optpage_loader =
'load_optpage_data_personal';
$optpage_loadhook =
'optpage_loadhook_personal';
$optpage_name =
_("Display Preferences");
$optpage_file =
SM_PATH .
'include/options/display.php';
$optpage_loader =
'load_optpage_data_display';
$optpage_loadhook =
'optpage_loadhook_display';
$optpage_name =
_("Message Highlighting");
$optpage_file =
SM_PATH .
'include/options/highlight.php';
$optpage_loader =
'load_optpage_data_highlight';
$optpage_loadhook =
'optpage_loadhook_highlight';
$optpage_name =
_("Folder Preferences");
$optpage_file =
SM_PATH .
'include/options/folder.php';
$optpage_loader =
'load_optpage_data_folder';
$optpage_loadhook =
'optpage_loadhook_folder';
$optpage_name =
_("Index Order");
$optpage_file =
SM_PATH .
'include/options/order.php';
$optpage_loader =
'load_optpage_data_order';
$optpage_loadhook =
'optpage_loadhook_order';
default:
do_hook('optpage_set_loadinfo');
/**********************************************************/
/*** Second, load the option information for this page. ***/
/**********************************************************/
if ( !@is_file( $optpage_file ) ) {
/* Include the file for this optionpage. */
require_once($optpage_file);
/* Assemble the data for this option page. */
$optpage_data =
$optpage_loader();
$optpage_data['options'] =
/***********************************************************/
/*** Next, process anything that needs to be processed. ***/
/***********************************************************/
// set empty error message
$optpage_save_error=
array();
if ( isset
( $optpage_data ) ) {
$optpage_title =
_("Options");
if (isset
($optpage_name) &&
($optpage_name !=
'')) {
$optpage_title .=
" - $optpage_name";
/*******************************************************************/
/* DO OLD SAVING OF SUBMITTED OPTIONS. THIS WILL BE REMOVED LATER. */
/*******************************************************************/
/* If in submit mode, select a save hook name and run it. */
/* Select a save hook name. */
$save_hook_name =
'options_personal_save';
$save_hook_name =
'options_display_save';
$save_hook_name =
'options_folder_save';
$save_hook_name =
'options_save';
/* Run the options save hook. */
/***************************************************************/
/* Apply logic to decide what optpage we want to display next. */
/***************************************************************/
/* If this is the result of an option page being submitted, then */
/* show the main page. Otherwise, show whatever page was called. */
/***************************************************************/
/* Finally, display whatever page we are supposed to show now. */
/***************************************************************/
displayPageHeader($color, 'None', (isset
($optpage_data['xtra']) ?
$optpage_data['xtra'] :
''));
echo
html_tag( 'table', '', 'center', $color[0], 'width="95%" cellpadding="1" cellspacing="0" border="0"' ) .
"\n" .
"<b>$optpage_title</b><br />\n".
html_tag( 'table', '', '', '', 'width="100%" cellpadding="5" cellspacing="0" border="0"' ) .
"\n" .
html_tag( 'td', '', 'center', $color[4] ) .
"\n";
* The main option page has a different layout then the rest of the option
* pages. Therefore, we create it here first, then the others below.
/**********************************************************/
/* First, display the results of a submission, if needed. */
/**********************************************************/
if (!isset
($frame_top)) {
if (isset
($optpage_save_error) &&
$optpage_save_error!=
array()) {
echo
"<font color=\"$color[2]\"><b>" .
_("Error(s) occurred while saving your options") .
"</b></font><br />\n";
foreach ($optpage_save_error as $error_message) {
echo
'<li><small>' .
$error_message .
"</small></li>\n";
echo
'<b>' .
_("Some of your preference changes were not applied.") .
"</b><br />\n";
/* Display a message indicating a successful save. */
echo
'<b>' .
_("Successfully Saved Options") .
": $optpage_name</b><br />\n";
/* If $max_refresh != SMOPT_REFRESH_NONE, provide a refresh link. */
if ( !isset
( $max_refresh ) ) {
echo
'<a href="../src/left_main.php" target="left">' .
_("Refresh Folder List") .
'</a><br />';
} else if ($max_refresh) {
echo
'<a href="../src/webmail.php?right_frame=options.php" target="' .
$frame_top .
'">' .
_("Refresh Page") .
'</a><br />';
/******************************************/
/* Build our array of Option Page Blocks. */
/******************************************/
$optpage_blocks =
array();
/* Build a section for Personal Options. */
$optpage_blocks[] =
array(
'name' =>
_("Personal Information"),
'desc' =>
_("This contains personal information about yourself such as your name, your email address, etc."),
/* Build a section for Display Options. */
$optpage_blocks[] =
array(
'name' =>
_("Display Preferences"),
'desc' =>
_("You can change the way that SquirrelMail looks and displays information to you, such as the colors, the language, and other settings."),
/* Build a section for Message Highlighting Options. */
$optpage_blocks[] =
array(
'name' =>
_("Message Highlighting"),
'url' =>
'options_highlight.php',
'desc' =>
_("Based upon given criteria, incoming messages can have different background colors in the message list. This helps to easily distinguish who the messages are from, especially for mailing lists."),
/* Build a section for Folder Options. */
$optpage_blocks[] =
array(
'name' =>
_("Folder Preferences"),
'desc' =>
_("These settings change the way your folders are displayed and manipulated."),
/* Build a section for Index Order Options. */
$optpage_blocks[] =
array(
'name' =>
_("Index Order"),
'url' =>
'options_order.php',
'desc' =>
_("The order of the message index can be rearranged and changed to contain the headers in any order you want."),
/* Build a section for plugins wanting to register an optionpage. */
/*****************************************************/
/* Let's sort Javascript Option Pages to the bottom. */
/*****************************************************/
$js_optpage_blocks =
array();
$reg_optpage_blocks =
array();
foreach ($optpage_blocks as $cur_optpage) {
if (!isset
($cur_optpage['js']) ||
!$cur_optpage['js']) {
$reg_optpage_blocks[] =
$cur_optpage;
$js_optpage_blocks[] =
$cur_optpage;
$optpage_blocks =
array_merge($reg_optpage_blocks, $js_optpage_blocks);
/********************************************/
/* Now, print out each option page section. */
/********************************************/
echo
html_tag( 'table', '', '', $color[4], 'width="100%" cellpadding="0" cellspacing="5" border="0"' ) .
"\n" .
html_tag( 'td', '', 'left', '', 'valign="top"' ) .
html_tag( 'table', '', '', $color[4], 'width="100%" cellpadding="3" cellspacing="0" border="0"' ) .
"\n" .
foreach ($optpage_blocks as $next_optpage) {
if ($first_optpage ==
false) {
$first_optpage =
$next_optpage;
if ($first_optpage !=
false) {
echo
"</td></tr></table></td></tr></table>\n";
do_hook('options_link_and_description');
/*************************************************************************/
/* If we are not looking at the main option page, display the page here. */
/*************************************************************************/
echo
addForm('options.php', 'POST', 'f')
.
html_tag( 'table', '', '', '', 'width="100%" cellpadding="2" cellspacing="0" border="0"' ) .
"\n"
/* Output the option groups for this page. */
/* Set the inside_hook_name and submit_name. */
$inside_hook_name =
'options_personal_inside';
$bottom_hook_name =
'options_personal_bottom';
$submit_name =
'submit_personal';
$inside_hook_name =
'options_display_inside';
$bottom_hook_name =
'options_display_bottom';
$submit_name =
'submit_display';
$inside_hook_name =
'options_highlight_inside';
$bottom_hook_name =
'options_highlight_bottom';
$submit_name =
'submit_highlight';
$inside_hook_name =
'options_folder_inside';
$bottom_hook_name =
'options_folder_bottom';
$submit_name =
'submit_folder';
$inside_hook_name =
'options_order_inside';
$bottom_hook_name =
'options_order_bottom';
$submit_name =
'submit_order';
/* If it is not empty, trigger the inside hook. */
if ($inside_hook_name !=
'') {
/* Spit out a submit button. */
echo
'</td></tr></table></form>';
/* If it is not empty, trigger the bottom hook. */
if ($bottom_hook_name !=
'') {
Documentation generated on Sat, 07 Oct 2006 16:32:48 +0300 by phpDocumentor 1.3.0RC6