Source for file setup.php
Documentation is available at setup.php
* setup.php -- Sent Subfolders Setup File
* This is a standard SquirrelMail 1.2 API for plugins.
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: setup.php,v 1.32 2006/08/05 14:49:49 kink Exp $
* @subpackage sent_subfolders
define('SMPREF_SENT_SUBFOLDERS_DISABLED', 0);
define('SMPREF_SENT_SUBFOLDERS_YEARLY', 1);
define('SMPREF_SENT_SUBFOLDERS_QUARTERLY', 2);
define('SMPREF_SENT_SUBFOLDERS_MONTHLY', 3);
define('SMOPT_GRP_SENT_SUBFOLDERS','SENT_SUBFOLDERS');
* Adds plugin to SquirrelMail's hooks
/* Standard initialization API. */
global $squirrelmail_plugin_hooks;
/* The hooks to make the sent subfolders display correctly. */
$squirrelmail_plugin_hooks
['check_handleAsSent_result']['sent_subfolders'] =
'sent_subfolders_check_handleAsSent';
/* The hooks to automatically update sent subfolders. */
$squirrelmail_plugin_hooks
['left_main_before']['sent_subfolders'] =
'sent_subfolders_update_sentfolder';
$squirrelmail_plugin_hooks
['compose_send']['sent_subfolders'] =
'sent_subfolders_update_sentfolder';
/* The hook to load the sent subfolders prefs. */
$squirrelmail_plugin_hooks
['loading_prefs']['sent_subfolders'] =
'sent_subfolders_load_prefs';
/* The hooks to handle sent subfolders options. */
$squirrelmail_plugin_hooks
['optpage_loadhook_folder']['sent_subfolders'] =
'sent_subfolders_optpage_loadhook_folders';
/* mark base sent folder as special mailbox */
$squirrelmail_plugin_hooks
['special_mailbox']['sent_subfolders'] =
'sent_subfolders_special_mailbox';
global $handleAsSent_result, $sent_subfolders_base,
// FIXME: hardcoded folder
$sent_subfolders_base =
'INBOX.Sent';
/* Only check the folder string if we have been passed a mailbox. */
if ($use_sent_subfolders &&
(count($args) >
1)) {
/* Chop up the folder strings as needed. */
$base_str =
$sent_subfolders_base .
$delimiter;
/* Perform the comparison. */
||
($base_str ==
$mbox_str)
||
($sent_subfolders_base ==
$args[1])
* Loads sent_subfolders settings
global $use_sent_subfolders, $data_dir, $username,
$sent_subfolders_setting, $sent_subfolders_base;
($data_dir, $username, 'use_sent_subfolders', SMPREF_OFF);
($data_dir, $username, 'sent_subfolders_base', SMPREF_NONE);
* Adds sent_subfolders options in folder preferences
global $username, $optpage_data, $imapServerAddress, $imapPort, $show_contain_subfolders_option;
/* Get some imap data we need later. */
$imapConnection =
sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
/* Load the Sent Subfolder Options into an array. */
$optgrp =
_("Sent Subfolders Options");
'name' =>
'sent_subfolders_setting',
'caption' =>
_("Use Sent Subfolders"),
'save' =>
'save_option_sent_subfolders_setting'
$sent_subfolders_base_values =
array('whatever'=>
$filtered_folders);
'name' =>
'sent_subfolders_base',
'caption' =>
_("Base Sent Folder"),
'posvals' =>
$sent_subfolders_base_values,
'folder_filter' =>
'noinferiors'
if ($show_contain_subfolders_option) {
'name' =>
'sent_subfolders_warning',
'caption' =>
_("Warning"),
'comment' =>
_("There are some restrictions in Sent Subfolder options.")
/* Add our option data to the global array. */
* Defines folder filtering rules
* Callback function that should exclude some folders from folder listing.
* @param array $fldr list of folders. See sqimap_mailbox_list
* @return boolean returns true, if folder has to included in folder listing
function filter_folders($fldr) {
* Saves sent_subfolder_options
global $data_dir, $username, $use_sent_subfolders;
/* Set use_sent_subfolders as either on or off. */
/* Now just save the option as normal. */
* Update sent_subfolders settings
* function updates default sent folder value and
* creates required imap folders
global $sent_folder, $username;
global $sent_subfolders_base, $sent_subfolders_setting;
global $data_dir, $imapServerAddress, $imapPort, $color;
global $use_sent_subfolders, $move_to_sent;
if ($use_sent_subfolders ||
$move_to_sent) {
* Regarding the structure we've got three main possibilities.
* One sent holder. level 0.
* Multiple year holders with messages in it. level 1.
* Multiple year folders with holders in it. level 2.
$cnd_delimiter =
$delimiter;
switch ($sent_subfolders_setting) {
$sent_subfolder =
$sent_subfolders_base .
$cnd_delimiter
$sent_subfolder =
$sent_subfolders_base .
$cnd_delimiter
$year_folder =
$sent_subfolders_base .
$cnd_delimiter
$sent_subfolder =
$sent_subfolders_base .
$cnd_delimiter
$year_folder =
$sent_subfolders_base.
$cnd_delimiter .
$year;
$sent_subfolder =
$sent_folder;
$year_folder =
$sent_folder;
/* If this folder is NOT the current sent folder, update stuff. */
if ($sent_subfolder !=
$sent_folder) {
/* Auto-create folders, if they do not yet exist. */
if ($sent_subfolder !=
'none') {
/* Create the imap connection. */
$ic =
sqimap_login($username, false, $imapServerAddress, $imapPort, 10);
* If sent_subfolder can't store messages (noselect) ||
* year_folder can't store subfolders (noinferiors) in level=2 setup ||
* subfolder_base can't store subfolders (noinferiors), setup is broken
error_box(_("Sent Subfolders plugin is misconfigured."));
/* Auto-create the year folder, if it does not yet exist. */
// TODO: safety check for imap servers that can't create subfolders
/* Auto-create the subfolder, if it does not yet exist. */
/* Update sent_folder setting. */
//setPref($data_dir, $username, 'sent_folder', $sent_subfolder);
//setPref($data_dir, $username, 'move_to_sent', SMPREF_ON);
$sent_folder =
$sent_subfolder;
/* Close the imap connection. */
* Sets quarter subfolder names
* @param string $month numeric month
* @return string quarter name (Q + number)
/* Return the current quarter. */
* detects if mailbox is part of sent_subfolders
* @param string $mb imap folder name
* @return boolean 1 - is part of sent_subfolders, 0 - is not part of sent_subfolders
global $data_dir, $username, $delimiter;
($data_dir, $username, 'use_sent_subfolders', SMPREF_OFF);
$sent_subfolders_base =
getPref($data_dir, $username, 'sent_subfolders_base', 'na');
* If sent_subfolders are used and mailbox is equal to subfolder base
* or mailbox matches subfolder base + delimiter.
($mb ==
$sent_subfolders_base ||
stristr($mb,$sent_subfolders_base .
$delimiter) ) ) {
Documentation generated on Sat, 07 Oct 2006 16:13:33 +0300 by phpDocumentor 1.3.0RC6