Source for file setup.php
Documentation is available at setup.php
* setup.php -- Sent Subfolders Setup File
* Copyright (c) 1999-2020 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
* This is a standard Squirrelmail-1.2 API for plugins.
* $Id: setup.php 14840 2020-01-07 07:42:38Z pdontthink $
* @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 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,
/* 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_folder,
$sent_subfolders_setting, $sent_subfolders_base;
($data_dir, $username, 'use_sent_subfolders', SMPREF_OFF);
($data_dir, $username, 'sent_subfolders_base', $sent_folder);
* Adds sent_subfolders options in folder preferences
global $optpage_data, $imapServerAddress, $imapPort, $imap_stream_options;
/* Get some imap data we need later. */
sqimap_login($username, $key, $imapServerAddress, $imapPort, 0, $imap_stream_options);
/* 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,
'save' =>
'save_option_sent_subfolders_base',
/* 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, $sent_subfolders_base;
/* Set use_sent_subfolders as either on or off. */
// for lack of anything better
setPref($data_dir, $username, 'sent_folder', $sent_subfolders_base);
$check_sent_subfolders_base =
getPref($data_dir, $username, 'sent_subfolders_base', '');
if ($check_sent_subfolders_base ===
'') {
setPref($data_dir, $username, 'sent_subfolders_base', $sent_subfolders_base);
/* 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, $auto_create_special, $auto_create_done;
global $sent_subfolders_base, $sent_subfolders_setting;
global $data_dir, $imapServerAddress, $imapPort, $imap_stream_options;
global $use_sent_subfolders, $move_to_sent, $imap_server_type;
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.
if( $imap_server_type == 'uw' ) {
$cnd_delimiter = $delimiter;
$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) {
/* First, update the sent folder. */
setPref($data_dir, $username, 'sent_folder', $sent_subfolder);
$sent_folder =
$sent_subfolder;
/* Auto-create folders, if they do not yet exist. */
if ($sent_folder !=
'none') {
/* Create the imap connection. */
($username, $key, $imapServerAddress, $imapPort, 10, $imap_stream_options);
/* Auto-create the year folder, if it does not yet exist.
(only for monthly/quarterly modes */
/* Auto-create the subfolder, if it does not yet exist. */
/* Close the imap connection. */
* Update the folder settings/auto-create new subfolder
// first save the option as normal
// now update folder settings and auto-create first subfolder if needed
* 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, $sent_folder;
if( $imap_server_type == 'uw' ) {
$cnd_delimiter = $delimiter;
$cnd_delimiter =
$delimiter;
($data_dir, $username, 'use_sent_subfolders', SMPREF_OFF);
$sent_subfolders_base =
getPref($data_dir, $username, 'sent_subfolders_base', $sent_folder);
($mb ==
$sent_subfolders_base ||
stristr($mb,$sent_subfolders_base.
$cnd_delimiter) ) ) {
Documentation generated on Mon, 13 Jan 2020 04:25:19 +0100 by phpDocumentor 1.4.3