Centralized init
authorstekkel <stekkel@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 5 Apr 2006 00:22:11 +0000 (00:22 +0000)
committerstekkel <stekkel@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 5 Apr 2006 00:22:11 +0000 (00:22 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11012 7612ce4b-ef26-0410-bec9-ea0150e637f0

117 files changed:
functions/abook_database.php
functions/addressbook.php
functions/attachment_common.php
functions/auth.php
functions/date.php
functions/db_prefs.php
functions/display_messages.php
functions/file_prefs.php
functions/folder_manip.php
functions/gettext.php
functions/global.php
functions/html.php
functions/identity.php
functions/imap.php
functions/imap_asearch.php
functions/imap_general.php
functions/imap_mailbox.php
functions/mailbox_display.php
functions/mime.php
functions/page_header.php
functions/plugin.php
functions/prefs.php
functions/strings.php
functions/tree.php
include/constants.php [new file with mode: 0644]
include/errors.php
include/init.php [new file with mode: 0644]
include/languages.php [new file with mode: 0644]
include/load_prefs.php
include/options/display.php
include/options/folder.php
include/validate.php
plugins/abook_take/functions.php
plugins/abook_take/setup.php
plugins/abook_take/take.php
plugins/administrator/auth.php
plugins/administrator/defines.php
plugins/bug_report/bug_report.php
plugins/bug_report/functions.php
plugins/bug_report/show_system_specs.php
plugins/bug_report/system_specs.php
plugins/calendar/calendar.php
plugins/calendar/day.php
plugins/calendar/event_create.php
plugins/calendar/event_delete.php
plugins/calendar/event_edit.php
plugins/change_password/backend/ldap.php
plugins/change_password/backend/merak.php
plugins/change_password/backend/peardb.php
plugins/change_password/backend/poppassd.php
plugins/change_password/backend/template.php
plugins/change_password/backend/vmailmgrd.php
plugins/change_password/options.php
plugins/filters/filters.php
plugins/filters/options.php
plugins/filters/setup.php
plugins/filters/spamoptions.php
plugins/fortune/setup.php
plugins/info/options.php
plugins/listcommands/mailout.php
plugins/mail_fetch/README
plugins/mail_fetch/fetch.php
plugins/mail_fetch/functions.php
plugins/mail_fetch/options.php
plugins/mail_fetch/setup.php
plugins/message_details/message_details_bottom.php
plugins/message_details/message_details_main.php
plugins/message_details/message_details_top.php
plugins/newmail/functions.php
plugins/newmail/loadfile.php
plugins/newmail/newmail.php
plugins/newmail/newmail_opt.php
plugins/newmail/setup.php
plugins/newmail/testsound.php
plugins/spamcop/options.php
plugins/spamcop/spamcop.php
plugins/squirrelspell/setup.php
plugins/squirrelspell/sqspell_config.php
plugins/squirrelspell/sqspell_functions.php
plugins/squirrelspell/sqspell_interface.php
plugins/squirrelspell/sqspell_options.php
plugins/translate/functions.php
plugins/translate/options.php
plugins/translate/setup.php
src/about.php
src/addrbook_popup.php
src/addrbook_search.php
src/addrbook_search_html.php
src/addressbook.php
src/compose.php
src/delete_message.php
src/download.php
src/empty_trash.php
src/folders.php
src/help.php
src/image.php
src/left_main.php
src/login.php
src/mailto.php
src/options.php
src/options_highlight.php
src/options_identities.php
src/options_order.php
src/printer_friendly_bottom.php
src/printer_friendly_main.php
src/printer_friendly_top.php
src/read_body.php
src/redirect.php
src/right_main.php
src/search.php
src/signout.php
src/style.php
src/vcard.php
src/view_header.php
src/view_html.php
src/view_text.php
src/webmail.php

index 5721d3a81aa65a166fce28ed96f8d9b376e2797a..db7e1a008a1cb823f83d40e388f2b587c91b44fb 100644 (file)
@@ -13,7 +13,6 @@
 /** Needs the DB functions */
 if (!include_once('DB.php')) {
     // same error also in db_prefs.php
-    require_once(SM_PATH . 'functions/display_messages.php');
     $error  = _("Could not include PEAR database functions required for the database backend.") . "<br />\n";
     $error .= sprintf(_("Is PEAR installed, and is the include path set correctly to find %s?"),
                         '<tt>DB.php</tt>') . "<br />\n";
index 863d7d811a9afde643d0dea111b8905229e93d64..75eb55963868c1425d307d05071f329628095df4 100644 (file)
  * @subpackage addressbook
  */
 
-/**
- * If SM_PATH isn't defined, define it.  Required to include files.
- * @ignore
- */
-if (!defined('SM_PATH'))  {
-    define('SM_PATH','../');
-}
 
 /* required includes */
-include_once(SM_PATH . 'functions/display_messages.php');
+// FIXME, NO display code in functions files
 include_once(SM_PATH . 'templates/util_global.php');
 
-global $addrbook_dsn, $addrbook_global_dsn;
-
 /**
  * Create and initialize an addressbook object.
  * @param boolean $showerr display any address book init errors. html page header
@@ -450,13 +441,13 @@ class AddressBook {
     var $localbackendname = '';
     /**
      * Controls use of 'extra' field
-     * 
-     * Extra field can be used to add link to form, which allows 
-     * to modify all fields supported by backend. This is the only field 
+     *
+     * Extra field can be used to add link to form, which allows
+     * to modify all fields supported by backend. This is the only field
      * that is not sanitized with htmlspecialchars. Backends MUST make
      * sure that field data is sanitized and displayed correctly inside
      * table cell. Use of html formating in other address book fields is
-     * not allowed. Backends that don't return 'extra' row in address book 
+     * not allowed. Backends that don't return 'extra' row in address book
      * data should not modify this object property.
      * @var boolean
      * @since 1.5.1
@@ -498,8 +489,31 @@ class AddressBook {
      * @return integer number of backends
      */
     function add_backend($backend, $param = '') {
+        static $backend_classes;
+        if (!isset($backend_classes)) {
+            $backend_classes = array();
+        }
+        if (!isset($backend_classes[$backend])) {
+            /**
+              * Support backend provided by plugins. Plugin function must
+              * return an associative array with as key the backend name ($backend)
+              * and as value the file including the path containing the backend class.
+              * i.e.: $aBackend = array('backend_template' => SM_PATH . 'plugins/abook_backend_template/functions.php')
+              *
+              * NB: Because the backend files are included from within this function they DO NOT have access to
+              * vars in the global scope. This function is the global scope for the included backend !!!
+              */
+            $aBackend = do_hook('abook_add_class');
+            if (isset($aBackend) && is_array($aBackend) && isset($aBackend[$backend])) {
+                require_once($aBackend[$backend]);
+            } else {
+                require_once(SM_PATH . 'functions/abook_'.$backend.'.php');
+            }
+            $backend_classes[$backend] = true;
+        }
         $backend_name = 'abook_' . $backend;
-        eval('$newback = new ' . $backend_name . '($param);');
+        $newback = new $backend_name($param);
+        //eval('$newback = new ' . $backend_name . '($param);');
         if(!empty($newback->error)) {
             $this->error = $newback->error;
             return false;
@@ -880,9 +894,9 @@ class addressbook_backend {
     /**
      * Search for entries in backend
      *
-     * Working backend should support use of wildcards. * symbol 
+     * Working backend should support use of wildcards. * symbol
      * should match one or more symbols. ? symbol should match any
-     * single symbol.  
+     * single symbol.
      * @param string $expression
      * @return bool
      */
@@ -944,28 +958,4 @@ class addressbook_backend {
         return false;
     }
 }
-
-/*
-  PHP 5 requires that the class be made first, which seems rather
-  logical, and should have been the way it was generated the first time.
-*/
-
-require_once(SM_PATH . 'functions/abook_local_file.php');
-require_once(SM_PATH . 'functions/abook_ldap_server.php');
-
-/* Only load database backend if database is configured */
-if((isset($addrbook_dsn) && !empty($addrbook_dsn)) ||
-        (isset($addrbook_global_dsn) && !empty($addrbook_global_dsn))) {
-    include_once(SM_PATH . 'functions/abook_database.php');
-}
-
-/*
- * hook allows adding different address book classes.
- * class must follow address book class coding standards.
- *
- * see addressbook_backend class and functions/abook_*.php files.
- * @since 1.5.1 and 1.4.5
- */
-do_hook('abook_add_class');
-
 ?>
index 3b9e561a923b7de4fa8baeb079293b0b14a8367a..0aec18e730225deae40db9136d55f6560d585491 100644 (file)
  * @todo document attachment $type hook arguments
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
 
-/** sqgetGlobalVar() */
-include_once(SM_PATH . 'functions/global.php');
-/** sqm_baseuri() */
-include_once(SM_PATH . 'functions/display_messages.php');
-
-global $attachment_common_show_images_list;
-$attachment_common_show_images_list = array();
-
-global $FileExtensionToMimeType, $attachment_common_types;
 /**
  * Mapping of file extensions to mime types
  *
@@ -70,7 +59,7 @@ if (isset($attachment_common_types)) {
             register_attachment_common('image/x-xbitmap', 'link_image');
         elseif ($val == '*/*' || $val == 'image/*') {
             /**
-             * browser (Firefox) declared that anything is acceptable. 
+             * browser (Firefox) declared that anything is acceptable.
              * Lets register some common image types.
              */
             if (! isset($jpeg_done)) {
@@ -131,6 +120,7 @@ function register_attachment_common($type, $func) {
  * @since 1.2.0
  */
 function attachment_common_link_text(&$Args) {
+    global $base_uri;
     /* If there is a text attachment, we would like to create a "View" button
        that links to the text attachment viewer.
 
@@ -144,7 +134,7 @@ function attachment_common_link_text(&$Args) {
     sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER);
 
     // if htmlspecialchars() breaks something - find other way to encode & in url.
-    $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING);
+    $Args[1]['attachment_common']['href'] = $base_uri  . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING);
     $Args[1]['attachment_common']['href'] =
           set_url_var($Args[1]['attachment_common']['href'],
           'ent_id',$Args[5]);
@@ -169,7 +159,8 @@ function attachment_common_link_text(&$Args) {
  * @since 1.2.6
  */
 function attachment_common_link_message(&$Args) {
-    $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/read_body.php?startMessage=' .
+    global $base_uri;
+    $Args[1]['attachment_common']['href'] = $base_uri  . 'src/read_body.php?startMessage=' .
         $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
         '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=message&amp;override_type1=rfc822';
 
@@ -184,9 +175,10 @@ function attachment_common_link_message(&$Args) {
  * @since 1.2.0
  */
 function attachment_common_link_html(&$Args) {
+    global $base_uri;
     sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER);
 
-    $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING).
+    $Args[1]['attachment_common']['href'] = $base_uri  . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING).
         /* why use the overridetype? can this be removed */
         /* override_type might be needed only when we want view other type of messages as html */
        '&amp;override_type0=text&amp;override_type1=html';
@@ -205,7 +197,7 @@ function attachment_common_link_html(&$Args) {
  * @since 1.2.0
  */
 function attachment_common_link_image(&$Args) {
-    global $attachment_common_show_images_list;
+    global $attachment_common_show_images_list, $base_uri ;
 
     sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER);
 
@@ -215,7 +207,7 @@ function attachment_common_link_image(&$Args) {
 
     $attachment_common_show_images_list[] = $info;
 
-    $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/image.php?'. htmlspecialchars($QUERY_STRING);
+    $Args[1]['attachment_common']['href'] = $base_uri  . 'src/image.php?'. htmlspecialchars($QUERY_STRING);
     $Args[1]['attachment_common']['href'] =
           set_url_var($Args[1]['attachment_common']['href'],
           'ent_id',$Args[5]);
@@ -231,9 +223,10 @@ function attachment_common_link_image(&$Args) {
  * @since 1.2.0
  */
 function attachment_common_link_vcard(&$Args) {
+    global $base_uri;
     sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER);
 
-    $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/vcard.php?'. htmlspecialchars($QUERY_STRING);
+    $Args[1]['attachment_common']['href'] = $base_uri  . 'src/vcard.php?'. htmlspecialchars($QUERY_STRING);
     $Args[1]['attachment_common']['href'] =
           set_url_var($Args[1]['attachment_common']['href'],
           'ent_id',$Args[5]);
index a051aeaf2e3d31fd9c2b3d3b2d425ff1042a5bd2..f5be27040f71ceca88ab0bc8bade9a450fac820c 100644 (file)
@@ -3,8 +3,8 @@
 /**
  * auth.php
  *
- * Contains functions used to do authentication. Library depends on 
- * functions from functions/global.php, functions/i18n.php and 
+ * Contains functions used to do authentication. Library depends on
+ * functions from functions/global.php, functions/i18n.php and
  * functions/strings.php.
  *
  * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  * @package squirrelmail
  */
 
-/** Put in a safety net here, in case a naughty admin didn't run conf.pl when they upgraded */
-
-if (! isset($smtp_auth_mech)) {
-    $smtp_auth_mech = 'none';
-}
-
-if (! isset($imap_auth_mech)) {
-    $imap_auth_mech = 'login';
-}
-
-if (! isset($use_imap_tls)) {
-    $use_imap_tls = false;
-}
-
-if (! isset($use_smtp_tls)) {
-    $use_smtp_tls = false;
-}
-
-/**
- * Check if user has previously logged in to the SquirrelMail session.  If user
- * has not logged in, execution will stop inside this function.
- *
- * @return int A positive value is returned if user has previously logged in
- * successfully.
- * @since 1.0
- */
-function is_logged_in() {
-
-    if ( sqsession_is_registered('user_is_logged_in') ) {
-        return;
-    } else {
-        global $PHP_SELF, $session_expired_post,
-               $session_expired_location, $squirrelmail_language;
-
-        //  First we store some information in the new session to prevent
-        //  information-loss.
-        //
-        $session_expired_post = $_POST;
-        $session_expired_location = $PHP_SELF;
-        if (!sqsession_is_registered('session_expired_post')) {
-            sqsession_register($session_expired_post,'session_expired_post');
-        }
-        if (!sqsession_is_registered('session_expired_location')) {
-            sqsession_register($session_expired_location,'session_expired_location');
-        }
-
-        // signout page will deal with users who aren't logged
-        // in on its own; don't show error here
-        //
-        if (strpos($PHP_SELF, 'signout.php') !== FALSE) {
-           return;
-        }
-
-        include_once( SM_PATH . 'functions/display_messages.php' );
-        set_up_language($squirrelmail_language, true);
-        logout_error( _("You must be logged in to access this page.") );
-        exit;
-    }
-}
 
 /**
  * Detect logged user
- * 
- * Function is similar to is_logged_in() function. If user is logged in, function 
+ *
+ * Function is similar to is_logged_in() function. If user is logged in, function
  * returns true. If user is not logged in or session is expired, function saves $_POST
- * and $PHP_SELF in session and returns false. POST information is saved in 
+ * and $PHP_SELF in session and returns false. POST information is saved in
  * 'session_expired_post' variable, PHP_SELF is saved in 'session_expired_location'.
  *
- * Script that uses this function instead of is_logged_in() function, must handle user 
+ * Script that uses this function instead of is_logged_in() function, must handle user
  * level messages.
  * @return boolean
  * @since 1.5.1
@@ -124,18 +65,18 @@ function sqauth_read_password() {
 
 /**
  * Saves or updates user password information
- * 
+ *
  * This function is used to update password information that SquirrelMail
- * stores during existing web session. It does not modify password stored 
+ * stores during existing web session. It does not modify password stored
  * in authentication system used by IMAP server.
  *
- * Function must be called before any html output started. Direct access 
- * to password information is deprecated. Saved password information is 
+ * Function must be called before any html output started. Direct access
+ * to password information is deprecated. Saved password information is
  * available only to next executed SquirrelMail script. If your script needs
- * access to saved password after sqauth_save_password() call, use returned 
+ * access to saved password after sqauth_save_password() call, use returned
  * OTP encrypted key.
  * @param string $pass password
- * @return string password encrypted with OTP. In case script wants to access 
+ * @return string password encrypted with OTP. In case script wants to access
  *  password information before reloading page.
  * @since 1.5.1
  */
index b362d15c3b9edfc1838bef9a1a617353fc2921b6..50bb101a35524b5fa6b9003e8721e3bfd99560e4 100644 (file)
  * @subpackage date
  */
 
-/** Load up some useful constants */
-require_once(SM_PATH . 'functions/constants.php');
+/**
+ * dependency information
+ * - none
+ */
 
 /**
  * Corrects a time stamp to be the local time.
@@ -443,15 +445,3 @@ function getTimeStamp($dateParts) {
         return getGMTSeconds($stamp, $dateParts[0]);
     }
 }
-
-/* I use this function for profiling. Should never be called in
-   actual versions of SquirrelMail released to public. */
-/*
-   function getmicrotime() {
-      $mtime = microtime();
-      $mtime = explode(' ',$mtime);
-      $mtime = $mtime[1] + $mtime[0];
-      return ($mtime);
-   }
-*/
-?>
\ No newline at end of file
index a1ee7178a8b093bfdbec9d9f64603f9748a5eafc..f116c83762f41fbfef8455fe1db6dea5cc9552ed 100644 (file)
@@ -39,10 +39,9 @@ define('SMDB_MYSQL', 1);
 /** PostgreSQL */
 define('SMDB_PGSQL', 2);
 
-require_once(SM_PATH . 'config/config.php');
+
 if (!include_once('DB.php')) {
     // same error also in abook_database.php
-    require_once(SM_PATH . 'functions/display_messages.php');
     $error  = _("Could not include PEAR database functions required for the database backend.") . "<br />\n";
     $error .= sprintf(_("Is PEAR installed, and is the include path set correctly to find %s?"),
                         '<tt>DB.php</tt>') . "<br />\n";
@@ -212,7 +211,7 @@ class dbPrefs {
 
     /**
      * Function used to handle database connection errors
-     * @param object PEAR Error object 
+     * @param object PEAR Error object
      */
     function failQuery($res = NULL) {
         if($res == NULL) {
@@ -250,7 +249,7 @@ class dbPrefs {
 
     /**
      * Delete user's prefs setting
-     * @param string $user user name 
+     * @param string $user user name
      * @param string $key preference name
      * @return boolean
      */
@@ -298,8 +297,8 @@ class dbPrefs {
                 ." See doc/db-backend.txt or contact your system administrator.";
 
             /**
-             * Debugging function. Can be used to log all issues that trigger 
-             * oversized field errors. Function should be enabled in all three 
+             * Debugging function. Can be used to log all issues that trigger
+             * oversized field errors. Function should be enabled in all three
              * strlen checks. See http://www.php.net/error-log
              */
             // error_log($user.'|'.$key.'|'.$value."\n",3,'/tmp/oversized_log');
index 7f94acd560e52a09a9668f20d5aa8374c59994ee..f01808f59b8e11fc45a121472aa246b8277163fc 100644 (file)
  * @package squirrelmail
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
-
-/**
- * including plugin functions
- */
-include_once(SM_PATH . 'functions/plugin.php');
 
 /**
  * Displays error message and URL to message listing
@@ -52,7 +45,7 @@ function plain_error_message($message, $color) {
 
 /**
  * Displays error when user is logged out
- * 
+ *
  * Error strings can be overriden by logout_error hook
  * @param string $errString error message
  * @param string $errTitle title of page with error message
@@ -60,16 +53,11 @@ function plain_error_message($message, $color) {
  */
 function logout_error( $errString, $errTitle = '' ) {
     global $frame_top, $org_logo, $org_name, $org_logo_width, $org_logo_height,
-           $hide_sm_attributions, $version, $squirrelmail_language, 
+           $hide_sm_attributions, $version, $squirrelmail_language,
            $color, $theme, $theme_default;
 
     $base_uri = sqm_baseuri();
 
-    include_once( SM_PATH . 'functions/page_header.php' );
-    if ( !isset( $org_logo ) ) {
-        // Don't know yet why, but in some accesses $org_logo is not set.
-        include( SM_PATH . 'config/config.php' );
-    }
     /* Display width and height like good little people */
     $width_and_height = '';
     if (isset($org_logo_width) && is_numeric($org_logo_width) && $org_logo_width>0) {
@@ -132,7 +120,7 @@ function logout_error( $errString, $errTitle = '' ) {
 
 /**
  * Displays error message
- * 
+ *
  * Since 1.4.1 function checks if page header is already displayed.
  * Since 1.4.3 and 1.5.1 function contains error_box hook.
  * Use plain_error_message() and make sure that page header is created,
@@ -152,8 +140,6 @@ function error_box($string, $color) {
 
     /* check if the page header has been sent; if not, send it! */
     if(!isset($pageheader_sent) && !$pageheader_sent) {
-        /* include this just to be sure */
-        include_once( SM_PATH . 'functions/page_header.php' );
         displayHtmlHeader('SquirrelMail: '.$err);
         $pageheader_sent = TRUE;
         echo "<body>\n\n";
@@ -177,5 +163,4 @@ function error_option_save($message) {
         $optpage_save_error=array();
 
     $optpage_save_error=array_merge($optpage_save_error,array($message));
-}
-?>
+}
\ No newline at end of file
index e35e4df407259ff46f76815396a4d0dd4641829c..161f2ef790f10fd740aec087a5c7179b235971b9 100644 (file)
  * @since 1.2.5
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
-
-/** include this for error messages */
-include_once(SM_PATH . 'functions/display_messages.php');
 
 /**
  * Check the preferences into the session cache.
@@ -31,6 +26,8 @@ function cachePrefValues($data_dir, $username) {
     sqgetGlobalVar('prefs_are_cached', $prefs_are_cached, SQ_SESSION );
     if ( isset($prefs_are_cached) && $prefs_are_cached) {
         sqgetGlobalVar('prefs_cache', $prefs_cache, SQ_SESSION );
+//        sm_print_r($prefs_cache);
+//        exit;
         return;
     }
 
index a5e5c02c2345d8267f501ef2637a8e6f06ed0e11..3211c88872c95491f21681dd55736046aba21240 100644 (file)
@@ -222,7 +222,7 @@ function folders_delete_ask ($imapConnection, $folder_name)
  */
 function folders_delete_do ($imapConnection, $delimiter, $folder_name)
 {
-    require_once(SM_PATH . 'functions/tree.php');
+    include(SM_PATH . 'functions/tree.php');
 
     $boxes = sqimap_mailbox_list ($imapConnection);
 
index 5a8f180a4285065c9c32a9be5e764ab50cec7bcb..f311150e82e1e4e2f6a0002c3abed44e3a215a1d 100644 (file)
@@ -16,8 +16,6 @@
  * @subpackage i18n
  */
 
-/** Almost everything requires global.php... */
-require_once(SM_PATH . 'functions/global.php');
 
 /** Load classes and other functions */
 include_once(SM_PATH . 'class/l10n.class.php');
@@ -36,7 +34,7 @@ function _($str) {
     global $l10n, $gettext_domain;
     if (! isset($l10n[$gettext_domain]) ||
         ! is_object($l10n[$gettext_domain]) ||
-        $l10n[$gettext_domain]->error==1) 
+        $l10n[$gettext_domain]->error==1)
         return $str;
     return $l10n[$gettext_domain]->translate($str);
 }
@@ -98,7 +96,7 @@ if (! function_exists('dgettext')) {
         global $l10n;
         if (! isset($l10n[$domain]) ||
             ! is_object($l10n[$domain]) ||
-            $l10n[$domain]->error==1) 
+            $l10n[$domain]->error==1)
             return $str;
         return $l10n[$domain]->translate($str);
     }
index aeee4ff815318d63a90eccfe345ac49f54fde926..f9c189feacc586cdeffefddf1edf8300ce380b58 100644 (file)
@@ -23,6 +23,7 @@ define('SQ_COOKIE',4);
 define('SQ_SERVER',5);
 define('SQ_FORM',6);
 
+
 /**
  * returns true if current php version is at mimimum a.b.c
  *
@@ -148,12 +149,10 @@ function sqsession_is_registered ($name) {
  * @param int search constant defining where to look
  * @return bool whether variable is found.
  */
-function sqgetGlobalVar($name, &$value, $search = SQ_INORDER) {
+function sqgetGlobalVar($name, &$value, $search = SQ_INORDER, $default = NULL, $typecast = false) {
+
+    $result = false;
 
-    /* NOTE: DO NOT enclose the constants in the switch
-       statement with quotes. They are constant values,
-       enclosing them in quotes will cause them to evaluate
-       as strings. */
     switch ($search) {
         /* we want the default case to be first here,
            so that if a valid value isn't specified,
@@ -163,7 +162,8 @@ function sqgetGlobalVar($name, &$value, $search = SQ_INORDER) {
       case SQ_SESSION:
         if( isset($_SESSION[$name]) ) {
             $value = $_SESSION[$name];
-            return TRUE;
+            $result = TRUE;
+            break;
         } elseif ( $search == SQ_SESSION ) {
             break;
         }
@@ -171,32 +171,44 @@ function sqgetGlobalVar($name, &$value, $search = SQ_INORDER) {
       case SQ_POST:
         if( isset($_POST[$name]) ) {
             $value = $_POST[$name];
-            return TRUE;
+            $result = TRUE;
+            break;
         } elseif ( $search == SQ_POST ) {
           break;
         }
       case SQ_GET:
         if ( isset($_GET[$name]) ) {
             $value = $_GET[$name];
-            return TRUE;
+            $result = TRUE;
+            break;
         }
         /* NO IF HERE. FOR SQ_INORDER CASE, EXIT after GET */
         break;
       case SQ_COOKIE:
         if ( isset($_COOKIE[$name]) ) {
             $value = $_COOKIE[$name];
-            return TRUE;
+            $result = TRUE;
+            break;
         }
         break;
       case SQ_SERVER:
         if ( isset($_SERVER[$name]) ) {
             $value = $_SERVER[$name];
-            return TRUE;
+            $result = TRUE;
+            break;
         }
         break;
     }
-    /* Nothing found, return FALSE */
-    return FALSE;
+    if ($result && $typecast) {
+        switch ($typecast) {
+            case 'int': $value = (int) $value; break;
+            case 'bool': $value = (bool) $value; break;
+            default: break;
+        }
+    } else if (!is_null($default)) {
+        $value = $default;
+    }
+    return $result;
 }
 
 /**
@@ -227,7 +239,6 @@ function sqsession_destroy() {
         $_SESSION = array();
         @session_destroy();
     }
-
 }
 
 /**
@@ -249,18 +260,14 @@ function sqsession_is_active() {
  * (IE6 only)
  */
 function sqsession_start() {
-    global $PHP_SELF;
-
-    $dirs = array('|src/.*|', '|plugins/.*|', '|functions/.*|');
-    $repl = array('', '', '');
-    $base_uri = preg_replace($dirs, $repl, $PHP_SELF);
-
+    global $base_uri;
 
     session_start();
-    $sessid = session_id();
+    $session_id = session_id();
+
     // session_starts sets the sessionid cookie buth without the httponly var
     // setting the cookie again sets the httponly cookie attribute
-    sqsetcookie(session_name(),$sessid,false,$base_uri);
+    sqsetcookie(session_name(),session_id(),false,$base_uri);
 }
 
 
@@ -275,7 +282,21 @@ function sqsession_start() {
  * @param boolean $bHttpOnly Disallow JS to access the cookie (IE6 only)
  * @return void
  */
-function sqsetcookie($sName,$sValue,$iExpire=false,$sPath="",$sDomain="",$bSecure=false,$bHttpOnly=true) {
+function sqsetcookie($sName,$sValue,$iExpire=false,$sPath="",$sDomain="",$bSecure=false,$bHttpOnly=true,$bFlush=false) {
+    static $sCookieCache;
+    if (!isset($sCache)) {
+        $sCache = '';
+    }
+    /**
+     * We have to send all cookies with one header call otherwise we loose cookies.
+     * In order to achieve that the sqsetcookieflush function calls this function with $bFlush = true.
+     * If that happens we send the cookie header.
+     */
+    if ($bFlush) {
+        header($sCookieCache);
+        return;
+    }
+
     $sHeader = "Set-Cookie: $sName=$sValue";
     if ($sPath) {
         $sHeader .= "; path=$sPath";
@@ -295,10 +316,71 @@ function sqsetcookie($sName,$sValue,$iExpire=false,$sPath="",$sDomain="",$bSecur
         $sHeader .= "; HttpOnly";
     }
     // $sHeader .= "; Version=1";
+    $sCookieCache .= $sHeader ."\r\n";
+    if ($bFlush) {
+        header($sCookieCache);
+    }
+}
+
+/**
+ * Send the cookie header
+ *
+ * Cookies set with sqsetcookie will bet set after a sqsetcookieflush call.
+ * @return void
+ */
+function sqsetcookieflush() {
+    sqsetcookie('','','','','','','',true);
+}
+
+/**
+ * session_regenerate_id replacement for PHP < 4.3.2
+ *
+ * This code is borrowed from Gallery, session.php version 1.53.2.1
+ */
+if (!function_exists('session_regenerate_id')) {
+    function make_seed() {
+        list($usec, $sec) = explode(' ', microtime());
+        return (float)$sec + ((float)$usec * 100000);
+    }
+
+    function php_combined_lcg() {
+        mt_srand(make_seed());
+        $tv = gettimeofday();
+        $lcg['s1'] = $tv['sec'] ^ (~$tv['usec']);
+        $lcg['s2'] = mt_rand();
+        $q = (int) ($lcg['s1'] / 53668);
+        $lcg['s1'] = (int) (40014 * ($lcg['s1'] - 53668 * $q) - 12211 * $q);
+        if ($lcg['s1'] < 0) {
+            $lcg['s1'] += 2147483563;
+        }
+        $q = (int) ($lcg['s2'] / 52774);
+        $lcg['s2'] = (int) (40692 * ($lcg['s2'] - 52774 * $q) - 3791 * $q);
+        if ($lcg['s2'] < 0) {
+            $lcg['s2'] += 2147483399;
+        }
+        $z = (int) ($lcg['s1'] - $lcg['s2']);
+        if ($z < 1) {
+            $z += 2147483562;
+        }
+        return $z * 4.656613e-10;
+    }
 
-    header($sHeader);
+    function session_regenerate_id() {
+        global $base_uri;
+        $tv = gettimeofday();
+        sqgetGlobalVar('REMOTE_ADDR',$remote_addr,SQ_SERVER);
+        $buf = sprintf("%.15s%ld%ld%0.8f", $remote_addr, $tv['sec'], $tv['usec'], php_combined_lcg() * 10);
+        session_id(md5($buf));
+        if (ini_get('session.use_cookies')) {
+            // at a later stage we use sqsetcookie. At this point just do
+            // what session_regenerate_id would do
+            setcookie(session_name(), session_id(), NULL, $base_uri);
+        }
+        return TRUE;
+    }
 }
 
+
 /**
  * php_self
  *
@@ -328,89 +410,4 @@ function php_self () {
     return '';
 }
 
-/** set the name of the session cookie */
-if(isset($session_name) && $session_name) {
-    ini_set('session.name' , $session_name);
-} else {
-    ini_set('session.name' , 'SQMSESSID');
-}
-
-/**
- * If magic_quotes_runtime is on, SquirrelMail breaks in new and creative ways.
- * Force magic_quotes_runtime off.
- * tassium@squirrelmail.org - I put it here in the hopes that all SM code includes this.
- * If there's a better place, please let me know.
- */
-ini_set('magic_quotes_runtime','0');
-
-/* Since we decided all IMAP servers must implement the UID command as defined in
- * the IMAP RFC, we force $uid_support to be on.
- */
-
-global $uid_support;
-$uid_support = true;
-
-/* if running with magic_quotes_gpc then strip the slashes
-   from POST and GET global arrays */
-if (get_magic_quotes_gpc()) {
-    sqstripslashes($_GET);
-    sqstripslashes($_POST);
-}
-
-/**
- * If register_globals are on, unregister globals.
- * Code requires PHP 4.1.0 or newer.
- */
-if ((bool) @ini_get('register_globals')) {
-    /**
-     * Remove all globals from $_GET, $_POST, and $_COOKIE.
-     */
-    foreach ($_REQUEST as $key => $value) {
-        unset($GLOBALS[$key]);
-    }
-    /**
-     * Remove globalized $_FILES variables
-     * Before 4.3.0 $_FILES are included in $_REQUEST.
-     * Unglobalize them in separate call in order to remove dependency
-     * on PHP version.
-     */
-    foreach ($_FILES as $key => $value) {
-        unset($GLOBALS[$key]);
-        // there are three undocumented $_FILES globals.
-        unset($GLOBALS[$key.'_type']);
-        unset($GLOBALS[$key.'_name']);
-        unset($GLOBALS[$key.'_size']);
-    }
-    /**
-     * Remove globalized environment variables.
-     */
-    foreach ($_ENV as $key => $value) {
-        unset($GLOBALS[$key]);
-    }
-    /**
-     * Remove globalized server variables.
-     */
-    foreach ($_SERVER as $key => $value) {
-        unset($GLOBALS[$key]);
-    }
-}
-
-/* strip any tags added to the url from PHP_SELF.
-   This fixes hand crafted url XXS expoits for any
-   page that uses PHP_SELF as the FORM action */
-$_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']);
-
-$PHP_SELF = php_self();
-
-sqsession_is_active();
-
-/**
- * Remove globalized session data in rg=on setups
- */
-if ((bool) @ini_get('register_globals')) {
-    foreach ($_SESSION as $key => $value) {
-        unset($GLOBALS[$key]);
-    }
-}
 
-?>
index 9597cc92aa20de033d7807fcfffaacf972cf677e..59f69a25b044d09c20a9e523c7f2517a2ae60d03 100644 (file)
@@ -157,46 +157,4 @@ function set_url_var($url, $var, $val=0, $link=true) {
     }
     return $url;
 }
-
-/**
- * Temporary test function to process template vars with formatting.
- * I use it for viewing the message_header (view_header.php) with
- * a sort of template.
- * @param mixed $var
- * @param mixed $format_ar
- * @since 1.3.0
- * @todo if function is temporary, then why it is used.
- * @deprecated
- */
-function echo_template_var($var, $format_ar = array() ) {
-    $frm_last = count($format_ar) -1;
-
-    if (isset($format_ar[0])) echo $format_ar[0];
-    $i = 1;
-
-    switch (true) {
-    case (is_string($var)):
-        echo $var;
-        break;
-    case (is_array($var)):
-        $frm_a = array_slice($format_ar,1,$frm_last-1);
-        foreach ($var as $a_el) {
-            if (is_array($a_el)) {
-                echo_template_var($a_el,$frm_a);
-            } else {
-                echo $a_el;
-                if (isset($format_ar[$i])) {
-                    echo $format_ar[$i];
-                }
-                $i++;
-            }
-        }
-        break;
-    default:
-        break;
-    }
-    if (isset($format_ar[$frm_last]) && $frm_last>$i ) {
-        echo $format_ar[$frm_last];
-    }
-}
 ?>
\ No newline at end of file
index fb90144e67cab522dc2552b0aeb11cec02bcb690..10c377ebcdb60940bef4ffb2d7a903a755715136 100644 (file)
  * @since 1.4.2
  */
 
-/** Used to simplify includes
- * @ignore
- */
-if (!defined('SM_PATH')) {
-    define('SM_PATH','../');
-}
-
-/** preference and signature functions */
-include_once(SM_PATH . 'include/load_prefs.php');
 
 /**
  * Returns an array of all the identities.
@@ -79,7 +70,7 @@ function save_identities($identities) {
 
 
     $num_cur = getPref($data_dir, $username, 'identities');
-    
+
     $cnt = count($identities);
 
     // Remove any additional identities in prefs //
@@ -185,9 +176,9 @@ function sqfixidentities( $identities, $id, $action ) {
             // Process actions from plugins and save/update action //
             default:
                 /**
-                 * send action and id information. number of hook arguments 
-                 * differs from 1.4.4 or older and 1.5.0. count($args) can 
-                 * be used to detect modified hook. Older hook does not 
+                 * send action and id information. number of hook arguments
+                 * differs from 1.4.4 or older and 1.5.0. count($args) can
+                 * be used to detect modified hook. Older hook does not
                  * provide information that can be useful for plugins.
                  */
                 do_hook('options_identities_process', $action, $id);
index ae7704b38b56064e9c4d8d70aa1e4e76eb8cdb5c..84dfa9c9dc90d887a26bb16e250541006500a080 100644 (file)
  */
 
 /** Includes */
-require_once(SM_PATH . 'functions/imap_mailbox.php');
-require_once(SM_PATH . 'functions/imap_messages.php');
-require_once(SM_PATH . 'functions/imap_general.php');
-
-/** This is here for bc */
-require_once(SM_PATH . 'functions/date.php');
-require_once(SM_PATH . 'functions/mailbox_display.php');
-require_once(SM_PATH . 'functions/mime.php');
+include_once(SM_PATH . 'functions/imap_messages.php');
+include_once(SM_PATH . 'functions/imap_general.php');
 
 ?>
\ No newline at end of file
index 886846948dcb706c2ff99ad850e9158c01789086..957591e640bd29f0c6adcf9cfca83cbe9f4d6ed5 100644 (file)
@@ -19,8 +19,8 @@
 
 /** This functionality requires the IMAP and date functions
  */
-require_once(SM_PATH . 'functions/imap_general.php');
-require_once(SM_PATH . 'functions/date.php');
+//require_once(SM_PATH . 'functions/imap_general.php');
+//require_once(SM_PATH . 'functions/date.php');
 
 /** Set to TRUE to dump the IMAP dialogue
  * @global bool $imap_asearch_debug_dump
index 1373a20e3d7cd2756bee325e89425d833f748ce2..1afcafffc3b96b225b52e7d387565225c31f867d 100755 (executable)
@@ -13,9 +13,8 @@
  */
 
 /** Includes.. */
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/auth.php');
-include_once(SM_PATH . 'functions/rfc822address.php');
+
+require_once(SM_PATH . 'functions/rfc822address.php');
 
 
 /**
@@ -64,7 +63,6 @@ function sqimap_run_command_list ($imap_stream, $query, $handle_errors, &$respon
     } else {
         global $squirrelmail_language, $color;
         set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
         $string = "<b><font color=\"$color[2]\">\n" .
                 _("ERROR: No available IMAP stream.") .
                 "</b></font>\n";
@@ -115,7 +113,6 @@ function sqimap_run_command ($imap_stream, $query, $handle_errors, &$response,
     } else {
         global $squirrelmail_language, $color;
         set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
         $string = "<b><font color=\"$color[2]\">\n" .
                 _("ERROR: No available IMAP stream.") .
                 "</b></font>\n";
@@ -319,7 +316,6 @@ function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
           &$response, &$message, $query = '') {
     global $color, $squirrelmail_language;
     set_up_language($squirrelmail_language);
-    require_once(SM_PATH . 'functions/display_messages.php');
     $string = "<b><font color=\"$color[2]\">\n" .
         _("ERROR: Bad function call.") .
         "</b><br />\n" .
@@ -350,7 +346,6 @@ function sqimap_error_box($title, $query = '', $message_title = '', $message = '
     global $color, $squirrelmail_language;
 
     set_up_language($squirrelmail_language);
-    require_once(SM_PATH . 'functions/display_messages.php');
     $string = "<font color=\"$color[2]\"><b>\n" . $title . "</b><br />\n";
     $cmd = explode(' ',$query);
     $cmd= strtolower($cmd[0]);
@@ -461,7 +456,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
 
           case '*':
           {
-            if (($sCommand == "FETCH" || $sCommand == "STORE") && preg_match('/^\*\s\d+\sFETCH/',$read)) {
+            if (($sCommand == "FETCH" || $sCommand == "STORE")  && preg_match('/^\*\s\d+\sFETCH/',$read)) {
                 /* check for literal */
                 $s = substr($read,-3);
                 $fetch_data = array();
@@ -863,7 +858,6 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
                 /* "BAD" and anything else gets reported here. */
                 $message = htmlspecialchars($message);
                 set_up_language($squirrelmail_language, true);
-                require_once(SM_PATH . 'functions/display_messages.php');
                 if ($response == 'BAD') {
                     $string = sprintf (_("Bad request: %s")."<br />\r\n", $message);
                 } else {
@@ -890,8 +884,8 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
                  */
 
                 set_up_language($squirrelmail_language, true);
-                include_once(SM_PATH . 'functions/display_messages.php' );
                 sqsession_destroy();
+                sqsetcookieflush();
                 /* terminate the session nicely */
                 sqimap_logout($imap_stream);
                 logout_error( _("Unknown user or password incorrect.") );
@@ -911,7 +905,6 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
     if ( stristr($message, 'REFERRAL imap') === TRUE ) {
         sqimap_logout($imap_stream);
         set_up_language($squirrelmail_language, true);
-        include_once(SM_PATH . 'functions/display_messages.php' );
         sqsession_destroy();
         logout_error( _("Your mailbox is not located at this server. Try a different server or consult your system administrator") );
         exit;
@@ -948,7 +941,6 @@ function sqimap_capability($imap_stream, $capability='', $bUseCache=true) {
 
     if (!$bUseCache || ! sqgetGlobalVar('sqimap_capabilities', $sqimap_capabilities, SQ_SESSION)) {
         $read = sqimap_run_command($imap_stream, 'CAPABILITY', true, $a, $b);
-
         $c = explode(' ', $read[0]);
         for ($i=2; $i < count($c); $i++) {
             $cap_list = explode('=', $c[$i]);
@@ -1297,4 +1289,4 @@ function map_yp_alias($username) {
    return chop(substr($yp, strlen($username)+1));
 }
 
-?>
+?>
\ No newline at end of file
index 41d8fd53240e35dc1be8827c7a8296718ca1d36a..921ec31b2099ff2e5ef4cf77ba6750eb3ee38b3e 100755 (executable)
  * @subpackage imap
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
-
 /** UTF7 support */
 require_once(SM_PATH . 'functions/imap_utf7_local.php');
 
-global $boxesnew;
 
 /**
  * Mailboxes class
@@ -769,7 +765,7 @@ function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
 
     if ($show_only_subscribed) { $show_only_subscribed=$show_only_subscribed_folders; }
 
-    require_once(SM_PATH . 'include/load_prefs.php');
+    //require_once(SM_PATH . 'include/load_prefs.php');
 
     /**
      * There are three main listing commands we can use in IMAP:
@@ -814,7 +810,6 @@ function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
 
     // get subscribed mailbox list from cache (session)
     // if not there, then get it from the imap server and store in cache
-    sqsession_is_active();
 
     if (!$force) {
         sqgetGlobalVar($sub_cache_name,$lsub_cache,SQ_SESSION);
index 2b1d756f5e0637967ca3fe572c6169377998bd93..f17071d347bdee5c56311df01c3b4b3681331a45 100644 (file)
  * @package squirrelmail
  */
 
-/** The standard includes.. */
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'functions/html.php');
-require_once(SM_PATH . 'functions/imap_mailbox.php');
-require_once(SM_PATH . 'functions/imap_messages.php');
-require_once(SM_PATH . 'functions/imap_asearch.php');
-require_once(SM_PATH . 'functions/mime.php');
-require_once(SM_PATH . 'functions/forms.php');
-
 
 /**
  * Selects a mailbox for header retrieval.
@@ -609,9 +600,9 @@ function prepareMessageList(&$aMailbox, $aProps) {
                         $link = $sTargetModule.'.php?' . implode('&amp;',$aQuery);
 
                         // see top of this function for which attributes are available
-                        // in the global scope for plugin use (like $link, $target, 
+                        // in the global scope for plugin use (like $link, $target,
                         // $onclick, $link_extra, $title, and so forth)
-                        // plugins are responsible for sharing nicely (such as for 
+                        // plugins are responsible for sharing nicely (such as for
                         // setting the target, etc)
                         do_hook('subject_link', array($iPageOffset, $sSearch, $aSearch));
                     }
index 8f232695cf8c902030d2fd44d52b36373c42141a..d06aecdee1159d0c94f59f9362def9ee0c9cbc05 100644 (file)
  * @package squirrelmail
  */
 
-/** The typical includes... */
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/attachment_common.php');
-/** add sqm_baseuri()*/
-include_once(SM_PATH . 'functions/display_messages.php');
+/**
+ * dependency information
+   functions       dependency
+   mime_structure
+        class/mime/Message.class.php
+            Message::parseStructure
+        functions/page_header.php
+            displayPageHeader
+        functions/display_messages.php
+            plain_error_message
+   mime_fetch_body
+        functions/imap_general.php
+            sqimap_run_command
+   mime_print_body_lines
+
+
+
+functions/imap.php
+functions/attachment_common.php
+functions/display_messages.php
+
+magicHtml => url_parser
+translateText => url_parser
+
+*/
+
 
 /* -------------------------------------------------------------------------- */
 /* MIME DECODING                                                              */
@@ -37,7 +58,6 @@ function mime_structure ($bodystructure, $flags=array()) {
     $i = 0;
     $msg = Message::parseStructure($read,$i);
     if (!is_object($msg)) {
-        include_once(SM_PATH . 'functions/display_messages.php');
         global $color, $mailbox;
         /* removed urldecode because $_GET is auto urldecoded ??? */
         displayPageHeader( $color, $mailbox );
@@ -264,7 +284,7 @@ function translateText(&$body, $wrap_at, $charset) {
     global $where, $what;   /* from searching */
     global $color;          /* color theme */
 
-    require_once(SM_PATH . 'functions/url_parser.php');
+    // require_once(SM_PATH . 'functions/url_parser.php');
 
     $body_ary = explode("\n", $body);
     for ($i=0; $i < count($body_ary); $i++) {
@@ -489,7 +509,7 @@ function formatBody($imap_stream, $message, $color, $wrap_at, $ent_num, $id, $ma
  * @return string html formated attachment information.
  */
 function formatAttachments($message, $exclude_id, $mailbox, $id) {
-    global $where, $what, $startMessage, $color, $passed_ent_id;
+    global $where, $what, $startMessage, $color, $passed_ent_id, $base_uri;
 
     $att_ar = $message->getAttachments($exclude_id);
 
@@ -506,10 +526,10 @@ function formatAttachments($message, $exclude_id, $mailbox, $id) {
         $type1 = strtolower($header->type1);
         $name = '';
         $links['download link']['text'] = _("Download");
-        $links['download link']['href'] = sqm_baseuri() .
+        $links['download link']['href'] = $base_uri .
             "src/download.php?absolute_dl=true&amp;passed_id=$id&amp;mailbox=$urlMailbox&amp;ent_id=$ent";
         if ($type0 =='message' && $type1 == 'rfc822') {
-            $default_page = sqm_baseuri() . 'src/read_body.php';
+            $default_page = $base_uri  . 'src/read_body.php';
             $rfc822_header = $att->rfc822_header;
             $filename = $rfc822_header->subject;
             if (trim( $filename ) == '') {
@@ -530,7 +550,7 @@ function formatAttachments($message, $exclude_id, $mailbox, $id) {
             }
             $description = $from_name;
         } else {
-            $default_page = sqm_baseuri() . 'src/download.php';
+            $default_page = $base_uri  . 'src/download.php';
             $filename = $att->getFilename();
             if ($header->description) {
                 $description = decodeHeader($header->description);
@@ -2073,7 +2093,7 @@ function sq_sanitize($body,
  */
 function magicHTML($body, $id, $message, $mailbox = 'INBOX', $take_mailto_links =true) {
 
-    require_once(SM_PATH . 'functions/url_parser.php');  // for $MailTo_PReg_Match
+    // require_once(SM_PATH . 'functions/url_parser.php');  // for $MailTo_PReg_Match
 
     global $attachment_common_show_images, $view_unsafe_images,
            $has_unsafe_images;
@@ -2235,7 +2255,7 @@ function magicHTML($body, $id, $message, $mailbox = 'INBOX', $take_mailto_links
     if ($take_mailto_links) {
         // parseUrl($trusted);   // this even parses URLs inside of tags... too aggressive
         global $MailTo_PReg_Match;
-        $MailTo_PReg_Match = '/mailto:' . substr($MailTo_PReg_Match, 1);
+        $MailTo_PReg_Match = '/mailto:' . substr($MailTo_PReg_Match, 1) ;
         if ((preg_match_all($MailTo_PReg_Match, $trusted, $regs)) && ($regs[0][0] != '')) {
             foreach ($regs[0] as $i => $mailto_before) {
                 $mailto_params = $regs[10][$i];
@@ -2390,4 +2410,4 @@ function SendDownloadHeaders($type0, $type1, $filename, $force, $filesize=0) {
 
 }  // end fn SendDownloadHeaders
 
-?>
+?>
\ No newline at end of file
index 5b4789cc05dab7b52434fb4347b1d4d12834e7e7..9c60b63cf0feefcf676b6d643eb70169ef194eeb 100644 (file)
  * @package squirrelmail
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
-
 /** Include required files from SM */
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'functions/html.php');
-require_once(SM_PATH . 'functions/imap_mailbox.php');
-require_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'class/template/template.class.php');
+include_once(SM_PATH . 'functions/imap_mailbox.php');
 
 /**
  * Output a SquirrelMail page header, from <!doctype> to </head>
@@ -71,6 +64,7 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
         .(!empty($used_fontsize) ? '&amp;fontsize='.$used_fontsize : '')
         .(!empty($text_direction) ? '&amp;dir='.$text_direction : '')."\">\n";
 
+
     // load custom style sheet (deprecated)
     if ( ! empty($theme_css) ) {
         echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$theme_css\">\n";
@@ -125,7 +119,8 @@ ECHO;
  * @param string target the target frame for this link
  */
 function makeInternalLink($path, $text, $target='') {
-    sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION);
+    global $base_uri;
+//    sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION);
     if ($target != '') {
         $target = " target=\"$target\"";
     }
@@ -210,7 +205,10 @@ function displayPageHeader($color, $mailbox, $sHeaderJs='', $sBodyTagJs = '') {
         displayHtmlHeader ('SquirrelMail');
         $sBodyTagJs = '';
     }
-
+    /*
+     * this explains the imap_mailbox.php dependency. We should instead store
+     * the selected mailbox in the session and fallback to the session var.
+     */
     $shortBoxName = htmlspecialchars(imap_utf7_decode_local(
                 readShortMailboxName($mailbox, $delimiter)));
     if ( $shortBoxName == 'INBOX' ) {
@@ -293,4 +291,3 @@ function compose_Header($color, $mailbox, $sHeaderJs='', $sBodyTagJs = '') {
     }
     echo "<body text=\"$color[8]\" bgcolor=\"$color[4]\" link=\"$color[7]\" vlink=\"$color[7]\" alink=\"$color[7]\" $sBodyTagJs>\n\n";
 }
-?>
\ No newline at end of file
index ab8d518464a03a31ca42146c1bdc21c6d977cc9d..6e66aa60a1885aea62035c41fd9a7e9334e57c0b 100644 (file)
  * @package squirrelmail
  */
 
-/** Everything needs global.. */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'config/config.php');
-require_once(SM_PATH . 'functions/prefs.php');
-
-global $squirrelmail_plugin_hooks;
-$squirrelmail_plugin_hooks = array();
-
 /**
  * This function adds a plugin.
  * @param string $name Internal plugin name (ie. delete_move_next)
@@ -200,7 +192,7 @@ function is_plugin_enabled($plugin_name) {
   global $plugins;
 
   /**
-   * check if variable is empty. if var is not set, php empty 
+   * check if variable is empty. if var is not set, php empty
    * returns true without error notice.
    *
    * then check if it is an array
@@ -214,25 +206,4 @@ function is_plugin_enabled($plugin_name) {
     return false;
   }
 }
-
-/*************************************/
-/*** MAIN PLUGIN LOADING CODE HERE ***/
-/*************************************/
-
-/* On startup, register all plugins configured for use. */
-if (isset($plugins) && is_array($plugins)) {
-    // turn on output buffering in order to prevent output of new lines
-    ob_start();
-    foreach ($plugins as $name) {
-        use_plugin($name);
-    }
-    // get output and remove whitespace
-    $output = trim(ob_get_contents());
-    ob_end_clean();
-    // if plugins output more than newlines and spacing, stop script execution.
-    if (!empty($output)) {
-        die($output);
-    }
-}
-
 ?>
index ec3bc71c9837d49340be45e32b3fccbe1ad5eeab..4924441981f98b36b7f289b165ab8bb7784e3ab7 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * prefs.php
  *
- * This contains functions for manipulating user preferences
+ * This contains functions for filebased user prefs locations
  *
  * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @subpackage prefs
  */
 
-/** @ignore */
-if (!defined('SM_PATH')) define('SM_PATH','../');
 
-/** Include global.php */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/plugin.php');
-
-sqgetGlobalVar('prefs_cache', $prefs_cache, SQ_SESSION );
-sqgetGlobalVar('prefs_are_cached', $prefs_are_cached, SQ_SESSION );
-
-if ( !sqsession_is_registered('prefs_are_cached') ||
-     !isset( $prefs_cache) ||
-     !is_array( $prefs_cache)
-   ) {
-    $prefs_are_cached = false;
-    $prefs_cache = array();
-}
-
-$prefs_backend = do_hook_function('prefs_backend');
-if (isset($prefs_backend) && !empty($prefs_backend) && file_exists(SM_PATH . $prefs_backend)) {
-    require_once(SM_PATH . $prefs_backend);
-} elseif (isset($prefs_dsn) && !empty($prefs_dsn)) {
-    require_once(SM_PATH . 'functions/db_prefs.php');
-} else {
-    require_once(SM_PATH . 'functions/file_prefs.php');
-}
 
 /* Hashing functions */
 
@@ -151,33 +126,4 @@ function computeHashDirs($username) {
     /* Return our array of hash directories. */
     return ($hash_dirs);
 }
-
-/**
- * Javascript support detection function
- * @param boolean $reset recheck javascript support if set to true.
- * @return integer SMPREF_JS_ON or SMPREF_JS_OFF ({@see functions/constants.php})
- * @since 1.5.1
- */
-function checkForJavascript($reset = FALSE) {
-  global $data_dir, $username, $javascript_on, $javascript_setting;
-
-  if ( !$reset && sqGetGlobalVar('javascript_on', $javascript_on, SQ_SESSION) )
-    return $javascript_on;
-
-  if ( $reset || !isset($javascript_setting) )
-    $javascript_setting = getPref($data_dir, $username, 'javascript_setting', SMPREF_JS_AUTODETECT);
-
-  if ( !sqGetGlobalVar('new_js_autodetect_results', $js_autodetect_results) &&
-       !sqGetGlobalVar('js_autodetect_results', $js_autodetect_results) )
-    $js_autodetect_results = SMPREF_JS_OFF;
-
-  if ( $javascript_setting == SMPREF_JS_AUTODETECT )
-    $javascript_on = $js_autodetect_results;
-  else
-    $javascript_on = $javascript_setting;
-
-  sqsession_register($javascript_on, 'javascript_on');
-  return $javascript_on;
-}
-
 ?>
\ No newline at end of file
index 613f342c57c28d0ed30b1ece292ba229fc9b0ea3..00761057faedbcc11d19ff037a0ccb10d97425d1 100644 (file)
  * @package squirrelmail
  */
 
-/** @ignore */
-if (!defined('SM_PATH')) define('SM_PATH','../');
-
-/**
- * SquirrelMail version number -- DO NOT CHANGE
- */
-global $version;
-$version = '1.5.2 [CVS]';
-
-/**
- * SquirrelMail internal version number -- DO NOT CHANGE
- * $sm_internal_version = array (release, major, minor)
- */
-global $SQM_INTERNAL_VERSION;
-$SQM_INTERNAL_VERSION = array(1,5,2);
-
-/**
- * There can be a circular issue with includes, where the $version string is
- * referenced by the include of global.php, etc. before it's defined.
- * For that reason, bring in global.php AFTER we define the version strings.
- */
-include_once(SM_PATH . 'functions/global.php');
-
-/**
- * Include Compatibility plugin if available.
- */
-if (file_exists(SM_PATH . 'plugins/compatibility/functions.php'))
-    include_once(SM_PATH . 'plugins/compatibility/functions.php');
-
 /**
  * Appends citation markers to the string.
  * Also appends a trailing space.
@@ -483,28 +454,6 @@ function readShortMailboxName($haystack, $needle) {
     return( $elem );
 }
 
-/**
- * Find out where SquirrelMail lives and try to be smart about it.
- * The only problem would be when SquirrelMail lives in directories
- * called "src", "functions", or "plugins", but people who do that need
- * to be beaten with a steel pipe anyway.
- *
- * @return string the base uri of SquirrelMail installation.
- * @since 1.2.6
- */
-function sqm_baseuri(){
-    global $base_uri, $PHP_SELF;
-    /**
-     * If it is in the session, just return it.
-     */
-    if (sqgetGlobalVar('base_uri',$base_uri,SQ_SESSION)){
-        return $base_uri;
-    }
-    $dirs = array('|src/.*|', '|plugins/.*|', '|functions/.*|');
-    $repl = array('', '', '');
-    $base_uri = preg_replace($dirs, $repl, $PHP_SELF);
-    return $base_uri;
-}
 
 /**
  * get_location
index 9df95a5e78c122f0fe95a86419f930525a372080..14c32383abf02538ce634a8dd3cdcfbded1d1c2a 100644 (file)
  * @package squirrelmail
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../');
-
-/** Clearly, this needs the IMAP functions.. */
-require_once(SM_PATH . 'functions/imap.php');
 
 /**
  * Recursive function to find the correct parent for a new node.
diff --git a/include/constants.php b/include/constants.php
new file mode 100644 (file)
index 0000000..2a60258
--- /dev/null
@@ -0,0 +1,158 @@
+<?php
+
+/**
+ * constants.php
+ *
+ * Loads constants used by the rest of the SquirrelMail source.
+ * This file is include by src/login.php, src/redirect.php and
+ * src/load_prefs.php.
+ *
+ * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @since 1.2.0
+ */
+
+/** @ignore */
+
+/**************************************************************/
+/* Set values for constants used by SquirrelMail preferences. */
+/**************************************************************/
+
+/**
+ * Define basic, general purpose preference constants.
+ * @since 1.2.0
+ */
+define('SMPREF_NO', 0);
+define('SMPREF_OFF', 0);
+define('SMPREF_YES', 1);
+define('SMPREF_ON', 1);
+define('SMPREF_NONE', 'none');
+
+/**
+ * Define constants for location based preferences.
+ * @since 1.2.0
+ */
+define('SMPREF_LOC_TOP', 'top');
+define('SMPREF_LOC_BETWEEN', 'between');
+define('SMPREF_LOC_BOTTOM', 'bottom');
+define('SMPREF_LOC_LEFT', '');
+define('SMPREF_LOC_RIGHT', 'right');
+
+/**
+ * Define preferences for folder settings.
+ * @since 1.2.0
+ */
+define('SMPREF_UNSEEN_NONE', 1);
+define('SMPREF_UNSEEN_INBOX', 2);
+define('SMPREF_UNSEEN_ALL', 3);
+define('SMPREF_UNSEEN_SPECIAL', 4); // Only special folders (since 1.2.5)
+define('SMPREF_UNSEEN_NORMAL', 5);  // Only normal folders (since 1.2.5)
+define('SMPREF_UNSEEN_ONLY', 1);
+define('SMPREF_UNSEEN_TOTAL', 2);
+
+/**
+ * Define constants for time/date display preferences.
+ * @since 1.2.0
+ */
+define('SMPREF_TIME_24HR', 1);
+define('SMPREF_TIME_12HR', 2);
+
+/**
+ * Define constants for javascript preferences.
+ * @since 1.2.0
+ */
+define('SMPREF_JS_OFF', 0);
+define('SMPREF_JS_ON', 1);
+define('SMPREF_JS_AUTODETECT', 2);
+
+/**
+ * default value for page_selector_max
+ * @since 1.5.1
+ */
+define('PG_SEL_MAX', 10);
+
+
+/**
+ * The number of pages to cache msg headers
+ * @since 1.5.1
+ */
+define('SQM_MAX_PAGES_IN_CACHE',5);
+
+/**
+ * The number of mailboxes to cache msg headers
+ * @since 1.5.1
+ */
+define('SQM_MAX_MBX_IN_CACHE',3);
+
+/**
+ * Sort constants used for sorting of messages
+ * @since 1.5.1
+ */
+define('SQSORT_NONE',0);
+define('SQSORT_DATE_ASC',1);
+define('SQSORT_DATE_DESC',2);
+define('SQSORT_FROM_ASC',3);
+define('SQSORT_FROM_DESC',4);
+define('SQSORT_SUBJ_ASC',5);
+define('SQSORT_SUBJ_DESC',6);
+define('SQSORT_SIZE_ASC',7);
+define('SQSORT_SIZE_DESC',8);
+define('SQSORT_TO_ASC',9);
+define('SQSORT_TO_DESC',10);
+define('SQSORT_CC_ASC',11);
+define('SQSORT_CC_DESC',12);
+define('SQSORT_INT_DATE_ASC',13);
+define('SQSORT_INT_DATE_DESC',14);
+
+/**
+ * Special sort constant thread which is added to above sort mode.
+ * By doing a bitwise check ($sort & SQSORT_THREAD) we know if the mailbox
+ * is sorted by thread.
+ * @since 1.5.1
+ */
+define('SQSORT_THREAD',32);
+
+/**
+ * Mailbox preference array keys
+ * @since 1.5.1
+ */
+define('MBX_PREF_SORT',0);
+define('MBX_PREF_LIMIT',1);
+define('MBX_PREF_AUTO_EXPUNGE',2);
+define('MBX_PREF_INTERNALDATE',3);
+define('MBX_PREF_COLUMNS',4);
+// define('MBX_PREF_FUTURE',unique integer key);
+
+/**
+ * Email address array keys
+ * @since 1.5.1
+ */
+define('SQM_ADDR_PERSONAL', 0);
+define('SQM_ADDR_ADL',      1);
+define('SQM_ADDR_MAILBOX',  2);
+define('SQM_ADDR_HOST',     3);
+
+/**
+ * Supported columns to show in a messages list
+ * The MBX_PREF_COLUMNS contains an ordered array with these columns
+ * @since 1.5.1
+ */
+define('SQM_COL_CHECK',0);
+define('SQM_COL_FROM',1);
+define('SQM_COL_DATE', 2);
+define('SQM_COL_SUBJ', 3);
+define('SQM_COL_FLAGS', 4);
+define('SQM_COL_SIZE', 5);
+define('SQM_COL_PRIO', 6);
+define('SQM_COL_ATTACHMENT', 7);
+define('SQM_COL_INT_DATE', 8);
+define('SQM_COL_TO', 9);
+define('SQM_COL_CC', 10);
+define('SQM_COL_BCC', 11);
+
+/** @since 1.2.0 */
+do_hook('loading_constants');
+
+?>
\ No newline at end of file
index 983a594c9024c508424cbd84345f34d1447752b3..e23e28850bb427445ccf85a5ad1df649c5684177 100644 (file)
@@ -54,7 +54,7 @@ $aErrors['SQM_IMAP_APPEND_QUOTA_ERROR'] = array(
     'category' => SQM_ERROR_IMAP,
     'message'  => _( "Out of quota error."),
     'link'     => '',
-    'tip'      => _("Remove unneccessary messages from your folders. Start with your Trash folder.")
+    'tip'      => _("Remove unneccessary messages from your folder. Start with your Trash folder.")
 );
 
 $aErrors['SQM_IMAP_APPEND_ERROR'] = array(
diff --git a/include/init.php b/include/init.php
new file mode 100644 (file)
index 0000000..80a17c5
--- /dev/null
@@ -0,0 +1,420 @@
+<?php
+
+/**
+ * init.php -- initialisation file
+ *
+ * File should be loaded in every file in src/ or plugins that occupate an entire frame
+ *
+ * @copyright &copy; 2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ */
+
+/**
+ * SquirrelMail version number -- DO NOT CHANGE
+ */
+
+$version = '1.5.2 [CVS]';
+
+/**
+ * SquirrelMail internal version number -- DO NOT CHANGE
+ * $sm_internal_version = array (release, major, minor)
+ */
+
+$SQM_INTERNAL_VERSION = array(1,5,2);
+
+/**
+ * This is a development version so in order to track programmer mistakes we
+ * set the error reporting to E_ALL
+ */
+
+error_reporting(E_ALL);
+
+
+/**
+ * calculate SM_PATH and calculate the base_uri
+ * assumptions made: init.php is only called from plugins or from the src dir.
+ * files in the plugin directory may not be part of a subdirectory called "src"
+ *
+ */
+if (isset($_SERVER['SCRIPT_NAME'])) {
+    $a = explode('/',$_SERVER['SCRIPT_NAME']);
+} elseif (isset($HTTP_SERVER_VARS['SCRIPT_NAME'])) {
+    $a = explode('/',$_SERVER['SCRIPT_NAME']);
+}
+$sSM_PATH = '';
+for($i = count($a) -2;$i > -1; --$i) {
+    $sSM_PATH .= '../';
+    if ($a[$i] === 'src' || $a[$i] === 'plugins') {
+        break;
+    }
+}
+
+$base_uri = implode('/',array_slice($a,0,$i)). '/';
+
+
+
+define('SM_PATH',$sSM_PATH);
+
+/**
+ * global var $bInit is used to check if initialisation took place.
+ * At this moment it's a workarounf for the include of addrbook_search_html
+ * inside compose.php. If we found a better way then remove this. Do only use
+ * this var if you know for sure a page can be called stand alone and be included
+ * in another file.
+ */
+$bInit = true;
+
+require(SM_PATH . 'functions/global.php');
+require(SM_PATH . 'config/config.php');
+require(SM_PATH . 'functions/plugin.php');
+require(SM_PATH . 'include/constants.php');
+require(SM_PATH . 'include/languages.php');
+
+/**
+ * If magic_quotes_runtime is on, SquirrelMail breaks in new and creative ways.
+ * Force magic_quotes_runtime off.
+ * tassium@squirrelmail.org - I put it here in the hopes that all SM code includes this.
+ * If there's a better place, please let me know.
+ */
+ini_set('magic_quotes_runtime','0');
+
+
+/* if running with magic_quotes_gpc then strip the slashes
+   from POST and GET global arrays */
+if (get_magic_quotes_gpc()) {
+    sqstripslashes($_GET);
+    sqstripslashes($_POST);
+}
+
+/**
+ * If register_globals are on, unregister globals.
+ * Code requires PHP 4.1.0 or newer.
+ */
+if ((bool) @ini_get('register_globals')) {
+    /**
+     * Remove all globals from $_GET, $_POST, and $_COOKIE.
+     */
+    foreach ($_REQUEST as $key => $value) {
+        unset($GLOBALS[$key]);
+    }
+    /**
+     * Remove globalized $_FILES variables
+     * Before 4.3.0 $_FILES are included in $_REQUEST.
+     * Unglobalize them in separate call in order to remove dependency
+     * on PHP version.
+     */
+    foreach ($_FILES as $key => $value) {
+        unset($GLOBALS[$key]);
+        // there are three undocumented $_FILES globals.
+        unset($GLOBALS[$key.'_type']);
+        unset($GLOBALS[$key.'_name']);
+        unset($GLOBALS[$key.'_size']);
+    }
+    /**
+     * Remove globalized environment variables.
+     */
+    foreach ($_ENV as $key => $value) {
+        unset($GLOBALS[$key]);
+    }
+    /**
+     * Remove globalized server variables.
+     */
+    foreach ($_SERVER as $key => $value) {
+        unset($GLOBALS[$key]);
+    }
+}
+
+/* strip any tags added to the url from PHP_SELF.
+This fixes hand crafted url XXS expoits for any
+   page that uses PHP_SELF as the FORM action */
+$_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']);
+
+$PHP_SELF = php_self();
+
+/**
+ * Initialize the session
+ */
+
+/**
+ * includes from classes stored in the session
+ */
+require(SM_PATH . 'class/mime.class.php');
+
+/** set the name of the session cookie */
+if (!isset($session_name) || !$session_name) {
+    $session_name = 'SQMSESSID';
+}
+ini_set('session.name' , $session_name);
+session_set_cookie_params (0, $base_uri);
+sqsession_is_active();
+
+sqsession_register($base_uri, 'base_uri');
+
+/**
+ * Remove globalized session data in rg=on setups
+ */
+if ((bool) @ini_get('register_globals')) {
+    foreach ($_SESSION as $key => $value) {
+        unset($GLOBALS[$key]);
+    }
+}
+/**
+ * Retrieve the language cookie
+ */
+if (! sqgetGlobalVar('squirrelmail_language',$squirrelmail_language,SQ_COOKIE)) {
+    $squirrelmail_language = '';
+}
+
+
+/**
+ * @var $sInitlocation From where do we include.
+ */
+if (!isset($sInitLocation)) {
+    $sInitLocation=NULL;
+}
+
+/**
+ * MAIN PLUGIN LOADING CODE HERE
+ */
+
+/**
+ * Include Compatibility plugin if available.
+ */
+if (file_exists(SM_PATH . 'plugins/compatibility/functions.php'))
+    include_once(SM_PATH . 'plugins/compatibility/functions.php');
+$squirrelmail_plugin_hooks = array();
+
+/* On init, register all plugins configured for use. */
+if (isset($plugins) && is_array($plugins)) {
+    // turn on output buffering in order to prevent output of new lines
+    ob_start();
+    foreach ($plugins as $name) {
+        use_plugin($name);
+    }
+    // get output and remove whitespace
+    $output = trim(ob_get_contents());
+    ob_end_clean();
+    // if plugins output more than newlines and spacing, stop script execution.
+    if (!empty($output)) {
+        die($output);
+    }
+}
+
+
+switch ($sInitLocation) {
+    case 'style': session_write_close(); sqsetcookieflush(); break;
+    case 'redirect':
+        $prefs_backend = do_hook_function('prefs_backend');
+        if (isset($prefs_backend) && !empty($prefs_backend) && file_exists(SM_PATH . $prefs_backend)) {
+            require(SM_PATH . $prefs_backend);
+        } elseif (isset($prefs_dsn) && !empty($prefs_dsn)) {
+            require(SM_PATH . 'functions/db_prefs.php');
+        } else {
+            require(SM_PATH . 'functions/prefs.php');
+            require(SM_PATH . 'functions/file_prefs.php');
+        }
+        //nobreak;
+    case 'login':
+        require(SM_PATH . 'functions/display_messages.php' );
+        require(SM_PATH . 'functions/page_header.php');
+        require(SM_PATH . 'functions/html.php');
+        break;
+    default:
+        require(SM_PATH . 'functions/display_messages.php' );
+        require(SM_PATH . 'functions/page_header.php');
+        require(SM_PATH . 'functions/html.php');
+        require(SM_PATH . 'functions/strings.php');
+
+
+        /**
+         * Check if we are logged in
+         */
+        require(SM_PATH . 'functions/auth.php');
+
+        if ( !sqsession_is_registered('user_is_logged_in') ) {
+            //  First we store some information in the new session to prevent
+            //  information-loss.
+            //
+            $session_expired_post = $_POST;
+            $session_expired_location = $PHP_SELF;
+            if (!sqsession_is_registered('session_expired_post')) {
+                sqsession_register($session_expired_post,'session_expired_post');
+            }
+            if (!sqsession_is_registered('session_expired_location')) {
+                sqsession_register($session_expired_location,'session_expired_location');
+            }
+            // signout page will deal with users who aren't logged
+            // in on its own; don't show error here
+            //
+            if (strpos($PHP_SELF, 'signout.php') !== FALSE) {
+            return;
+            }
+
+            set_up_language($squirrelmail_language, true);
+            logout_error( _("You must be logged in to access this page.") );
+            exit;
+        }
+
+        sqgetGlobalVar('username',$username,SQ_SESSION);
+
+        /**
+         * Setting the prefs backend
+         */
+        sqgetGlobalVar('prefs_cache', $prefs_cache, SQ_SESSION );
+        sqgetGlobalVar('prefs_are_cached', $prefs_are_cached, SQ_SESSION );
+
+        if ( !sqsession_is_registered('prefs_are_cached') ||
+            !isset( $prefs_cache) ||
+            !is_array( $prefs_cache)) {
+            $prefs_are_cached = false;
+            $prefs_cache = false; //array();
+        }
+
+        $prefs_backend = do_hook_function('prefs_backend');
+        if (isset($prefs_backend) && !empty($prefs_backend) && file_exists(SM_PATH . $prefs_backend)) {
+            require(SM_PATH . $prefs_backend);
+        } elseif (isset($prefs_dsn) && !empty($prefs_dsn)) {
+            require(SM_PATH . 'functions/db_prefs.php');
+        } else {
+            require(SM_PATH . 'functions/prefs.php');
+            require(SM_PATH . 'functions/file_prefs.php');
+        }
+
+        /**
+         * initializing user settings
+         */
+        require(SM_PATH . 'include/load_prefs.php');
+
+
+// i do not understand the frames language cookie story
+        /**
+         * We'll need this to later have a noframes version
+         *
+         * Check if the user has a language preference, but no cookie.
+         * Send him a cookie with his language preference, if there is
+         * such discrepancy.
+         */
+         $my_language = getPref($data_dir, $username, 'language');
+         if ($my_language != $squirrelmail_language) {
+             sqsetcookie('squirrelmail_language', $my_language, time()+2592000, $base_uri);
+         }
+// /dont understand
+
+        /**
+         * Set up the language.
+         */
+        $err=set_up_language(getPref($data_dir, $username, 'language'));
+        /* this is the last cookie we set so flush it. */
+        sqsetcookieflush();
+
+        // Japanese translation used without mbstring support
+        if ($err==2) {
+            $sError =
+                "<p>You need to have PHP installed with the multibyte string function \n".
+                "enabled (using configure option --enable-mbstring).</p>\n".
+                "<p>System assumed that you accidently switched to Japanese translation \n".
+                "and reverted your language preference to English.</p>\n".
+                "<p>Please refresh this page in order to use webmail.</p>\n";
+            error_box($sError);
+        }
+
+        $timeZone = getPref($data_dir, $username, 'timezone');
+
+        /* Check to see if we are allowed to set the TZ environment variable.
+         * We are able to do this if ...
+         *   safe_mode is disabled OR
+         *   safe_mode_allowed_env_vars is empty (you are allowed to set any) OR
+         *   safe_mode_allowed_env_vars contains TZ
+         */
+        $tzChangeAllowed = (!ini_get('safe_mode')) ||
+                            !strcmp(ini_get('safe_mode_allowed_env_vars'),'') ||
+                            preg_match('/^([\w_]+,)*TZ/', ini_get('safe_mode_allowed_env_vars'));
+
+        if ( $timeZone != SMPREF_NONE && ($timeZone != "")
+            && $tzChangeAllowed ) {
+
+            // get time zone key, if strict or custom strict timezones are used
+            if (isset($time_zone_type) &&
+                ($time_zone_type == 1 || $time_zone_type == 3)) {
+                /* load time zone functions */
+                require(SM_PATH . 'include/timezones.php');
+                $realTimeZone = sq_get_tz_key($timeZone);
+            } else {
+                $realTimeZone = $timeZone;
+            }
+
+            // set time zone
+            if ($realTimeZone) {
+                putenv("TZ=".$realTimeZone);
+            }
+        }
+        break;
+}
+
+/**
+ * Initialize the template object
+ */
+require(SM_PATH . 'class/template/template.class.php');
+/*
+ * $sTplDir is not initialized when a user is not logged in, so we will use
+ * the config file defaults here.  If the neccesary variables are net set,
+ * force a default value.
+ */
+$aTemplateSet = ( !isset($aTemplateSet) ? array() : $aTemplateSet );
+$templateset_default = ( !isset($templateset_default) ? 0 : $templateset_default );
+
+$sTplDir = ( !isset($aTemplateSet[$templateset_default]['PATH']) ?
+             SM_PATH . 'templates/default/' :
+             $aTemplateSet[$templateset_default]['PATH'] );
+$oTemplate = new Template($sTplDir);
+
+/**
+ * Initialize our custom error handler object
+ */
+require(SM_PATH . 'class/error.class.php');
+$oErrorHandler = new ErrorHandler($oTemplate,'error_message.tpl');
+
+/**
+ * Activate custom error handling
+ */
+if (version_compare(PHP_VERSION, "4.3.0", ">=")) {
+    $oldErrorHandler = set_error_handler(array($oErrorHandler, 'SquirrelMailErrorhandler'));
+} else {
+    $oldErrorHandler = set_error_handler('SquirrelMailErrorhandler');
+}
+
+/**
+ * Javascript support detection function
+ * @param boolean $reset recheck javascript support if set to true.
+ * @return integer SMPREF_JS_ON or SMPREF_JS_OFF ({@see functions/constants.php})
+ * @since 1.5.1
+ */
+
+function checkForJavascript($reset = FALSE) {
+  global $data_dir, $username, $javascript_on, $javascript_setting;
+
+  if ( !$reset && sqGetGlobalVar('javascript_on', $javascript_on, SQ_SESSION) )
+    return $javascript_on;
+
+  if ( $reset || !isset($javascript_setting) )
+    $javascript_setting = getPref($data_dir, $username, 'javascript_setting', SMPREF_JS_AUTODETECT);
+
+  if ( !sqGetGlobalVar('new_js_autodetect_results', $js_autodetect_results) &&
+       !sqGetGlobalVar('js_autodetect_results', $js_autodetect_results) )
+    $js_autodetect_results = SMPREF_JS_OFF;
+
+  if ( $javascript_setting == SMPREF_JS_AUTODETECT )
+    $javascript_on = $js_autodetect_results;
+  else
+    $javascript_on = $javascript_setting;
+
+  sqsession_register($javascript_on, 'javascript_on');
+  return $javascript_on;
+}
+
+function sqm_baseuri() {
+    global $base_uri;
+    return $base_uri;
+}
\ No newline at end of file
diff --git a/include/languages.php b/include/languages.php
new file mode 100644 (file)
index 0000000..342b933
--- /dev/null
@@ -0,0 +1,1090 @@
+<?php
+
+/**
+ * SquirrelMail internationalization functions
+ *
+ * This file contains variuos functions that are needed to do
+ * internationalization of SquirrelMail.
+ *
+ * Internally the output character set is used. Other characters are
+ * encoded using Unicode entities according to HTML 4.0.
+ *
+ * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage i18n
+ */
+
+
+/**
+ * Gettext bindtextdomain wrapper.
+ *
+ * Wrapper solves differences between php versions in order to provide
+ * ngettext support. Should be used if translation uses ngettext
+ * functions.
+ * @since 1.5.1
+ * @param string $domain gettext domain name
+ * @param string $dir directory that contains all translations
+ * @return string path to translation directory
+ */
+function sq_bindtextdomain($domain,$dir) {
+    global $l10n, $gettext_flags, $sm_notAlias;
+
+    if ($gettext_flags==7) {
+        // gettext extension without ngettext
+        if (substr($dir, -1) != '/') $dir .= '/';
+        $mofile=$dir . $sm_notAlias . '/LC_MESSAGES/' . $domain . '.mo';
+        $input = new FileReader($mofile);
+        $l10n[$domain] = new gettext_reader($input);
+    }
+
+    $dir=bindtextdomain($domain,$dir);
+
+    return $dir;
+}
+
+/**
+ * Gettext textdomain wrapper.
+ * Makes sure that gettext_domain global is modified.
+ * @since 1.5.1
+ * @param string $name gettext domain name
+ * @return string gettext domain name
+ */
+function sq_textdomain($domain) {
+    global $gettext_domain;
+    $gettext_domain=textdomain($domain);
+    return $gettext_domain;
+}
+
+/**
+ * php setlocale function wrapper
+ *
+ * From php 4.3.0 it is possible to use arrays in order to set locale.
+ * php gettext extension works only when locale is set. This wrapper
+ * function allows to use more than one locale name.
+ *
+ * @param int $category locale category name. Use php named constants
+ *     (LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME)
+ * @param mixed $locale option contains array with possible locales or string with one locale
+ * @return string name of set locale or false, if all locales fail.
+ * @since 1.5.1 and 1.4.5
+ * @see http://www.php.net/setlocale
+ */
+function sq_setlocale($category,$locale) {
+    // string with only one locale
+    if (is_string($locale))
+        return setlocale($category,$locale);
+
+    if (! check_php_version(4,3)) {
+        $ret=false;
+        $index=0;
+        while ( ! $ret && $index<count($locale)) {
+            $ret=setlocale($category,$locale[$index]);
+            $index++;
+        }
+    } else {
+        // php 4.3.0 or better, use entire array
+        $ret=setlocale($category,$locale);
+    }
+    return $ret;
+}
+
+/**
+ * Converts string from given charset to charset, that can be displayed by user translation.
+ *
+ * Function by default returns html encoded strings, if translation uses different encoding.
+ * If Japanese translation is used - function returns string converted to euc-jp
+ * If iconv or recode functions are enabled and translation uses utf-8 - function returns utf-8 encoded string.
+ * If $charset is not supported - function returns unconverted string.
+ *
+ * sanitizing of html tags is also done by this function.
+ *
+ * @param string $charset
+ * @param string $string Text to be decoded
+ * @param boolean $force_decode converts string to html without $charset!=$default_charset check.
+ * Argument is available since 1.5.1 and 1.4.5.
+ * @param boolean $save_html disables htmlspecialchars() in order to preserve
+ *  html formating. Use with care. Available since 1.5.1
+ * @return string decoded string
+ */
+function charset_decode ($charset, $string, $force_decode=false, $save_html=false) {
+    global $languages, $squirrelmail_language, $default_charset;
+    global $use_php_recode, $use_php_iconv, $aggressive_decoding;
+
+    if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+        function_exists($languages[$squirrelmail_language]['XTRA_CODE'] . '_decode')) {
+        $string = call_user_func($languages[$squirrelmail_language]['XTRA_CODE'] . '_decode', $string);
+    }
+
+    $charset = strtolower($charset);
+
+    set_my_charset();
+
+    // Variables that allow to use functions without function_exist() calls
+    if (! isset($use_php_recode) || $use_php_recode=="" ) {
+        $use_php_recode=false; }
+    if (! isset($use_php_iconv) || $use_php_iconv=="" ) {
+        $use_php_iconv=false; }
+
+    // Don't do conversion if charset is the same.
+    if ( ! $force_decode && $charset == strtolower($default_charset) )
+        return ($save_html ? $string : htmlspecialchars($string));
+
+    // catch iso-8859-8-i thing
+    if ( $charset == "iso-8859-8-i" )
+        $charset = "iso-8859-8";
+
+    /*
+     * Recode converts html special characters automatically if you use
+     * 'charset..html' decoding. There is no documented way to put -d option
+     * into php recode function call.
+     */
+    if ( $use_php_recode ) {
+        if ( $default_charset == "utf-8" ) {
+            // other charsets can be converted to utf-8 without loss.
+            // and output string is smaller
+            $string = recode_string($charset . "..utf-8",$string);
+            return ($save_html ? $string : htmlspecialchars($string));
+        } else {
+            $string = recode_string($charset . "..html",$string);
+            // recode does not convert single quote, htmlspecialchars does.
+            $string = str_replace("'", '&#039;', $string);
+            // undo html specialchars
+            if ($save_html)
+                $string=str_replace(array('&amp;','&quot;','&lt;','&gt;'),
+                                    array('&','"','<','>'),$string);
+            return $string;
+        }
+    }
+
+    // iconv functions does not have html target and can be used only with utf-8
+    if ( $use_php_iconv && $default_charset=='utf-8') {
+        $string = iconv($charset,$default_charset,$string);
+        return ($save_html ? $string : htmlspecialchars($string));
+    }
+
+    // If we don't use recode and iconv, we'll do it old way.
+
+    /* All HTML special characters are 7 bit and can be replaced first */
+    if (! $save_html) $string = htmlspecialchars ($string);
+
+    /* controls cpu and memory intensive decoding cycles */
+    if (! isset($aggressive_decoding) || $aggressive_decoding=="" ) {
+        $aggressive_decoding=false; }
+
+    $decode=fixcharset($charset);
+    $decodefile=SM_PATH . 'functions/decode/' . $decode . '.php';
+    if (file_exists($decodefile)) {
+        include_once($decodefile);
+        // send $save_html argument to decoding function. needed for iso-2022-xx decoding.
+        $ret = call_user_func('charset_decode_'.$decode, $string, $save_html);
+    } else {
+        $ret = $string;
+    }
+    return( $ret );
+}
+
+/**
+ * Converts html string to given charset
+ * @since 1.5.1 and 1.4.4
+ * @param string $string
+ * @param string $charset
+ * @param boolean $htmlencode keep htmlspecialchars encoding
+ * @param string
+ */
+function charset_encode($string,$charset,$htmlencode=true) {
+    global $default_charset;
+
+    $encode=fixcharset($charset);
+    $encodefile=SM_PATH . 'functions/encode/' . $encode . '.php';
+    if (file_exists($encodefile)) {
+        include_once($encodefile);
+        $ret = call_user_func('charset_encode_'.$encode, $string);
+    } elseif(file_exists(SM_PATH . 'functions/encode/us_ascii.php')) {
+        // function replaces all 8bit html entities with question marks.
+        // it is used when other encoding functions are unavailable
+        include_once(SM_PATH . 'functions/encode/us_ascii.php');
+        $ret = charset_encode_us_ascii($string);
+    } else {
+        /**
+         * fix for yahoo users that remove all us-ascii related things
+         */
+        $ret = $string;
+    }
+
+    /**
+     * Undo html special chars, some places (like compose form) have
+     * own sanitizing functions and don't need html symbols.
+     * Undo chars only after encoding in order to prevent conversion of
+     * html entities in plain text emails.
+     */
+    if (! $htmlencode ) {
+        $ret = str_replace(array('&amp;','&gt;','&lt;','&quot;'),array('&','>','<','"'),$ret);
+    }
+    return( $ret );
+}
+
+/**
+ * Combined decoding and encoding functions
+ *
+ * If conversion is done to charset different that utf-8, unsupported symbols
+ * will be replaced with question marks.
+ * @since 1.5.1 and 1.4.4
+ * @param string $in_charset initial charset
+ * @param string $string string that has to be converted
+ * @param string $out_charset final charset
+ * @param boolean $htmlencode keep htmlspecialchars encoding
+ * @return string converted string
+ */
+function charset_convert($in_charset,$string,$out_charset,$htmlencode=true) {
+    $string=charset_decode($in_charset,$string,true);
+    $string=sqi18n_convert_entities($string);
+    $string=charset_encode($string,$out_charset,$htmlencode);
+    return $string;
+}
+
+/**
+ * Makes charset name suitable for decoding cycles
+ *
+ * @since 1.5.0 and 1.4.4
+ * @param string $charset Name of charset
+ * @return string $charset Adjusted name of charset
+ */
+function fixcharset($charset) {
+    /* remove minus and characters that might be used in paths from charset
+     * name in order to be able to use it in function names and include calls.
+     */
+    $charset=preg_replace("/[-:.\/\\\]/",'_',$charset);
+
+    // OE ks_c_5601_1987 > cp949
+    $charset=str_replace('ks_c_5601_1987','cp949',$charset);
+    // Moz x-euc-tw > euc-tw
+    $charset=str_replace('x_euc','euc',$charset);
+    // Moz x-windows-949 > cp949
+    $charset=str_replace('x_windows_','cp',$charset);
+
+    // windows-125x and cp125x charsets
+    $charset=str_replace('windows_','cp',$charset);
+
+    // ibm > cp
+    $charset=str_replace('ibm','cp',$charset);
+
+    // iso-8859-8-i -> iso-8859-8
+    // use same cycle until I'll find differences
+    $charset=str_replace('iso_8859_8_i','iso_8859_8',$charset);
+
+    return $charset;
+}
+
+/**
+ * Set up the language to be output
+ * if $do_search is true, then scan the browser information
+ * for a possible language that we know
+ *
+ * Function sets system locale environment (LC_ALL, LANG, LANGUAGE),
+ * gettext translation bindings and html header information.
+ *
+ * Function returns error codes, if there is some fatal error.
+ *  0 = no error,
+ *  1 = mbstring support is not present,
+ *  2 = mbstring support is not present, user's translation reverted to en_US.
+ *
+ * @param string $sm_language translation used by user's interface
+ * @param bool $do_search use browser's preferred language detection functions. Defaults to false.
+ * @param bool $default set $sm_language to $squirrelmail_default_language if language detection fails or language is not set. Defaults to false.
+ * @return int function execution error codes.
+ */
+function set_up_language($sm_language, $do_search = false, $default = false) {
+
+    static $SetupAlready = 0;
+    global $use_gettext, $languages,
+           $squirrelmail_language, $squirrelmail_default_language, $default_charset,
+           $sm_notAlias, $username, $data_dir;
+
+    if ($SetupAlready) {
+        return;
+    }
+
+    $SetupAlready = TRUE;
+    sqgetGlobalVar('HTTP_ACCEPT_LANGUAGE',  $accept_lang, SQ_SERVER);
+
+    /**
+     * If function is asked to detect preferred language
+     *  OR squirrelmail default language is set to empty string
+     *    AND
+     * squirrelmail language ($sm_language) is empty string
+     * (not set in user's prefs and no cookie with language info)
+     *    AND
+     * browser provides list of preferred languages
+     *  THEN
+     * get preferred language from HTTP_ACCEPT_LANGUAGE header
+     */
+    if (($do_search || empty($squirrelmail_default_language)) &&
+        ! $sm_language &&
+        isset($accept_lang)) {
+        // TODO: use more than one language, if first language is not available
+        // FIXME: function assumes that string contains two or more characters.
+        // FIXME: some languages use 5 chars
+        $sm_language = substr($accept_lang, 0, 2);
+    }
+
+    /**
+     * If language preference is not set OR script asks to use default language
+     *  AND
+     * default squirrelmail language is not set to empty string
+     *  THEN
+     * use default squirrelmail language value from configuration.
+     */
+    if ((!$sm_language||$default) &&
+        ! empty($squirrelmail_default_language)) {
+        $squirrelmail_language = $squirrelmail_default_language;
+        $sm_language = $squirrelmail_default_language;
+    }
+
+    /** provide failsafe language when detection fails */
+    if (! $sm_language) $sm_language='en_US';
+
+    $sm_notAlias = $sm_language;
+
+    // Catching removed translation
+    // System reverts to English translation if user prefs contain translation
+    // that is not available in $languages array
+    if (!isset($languages[$sm_notAlias])) {
+        $sm_notAlias="en_US";
+    }
+
+    while (isset($languages[$sm_notAlias]['ALIAS'])) {
+        $sm_notAlias = $languages[$sm_notAlias]['ALIAS'];
+    }
+
+    if ( isset($sm_language) &&
+         $use_gettext &&
+         $sm_language != '' &&
+         isset($languages[$sm_notAlias]['CHARSET']) ) {
+        sq_bindtextdomain( 'squirrelmail', SM_PATH . 'locale/' );
+        sq_textdomain( 'squirrelmail' );
+
+        // set codeset in order to avoid gettext charset conversions
+        if (function_exists('bind_textdomain_codeset')) {
+            // Japanese translation uses different internal charset
+            if ($sm_notAlias == 'ja_JP') {
+                bind_textdomain_codeset ('squirrelmail', 'EUC-JP');
+            } else {
+                bind_textdomain_codeset ('squirrelmail', $languages[$sm_notAlias]['CHARSET'] );
+            }
+        }
+
+        // Use LOCALE key, if it is set.
+        if (isset($languages[$sm_notAlias]['LOCALE'])){
+            $longlocale=$languages[$sm_notAlias]['LOCALE'];
+        } else {
+            $longlocale=$sm_notAlias;
+        }
+
+        // try setting locale
+        $retlocale=sq_setlocale(LC_ALL, $longlocale);
+
+        // check if locale is set and assign that locale to $longlocale
+        // in order to use it in putenv calls.
+        if (! is_bool($retlocale)) {
+            $longlocale=$retlocale;
+        } elseif (is_array($longlocale)) {
+            // setting of all locales failed.
+            // we need string instead of array used in LOCALE key.
+            $longlocale=$sm_notAlias;
+        }
+
+        if ( !((bool)ini_get('safe_mode')) &&
+             getenv( 'LC_ALL' ) != $longlocale ) {
+            putenv( "LC_ALL=$longlocale" );
+            putenv( "LANG=$longlocale" );
+            putenv( "LANGUAGE=$longlocale" );
+            putenv( "LC_NUMERIC=C" );
+            if ($sm_notAlias=='tr_TR') putenv( "LC_CTYPE=C" );
+        }
+        // Workaround for plugins that use numbers with floating point
+        // It might be removed if plugins use correct decimal delimiters
+        // according to locale settings.
+        setlocale(LC_NUMERIC, 'C');
+        // Workaround for specific Turkish strtolower/strtoupper rules.
+        // Many functions expect English conversion rules.
+        if ($sm_notAlias=='tr_TR') setlocale(LC_CTYPE,'C');
+
+        /**
+         * Set text direction/alignment variables
+         * When language environment is setup, scripts can use these globals
+         * without accessing $languages directly and making checks for optional
+         * array key.
+         */
+        global $text_direction, $left_align, $right_align;
+        if (isset($languages[$sm_notAlias]['DIR']) &&
+            $languages[$sm_notAlias]['DIR'] == 'rtl') {
+            /**
+             * Text direction
+             * @global string $text_direction
+             */
+            $text_direction='rtl';
+            /**
+             * Left alignment
+             * @global string $left_align
+             */
+            $left_align='right';
+            /**
+             * Right alignment
+             * @global string $right_align
+             */
+            $right_align='left';
+        } else {
+            $text_direction='ltr';
+            $left_align='left';
+            $right_align='right';
+        }
+
+        $squirrelmail_language = $sm_notAlias;
+        if ($squirrelmail_language == 'ja_JP') {
+            header ('Content-Type: text/html; charset=EUC-JP');
+            if (!function_exists('mb_internal_encoding')) {
+                // Error messages can't be displayed here
+                $error = 1;
+                // Revert to English if possible.
+                if (function_exists('setPref')  && $username!='' && $data_dir!="") {
+                    setPref($data_dir, $username, 'language', "en_US");
+                    $error = 2;
+                }
+                // stop further execution in order not to get php errors on mb_internal_encoding().
+                return $error;
+            }
+            if (function_exists('mb_language')) {
+                mb_language('Japanese');
+            }
+            mb_internal_encoding('EUC-JP');
+            mb_http_output('pass');
+        } elseif ($squirrelmail_language == 'en_US') {
+            header( 'Content-Type: text/html; charset=' . $default_charset );
+        } else {
+            header( 'Content-Type: text/html; charset=' . $languages[$sm_notAlias]['CHARSET'] );
+        }
+        /**
+         * mbstring.func_overload fix (#929644).
+         *
+         * php mbstring extension can replace standard string functions with their multibyte
+         * equivalents. See http://www.php.net/ref.mbstring#mbstring.overload. This feature
+         * was added in php v.4.2.0
+         *
+         * Some SquirrelMail functions work with 8bit strings in bytes. If interface is forced
+         * to use mbstring functions and mbstring internal encoding is set to multibyte charset,
+         * interface can't trust regular string functions. Due to mbstring overloading design
+         * limits php scripts can't control this setting.
+         *
+         * This hack should fix some issues related to 8bit strings in passwords. Correct fix is
+         * to disable mbstring overloading. Japanese translation uses different internal encoding.
+         */
+        if ($squirrelmail_language != 'ja_JP' &&
+            function_exists('mb_internal_encoding') &&
+            check_php_version(4,2,0) &&
+            (int)ini_get('mbstring.func_overload')!=0) {
+            mb_internal_encoding('pass');
+        }
+    }
+    return 0;
+}
+
+/**
+ * Sets default_charset variable according to the one that is used by user's translations.
+ *
+ * Function changes global $default_charset variable in order to be sure, that it
+ * contains charset used by user's translation. Sanity of $squirrelmail_language
+ * and $default_charset combination is also tested.
+ *
+ * There can be a $default_charset setting in the
+ * config.php file, but the user may have a different language
+ * selected for a user interface. This function checks the
+ * language selected by the user and tags the outgoing messages
+ * with the appropriate charset corresponding to the language
+ * selection. This is "more right" (tm), than just stamping the
+ * message blindly with the system-wide $default_charset.
+ */
+function set_my_charset(){
+    global $data_dir, $username, $default_charset, $languages, $squirrelmail_language;
+
+    $my_language = getPref($data_dir, $username, 'language');
+    if (!$my_language) {
+        $my_language = $squirrelmail_language ;
+    }
+    // Catch removed translation
+    if (!isset($languages[$my_language])) {
+        $my_language="en_US";
+    }
+    while (isset($languages[$my_language]['ALIAS'])) {
+        $my_language = $languages[$my_language]['ALIAS'];
+    }
+    $my_charset = $languages[$my_language]['CHARSET'];
+    if ($my_language!='en_US') {
+        $default_charset = $my_charset;
+    }
+}
+
+/**
+ * Replaces non-braking spaces inserted by some browsers with regular space
+ *
+ * This function can be used to replace non-braking space symbols
+ * that are inserted in forms by some browsers instead of normal
+ * space symbol.
+ *
+ * @param string $string Text that needs to be cleaned
+ * @param string $charset Charset used in text
+ * @return string Cleaned text
+ */
+function cleanup_nbsp($string,$charset) {
+
+  // reduce number of case statements
+  if (stristr('iso-8859-',substr($charset,0,9))){
+    $output_charset="iso-8859-x";
+  }
+  if (stristr('windows-125',substr($charset,0,11))){
+    $output_charset="cp125x";
+  }
+  if (stristr('koi8',substr($charset,0,4))){
+    $output_charset="koi8-x";
+  }
+  if (! isset($output_charset)){
+    $output_charset=strtolower($charset);
+  }
+
+// where is non-braking space symbol
+switch($output_charset):
+ case "iso-8859-x":
+ case "cp125x":
+ case "iso-2022-jp":
+  $nbsp="\xA0";
+  break;
+ case "koi8-x":
+   $nbsp="\x9A";
+   break;
+ case "utf-8":
+   $nbsp="\xC2\xA0";
+   break;
+ default:
+   // don't change string if charset is unmatched
+   return $string;
+endswitch;
+
+// return space instead of non-braking space.
+ return str_replace($nbsp,' ',$string);
+}
+
+/**
+ * Function informs if it is safe to convert given charset to the one that is used by user.
+ *
+ * It is safe to use conversion only if user uses utf-8 encoding and when
+ * converted charset is similar to the one that is used by user.
+ *
+ * @param string $input_charset Charset of text that needs to be converted
+ * @return bool is it possible to convert to user's charset
+ */
+function is_conversion_safe($input_charset) {
+    global $languages, $sm_notAlias, $default_charset, $lossy_encoding;
+
+    if (isset($lossy_encoding) && $lossy_encoding )
+        return true;
+
+    // convert to lower case
+    $input_charset = strtolower($input_charset);
+
+    // Is user's locale Unicode based ?
+    if ( $default_charset == "utf-8" ) {
+        return true;
+    }
+
+    // Charsets that are similar
+    switch ($default_charset) {
+    case "windows-1251":
+        if ( $input_charset == "iso-8859-5" ||
+             $input_charset == "koi8-r" ||
+             $input_charset == "koi8-u" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "windows-1257":
+        if ( $input_charset == "iso-8859-13" ||
+             $input_charset == "iso-8859-4" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "iso-8859-4":
+        if ( $input_charset == "iso-8859-13" ||
+             $input_charset == "windows-1257" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "iso-8859-5":
+        if ( $input_charset == "windows-1251" ||
+             $input_charset == "koi8-r" ||
+             $input_charset == "koi8-u" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "iso-8859-13":
+        if ( $input_charset == "iso-8859-4" ||
+             $input_charset == "windows-1257" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "koi8-r":
+        if ( $input_charset == "windows-1251" ||
+             $input_charset == "iso-8859-5" ||
+             $input_charset == "koi8-u" ) {
+            return true;
+        } else {
+            return false;
+        }
+    case "koi8-u":
+        if ( $input_charset == "windows-1251" ||
+             $input_charset == "iso-8859-5" ||
+             $input_charset == "koi8-r" ) {
+            return true;
+        } else {
+            return false;
+        }
+    default:
+        return false;
+    }
+}
+
+/**
+ * Converts html character entities to numeric entities
+ *
+ * SquirrelMail encoding functions work only with numeric entities.
+ * This function fixes issues with decoding functions that might convert
+ * some symbols to character entities. Issue is specific to PHP recode
+ * extension decoding. Function is used internally in charset_convert()
+ * function.
+ * @param string $str string that might contain html character entities
+ * @return string string with character entities converted to decimals.
+ * @since 1.5.2
+ */
+function sqi18n_convert_entities($str) {
+
+    $entities = array(
+        // Latin 1
+        '&nbsp;'   => '&#160;',
+        '&iexcl;'  => '&#161;',
+        '&cent;'   => '&#162;',
+        '&pound;'  => '&#163;',
+        '&curren;' => '&#164;',
+        '&yen;'    => '&#165;',
+        '&brvbar;' => '&#166;',
+        '&sect;'   => '&#167;',
+        '&uml;'    => '&#168;',
+        '&copy;'   => '&#169;',
+        '&ordf;'   => '&#170;',
+        '&laquo;'  => '&#171;',
+        '&not;'    => '&#172;',
+        '&shy;'    => '&#173;',
+        '&reg;'    => '&#174;',
+        '&macr;'   => '&#175;',
+        '&deg;'    => '&#176;',
+        '&plusmn;' => '&#177;',
+        '&sup2;'   => '&#178;',
+        '&sup3;'   => '&#179;',
+        '&acute;'  => '&#180;',
+        '&micro;'  => '&#181;',
+        '&para;'   => '&#182;',
+        '&middot;' => '&#183;',
+        '&cedil;'  => '&#184;',
+        '&sup1;'   => '&#185;',
+        '&ordm;'   => '&#186;',
+        '&raquo;'  => '&#187;',
+        '&frac14;' => '&#188;',
+        '&frac12;' => '&#189;',
+        '&frac34;' => '&#190;',
+        '&iquest;' => '&#191;',
+        '&Agrave;' => '&#192;',
+        '&Aacute;' => '&#193;',
+        '&Acirc;'  => '&#194;',
+        '&Atilde;' => '&#195;',
+        '&Auml;'   => '&#196;',
+        '&Aring;'  => '&#197;',
+        '&AElig;'  => '&#198;',
+        '&Ccedil;' => '&#199;',
+        '&Egrave;' => '&#200;',
+        '&Eacute;' => '&#201;',
+        '&Ecirc;'  => '&#202;',
+        '&Euml;'   => '&#203;',
+        '&Igrave;' => '&#204;',
+        '&Iacute;' => '&#205;',
+        '&Icirc;'  => '&#206;',
+        '&Iuml;'   => '&#207;',
+        '&ETH;'    => '&#208;',
+        '&Ntilde;' => '&#209;',
+        '&Ograve;' => '&#210;',
+        '&Oacute;' => '&#211;',
+        '&Ocirc;'  => '&#212;',
+        '&Otilde;' => '&#213;',
+        '&Ouml;'   => '&#214;',
+        '&times;'  => '&#215;',
+        '&Oslash;' => '&#216;',
+        '&Ugrave;' => '&#217;',
+        '&Uacute;' => '&#218;',
+        '&Ucirc;'  => '&#219;',
+        '&Uuml;'   => '&#220;',
+        '&Yacute;' => '&#221;',
+        '&THORN;'  => '&#222;',
+        '&szlig;'  => '&#223;',
+        '&agrave;' => '&#224;',
+        '&aacute;' => '&#225;',
+        '&acirc;'  => '&#226;',
+        '&atilde;' => '&#227;',
+        '&auml;'   => '&#228;',
+        '&aring;'  => '&#229;',
+        '&aelig;'  => '&#230;',
+        '&ccedil;' => '&#231;',
+        '&egrave;' => '&#232;',
+        '&eacute;' => '&#233;',
+        '&ecirc;'  => '&#234;',
+        '&euml;'   => '&#235;',
+        '&igrave;' => '&#236;',
+        '&iacute;' => '&#237;',
+        '&icirc;'  => '&#238;',
+        '&iuml;'   => '&#239;',
+        '&eth;'    => '&#240;',
+        '&ntilde;' => '&#241;',
+        '&ograve;' => '&#242;',
+        '&oacute;' => '&#243;',
+        '&ocirc;'  => '&#244;',
+        '&otilde;' => '&#245;',
+        '&ouml;'   => '&#246;',
+        '&divide;' => '&#247;',
+        '&oslash;' => '&#248;',
+        '&ugrave;' => '&#249;',
+        '&uacute;' => '&#250;',
+        '&ucirc;'  => '&#251;',
+        '&uuml;'   => '&#252;',
+        '&yacute;' => '&#253;',
+        '&thorn;'  => '&#254;',
+        '&yuml;'   => '&#255;',
+        // Latin Extended-A
+        '&OElig;'  => '&#338;',
+        '&oelig;'  => '&#339;',
+        '&Scaron;' => '&#352;',
+        '&scaron;' => '&#353;',
+        '&Yuml;'   => '&#376;',
+        // Spacing Modifier Letters
+        '&circ;'   => '&#710;',
+        '&tilde;'  => '&#732;',
+        // General Punctuation
+        '&ensp;'   => '&#8194;',
+        '&emsp;'   => '&#8195;',
+        '&thinsp;' => '&#8201;',
+        '&zwnj;'   => '&#8204;',
+        '&zwj;'    => '&#8205;',
+        '&lrm;'    => '&#8206;',
+        '&rlm;'    => '&#8207;',
+        '&ndash;'  => '&#8211;',
+        '&mdash;'  => '&#8212;',
+        '&lsquo;'  => '&#8216;',
+        '&rsquo;'  => '&#8217;',
+        '&sbquo;'  => '&#8218;',
+        '&ldquo;'  => '&#8220;',
+        '&rdquo;'  => '&#8221;',
+        '&bdquo;'  => '&#8222;',
+        '&dagger;' => '&#8224;',
+        '&Dagger;' => '&#8225;',
+        '&permil;' => '&#8240;',
+        '&lsaquo;' => '&#8249;',
+        '&rsaquo;' => '&#8250;',
+        '&euro;'   => '&#8364;',
+        // Latin Extended-B
+        '&fnof;' => '&#402;',
+        // Greek
+        '&Alpha;'  => '&#913;',
+        '&Beta;'   => '&#914;',
+        '&Gamma;'  => '&#915;',
+        '&Delta;'  => '&#916;',
+        '&Epsilon;' => '&#917;',
+        '&Zeta;'   => '&#918;',
+        '&Eta;'    => '&#919;',
+        '&Theta;'  => '&#920;',
+        '&Iota;'   => '&#921;',
+        '&Kappa;'  => '&#922;',
+        '&Lambda;' => '&#923;',
+        '&Mu;'     => '&#924;',
+        '&Nu;'     => '&#925;',
+        '&Xi;'     => '&#926;',
+        '&Omicron;' => '&#927;',
+        '&Pi;'     => '&#928;',
+        '&Rho;'    => '&#929;',
+        '&Sigma;'  => '&#931;',
+        '&Tau;'    => '&#932;',
+        '&Upsilon;' => '&#933;',
+        '&Phi;'    => '&#934;',
+        '&Chi;'    => '&#935;',
+        '&Psi;'    => '&#936;',
+        '&Omega;'  => '&#937;',
+        '&alpha;'  => '&#945;',
+        '&beta;'   => '&#946;',
+        '&gamma;'  => '&#947;',
+        '&delta;'  => '&#948;',
+        '&epsilon;' => '&#949;',
+        '&zeta;'   => '&#950;',
+        '&eta;'    => '&#951;',
+        '&theta;'  => '&#952;',
+        '&iota;'   => '&#953;',
+        '&kappa;'  => '&#954;',
+        '&lambda;' => '&#955;',
+        '&mu;'     => '&#956;',
+        '&nu;'     => '&#957;',
+        '&xi;'     => '&#958;',
+        '&omicron;' => '&#959;',
+        '&pi;'     => '&#960;',
+        '&rho;'    => '&#961;',
+        '&sigmaf;' => '&#962;',
+        '&sigma;'  => '&#963;',
+        '&tau;'    => '&#964;',
+        '&upsilon;' => '&#965;',
+        '&phi;'    => '&#966;',
+        '&chi;'    => '&#967;',
+        '&psi;'    => '&#968;',
+        '&omega;'  => '&#969;',
+        '&thetasym;' => '&#977;',
+        '&upsih;'  => '&#978;',
+        '&piv;'    => '&#982;',
+        // General Punctuation
+        '&bull;'   => '&#8226;',
+        '&hellip;' => '&#8230;',
+        '&prime;'  => '&#8242;',
+        '&Prime;'  => '&#8243;',
+        '&oline;'  => '&#8254;',
+        '&frasl;'  => '&#8260;',
+        // Letterlike Symbols
+        '&weierp;' => '&#8472;',
+        '&image;'  => '&#8465;',
+        '&real;'   => '&#8476;',
+        '&trade;'  => '&#8482;',
+        '&alefsym;' => '&#8501;',
+        // Arrows
+        '&larr;'   => '&#8592;',
+        '&uarr;'   => '&#8593;',
+        '&rarr;'   => '&#8594;',
+        '&darr;'   => '&#8595;',
+        '&harr;'   => '&#8596;',
+        '&crarr;'  => '&#8629;',
+        '&lArr;'   => '&#8656;',
+        '&uArr;'   => '&#8657;',
+        '&rArr;'   => '&#8658;',
+        '&dArr;'   => '&#8659;',
+        '&hArr;'   => '&#8660;',
+        // Mathematical Operators
+        '&forall;' => '&#8704;',
+        '&part;'   => '&#8706;',
+        '&exist;'  => '&#8707;',
+        '&empty;'  => '&#8709;',
+        '&nabla;'  => '&#8711;',
+        '&isin;'   => '&#8712;',
+        '&notin;'  => '&#8713;',
+        '&ni;'     => '&#8715;',
+        '&prod;'   => '&#8719;',
+        '&sum;'    => '&#8721;',
+        '&minus;'  => '&#8722;',
+        '&lowast;' => '&#8727;',
+        '&radic;'  => '&#8730;',
+        '&prop;'   => '&#8733;',
+        '&infin;'  => '&#8734;',
+        '&ang;'    => '&#8736;',
+        '&and;'    => '&#8743;',
+        '&or;'     => '&#8744;',
+        '&cap;'    => '&#8745;',
+        '&cup;'    => '&#8746;',
+        '&int;'    => '&#8747;',
+        '&there4;' => '&#8756;',
+        '&sim;'    => '&#8764;',
+        '&cong;'   => '&#8773;',
+        '&asymp;'  => '&#8776;',
+        '&ne;'     => '&#8800;',
+        '&equiv;'  => '&#8801;',
+        '&le;'     => '&#8804;',
+        '&ge;'     => '&#8805;',
+        '&sub;'    => '&#8834;',
+        '&sup;'    => '&#8835;',
+        '&nsub;'   => '&#8836;',
+        '&sube;'   => '&#8838;',
+        '&supe;'   => '&#8839;',
+        '&oplus;'  => '&#8853;',
+        '&otimes;' => '&#8855;',
+        '&perp;'   => '&#8869;',
+        '&sdot;'   => '&#8901;',
+        // Miscellaneous Technical
+        '&lceil;'  => '&#8968;',
+        '&rceil;'  => '&#8969;',
+        '&lfloor;' => '&#8970;',
+        '&rfloor;' => '&#8971;',
+        '&lang;'   => '&#9001;',
+        '&rang;'   => '&#9002;',
+        // Geometric Shapes
+        '&loz;'    => '&#9674;',
+        // Miscellaneous Symbols
+        '&spades;' => '&#9824;',
+        '&clubs;'  => '&#9827;',
+        '&hearts;' => '&#9829;',
+        '&diams;'  => '&#9830;');
+
+    $str = str_replace(array_keys($entities), array_values($entities), $str);
+
+    return $str;
+}
+
+/* ------------------------------ main --------------------------- */
+
+global $squirrelmail_language, $languages, $use_gettext;
+
+if (! sqgetGlobalVar('squirrelmail_language',$squirrelmail_language,SQ_COOKIE)) {
+    $squirrelmail_language = '';
+}
+
+/**
+ * Array specifies the available translations.
+ *
+ * Structure of array:
+ * $languages['language']['variable'] = 'value'
+ *
+ * Possible 'variable' names:
+ *  NAME      - Translation name in English
+ *  CHARSET   - Encoding used by translation
+ *  ALIAS     - used when 'language' is only short name and 'value' should provide long language name
+ *  ALTNAME   - Native translation name. Any 8bit symbols must be html encoded.
+ *  LOCALE    - Full locale name (in xx_XX.charset format). It can use array with more than one locale name since 1.4.5 and 1.5.1
+ *  DIR       - Text direction. Used to define Right-to-Left languages. Possible values 'rtl' or 'ltr'. If undefined - defaults to 'ltr'
+ *  XTRA_CODE - translation uses special functions. See doc/i18n.txt
+ *
+ * Each 'language' definition requires NAME+CHARSET or ALIAS variables.
+ *
+ * @name $languages
+ * @global array $languages
+ */
+$languages['en_US']['NAME']    = 'English';
+$languages['en_US']['CHARSET'] = 'iso-8859-1';
+$languages['en_US']['LOCALE']  = 'en_US.ISO8859-1';
+$languages['en']['ALIAS'] = 'en_US';
+
+/**
+ * Automatic translation loading from setup.php files.
+ * Solution for bug. 1240889.
+ * setup.php file can contain $languages array entries and XTRA_CODE functions.
+ */
+if (is_dir(SM_PATH . 'locale') &&
+    is_readable(SM_PATH . 'locale')) {
+    $localedir = dir(SM_PATH . 'locale');
+    while($lang_dir=$localedir->read()) {
+        // remove trailing slash, if present
+        if (substr($lang_dir,-1)=='/') {
+            $lang_dir = substr($lang_dir,0,-1);
+        }
+        if ($lang_dir != '..' && $lang_dir != '.' && $lang_dir != 'CVS' &&
+            is_dir(SM_PATH.'locale/'.$lang_dir) &&
+            file_exists(SM_PATH.'locale/'.$lang_dir.'/setup.php')) {
+            include_once(SM_PATH.'locale/'.$lang_dir.'/setup.php');
+        }
+    }
+    $localedir->close();
+}
+
+/* Detect whether gettext is installed. */
+$gettext_flags = 0;
+if (function_exists('_')) {
+    $gettext_flags += 1;
+}
+if (function_exists('bindtextdomain')) {
+    $gettext_flags += 2;
+}
+if (function_exists('textdomain')) {
+    $gettext_flags += 4;
+}
+if (function_exists('ngettext')) {
+    $gettext_flags += 8;
+}
+
+/* If gettext is fully loaded, cool */
+if ($gettext_flags == 15) {
+    $use_gettext = true;
+}
+
+/* If ngettext support is missing, load it */
+elseif ($gettext_flags == 7) {
+    $use_gettext = true;
+    // load internal ngettext functions
+    include_once(SM_PATH . 'class/l10n.class.php');
+    include_once(SM_PATH . 'functions/ngettext.php');
+}
+
+/* If we can fake gettext, try that */
+elseif ($gettext_flags == 0) {
+    $use_gettext = true;
+    include_once(SM_PATH . 'functions/gettext.php');
+} else {
+    /* Uh-ho.  A weird install */
+    if (! $gettext_flags & 1) {
+      /**
+       * Function is used as replacement in broken installs
+       * @ignore
+       */
+        function _($str) {
+            return $str;
+        }
+    }
+    if (! $gettext_flags & 2) {
+      /**
+       * Function is used as replacement in broken installs
+       * @ignore
+       */
+        function bindtextdomain() {
+            return;
+        }
+    }
+    if (! $gettext_flags & 4) {
+      /**
+       * Function is used as replacemet in broken installs
+       * @ignore
+       */
+        function textdomain() {
+            return;
+        }
+    }
+    if (! $gettext_flags & 8) {
+        /**
+         * Function is used as replacemet in broken installs
+         * @ignore
+         */
+        function ngettext($str,$str2,$number) {
+            if ($number>1) {
+                return $str2;
+            } else {
+                return $str;
+            }
+        }
+    }
+    if (! function_exists('dgettext')) {
+        /**
+         * Replacement for broken setups.
+         * @ignore
+         */
+        function dgettext($domain,$str) {
+            return $str;
+        }
+    }
+    if (! function_exists('dngettext')) {
+        /**
+         * Replacement for broken setups
+         * @ignore
+         */
+        function dngettext($domain,$str1,$strn,$number) {
+            return ($number==1 ? $str1 : $strn);
+        }
+    }
+}
+?>
\ No newline at end of file
index 5e11b45f272a9b9e98bd60ef60618e2b2955c2f4..d25426ea7897e350107758be15990a839005b965 100644 (file)
  * @package squirrelmail
  */
 
-/** SquirrelMail required files. */
-include_once(SM_PATH . 'functions/constants.php');
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/plugin.php');
 
+/**
+ * do not allow to call this file directly
+ */
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../src/login.php");
+    die();
+}
 
 if( ! sqgetGlobalVar('username', $username, SQ_SESSION) ) {
     $username = '';
 }
-
+// TODO Get rid of "none" strings when NULL or false should be used, i hate them i hate them i hate them!!!.
 $custom_css = getPref($data_dir, $username, 'custom_css', 'none' );
 
 $theme = ( !isset($theme) ? array() : $theme );
@@ -107,9 +111,8 @@ $icon_theme = getPref($data_dir, $username, 'icon_theme', 'images/themes/xp/' );
 if ($icon_theme == 'template') {
     $icon_theme = $sTplDir . 'images/';
 }
-
 /*
- * NOTE: The $icon_theme_path var should contain the path to the icon 
+ * NOTE: The $icon_theme_path var should contain the path to the icon
  *       theme to use.  If the admin has disabled icons, or the user has
  *       set the icon theme to "None," no icons will be used.
  */
@@ -272,8 +275,6 @@ if (!$index_order) {
     setPref($data_dir, $username, 'index_order', serialize($index_order));
 }
 
-
-
 if (!isset($default_mailbox_pref)) {
     $show_num = (isset($show_num)) ? $show_num : 15;
 
@@ -401,6 +402,27 @@ $chosen_fontset = getPref($data_dir, $username, 'chosen_fontset', $default_fonts
 if (! isset($default_fontsize)) $default_fontsize=SMPREF_NONE;
 $chosen_fontsize = getPref($data_dir, $username, 'chosen_fontsize', $default_fontsize);
 
+
+
+/** Put in a safety net for authentication here, in case a naughty admin didn't run conf.pl when they upgraded */
+
+// TODO Get rid of "none" strings when NULL should be used, i hate them i hate them i hate them!!!.
+if (! isset($smtp_auth_mech)) {
+    $smtp_auth_mech = 'none';
+}
+
+if (! isset($imap_auth_mech)) {
+    $imap_auth_mech = 'login';
+}
+
+if (! isset($use_imap_tls)) {
+    $use_imap_tls = false;
+}
+
+if (! isset($use_smtp_tls)) {
+    $use_smtp_tls = false;
+}
+
 do_hook('loading_prefs');
 
 ?>
index f7dfc0223725ec3064f04599853d8d4043f4c0c3..33dcbe39379ad038c2349470a12a9cc619a3ccc9 100644 (file)
@@ -224,7 +224,7 @@ function load_optpage_data_display() {
     /* Icon theme selection */
     if ($use_icons) {
         global $icon_themes, $icon_theme;
-        
+
         $temp = array();
         for ($count = 0; $count < sizeof($icon_themes); $count++) {
             $temp[$count] = $icon_themes[$count]['NAME'];
@@ -247,6 +247,7 @@ function load_optpage_data_display() {
         }
     }
 
+
     /*** Load the General Options into the array ***/
     $optgrps[SMOPT_GRP_MAILBOX] = _("Mailbox Display Options");
     $optvals[SMOPT_GRP_MAILBOX] = array();
index faecf3d1597b59f94398bc8e251960bbcf68cb05..ce55f516f5b3e4f665b8cff9380a0f988ee8b31d 100644 (file)
@@ -12,8 +12,7 @@
  */
 
 /** SquirrelMail required files. */
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/imap_general.php');
+include(SM_PATH . 'functions/imap_general.php');
 
 /* Define the group constants for the folder options page. */
 define('SMOPT_GRP_SPCFOLDER', 0);
index 735aec4902fca6bca07fff64ab683bf94ca1c169..9155b83a483700bfff3068fb1ace3e84ec8847b9 100644 (file)
@@ -9,137 +9,6 @@
  * @package squirrelmail
  */
 
-/** include the mime class before the session start ! otherwise we can't store
- * messages with a session_register.
- *
- * From http://www.php.net/manual/en/language.oop.serialization.php:
- *   In case this isn't clear:
- *   In 4.2 and below:
- *      session.auto_start and session objects are mutually exclusive.
- *
- * We need to load the classes before the session is started,
- * except that the session could be started automatically
- * via session.auto_start. So, we'll close the session,
- * then load the classes, and reopen the session which should
- * make everything happy.
- *
- * ** Note this means that for the 1.3.2 release, we should probably
- * recommend that people set session.auto_start=0 to avoid this altogether.
- */
-
-session_write_close();
-
-/**
- * Reset the $theme() array in case a value was passed via a cookie.
- * This is until theming is rewritten.
- */
-global $theme;
-unset($theme);
-$theme=array();
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'class/mime.class.php');
-include_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'functions/strings.php');
-
-/* set the name of the session cookie */
-if(isset($session_name) && $session_name) {
-    ini_set('session.name' , $session_name);
-} else {
-    ini_set('session.name' , 'SQMSESSID');
-}
-
-sqsession_is_active();
-
-include_once(SM_PATH . 'functions/i18n.php');
-include_once(SM_PATH . 'functions/auth.php');
-
-is_logged_in();
-
-/**
- * Auto-detection
- *
- * if $send (the form button's name) contains "\n" as the first char
- * and the script is compose.php, then trim everything. Otherwise, we
- * don't have to worry.
- *
- * This is for a RedHat package bug and a Konqueror (pre 2.1.1?) bug
- */
-global $send, $PHP_SELF;
-if (isset($send)
-    && (substr($send, 0, 1) == "\n")
-    && (substr($PHP_SELF, -12) == '/compose.php')) {
-    if ($REQUEST_METHOD == 'POST') {
-        global $HTTP_POST_VARS;
-        TrimArray($HTTP_POST_VARS);
-    } else {
-        global $HTTP_GET_VARS;
-        TrimArray($HTTP_GET_VARS);
-    }
-}
-
-include_once(SM_PATH . 'functions/page_header.php');
-include_once(SM_PATH . 'functions/prefs.php');
-include_once(SM_PATH . 'config/config.php');
-include_once(SM_PATH . 'include/load_prefs.php');
-
-/* Set up the language (i18n.php was included by auth.php). */
-global $username, $data_dir;
-set_up_language(getPref($data_dir, $username, 'language'));
-
-$timeZone = getPref($data_dir, $username, 'timezone');
-
-/* Check to see if we are allowed to set the TZ environment variable.
- * We are able to do this if ...
- *   safe_mode is disabled OR
- *   safe_mode_allowed_env_vars is empty (you are allowed to set any) OR
- *   safe_mode_allowed_env_vars contains TZ
- */
-$tzChangeAllowed = (!ini_get('safe_mode')) ||
-                    !strcmp(ini_get('safe_mode_allowed_env_vars'),'') ||
-                    preg_match('/^([\w_]+,)*TZ/', ini_get('safe_mode_allowed_env_vars'));
-
-if ( $timeZone != SMPREF_NONE && ($timeZone != "")
-    && $tzChangeAllowed ) {
-
-    // get time zone key, if strict or custom strict timezones are used
-    if (isset($time_zone_type) &&
-        ($time_zone_type == 1 || $time_zone_type == 3)) {
-        /* load time zone functions */
-        require_once(SM_PATH . 'include/timezones.php');
-        $realTimeZone = sq_get_tz_key($timeZone);
-    } else {
-        $realTimeZone = $timeZone;
-    }
-
-    // set time zone
-    if ($realTimeZone) {
-        putenv("TZ=".$realTimeZone);
-    }
-}
-
-/* temporary sm_init section */
-
-include_once(SM_PATH . 'class/template/template.class.php');
-include_once(SM_PATH . 'class/error.class.php');
-/*
- * Initialize the template object
- */
-global $sTplDir;
-$oTemplate = new Template($sTplDir);
-
-/*
- * Initialize our custom error handler object
- */
-$oErrorHandler = new ErrorHandler($oTemplate,'error_message.tpl');
-
-/*
- * Activate custom error handling
- */
-if (version_compare(PHP_VERSION, "4.3.0", ">=")) {
-    $oldErrorHandler = set_error_handler(array($oErrorHandler, 'SquirrelMailErrorhandler'));
-} else {
-    $oldErrorHandler = set_error_handler('SquirrelMailErrorhandler');
-}
-
+echo "Rewrite your code, we now use init.php";
+die();
 ?>
\ No newline at end of file
index 0e046eb72b09303826a87f00ed859ea7273f58c8..24b1bd5211ebf5942479e190a36833b9fb035612 100644 (file)
  * @subpackage abook_take
  */
 
-/** SquirrelMail required files. */
-require_once(SM_PATH . 'functions/url_parser.php');
-require_once(SM_PATH . 'functions/forms.php');
-
 function valid_email ($email, $verify)
 {
     global $Email_RegExp_Match;
index 00e9439452c310f94cf51dbcfa25f14e3bcd6bd4..af71969f85bc2c66ab068f2edd944858fedd1935 100755 (executable)
  * @subpackage abook_take
  */
 
-/**
- * If SM_PATH isn't defined, define it.  Required to include files.
- * @ignore
- */
-if (!defined('SM_PATH'))  {
-    define('SM_PATH','../../');
-}
 
 /**
  * Initialize the plugin
index 59fa6841bd2e036d8f0bc3a9c1375bd3926ac3b2..045c6224a7bd8cc3cacf8d8b02439d9ba56580ec 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore */
-define('SM_PATH','../../');
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/addressbook.php');
+require(SM_PATH . 'functions/forms.php');
+require(SM_PATH . 'functions/addressbook.php');
 
 displayPageHeader($color, 'None');
 
index dd4560f23164ebdd982438b04224701e77a63dba..cb189380e78d9ef4d702d21e2f26acaa338be26b 100644 (file)
@@ -21,7 +21,6 @@
  */
 function adm_check_user() {
     global $PHP_SELF, $plugins;
-    require_once(SM_PATH . 'functions/global.php');
 
     /* fail if the plugin is not enabled */
     if ( !in_array('administrator', $plugins) ) {
index 9f46f48217a2ed004da3f420f018f83979019569..d985aa459120608bce063db90e7639940e2d7d86 100644 (file)
  * @subpackage administrator
  */
 
-/** @ignore */
-if (!defined('SM_PATH')) define('SM_PATH','../../');
-
-/**
- * Load SquirrelMail SMPREF constants for default_unseen_notify and 
- * default_unseen_type variables.
- */
-require_once( SM_PATH . 'functions/constants.php' );
-
 /* Define constants for the various option types. */
 define('SMOPT_TYPE_UNDEFINED', -1);
 define('SMOPT_TYPE_STRING', 0);
index 7bb658b6d5fc70c651006f6f613c62679c231c85..5f95e2432c58e7ebb7cc90605a96149f1d556ed6 100644 (file)
  * @subpackage bug_report
  */
 
+
 /**
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
-/** load system functions */
-require_once(SM_PATH . 'include/validate.php');
+require('../../include/init.php');
 /** load form functions */
-include_once(SM_PATH . 'functions/forms.php');
-/** load error_box() function */
-include_once(SM_PATH . 'functions/display_messages.php');
+require_once(SM_PATH . 'functions/forms.php');
 /** load plugin functions */
-include_once(SM_PATH . 'plugins/bug_report/functions.php');
+require_once(SM_PATH . 'plugins/bug_report/functions.php');
 
 displayPageHeader($color, 'None');
 
@@ -37,7 +34,7 @@ if (! is_plugin_enabled('bug_report') || ! bug_report_check_user()) {
 }
 
 /** get system specs */
-include_once(SM_PATH . 'plugins/bug_report/system_specs.php');
+require_once(SM_PATH . 'plugins/bug_report/system_specs.php');
 global $body;
 
 $body_top = "I am subscribed to the this mailing list.\n" .
@@ -107,7 +104,7 @@ echo "</p>\n";
             <?php echo _("This bug involves:")
                       .' <select name="send_to">';
             if (! empty($bug_report_admin_email)) {
-                // if admin's email is set - add 'report to admin' option and make it default one    
+                // if admin's email is set - add 'report to admin' option and make it default one
                 echo '<option value="' . htmlspecialchars($bug_report_admin_email) .'" selected="selected">'
                     ._("my email account") .'</option>';
             }
index 4db6358efe3944930d6689bf29f9fdf43eae3164..e524057c5c2ca0ea0a4c4777b243eb5ee53e58d0 100644 (file)
@@ -9,8 +9,15 @@
  * @subpackage bug_report
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
+
+/**
+ * do not allow to call this file directly
+ */
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../../src/login.php");
+    die();
+}
 
 /** Declare plugin configuration vars */
 global $bug_report_admin_email, $bug_report_allow_users;
index 20b9bbe5bddcc39696ef4964e9f8e28c2c4debd1..6d79a4fdd68f1d44025a071c238047f770ecc8f8 100644 (file)
  */
 
 /**
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
-/** load system functions */
-include_once(SM_PATH . 'include/validate.php');
-/** load error_box() function */
-include_once(SM_PATH . 'functions/display_messages.php');
+require('../../include/init.php');
+
 /** load plugin functions */
 include_once(SM_PATH.'plugins/bug_report/functions.php');
 
index b3c48c55acb49e266e63a25b9a38c3656cddf4b3..9c6b78890a2ef721cf0803dd88bd925d44b9a27a 100644 (file)
  * @subpackage bug_report
  */
 
-/** @ignore */
-if (!defined('SM_PATH')) define('SM_PATH','../../');
+/**
+ * do not allow to call this file directly
+ */
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../../src/login.php");
+    die();
+}
 
 /**
  * load required libraries
  */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
-global $body, $username;
+include_once(SM_PATH . 'functions/imap_general.php');
+
 
 
 /**
index 866fb0605d50fda4b3472f68facdbb3bb51c9573..956f4b29d8134280195af4825fc9dbebe8c38f22 100644 (file)
  * @subpackage calendar
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 /* load date_intl() */
 include_once(SM_PATH . 'functions/date.php');
 
index 220341ca86a3a1a2e4fa5b1da707c3d394e323a1..abb70db7251b6d96e148b5ccd0e6797257ac613b 100644 (file)
  * @subpackage calendar
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 /* date_intl() */
 include_once(SM_PATH . 'functions/date.php');
 
@@ -126,8 +126,8 @@ function display_events() {
             echo html_tag( 'tr', '', '', $color[$eo] ) .
                         html_tag( 'td', date_intl(_("H:i"),mktime($ehour,$eminute,0,1,1,0)) . $elength, 'left' ) .
                         html_tag( 'td', '', 'left' ) . '[';
-                            echo ($calbar['priority']==1) ? 
-                                "<font color=\"$color[1]\">".htmlspecialchars($calbar['title']).'</font>' : 
+                            echo ($calbar['priority']==1) ?
+                                "<font color=\"$color[1]\">".htmlspecialchars($calbar['title']).'</font>' :
                                 htmlspecialchars($calbar['title']);
                             echo'] <div style="margin-left:10px">'.nl2br(htmlspecialchars($calbar['message'])).'</div>' .
                         html_tag( 'td',
index d40fcbb2e5365d39bf97a4e72006d53ced941262..9dc7857049d13c2b8e70121d1b28332d033f41cc 100644 (file)
@@ -9,12 +9,11 @@
  * @package plugins
  * @subpackage calendar
  */
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-/** @ignore */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 /* date_intl() */
 include_once(SM_PATH . 'functions/date.php');
 
index 6e31dd704d3633e1055f5c4aa953ecb1bffe8ee8..55070d93bd0dbb36ffa3ad8227e400a291b9d15c 100644 (file)
  * @subpackage calendar
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 /* date_intl() */
 include_once(SM_PATH . 'functions/date.php');
 
index 97e6ef87434b562e5d84064b04ce1aa9bd98b6a6..1631033cb608788cb4b7b3e15bd63593005945a6 100644 (file)
  * @subpackage calendar
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
+
 /* date_intl() */
 include_once(SM_PATH . 'functions/date.php');
 /* form functions */
@@ -150,7 +152,7 @@ function update_event_form() {
  */
 function confirm_update() {
     global $calself, $year, $month, $day, $hour, $minute, $calendardata,
-        $color, $event_year, $event_month, $event_day, $event_hour, 
+        $color, $event_year, $event_month, $event_day, $event_hour,
         $event_minute, $event_length, $event_priority, $event_title, $event_text;
 
     $tmparray = $calendardata["$month$day$year"]["$hour$minute"];
index 348cf3b492e54e92b551b92001b4f42e5979861a..34697600791c7b7a421103cbf8f8655d5dba8496 100644 (file)
  */
 
 /**
- * If SM_PATH isn't defined, define it.  Required to include files.
- * @ignore
+ * do not allow to call this file directly
  */
-if (!defined('SM_PATH')) define('SM_PATH','../../../');
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../../../src/login.php");
+    die();
+}
 
 /** load required functions */
 
-/** error_box() function */
-include_once(SM_PATH . 'functions/display_messages.php');
 /** sqimap_get_user_server() function */
-include_once(SM_PATH . 'functions/imap_general.php');
+include_once(SM_PATH . '../functions/imap_general.php');
 
 /** get imap server and username globals */
 global $imapServerAddress, $username;
index a7132919fc6032d5997d3ac569c22d6f83fdab79..ea845f9d6fbb1db2ca24d64d30eeafa0f90f7629 100644 (file)
@@ -43,17 +43,6 @@ $squirrelmail_plugin_hooks['change_password_init']['merak'] =
 function cpw_merak_init() {
     global $color;
 
-    /**
-     * If SM_PATH isn't defined, define it.  Required to include files.
-     * @ignore
-     */
-    if (!defined('SM_PATH'))  {
-        define('SM_PATH','../../../');
-    }
-
-    // load error_box() function
-    include_once(SM_PATH . 'functions/display_messages.php');
-
     if (!function_exists('curl_init')) {
         // user_error('Curl module NOT available!', E_USER_ERROR);
         error_box(_("PHP Curl extension is NOT available! Unable to change password!"),$color);
index 58f74c80eb6579e5a1062cde1748b855d951ba2e..e3d10413d9061b600d01f46f4e7827843a54a453 100644 (file)
  * @subpackage change_password
  */
 
-/** load Pear DB. 
- * Global is needed because library must be loaded before configuration 
+/** load Pear DB.
+ * Global is needed because library must be loaded before configuration
  * in order to use DB constants.
  */
 global $cpw_peardb_detect;
 $cpw_peardb_detect=@include_once('DB.php');
 
 /** declare configuration globals */
-global $cpw_peardb_dsn, $cpw_peardb_connect_opts, $cpw_peardb_table, 
+global $cpw_peardb_dsn, $cpw_peardb_connect_opts, $cpw_peardb_table,
  $cpw_peardb_uid_field, $cpw_peardb_domain_field, $cpw_peardb_passwd_field,
  $cpw_peardb_crypted_passwd, $cpw_peardb_debug;
 
@@ -108,17 +108,6 @@ $squirrelmail_plugin_hooks['change_password_init']['peardb'] =
 function cpw_peardb_init() {
     global $color, $cpw_peardb_detect, $cpw_peardb_dsn, $cpw_peardb_table;
 
-    /**
-     * If SM_PATH isn't defined, define it.  Required to include files.
-     * @ignore
-     */
-    if (!defined('SM_PATH'))  {
-        define('SM_PATH','../../../');
-    }
-
-    // load error_box() function
-    include_once(SM_PATH . 'functions/display_messages.php');
-
     if (! $cpw_peardb_detect) {
         error_box(_("Plugin is unable to use PHP Pear DB libraries. PHP Pear includes must be available in your PHP include_path setting."),$color);
         echo "</body></html>\n";
@@ -126,7 +115,7 @@ function cpw_peardb_init() {
     }
 
     // Test required settings
-    if ((is_string($cpw_peardb_dsn) && trim($cpw_peardb_dsn)=='') 
+    if ((is_string($cpw_peardb_dsn) && trim($cpw_peardb_dsn)=='')
         || trim($cpw_peardb_table)=='' ) {
         error_box(_("Required change password backend configuration options are missing."),$color);
         echo "</body></html>\n";
@@ -142,7 +131,7 @@ function cpw_peardb_init() {
  */
 function cpw_peardb_dochange($data) {
     global $cpw_peardb_dsn, $cpw_peardb_table, $cpw_peardb_connect_opts, $cpw_peardb_debug,
-        $cpw_peardb_uid_field, $cpw_peardb_passwd_field, $cpw_peardb_domain_field, 
+        $cpw_peardb_uid_field, $cpw_peardb_passwd_field, $cpw_peardb_domain_field,
         $cpw_peardb_crypted_passwd, $domain;
 
     $username = $data['username'];
@@ -159,7 +148,7 @@ function cpw_peardb_dochange($data) {
         $user=$username;
         $user_domain=$domain;
     }
+
     // connect to database and make sure that table exists
     $cpw_db = DB::connect($cpw_peardb_dsn, $cpw_peardb_connect_opts);
     if (PEAR::isError($cpw_db)) {
@@ -187,9 +176,9 @@ function cpw_peardb_dochange($data) {
     $cpw_peardb_passwd_check=false;
     $cpw_peardb_domain_check=(($cpw_peardb_domain_field=='')? true : false);
     foreach($table_info as $key => $field_data) {
-        if ($field_data['name']==$cpw_peardb_uid_field) 
+        if ($field_data['name']==$cpw_peardb_uid_field)
             $cpw_peardb_uid_check=true;
-        if ($field_data['name']==$cpw_peardb_passwd_field) 
+        if ($field_data['name']==$cpw_peardb_passwd_field)
             $cpw_peardb_passwd_check=true;
         if ($cpw_peardb_domain_field!='' && $field_data['name']==$cpw_peardb_domain_field)
             $cpw_peardb_domain_check=true;
@@ -216,7 +205,7 @@ function cpw_peardb_dochange($data) {
         .' FROM '.$cpw_db->quoteIdentifier($cpw_peardb_table)
         .' WHERE '
         .$cpw_db->quoteIdentifier($cpw_peardb_uid_field).'='.$cpw_db->quoteSmart($user)
-        .(($cpw_peardb_domain_field!='') ? 
+        .(($cpw_peardb_domain_field!='') ?
           ' AND '.$cpw_db->quoteIdentifier($cpw_peardb_domain_field).'='.$cpw_db->quoteSmart($user_domain):
           '');
     $cpw_res=$cpw_db->query($query);
@@ -286,7 +275,7 @@ function cpw_peardb_dochange($data) {
         .'='.$cpw_db->quoteSmart($hashed_passwd)
         .' WHERE '.$cpw_db->quoteIdentifier($cpw_peardb_uid_field)
         .'='.$cpw_db->quoteSmart($user)
-        .(($cpw_peardb_domain_field!='') ? 
+        .(($cpw_peardb_domain_field!='') ?
           ' AND '.$cpw_db->quoteIdentifier($cpw_peardb_domain_field).'='.$cpw_db->quoteSmart($user_domain) :
           '');
 
index a35b720fbac798b8980f5e1028980c847acb7ea6..7a0f574cf8fdf9e1d2f665f113a7e28512df43d0 100644 (file)
@@ -86,10 +86,8 @@ function cpw_poppassd_go($username, $old_pw, $new_pw, $debug = 0) {
     global $poppassd_server;
     global $imapServerAddress;
 
-    /** @ignore */
-    if (!defined('SM_PATH')) define('SM_PATH','../../../');
     /** sqimap_get_user_server() function */
-    include_once(SM_PATH . 'functions/imap_general.php');
+    include_once(SM_PATH . '../functions/imap_general.php');
 
     if($poppassd_server == '') {
         // if poppassd address is not set, use imap server's address
index 6f54de22518a3d134d8f04e32d558d7800cc1011..e7b0a8b474fe2c7505beee37f053e098657476fc 100644 (file)
@@ -41,17 +41,6 @@ function cpw_template_init()
 {
     global $color;
 
-    /**
-     * If SM_PATH isn't defined, define it.  Required to include files.
-     * @ignore
-     */
-    if (!defined('SM_PATH'))  {
-        define('SM_PATH','../../../');
-    }
-
-    // load error_box() function
-    include_once(SM_PATH . 'functions/display_messages.php');
-
     // plugin is not configured. Handle error gracefully.
     error_box(_("No valid backend defined."),$color);
     // close html and stop script execution
index 6504c3298cc5d7a5d2e1a7cb1a54f0b359106171..e8f70a62131cab093f519bd2e54d7f148497afa2 100644 (file)
@@ -106,17 +106,6 @@ $squirrelmail_plugin_hooks['change_password_init']['vmailmgrd'] =
 function cpw_vmailmgrd_init(){
     global $vmail_inc_path, $color, $username;
 
-    /**
-     * If SM_PATH isn't defined, define it.  Required to include files.
-     * @ignore
-     */
-    if (!defined('SM_PATH'))  {
-        define('SM_PATH','../../../');
-    }
-
-    // load error_box() function
-    include_once(SM_PATH . 'functions/display_messages.php');
-
     if ($vmail_inc_path=='' || ! file_exists($vmail_inc_path)) {
         // $vmail_inc_path is not set or file does not exist
         error_box(_("Incorrent path to vmail.inc file."),$color);
index 0246bfa59fccd38d86f25c2a53580c9a8e0c61e6..4400a015224c461e1298fc4e155c38bb80714403 100644 (file)
  * @subpackage change_password
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-include_once (SM_PATH . 'include/validate.php');
 include_once (SM_PATH . 'plugins/change_password/functions.php');
 include_once (SM_PATH . 'functions/forms.php');
 
index b5f64a38c4139c00a72da68feeadaf482b6211a8..09dd04f14f697fb02d1371d63b1299040bb603d7 100644 (file)
  * @subpackage filters
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
+/**
+ * do not allow to call this file directly
+ */
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../../src/login.php");
+    die();
+}
 
 /** load globals */
 global $UseSeparateImapConnection,
@@ -40,6 +46,28 @@ if (file_exists(SM_PATH . 'config/filters_config.php')) {
     include_once (SM_PATH . 'plugins/filters/config.php');
 }
 
+/**
+ * Init Hooks
+ * @access private
+ */
+function filters_init_hooks () {
+    global $squirrelmail_plugin_hooks;
+
+    if (! sqgetGlobalVar('mailbox',$mailbox,SQ_FORM)) {
+        $mailbox = 'INBOX';
+    }
+
+    $squirrelmail_plugin_hooks['left_main_before']['filters'] = 'start_filters_hook';
+    if (isset($mailbox) && $mailbox == 'INBOX') {
+        $squirrelmail_plugin_hooks['right_main_after_header']['filters'] = 'start_filters_hook';
+    }
+    $squirrelmail_plugin_hooks['optpage_register_block']['filters'] = 'filters_optpage_register_block_hook';
+    $squirrelmail_plugin_hooks['special_mailbox']['filters'] = 'filters_special_mailbox';
+    $squirrelmail_plugin_hooks['rename_or_delete_folder']['filters'] = 'update_for_folder_hook';
+    $squirrelmail_plugin_hooks['webmail_bottom']['filters'] = 'start_filters_hook';
+    $squirrelmail_plugin_hooks['folder_status']['filters'] = 'filters_folder_status';
+}
+
 /**
  * Register option blocks
  * @access private
@@ -70,6 +98,10 @@ function filters_folder_status($statusarr) {
        global $filter_inbox_count;
        if (empty($filter_inbox_count)) $filter_inbox_count=0;
 
+    //echo "GOT HOOK<br><pre>";
+    //var_dump($statusarr);
+    //echo "</pre><br>\n";
+
        if ($statusarr['MAILBOX'] == 'INBOX')
     {
      if (!empty($statusarr['MESSAGES'])) $filter_inbox_count=$statusarr['MESSAGES'];
@@ -174,26 +206,15 @@ function filters_bulkquery($filters, $IPs) {
 
 /**
  * Starts the filtering process
- * @param array $hook_args (since 1.5.2) do hook arguments. Is used to check 
- * hook name, array key = 0.
  * @access private
  */
-function start_filters($hook_args) {
+function start_filters() {
     global $imapServerAddress, $imapPort, $imap_stream, $imapConnection,
            $UseSeparateImapConnection, $AllowSpamFilters, $filter_inbox_count;
 
     sqgetGlobalVar('username', $username, SQ_SESSION);
     sqgetGlobalVar('key',      $key,      SQ_COOKIE);
 
-    /**
-     * check hook that calls filtering. If filters are called by right_main_after_header, 
-     * do filtering only when we are in INBOX folder.
-     */
-    if ($hook_args[0]=='right_main_after_header' &&
-        (sqgetGlobalVar('mailbox',$mailbox,SQ_FORM) && $mailbox!='INBOX')) {
-        return;
-    }
-
     $filters = load_filters();
 
     // No point running spam filters if there aren't any to run //
@@ -349,6 +370,7 @@ function filter_search_and_delete($imap_stream, $where, $what, $where_to, $user_
         /* read data back from IMAP */
         $read = sqimap_run_command($imap_stream, $search_str, true, $response, $message, TRUE);
     } else {
+        // TODO               BADCHARSET
         $search_str .= ' ' . $where . ' {' . strlen($what) . "}";
         $sid = sqimap_session_id(true);
         fputs ($imap_stream, $sid . ' ' . $search_str . "\r\n");
index 8978818eb895886db712e8238fa7ed9db4af4f70..222ca7493d071f7c1e66fb35c080b0a56f03d095 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
+require('../../include/init.php');
+include_once(SM_PATH . 'functions/imap_general.php');
 include_once(SM_PATH . 'plugins/filters/filters.php');
 
 displayPageHeader($color, 'None');
index 47ab5f5fa814ad65e66532885302d3ff009669d2..1dcd1e921b99d2a53265325e270f96c5a43b37c3 100644 (file)
  * @access private
  */
 function squirrelmail_plugin_init_filters() {
-    global $squirrelmail_plugin_hooks;
-
-    $squirrelmail_plugin_hooks['left_main_before']['filters'] = 'start_filters_hook';
-    $squirrelmail_plugin_hooks['right_main_after_header']['filters'] = 'start_filters_hook';
-    $squirrelmail_plugin_hooks['optpage_register_block']['filters'] = 'filters_optpage_register_block_hook';
-    $squirrelmail_plugin_hooks['special_mailbox']['filters'] = 'filters_special_mailbox';
-    $squirrelmail_plugin_hooks['rename_or_delete_folder']['filters'] = 'update_for_folder_hook';
-    $squirrelmail_plugin_hooks['webmail_bottom']['filters'] = 'start_filters_hook';
-    $squirrelmail_plugin_hooks['folder_status']['filters'] = 'filters_folder_status';
+    include_once(SM_PATH . 'plugins/filters/filters.php');
+    filters_init_hooks ();
 }
 
 /**
@@ -53,7 +46,7 @@ function filters_optpage_register_block_hook() {
  */
 function start_filters_hook($args) {
     include_once(SM_PATH . 'plugins/filters/filters.php');
-    start_filters ($args);
+    start_filters ();
 }
 
 /**
index b4977941ce7b39f1e7d12af42109b634140dd574..b228298f3fc2bf6b3fd22816e52795dfd20bf8b6 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
+include_once(SM_PATH . 'functions/imap_general.php');
+include_once(SM_PATH . 'functions/imap_messages.php');
 include_once(SM_PATH . 'plugins/filters/filters.php');
 
 /* get globals */
index 89dfc68dc2809a5bf745a90c52a9099e1820e35f..fb7609c9d5266e747b46ef97c422e76d55ce666c 100644 (file)
  * @subpackage fortune
  */
 
-/**
- * If SM_PATH isn't defined, define it.
- * @ignore
- */
-if (!defined('SM_PATH'))  {
-    define('SM_PATH','../../');
-}
-
 /**
  * Init plugin
  * @access private
index 5489441e17d9e7a9b9cead3c176296b164508d70..e27ae576182ac09a215279f0890f7f560dda5a8b 100644 (file)
  * @subpackage info
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
+require('../../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/forms.php');
 require_once(SM_PATH . 'plugins/info/functions.php');
 
index 4cd2ab063808c66e242689f4f56f238f52944100..c319fc10b43279908c2edac82d1d130f2233939b 100644 (file)
@@ -9,18 +9,16 @@
  * @package plugins
  * @subpackage listcommands
  */
-
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
+require('../../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/page_header.php');
-include_once(SM_PATH . 'include/load_prefs.php');
-include_once(SM_PATH . 'functions/html.php');
-require_once(SM_PATH . 'functions/identity.php');
-require_once(SM_PATH . 'functions/forms.php');
-include_once(SM_PATH . 'plugins/listcommands/functions.php');
+require(SM_PATH . 'functions/identity.php');
+require(SM_PATH . 'functions/forms.php');
+require(SM_PATH . 'plugins/listcommands/functions.php');
 
 /* get globals */
 sqgetGlobalVar('mailbox', $mailbox, SQ_GET);
index 5e7879b254709ffde7e328b4081076a60fb226b5..e246a2fc9c88311f7c07a8a2509912793c8ad46e 100644 (file)
@@ -91,7 +91,7 @@ Go back to the main directory, run configure and add the plugin.
 Some plugin settings can be adjusted in config/mail_fetch_config.php or
 plugins/mail_fetch/config.php files. 
 
-See plugins/mail_fetch/config_default.php
+See plugins/mail_fetch/config_sample.php
 
 
 Note for mod_gzip users
index 268f22e4624563555f18e0b15d24f8b27a429038..7bf720b14269536124b85bbfdfe2dfb3b196569f 100644 (file)
  * @subpackage mail_fetch
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
+include_once(SM_PATH . 'functions/imap_general.php');
 include_once(SM_PATH . 'plugins/mail_fetch/class.POP3.php');
 include_once(SM_PATH . 'plugins/mail_fetch/functions.php' );
 
index 7bb8fa5314869d01e301ee3c96e6c81f498594e4..bdcfd71d4dc8789958c3e9f79d8c80585be4b82b 100644 (file)
@@ -16,8 +16,6 @@
  * @subpackage mail_fetch
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
 
 /** pop3 class */
 include_once (SM_PATH . 'plugins/mail_fetch/class.POP3.php');
@@ -81,9 +79,9 @@ function  mail_fetch_load_pref_function() {
  * @private
  */
 function mail_fetch_login_function() {
-    include_once (SM_PATH . 'include/validate.php');
-    include_once (SM_PATH . 'functions/imap.php');
-    
+    //include_once (SM_PATH . 'include/validate.php');
+    include_once (SM_PATH . 'functions/imap_general.php');
+
     global $data_dir, $imapServerAddress, $imapPort;
 
     sqgetGlobalVar('username', $username, SQ_SESSION);
@@ -232,9 +230,6 @@ function mail_fetch_login_function() {
 function mail_fetch_setnew_function() {
     global $data_dir;
 
-    // FIXME: check if function is already loaded in login_verified hook
-    include_once(SM_PATH . 'functions/prefs.php');
-
     sqgetGlobalVar('username', $username, SQ_SESSION);
     setPref( $data_dir, $username, 'mailfetch_newlog', 'on' );
 }
@@ -256,7 +251,7 @@ function mailfetch_optpage_register_block_function() {
 }
 
 /**
- * Internal function used to update mail_fetch settings 
+ * Internal function used to update mail_fetch settings
  * when folders are renamed or deleted.
  * @since 1.5.1
  * @private
index 6bf63ca25f0baea3c43d668472493885834be182..6cea52716e5acc974e28b5e49f65255e85532714 100644 (file)
  * @subpackage mail_fetch
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
+include_once(SM_PATH . 'functions/imap_general.php');
 
 /* globals */
 sqgetGlobalVar('username',   $username,   SQ_SESSION);
index c4085cdd6b9e77d34615fa975d05855de272c2ad..616ba1d04a6cedf2218721b2e57bfee4eb612766 100644 (file)
@@ -12,9 +12,6 @@
  * @subpackage mail_fetch
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
-
 /**
  * Initialize the plugin
  */
index 0852e5ca8c61ff3678081b0822141cfa716b12b0..f3eee63a9cf36b0ab3b7ed251ce863e45b7ef57a 100644 (file)
  * @subpackage message_details
  */
 
-/** @ignore */
-if (!defined('SM_PATH'))
-   define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/mime.php');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
+require(SM_PATH . 'functions/imap_general.php');
+require(SM_PATH . 'functions/imap_messages.php');
+require(SM_PATH . 'functions/mime.php');
 
 sqgetGlobalVar('get_message_details', $md_action, SQ_GET);
 
index d8f9ef0e38796269e265502ae99a921b176b5007..b089df557164e3f2a413fa229c217716e574b2c0 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
+require('../../include/init.php');
 
 displayHtmlHeader( _("Message Details"), '', FALSE );
 
index bed4f6189508bcc567ec278bfcfc25e6ab51eabc..27fd6407f544fd62295805f7b1da207ca1bfe457 100644 (file)
  * @subpackage message_details
  */
 
-/** @ignore */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/forms.php');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
+require(SM_PATH . 'functions/forms.php');
 
 displayHtmlHeader( _("Message Details"),
              "<script type=\"text/javascript\">\n".
index 04b53c17c02679965a630e497da7e0bf4740b9fc..274822bbc020eafac6ee125d599c88897875119e 100644 (file)
  * @todo add midi support
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
-
-/**
- * SMPREF_UNSEEN_* constants
- */
-include_once(SM_PATH . 'functions/constants.php');
 
 /** file type defines */
 define('SM_NEWMAIL_FILETYPE_WAV',2);
@@ -193,8 +186,8 @@ function newmail_folder_status($statusarr) {
         $newmail_popup == 'on' ||
         $newmail_changetitle == 'on') &&
         /**
-         * make sure that $newmail_unseen_notify is set to supported value, 
-         * currently (1.5.2cvs) SMPREF_UNSEEN_NORMAL has highest integer value 
+         * make sure that $newmail_unseen_notify is set to supported value,
+         * currently (1.5.2cvs) SMPREF_UNSEEN_NORMAL has highest integer value
          * in SMPREF_UNSEEN constants
          */
         ($newmail_unseen_notify > SMPREF_UNSEEN_NONE && $newmail_unseen_notify <= SMPREF_UNSEEN_NORMAL)) {
index d789eab41aa9fbfaa3149319e4bea3a89b7939b7..034eb3cc1f9381b396c518802f04db903effb35a 100644 (file)
  */
 
 /**
- * define SM_PATH
+ * Path for SquirrelMail required files.
  * @ignore
  */
-define('SM_PATH','../../');
-
-/** Load squirrelmail functions */
-include_once(SM_PATH . 'include/validate.php');
+require('../../include/init.php');
 /** Load plugin functions */
 include_once(SM_PATH . 'plugins/newmail/functions.php');
 
index f41c356e6d54dd333d41ae8888e29af8b646a613..50401f7c764f42ce94cd87006953a9d9548db111 100644 (file)
  * @subpackage newmail
  */
 
-/** @ignore */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
+require('../../include/init.php');
 
 sqGetGlobalVar('numnew', $numnew, SQ_GET);
 $numnew = (int)$numnew;
@@ -27,8 +27,7 @@ $numnew = (int)$numnew;
         '<div style="text-align: center;">'. "\n" .
         html_tag( 'table', "\n" .
             html_tag( 'tr', "\n" .
-                // i18n: %s inserts the organisation name (typically SquirrelMail)
-                html_tag( 'td', '<b>' . sprintf(_("%s notice:"), $org_name) . '</b>', 'center', $color[0] )
+                html_tag( 'td', '<b>' . _("SquirrelMail Notice:") . '</b>', 'center', $color[0] )
             ) .
             html_tag( 'tr', "\n" .
                 html_tag( 'td',
index 8c62edd0e62de7f77e33592f5ae79358862d6f05..4fc646c5d7cbcafc93eb178482551423944723df 100644 (file)
  * @subpackage newmail
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-/* form functions */
-include_once(SM_PATH . 'functions/forms.php');
 /** Plugin functions (also loads plugin's config) */
 include_once(SM_PATH . 'plugins/newmail/functions.php');
 
-displayPageHeader($color, 'None');
+include_once(SM_PATH . 'functions/forms.php');
 
-// plugin uses squirrelmail loading_pref hook.
-// vars are already loaded in include/validate.php
+displayPageHeader($color, 'None');
 
 echo html_tag( 'table', '', 'center', $color[0], 'width="95%" cellpadding="1" cellspacing="0" border="0"' ) . "\n" .
         html_tag( 'tr' ) . "\n" .
@@ -224,4 +222,5 @@ echo html_tag( 'tr', "\n" .
         'left' )
      ) . "\n";
 ?>
-</table></form></td></tr></table></td></tr></table></body></html>
\ No newline at end of file
+</table></form></td></tr></table></td></tr></table></body></html>
+
index 8b384141b80190096629b58b299d0664b2fd91fd..84195ca5d71a812491a9bb9e210cfe59baec992c 100644 (file)
@@ -27,8 +27,6 @@
  * @subpackage newmail
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
 
 /**
  * Init newmail plugin
index a1c7a6e16a09b6ed604db5f8ccc164cb0737d5ce..5de4d0b04d0be1edcc78064baaa64985f6038673 100644 (file)
  * @subpackage newmail
  */
 
-/** @ignore */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
+require('../../include/init.php');
 
 displayHtmlHeader( _("Test Sound"), '', FALSE );
 
index 5f4f334f2ed777ff5ca24dad5d7eaca1511630b5..2beff6528b2a0f6aa51c635caf1d493e3fe29aee 100755 (executable)
  * @subpackage spamcop
  */
 
-/** @ignore */
-define('SM_PATH','../../');
-/* SquirrelMail functions */
-require_once(SM_PATH . 'include/validate.php');
+
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 /* plugin functions */
 include_once(SM_PATH . 'plugins/spamcop/functions.php');
 
index 0569c8637005878d6666354dc084b398ae375ab5..5dc226b25af00d4575262c9a02feae6ed2af30bd 100644 (file)
  * @subpackage spamcop
  */
 
-/** @ignore */
-define('SM_PATH','../../');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-include_once(SM_PATH . 'functions/imap.php');
+include_once(SM_PATH . 'functions/imap_general.php');
+include_once(SM_PATH . 'functions/imap_messages.php');
 /* plugin functions */
 include_once(SM_PATH . 'plugins/spamcop/functions.php');
 
index 71b4c5b7f454e27fb15a4b6da24b526fc6dd668f..083e7fa13a634e945f625606860f9d04ba2ea16a 100644 (file)
@@ -14,8 +14,6 @@
  * @todo remove sqspell_ prefix from main php scripts.
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
 
 /**
  * Standard SquirrelMail plugin initialization API.
index ff139b5deb22c63b86d2e1619ff642bbf1211454..c4f120620c239f23823575436c1ea35c362b3184 100644 (file)
  * @subpackage squirrelspell
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
-
-/** getHashedFile() function for SQSPELL_WORDS_FILE and sqgetGlobalVar() from global.php */
-include_once(SM_PATH . 'functions/prefs.php');
-
 /** vars needed for getHashedFile() */
 global $data_dir;
 sqgetGlobalVar('username', $username, SQ_SESSION);
@@ -32,7 +26,7 @@ sqgetGlobalVar('username', $username, SQ_SESSION);
  *   $SQSPELL_APP = array('English' => '/usr/local/bin/aspell -a');
  *</pre>
  * Sometimes you have to specify full path for PHP to find it.
- * 
+ *
  * You can use Aspell or Ispell spellcheckers, the command line is the
  * same. Aspell might provide better spellchecking for Western languages.
  *
@@ -53,7 +47,7 @@ sqgetGlobalVar('username', $username, SQ_SESSION);
  * <li>Whatever your setting is, don't omit the "-a" flag.</li>
  * <li>Remember to keep same array keys during upgrades. Don't rename them.
  *   Users' dictionary settings use it.</li>
- * <li>Interface might translate array key, if used key is present in 
+ * <li>Interface might translate array key, if used key is present in
  *   SquirrelMail translations.</li>
  * </ul>
  * <pre>
@@ -78,7 +72,7 @@ $SQSPELL_APP_DEFAULT = 'English';
  *
  * $SQSPELL_WORDS_FILE is a location and mask of a user dictionary file.
  * The default setting should be OK for most everyone.
- *     
+ *
  * This setting is used only when SquirrelSpell is upgraded from
  * older setup. Since SquirrelMail 1.5.1 SquirrelSpell stores all settings in
  * same place that stores other SquirrelMail user preferences.
index c8dec2c800d071902415c205a228e4e637f8c77b..9489dc6697e7ffb2661e482ead7c0649464fa639 100644 (file)
  * @subpackage squirrelspell
  */
 
-/** @ignore */
-if (! defined('SM_PATH')) define('SM_PATH','../../');
-
 /** globalize configuration vars **/
 global $SQSPELL_APP, $SQSPELL_APP_DEFAULT, $SQSPELL_WORDS_FILE, $SQSPELL_CRYPTO;
 
-/** 
+/**
  * load plugin configuration
  * @todo allow storing configuration file in config/ directory
  */
@@ -384,7 +381,7 @@ function sqspell_upgradeWordsFile($words_string){
 
 /**
  * gets list of available dictionaries from user's prefs.
- * Function was modified in 1.5.1 (sqspell 0.5). 
+ * Function was modified in 1.5.1 (sqspell 0.5).
  * Older function is suffixed with '_old'
  * @return array list of dictionaries used by end user.
  */
@@ -669,7 +666,7 @@ function sqspell_writeWords($words,$lang){
      */
     sqgetGlobalVar('key', $key, SQ_COOKIE);
     sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION);
-    
+
     $clear_key=OneTimePadDecrypt($key, $onetimepad);
     /**
      * Try encrypting it. If fails, scream bloody hell.
@@ -743,7 +740,7 @@ function sqspell_writeWords_old($words){
 
 /**
  * Deletes user's dictionary
- * Function was modified in 1.5.1 (sqspell 0.5). Older function is suffixed 
+ * Function was modified in 1.5.1 (sqspell 0.5). Older function is suffixed
  * with '_old'
  * @param string $lang dictionary
  */
@@ -850,12 +847,12 @@ function sqspell_handle_crypt_panic($lang=false) {
     .  _("SquirrelSpell was unable to decrypt your personal dictionary. This is most likely due to the fact that you have changed your mailbox password. In order to proceed, you will have to supply your old password so that SquirrelSpell can decrypt your personal dictionary. It will be re-encrypted with your new password after this. If you haven't encrypted your dictionary, then it got mangled and is no longer valid. You will have to delete it and start anew. This is also true if you don't remember your old password -- without it, the encrypted data is no longer accessible.") ,
     'left' ) .  "\n"
     . (($lang) ? html_tag('p',sprintf(_("Your %s dictionary is encrypted with password that differs from your current password."),
-                                      htmlspecialchars($lang)),'left') : '') 
+                                      htmlspecialchars($lang)),'left') : '')
     . '<blockquote>' . "\n"
     . '<form method="post" onsubmit="return AYS()">' . "\n"
     . '<input type="hidden" name="MOD" value="crypto_badkey" />' . "\n"
-    . (($lang) ? 
-       '<input type="hidden" name="dict_lang" value="'.htmlspecialchars($lang).'" />' : 
+    . (($lang) ?
+       '<input type="hidden" name="dict_lang" value="'.htmlspecialchars($lang).'" />' :
        '<input type="hidden" name="old_setup" value="yes" />')
     . html_tag( 'p',  "\n" .
         '<input type="checkbox" name="delete_words" value="ON" />'
index 5c35980c890ae868e0cf4f307c941764d82454be..4d3cf5e2c83a76ca664030ac785aad70fd12fb9f 100644 (file)
 $SQSPELL_DIR='plugins/squirrelspell/';
 $SQSPELL_CRYPTO=FALSE;
 
+
 /**
- * Load the stuff needed from SquirrelMail
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/display_messages.php');
 include_once(SM_PATH . $SQSPELL_DIR . 'sqspell_functions.php');
 
 /**
index 569092fd636034c6952e50eb70dcbd8e3b90263c..a477575b86a6105f0ff0cdaa93e02e440d406938 100644 (file)
 $SQSPELL_DIR='plugins/squirrelspell/';
 $SQSPELL_CRYPTO=FALSE;
 
+
 /**
- * Load some necessary stuff from SquirrelMail.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
+require('../../include/init.php');
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/display_messages.php');
 include_once(SM_PATH . $SQSPELL_DIR . 'sqspell_functions.php');
 
 /**
index bd7616f2a2e8a66a008b6e3049ddddf1e3ae1749..8acae0c1540076a9f363ab372a8c88ac6aed1184 100644 (file)
  */
 
 /**
- * Define for wrecked souls accessing functions script directly
- * @ignore
+ * do not allow to call this file directly
  */
-if (!defined('SM_PATH'))  {
-    define('SM_PATH','../../');
+if ((isset($_SERVER) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+    header("Location: ../../src/login.php");
+    die();
 }
-
 /** Load default config */
 if (file_exists(SM_PATH . 'plugins/translate/config_default.php')) {
     include_once(SM_PATH . 'plugins/translate/config_default.php');
@@ -105,7 +105,7 @@ function translate_read_form_function() {
             $body = decodeBody($body, $body_message->header->encoding);
 
             /*
-             * if message part is html formated - convert spaces, html line feeds, 
+             * if message part is html formated - convert spaces, html line feeds,
              * less than and greater than html entities and remove tags
              */
             if ($body_message->header->type1 == 'html') {
@@ -434,7 +434,7 @@ function translate_lang_opt($from, $to, $value, $text) {
  * Starts translation box
  *
  * @param string $action url that has to recieve message for translation
- * @param string $charset (since sm 1.5.1) character set, that should be used 
+ * @param string $charset (since sm 1.5.1) character set, that should be used
  * to submit 8bit information.
  * @access private
  */
@@ -455,7 +455,7 @@ function translate_new_form($action,$charset=null) {
     if (!$translate_same_window) {
         echo ' target="_blank"';
     }
-    
+
     if (! is_null($charset))
         echo ' accept-charset="'.htmlspecialchars($charset).'"';
 
@@ -943,4 +943,4 @@ function translate_form_google($message) {
 
     translate_table_end();
 }
-?>
+?>
\ No newline at end of file
index be76be2f0f4c71b862f5267056d7bff0664f8c9c..72a8cb8a7b4cbdf052c66539e1eb8e168d62386b 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
+require('../../include/init.php');
 
-/** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 /** Plugin functions */
 include_once(SM_PATH . 'plugins/translate/functions.php');
 
index 99993adbb28eb833b7001bda3f4e4dc3682e143f..0a098ba06990e221324a0f9f0efceb856a806fdb 100644 (file)
  * @subpackage translate
  */
 
-/**
- * If SM_PATH isn't defined, define it.
- * @ignore
- */
-if (!defined('SM_PATH'))  {
-    define('SM_PATH','../../');
-}
 
 /**
  * Initialize the translation plugin
index b0577b9a82da8f4b57a9ab4b13ff659a7c4b0345..cd20c2633260dc67837899ecdbf16ac81cb6984c 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
+require('../include/init.php');
 
 displayPageHeader($color, 'None' );
 
@@ -72,7 +68,7 @@ echo sprintf(_("You are using SquirrelMail version: %s"),$version);
 echo "<br />\n";
 echo _("The administrator installed the following plugins:");
 echo "<br />\n";
-if ( count ($plugins) > 0 ) {
+if ( isset($plugins) && count ($plugins) > 0 ) {
     sort($plugins);
     echo "<ul>\n";
     foreach($plugins as $plugin) {
index 4a9681d0c6ec81d50f8319fce9e42d571d823ed6..54abdbaff811c9932021da84fc3dbd217dd98e9f 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/addressbook.php');
+include('../include/init.php');
 
 ?>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
index 5a4529e8887bddf88bc13c4ff17a0dd3d12b43a8..0091b182789a3d116745129b08cb17a786aa3aa8 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
-/** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/strings.php');
-include_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'functions/html.php');
 include_once(SM_PATH . 'functions/forms.php');
 include_once(SM_PATH . 'functions/addressbook.php');
 
index 1a722e48c74cd602eae2dc5e8e0f6516d4207078..17d3eb9f32d8e4293bf2fb3b9025873b865631ad 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
+ * Because this file can also be included within compose we check for the $bInit
+ * var which is set inside ini.php. It's needed because compose already includes
+ * init.php.
  */
-if (! defined('SM_PATH') ) {
-    define('SM_PATH','../');
+if (!isset($bInit)) {
+    include('../include/init.php');
 }
 
 /** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/global.php');
 include_once(SM_PATH . 'functions/date.php');
-include_once(SM_PATH . 'functions/display_messages.php');
 include_once(SM_PATH . 'functions/addressbook.php');
-include_once(SM_PATH . 'functions/plugin.php');
-include_once(SM_PATH . 'functions/strings.php');
-include_once(SM_PATH . 'functions/html.php');
 
 sqgetGlobalVar('session',   $session,   SQ_POST);
 sqgetGlobalVar('mailbox',   $mailbox,   SQ_POST);
index d460f6379acb59f01e7b0314601b8f9fcf79ec2c..f60066eea0742e7403c858246072a1e11fd0946d 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+include('../include/init.php');
 
 /** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-/* plain_error_message() */
-include_once(SM_PATH . 'functions/display_messages.php');
 /* address book functions */
-include_once(SM_PATH . 'functions/addressbook.php');
+require_once(SM_PATH . 'functions/addressbook.php');
 /* form functions */
-include_once(SM_PATH . 'functions/forms.php');
+require_once(SM_PATH . 'functions/forms.php');
 
 /** lets get the global vars we may need */
 
index aa578d89fb0f51e457f36f1fb22159fd95298652..5915bcc111904327001a7ad2cf0ca953e8b5bff3 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
 require_once(SM_PATH . 'functions/date.php');
 require_once(SM_PATH . 'functions/mime.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/display_messages.php');
 require_once(SM_PATH . 'class/deliver/Deliver.class.php');
 require_once(SM_PATH . 'functions/addressbook.php');
 require_once(SM_PATH . 'functions/forms.php');
@@ -1276,7 +1272,7 @@ function showInputForm ($session, $values=false) {
 
         if(count($sizes) > 0) {
             $maxsize = '(max.&nbsp;' . show_readable_size( min( $sizes ) ) . ')'
-              . addHidden('MAX_FILE_SIZE', min( $sizes ));
+                . addHidden('MAX_FILE_SIZE', min( $sizes ));
         } else {
             $maxsize = '';
         }
@@ -1709,6 +1705,7 @@ function deliverMessage($composeMessage, $draft=false) {
 
         $composeMessage->purgeAttachments();
         if ($action == 'reply' || $action == 'reply_all') {
+            require(SM_PATH . 'functions/mailbox_display.php');
             $aMailbox = sqm_api_mailbox_select($imap_stream, $iAccount, $mailbox,array('setindex' => $what, 'offset' => $startMessage),array());
             // check if we are allowed to set the \\Answered flag
             if (in_array('\\answered',$aMailbox['PERMANENTFLAGS'], true)) {
@@ -1734,4 +1731,4 @@ function deliverMessage($composeMessage, $draft=false) {
     return $success;
 }
 
-?>
+?>
\ No newline at end of file
index 56f6da3f76e1c3ae072288f6585ed7e7bf4e3f28..5c6cd38ee6a83748f847816d3db52b345a288b14 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-
-global $color;
+include('../include/init.php');
 error_box('delete_message.php script is obsolete since 1.5.1.',$color);
 $oTemplate->display('footer.tpl');
 ?>
\ No newline at end of file
index 5a69181009560609f99e378856583360cae35667..e7c2dc3611755e1ab912f152879365cd452aeb7d 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/mime.php');
+require(SM_PATH . 'functions/imap_general.php');
+require(SM_PATH . 'functions/mailbox_display.php');
+require(SM_PATH . 'functions/mime.php');
 
 header('Pragma: ');
 header('Cache-Control: cache');
index ceaac877173192dc35ffce5b8997bb5852e57dd9..a099d66782fca0c856efe635e59e7b823bdbb751 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/display_messages.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/tree.php');
+require(SM_PATH . 'functions/imap_general.php');
+require(SM_PATH . 'functions/imap_messages.php');
+require(SM_PATH . 'functions/tree.php');
 
 /* get those globals */
 
index f5ccdbed253ebacb8e5e76a2cdf19046f68151cd..3ca3e869494597d70c31bba66b59601ca2d51ed3 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/folder_manip.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/forms.php');
 
 displayPageHeader($color, 'None');
index 4f42932d3a857bb8abe56939d10c87778ab435f9..389e8badb21f150dc8c5cc30ab001fef535a05c0 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/display_messages.php');
+require('../include/init.php');
 
 displayPageHeader($color, 'None' );
 
index f8b956fb282abf84607c90eaba01c06482a0c1c6..87423e80ca94ad821a0215fdd07ef5e3fa1fc6e0 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/date.php');
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/html.php');
-require_once(SM_PATH . 'include/load_prefs.php');
+require('../include/init.php');
 
 displayPageHeader($color, 'None');
 
@@ -65,4 +56,3 @@ $DownloadLink = '../src/download.php?passed_id=' . $passed_id .
 </td></tr></table>
 <?php
 $oTemplate->display('footer.tpl');
-?>
\ No newline at end of file
index 13eb9055d4900f5a5b2b063e9708e6392947786e..194eb5b5a3806a44b5cb7915574a1be4cab287aa 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/html.php');
+require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/date.php');
-
-/** add required includes */
-include_once(SM_PATH . 'templates/util_global.php');
-include_once(SM_PATH . 'templates/util_left_main.php');
+require_once(SM_PATH . 'templates/util_global.php');
+require_once(SM_PATH . 'templates/util_left_main.php');
 
 /* These constants are used for folder stuff. */
 define('SM_BOX_UNCOLLAPSED', 0);
@@ -67,7 +60,7 @@ $js_includes = $oTemplate->getJavascriptIncludes();
 foreach ($js_includes as $js_file) {
     $xtra .= '<script src="'.$js_file.'" type="text/javascript"></script>' ."\n";
 }
+
 // get mailbox list and cache it
 $mailboxes=sqimap_get_mailboxes($imapConnection,false,$show_only_subscribed_folders);
 
index a9dbd436136a6f255084c978415d6cee3ec17875..2fea9d046537e942fc77f1ae0d54f28b4fe7e7d4 100644 (file)
  * @package squirrelmail
  */
 
+// reduces the files included in init.php
+$sInitLocation = 'login';
+
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
+
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'config/config.php');
-require_once(SM_PATH . 'functions/i18n.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/constants.php');
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/forms.php');
 
@@ -36,26 +31,23 @@ require_once(SM_PATH . 'functions/forms.php');
  */
 set_up_language($squirrelmail_language, TRUE, TRUE);
 
-/**
- * Find out the base URI to set cookies.
- */
-$base_uri = sqm_baseuri();
-
 /*
  * In case the last session was not terminated properly, make sure
  * we get a new one.
  */
-
 sqsession_destroy();
+sqsession_is_active();
+$_SESSION=array();
+
+
 /**
  * PHP bug. http://bugs.php.net/11643 (warning, spammed bug tracker) and
  * http://bugs.php.net/13834
- * SID constant is not destroyed in PHP 4.1.2, 4.2.3 and maybe other 
+ * SID constant is not destroyed in PHP 4.1.2, 4.2.3 and maybe other
  * versions. Produces warning on login page. Bug should be fixed only in 4.3.0
  */
-@sqsession_start();
-header('Pragma: no-cache');
 
+//exit;
 /**
  * This detects if the IMAP server has logins disabled, and if so,
  * squelches the display of the login form and puts up a message
@@ -83,26 +75,6 @@ if($imap_auth_mech == 'login') {
     }
 }
 
-/*
- * Initialize the template object and custom error handler object
- */
-include_once(SM_PATH . 'class/template/template.class.php');
-include_once(SM_PATH . 'class/error.class.php');
-
-/*
- * $sTplDir is not initialized when a user is not logged in, so we will use
- * the config file defaults here.  If the neccesary variables are net set,
- * force a default value.
- */
-$aTemplateSet = ( !isset($aTemplateSet) ? array() : $aTemplateSet );
-$templateset_default = ( !isset($templateset_default) ? 0 : $templateset_default );
-$sTplDir = ( !isset($aTemplateSet[$templateset_default]['PATH']) ? 
-             SM_PATH . 'templates/default/' : 
-             $aTemplateSet[$templateset_default]['PATH'] );
-
-$oTemplate = new Template($sTplDir);
-$oErrorHandler = new ErrorHandler($oTemplate,'error_message.tpl');
-
 do_hook('login_cookie');
 
 $loginname_value = (sqGetGlobalVar('loginname', $loginname) ? htmlspecialchars($loginname) : '');
@@ -155,7 +127,7 @@ if (isset($org_logo) && $org_logo) {
      $org_logo_height>0) {
         $width_and_height .= " height=\"$org_logo_height\"";
     }
-    
+
     $logo_str = '<img src="'.$org_logo.'" ' .
                        'alt="'. sprintf(_("%s Logo"), $org_name).'" ' .
                        $width_and_height .
@@ -183,6 +155,8 @@ $password_field = addPwField($password_form_name).
                   $rcptaddress .
                   addHidden('just_logged_in', '1');
 
+session_write_close();
+
 $oTemplate->assign('color', $color);
 $oTemplate->assign('logo_str', $logo_str);
 $oTemplate->assign('sm_attribute_str', $sm_attribute_str);
index 87d6a4e945353f7d5b9dc85a796e741db8818dcd..0ad9224fc78221582a25fff4f16f6307e63201ab 100644 (file)
  * @package squirrelmail
  */
 
+// reduce the included files in int.php
+$bLogin = true;
+
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'config/config.php');
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/strings.php');
+require('../include/init.php');
 
 /* Force users to login each time? */
 $force_login  = true;
@@ -65,7 +62,6 @@ if(sqgetGlobalVar('emailaddress', $emailaddress)) {
     }
     $url = substr($url, 0, -1);
 }
-sqsession_is_active();
 
 if($force_login == false && sqsession_is_registered('user_is_logged_in')) {
     if($compose_only == true) {
index 9607582d80af4ba56ed948fff4fcec6c67bb3a75..6256fb8e839bc1ec0409837b718b6c6491e1f5c1 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-include_once(SM_PATH . 'functions/imap.php');
-include_once(SM_PATH . 'functions/options.php');
-include_once(SM_PATH . 'functions/strings.php');
-include_once(SM_PATH . 'functions/html.php');
-include_once(SM_PATH . 'functions/forms.php');
+
+//include(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/options.php');
+require_once(SM_PATH . 'functions/forms.php');
 
 /*********************************/
 /*** Build the resultant page. ***/
index 167169f071be3dea502cb86fb0bec16c8e10bd98..aa6fae03e5a241cc9dbc555be44dbca2e43738c5 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-include_once(SM_PATH . 'functions/imap.php');
-include_once(SM_PATH . 'functions/plugin.php');
-include_once(SM_PATH . 'functions/strings.php');
-include_once(SM_PATH . 'functions/html.php');
-include_once(SM_PATH . 'functions/forms.php');
+require('../include/init.php');
+
+// include_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/forms.php');
 
 /* get globals */
 sqGetGlobalVar('action', $action);
index db9b053156771249b81718be802717ee620082b1..026ae1f1a56c37dc50034f9c4581b81b353a7b20 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-include_once(SM_PATH . 'functions/html.php');
-include_once(SM_PATH . 'functions/identity.php');
+require_once(SM_PATH . 'functions/identity.php');
 
 if (!sqgetGlobalVar('identities', $identities, SQ_SESSION)) {
     $identities = get_identities();
index 5e1c36f2adbf08e86aa9270f731febbfa47308e5..cd3c2d40e76937d1d53e6bbac1a6f78d5b25b0d4 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/global.php');
-include_once(SM_PATH . 'functions/display_messages.php');
-include_once(SM_PATH . 'functions/imap.php');
-include_once(SM_PATH . 'functions/plugin.php');
-include_once(SM_PATH . 'functions/html.php');
-include_once(SM_PATH . 'functions/forms.php');
-include_once(SM_PATH . 'functions/arrays.php');
-//require_once(SM_PATH . 'functions/options.php');
+require_once(SM_PATH . 'functions/forms.php');
+require_once(SM_PATH . 'functions/arrays.php');
 
 /* get globals */
 if (sqgetGlobalVar('num',       $num,       SQ_GET)) {
index 3e4e95fa1789c64e4a5c338782dc74df95f92909..350c466b637ca91a0ef3012e95ac856a4d281b66 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
+require_once(SM_PATH . 'functions/date.php');
+require_once(SM_PATH . 'functions/mime.php');
+require_once(SM_PATH . 'functions/url_parser.php');
 
 /* get some of these globals */
 sqgetGlobalVar('username', $username, SQ_SESSION);
index 7d877fe6613f81adfec429e35d419753c8a20453..fa6de8f44d51cd8c9a303cc5ac6716c2cc630ea2 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
+include('../include/init.php');
 
 /* get those globals into gear */
 global $color;
index d068b8a8c983fa18f6caf1959aae2e63fb95bbdd..837e58c9668f92f72289e0ffc2bba99843e6bc15 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+include('../include/init.php');
 
-/* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 
 displayHtmlHeader( _("Printer Friendly"),
              "<script type=\"text/javascript\">\n".
index 36dfe50b6244254b763fe537fc5af724869efc1b..410517bf5ea12aba8e0d42fe68d01171be27af0a 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-//require_once(SM_PATH . 'functions/global.php');
+
+
 require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_asearch.php'); // => move to mailbox_display
 require_once(SM_PATH . 'functions/mime.php');
 require_once(SM_PATH . 'functions/date.php');
 require_once(SM_PATH . 'functions/url_parser.php');
-require_once(SM_PATH . 'functions/html.php');
-//require_once(SM_PATH . 'functions/global.php');
 require_once(SM_PATH . 'functions/identity.php');
-include_once(SM_PATH . 'functions/arrays.php');
-include_once(SM_PATH . 'functions/mailbox_display.php');
+require_once(SM_PATH . 'functions/arrays.php');
+require_once(SM_PATH . 'functions/mailbox_display.php');
+require_once(SM_PATH . 'functions/forms.php');
+require_once(SM_PATH . 'functions/attachment_common.php');
 
 /**
  * Given an IMAP message id number, this will look it up in the cached
@@ -141,7 +141,7 @@ function view_as_html_link($mailbox, $passed_id, $passed_ent_id, $message) {
         }
     }
     if($has_html == true) {
-        $vars = array('passed_ent_id', 'show_more', 'show_more_cc', 'override_type0', 'override_type1', 'startMessage', 'where', 'what');
+        $vars = array('passed_ent_id', 'show_more', 'show_more_cc', 'override_type0', 'override_type1', 'startMessage','where', 'what');
 
         $new_link = $base_uri . 'src/read_body.php?passed_id=' . urlencode($passed_id) .
                     '&amp;passed_ent_id=' . urlencode($passed_ent_id) .
@@ -318,7 +318,6 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
                 _("Server replied:") . ' ' . $deliver->dlv_ret_nr . ' ' .
                 nl2br(htmlspecialchars($deliver->dlv_server_msg));
         }
-        require_once(SM_PATH . 'functions/display_messages.php');
         plain_error_message($msg, $color);
     } else {
         unset ($deliver);
@@ -1029,6 +1028,14 @@ for ($i = 0; $i < $cnt; $i++) {
    }
 }
 
+/**
+ * Write mailbox with updated seen flag information back to cache.
+ */
+$mailbox_cache[$iAccount.'_'.$aMailbox['NAME']] = $aMailbox;
+sqsession_register($mailbox_cache,'mailbox_cache');
+$_SESSION['mailbox_cache'] = $mailbox_cache;
+$oTemplate->display('footer.tpl');
+
 displayPageHeader($color, $mailbox,'','');
 formatMenuBar($aMailbox, $passed_id, $passed_ent_id, $message,false);
 formatEnvheader($aMailbox, $passed_id, $passed_ent_id, $message, $color, $FirstTimeSee);
@@ -1096,10 +1103,4 @@ formatMenuBar($aMailbox, $passed_id, $passed_ent_id, $message, false, FALSE);
 do_hook('read_body_bottom');
 sqimap_logout($imapConnection);
 
-/**
- * Write mailbox with updated seen flag information back to cache.
- */
-$mailbox_cache[$iAccount.'_'.$aMailbox['NAME']] = $aMailbox;
-sqsession_register($mailbox_cache,'mailbox_cache');
-$oTemplate->display('footer.tpl');
 ?>
index d43c8aa49e052d0392e6820c67de9cfd8c524777..ac31a2c7e52f73129678255f3d2534f964b385d8 100644 (file)
  * @version $Id$
  * @package squirrelmail
  */
+$sInitLocation = 'redirect';
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/i18n.php');
+require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'config/config.php');
-require_once(SM_PATH . 'functions/prefs.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/constants.php');
-require_once(SM_PATH . 'functions/page_header.php');
-
-/* Before starting the session, the base URI must be known. Assuming */
-/* that this file is in the src/ subdirectory (or something).        */
-$base_uri = sqm_baseuri();
 
 header('Pragma: no-cache');
 $location = get_location();
 
-session_set_cookie_params (0, $base_uri);
-sqsession_is_active();
+// session_set_cookie_params (0, $base_uri);
 
 sqsession_unregister ('user_is_logged_in');
 sqsession_register ($base_uri, 'base_uri');
@@ -59,7 +47,6 @@ sqsetcookie('squirrelmail_language', $squirrelmail_language, time()+2592000,
           $base_uri);
 
 if (!isset($login_username)) {
-    include_once(SM_PATH .  'functions/display_messages.php' );
     logout_error( _("You must be logged in to access this page.") );
     exit;
 }
@@ -69,7 +56,6 @@ if (!sqsession_is_registered('user_is_logged_in')) {
 
     $onetimepad = OneTimePadCreate(strlen($secretkey));
     $key = OneTimePadEncrypt($secretkey, $onetimepad);
-    sqsession_register($onetimepad, 'onetimepad');
 
     /* remove redundant spaces */
     $login_username = trim($login_username);
@@ -80,6 +66,28 @@ if (!sqsession_is_registered('user_is_logged_in')) {
     }
 
     $imapConnection = sqimap_login($login_username, $key, $imapServerAddress, $imapPort, 0);
+    /* From now on we are logged it. If the login failed then sqimap_login handles it */
+
+    /* regenerate the session id to avoid session hyijacking */
+    sqsession_destroy();
+    sqsession_is_active();
+    session_regenerate_id();
+    /**
+     * The cookie part. session_start and session_regenerate_session normally set
+     * their own cookie. SquirrelMail sets another cookie which overwites the
+     * php cookies. The sqsetcookie function sets the cookie by using the header
+     * function which gives us full control how the cookie is set. We do that
+     * to add the HttpOnly cookie attribute which blocks javascript access on
+     * IE6 SP1.
+     * sqsetcookieflush is needed to send out the headers. sqsetcookie caches
+     * the cookies to be send. If we don't do that we only can send 1 single cookie
+     * which is not sufficient.
+     */
+    sqsetcookie(session_name(),session_id(),false,$base_uri);
+    sqsetcookie('key', $key, false, $base_uri);
+    sqsetcookieflush();
+
+    sqsession_register($onetimepad, 'onetimepad');
 
     $sqimap_capabilities = sqimap_capability($imapConnection);
 
@@ -103,9 +111,7 @@ if (!sqsession_is_registered('user_is_logged_in')) {
 
     $username = $login_username;
     sqsession_register ($username, 'username');
-    sqsetcookie('key', $key, false, $base_uri);
     do_hook ('login_verified');
-
 }
 
 /* Set the login variables. */
@@ -147,6 +153,7 @@ if ( sqgetGlobalVar('session_expired_location', $session_expired_location, SQ_SE
     }
     unset($session_expired_location);
 }
+
 if($mailto != '') {
     $redirect_url  = $location . '/webmail.php?right_frame=compose.php&mailto=';
     $redirect_url .= urlencode($mailto);
@@ -155,6 +162,7 @@ if($mailto != '') {
 /* Write session data and send them off to the appropriate page. */
 session_write_close();
 header("Location: $redirect_url");
+exit;
 
 /* --------------------- end main ----------------------- */
 
@@ -183,5 +191,3 @@ function attachment_common_parse($str, $debug) {
     }
     sqsession_register($attachment_common_types, 'attachment_common_types');
 }
-
-?>
\ No newline at end of file
index 9135c31342a323980fceadd69bca56c83fc7b212..a53c361e7784dece20385680ce7cd217a313fef1 100644 (file)
  * @package squirrelmail
  */
 
+//xdebug_start_profiling("/var/spool/xdebug/right_main.txt");
+
+
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+include('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-//include_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_asearch.php');
+require_once(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
 require_once(SM_PATH . 'functions/date.php');
 require_once(SM_PATH . 'functions/mime.php');
 require_once(SM_PATH . 'functions/mailbox_display.php');
-require_once(SM_PATH . 'functions/display_messages.php');
-require_once(SM_PATH . 'functions/html.php');
-//require_once(SM_PATH . 'functions/plugin.php');
-
 
-// Trigger Developers to look at CSS ;)
-// trigger_error("This layout sucks. Adapt squirrelmail.css!!!",E_USER_WARNING);
-//sqm_trigger_imap_error('SQM_IMAP_NO_THREAD',"BLA1",'BAD', 'BLA2', array('test1'=>'test1'));
 
 /* lets get the global vars we may need */
 sqgetGlobalVar('key',       $key,           SQ_COOKIE);
@@ -344,4 +339,3 @@ $oTemplate->display('footer.tpl');
 /* add the mailbox to the cache */
 $mailbox_cache[$account.'_'.$aMailbox['NAME']] = $aMailbox;
 sqsession_register($mailbox_cache,'mailbox_cache');
-?>
\ No newline at end of file
index 8e08124e4a9bed06558af31a0e63c2f817457e73..866039efa7979ec4b8ffe499e99c35054d9cb45d 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /** SquirrelMail required files.
  */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/strings.php');
-include_once(SM_PATH . 'functions/imap_asearch.php');
-include_once(SM_PATH . 'functions/imap_mailbox.php');
-include_once(SM_PATH . 'functions/imap_messages.php');
-include_once(SM_PATH . 'functions/mime.php');
-include_once(SM_PATH . 'functions/mailbox_display.php'); //getButton()...
-include_once(SM_PATH . 'class/template/template.class.php');
+require_once(SM_PATH . 'functions/imap_asearch.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
+require_once(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/mime.php');
+require_once(SM_PATH . 'functions/mailbox_display.php'); //getButton()
+require_once(SM_PATH . 'functions/forms.php');
+require_once(SM_PATH . 'functions/date.php');
 
 /** Prefs array ordinals. Must match $recent_prefkeys and $saved_prefkeys
  */
index cc2f60745edb955bc842d44014c6b394b688d7d5..6e5fc5183802da03d8a78a2ca074770cc3058ce2 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/prefs.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'functions/html.php');
+require('../include/init.php');
 
 /* Erase any lingering attachments */
 sqgetGlobalVar('compose_messages',  $compose_messages,  SQ_SESSION);
@@ -39,7 +32,6 @@ if (!isset($frame_top)) {
 /* If a user hits reload on the last page, $base_uri isn't set
  * because it was deleted with the session. */
 if (! sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION) ) {
-    require_once(SM_PATH . 'functions/display_messages.php');
     $base_uri = sqm_baseuri();
 }
 
index 2ef46dca0d1d5e9970445dce5159b1c3ef2e850c..1e2334a700a27e5f2a80afcca9c613256710768f 100644 (file)
  * @package squirrelmail
  */
 
-/** @ignore */
-define('SM_PATH','../');
+/**
+ * Set the location in order to skip unneeded validation and other includes
+ * in the SquirrelMail initialisation file.
+ */
+$sInitLocation = 'style';
 
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'config/config.php');
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../include/init.php');
 
 /* safety check for older config.php */
 if (!isset($fontsets) || !is_array($fontsets)) {
     $fontsets=array();
 }
 
-
-/* template init */
-/** start block copy from right_main.php */
-include_once(SM_PATH . 'class/template/template.class.php');
-
 /**
  *  get template name and set used template directory
- * 
+ *
  *  Existing file check has been moved into the template object, so it is
- *  not neccesary to do file_exists() here. 
+ *  not neccesary to do file_exists() here.
  * */
 if (sqgetGlobalVar('templateid',$templateid,SQ_GET)) {
     $sTplDir = SM_PATH.'templates/'.basename($templateid).'/';
@@ -188,5 +186,3 @@ $template_css = $oTemplate->getAdditionalStyleSheets();
 foreach ($template_css as $stylesheet) {
     $oTemplate->display($stylesheet);
 }
-?>
index 12da6a735081aac01aaf28f3966c6bf1de03865a..693cabed70eefdfe2628dbb672c10bf6e8003613 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-Define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
 require_once(SM_PATH . 'functions/mime.php');
 require_once(SM_PATH . 'functions/url_parser.php');
+require_once(SM_PATH . 'functions/imap_general.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
 
 /* globals */
 sqgetGlobalVar('username', $username, SQ_SESSION);
@@ -244,4 +244,4 @@ echo '<a href="../src/download.php?absolute_dl=true&amp;passed_id=' .
 </td></tr></table>
 <?php
 $oTemplate->display('footer.tpl');
-?>
+?>
\ No newline at end of file
index d2a85ebfdbd7ae8ddf966e80731861abb6a57b14..d709eac09407cfca2b8fd8bf266201fdada6edf9 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/global.php');
 require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/url_parser.php');
 
 function parse_viewheader($imapConnection,$id, $passed_ent_id) {
@@ -83,6 +79,48 @@ function parse_viewheader($imapConnection,$id, $passed_ent_id) {
     return $header_output;
 }
 
+/**
+ * Temporary test function to process template vars with formatting.
+ * I use it for viewing the message_header (view_header.php) with
+ * a sort of template.
+ * @param mixed $var
+ * @param mixed $format_ar
+ * @since 1.3.0
+ * @todo if function is temporary, then why it is used.
+ * @deprecated
+ */
+function echo_template_var($var, $format_ar = array() ) {
+    $frm_last = count($format_ar) -1;
+
+    if (isset($format_ar[0])) echo $format_ar[0];
+    $i = 1;
+
+    switch (true) {
+    case (is_string($var)):
+        echo $var;
+        break;
+    case (is_array($var)):
+        $frm_a = array_slice($format_ar,1,$frm_last-1);
+        foreach ($var as $a_el) {
+            if (is_array($a_el)) {
+                echo_template_var($a_el,$frm_a);
+            } else {
+                echo $a_el;
+                if (isset($format_ar[$i])) {
+                    echo $format_ar[$i];
+                }
+                $i++;
+            }
+        }
+        break;
+    default:
+        break;
+    }
+    if (isset($format_ar[$frm_last]) && $frm_last>$i ) {
+        echo $format_ar[$frm_last];
+    }
+}
+
 function view_header($header, $mailbox, $color) {
     sqgetGlobalVar('QUERY_STRING', $queryStr, SQ_SERVER);
     $ret_addr = SM_PATH . 'src/read_body.php?'.$queryStr;
index 0763b191560bd499b54a0996e183a45f1361826d..b33bd79c226b9e818d6465eab32c6cf90f45bbb5 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
+require('../include/init.php');
 
 /** SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-include_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/mime.php');
+require_once(SM_PATH . 'functions/date.php');
 
 /** Get globals */
 sqgetGlobalVar('key',        $key,          SQ_COOKIE);
@@ -78,5 +78,4 @@ $body = MagicHTML( $body, $passed_id, $message, $mailbox);
 /** TODO: charset might be part of html code. */
 header('Content-Type: text/html; charset=' . $charset);
 echo $body;
-
 ?>
\ No newline at end of file
index 3f3bff810ad03b40a68543e27f342e46ef6edbc3..563b8778db7a1a020baa5d6c40bd9bf98d6150e7 100644 (file)
  * @package squirrelmail
  */
 
-/**
- * Path for SquirrelMail required files.
- * @ignore
- */
-define('SM_PATH','../');
 
 /* SquirrelMail required files. */
-include_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/mime.php');
-require_once(SM_PATH . 'functions/html.php');
+include('../include/init.php');
+include(SM_PATH . 'functions/imap_general.php');
+include(SM_PATH . 'functions/imap_messages.php');
+include(SM_PATH . 'functions/mime.php');
+include(SM_PATH . 'functions/date.php');
+include(SM_PATH . 'functions/url_parser.php');
 
 sqgetGlobalVar('key',        $key,          SQ_COOKIE);
 sqgetGlobalVar('username',   $username,     SQ_SESSION);
index 86ac26545285f96b3590bcab58dc3a1c6497abb5..a7bc9586fd594d35eb1b34e2912032d60cc74d4f 100644 (file)
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'functions/global.php');
-require_once(SM_PATH . 'functions/strings.php');
-require_once(SM_PATH . 'config/config.php');
-require_once(SM_PATH . 'functions/prefs.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/plugin.php');
-require_once(SM_PATH . 'functions/i18n.php');
-require_once(SM_PATH . 'functions/auth.php');
-
-$base_uri = sqm_baseuri();
-
-sqsession_is_active();
+require('../include/init.php');
 
 sqgetGlobalVar('username', $username, SQ_SESSION);
 sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION);
@@ -58,24 +43,8 @@ if(!sqgetGlobalVar('mailto', $mailto)) {
     $mailto = '';
 }
 
-is_logged_in();
-
 do_hook('webmail_top');
 
-/**
- * We'll need this to later have a noframes version
- *
- * Check if the user has a language preference, but no cookie.
- * Send him a cookie with his language preference, if there is
- * such discrepancy.
- */
-$my_language = getPref($data_dir, $username, 'language');
-if ($my_language != $squirrelmail_language) {
-    sqsetcookie('squirrelmail_language', $my_language, time()+2592000, $base_uri);
-}
-
-$err=set_up_language(getPref($data_dir, $username, 'language'));
-
 $output = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\"\n".
           "  \"http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd\">\n".
           "<html><head>\n" .
@@ -83,19 +52,6 @@ $output = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\"\n".
           "<title>$org_title</title>\n".
           "</head>";
 
-// Japanese translation used without mbstring support
-if ($err==2) {
-    echo $output.
-         "<body>\n".
-         "<p>You need to have PHP installed with the multibyte string function \n".
-         "enabled (using configure option --enable-mbstring).</p>\n".
-         "<p>System assumed that you accidently switched to Japanese translation \n".
-         "and reverted your language preference to English.</p>\n".
-         "<p>Please refresh this page in order to use webmail.</p>\n".
-         "</body></html>";
-    return;
-}
-
 $left_size = getPref($data_dir, $username, 'left_size');
 $location_of_bar = getPref($data_dir, $username, 'location_of_bar');
 
@@ -174,7 +130,7 @@ switch($right_frame) {
     default:
         $right_frame_url =  urlencode($right_frame);
         break;
-} 
+}
 
 $left_frame  = '<frame src="left_main.php" name="left" frameborder="1" title="'.
                _("Folder List") ."\" />\n";
@@ -191,8 +147,7 @@ $ret = concat_hook_function('webmail_bottom', $output);
 if($ret != '') {
     $output = $ret;
 }
-echo $output;
 
-?>
-</frameset>
-</html>
+echo $output . '</frameset>';
+
+$oTemplate->display('footer.tpl');