diff --git a/CHANGELOG b/CHANGELOG index c5e49fcdf..00502abd4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,14 +1,19 @@ CHANGELOG RoundCube Webmail --------------------------- -2008/04/11 (alec) +2008/04/12 (thomasb) +---------- +- Changed codebase to PHP5 with autoloader +- Added some new classes from devel-vnext branch +2008/04/11 (alec) +---------- - Mark as read in one action with message preview (#1484972) - Delete redundant quota reads (#1484972) - Add options for empty trash and expunge inbox on logout (#1483863) 2008/04/10 (alec) - +---------- - Add rows highlighting in onmousemove on ksearch list - Remove lines wrapping when displaying message - Fix month localization @@ -16,7 +21,7 @@ CHANGELOG RoundCube Webmail - Fix debug (ajax) console 2008/04/02 (alec) - +---------- - Updated timezones list (#1484908) - Fix design in Settings (#1484799) - Fix deleting messages after clicking on "All" (#1484838) @@ -24,21 +29,21 @@ CHANGELOG RoundCube Webmail - Fix creating a new folder w/a comma in its name (#1484681) 2008/04/01 (thomasb) - +---------- - Fix Enter problem on login (#1484839) - Make the http-received header in outgoing mails configurable 2008/03/30 (till) - +---------- - Fix Firefox problem with ob_gzhandler (#1484932) - Improve message previewpane - less loading (#1484316) 2008/03/28 (thomasb) - +---------- - Disable installer by default; add config option to enable it again 2008/03/24 (till) - +---------- - Don't send mark requests for already marked messages (#1484906) - Fix "quote inside a quote" (#1484783) diff --git a/INSTALL b/INSTALL index a88f4f9be..098e886f9 100644 --- a/INSTALL +++ b/INSTALL @@ -11,7 +11,7 @@ REQUIREMENTS * The Apache or Lighttpd Webserver * .htaccess support allowing overrides for DirectoryIndex -* PHP Version 4.3.1 or greater including +* PHP Version 5.2 or greater including - PCRE (perl compatible regular expression) - libiconv (recommended) - mbstring (optional) diff --git a/README b/README index 6b2313a8a..1129cf59e 100644 --- a/README +++ b/README @@ -4,8 +4,8 @@ RoundCube Webmail (http://roundcube.net) ATTENTION --------- This is just a snapshot of the current SVN repository and is NOT A STABLE -version of RoundCube. There have been major changes since the latest release -so please read the update instructions carefully. It's not recommended to +version of RoundCube. Unlike the latest release this version requires PHP 5 +and does not work on a webserver with PHP 4. It's not recommended to replace an existing installation of RoundCube with this version. Also using a separate database or this installation is highly recommended. diff --git a/bin/html2text.php b/bin/html2text.php index 7f74ac622..0f0e6ae14 100644 --- a/bin/html2text.php +++ b/bin/html2text.php @@ -1,21 +1,11 @@ get_text(); - -$phpver = explode('.', phpversion()); -$vernum = $phpver[0] . $phpver[1] . $phpver[2]; - -# html_entity_decode doesn't handle UTF character sets in PHP 4.x - -if (($vernum >= 500) && function_exists('html_entity_decode')) - print html_entity_decode($plaintext, ENT_COMPAT, 'UTF-8'); -else - print $plaintext; +print html_entity_decode($converter->get_text(), ENT_COMPAT, 'UTF-8'); ?> diff --git a/bin/modcss.php b/bin/modcss.php index e482389a8..e97b8ec9c 100644 --- a/bin/modcss.php +++ b/bin/modcss.php @@ -19,10 +19,8 @@ */ -$INSTALL_PATH = realpath("./../") . "/"; -ini_set('include_path', $INSTALL_PATH.PATH_SEPARATOR.$INSTALL_PATH.'program'.PATH_SEPARATOR.ini_get('include_path')); - -require 'include/main.inc'; +define('INSTALL_PATH', realpath('./../') . '/'); +require INSTALL_PATH.'program/include/iniset.php'; $source = ""; if ($url = preg_replace('/[^a-z0-9.-_\?\$&=%]/i', '', $_GET['u'])) diff --git a/bin/msgexport.sh b/bin/msgexport.sh index 616895561..890d48a06 100755 --- a/bin/msgexport.sh +++ b/bin/msgexport.sh @@ -1,14 +1,10 @@ #!/usr/bin/php -qC '; } -// init necessary objects for GUI -rcmail_load_gui(); +// init output class +if (!empty($_GET['_remote']) || !empty($_POST['_remote'])) { + rcmail_init_json(); +} +else { + rcmail_load_gui(); +} // check DB connections and exit on failure -if ($err_str = $DB->is_error()) -{ +if ($err_str = $DB->is_error()) { raise_error(array( 'code' => 603, 'type' => 'db', @@ -145,24 +105,21 @@ if ($err_str = $DB->is_error()) // error steps -if ($_action=='error' && !empty($_GET['_code'])) +if ($_action=='error' && !empty($_GET['_code'])) { raise_error(array('code' => hexdec($_GET['_code'])), FALSE, TRUE); - +} // try to log in -if ($_action=='login' && $_task=='mail') -{ +if ($_action=='login' && $_task=='mail') { $host = rcmail_autoselect_host(); // check if client supports cookies - if (empty($_COOKIE)) - { + if (empty($_COOKIE)) { $OUTPUT->show_message("cookiesdisabled", 'warning'); } else if ($_SESSION['temp'] && !empty($_POST['_user']) && isset($_POST['_pass']) && rcmail_login(trim(get_input_value('_user', RCUBE_INPUT_POST), ' '), - get_input_value('_pass', RCUBE_INPUT_POST, true, 'ISO-8859-1'), $host)) - { + get_input_value('_pass', RCUBE_INPUT_POST, true, 'ISO-8859-1'), $host)) { // create new session ID unset($_SESSION['temp']); sess_regenerate_id(); @@ -174,26 +131,22 @@ if ($_action=='login' && $_task=='mail') header("Location: $COMM_PATH"); exit; } - else - { + else { $OUTPUT->show_message($IMAP->error_code == -1 ? 'imaperror' : 'loginfailed', 'warning'); rcmail_kill_session(); } } // end session -else if (($_task=='logout' || $_action=='logout') && isset($_SESSION['user_id'])) -{ +else if (($_task=='logout' || $_action=='logout') && isset($_SESSION['user_id'])) { $OUTPUT->show_message('loggedout'); rcmail_logout_actions(); rcmail_kill_session(); } // check session and auth cookie -else if ($_action != 'login' && $_SESSION['user_id'] && $_action != 'send') -{ - if (!rcmail_authenticate_session()) - { +else if ($_action != 'login' && $_SESSION['user_id'] && $_action != 'send') { + if (!rcmail_authenticate_session()) { $OUTPUT->show_message('sessionerror', 'error'); rcmail_kill_session(); } @@ -201,22 +154,20 @@ else if ($_action != 'login' && $_SESSION['user_id'] && $_action != 'send') // log in to imap server -if (!empty($USER->ID) && $_task=='mail') -{ +if (!empty($USER->ID) && $_task=='mail') { $conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']); - if (!$conn) - { + if (!$conn) { $OUTPUT->show_message($IMAP->error_code == -1 ? 'imaperror' : 'sessionerror', 'error'); rcmail_kill_session(); } - else + else { rcmail_set_imap_prop(); + } } // not logged in -> set task to 'login -if (empty($USER->ID)) -{ +if (empty($USER->ID)) { if ($OUTPUT->ajax_call) $OUTPUT->remote_response("setTimeout(\"location.href='\"+this.env.comm_path+\"'\", 2000);"); @@ -225,10 +176,8 @@ if (empty($USER->ID)) // check client X-header to verify request origin -if ($OUTPUT->ajax_call) -{ - if (empty($CONFIG['devel_mode']) && !rc_request_header('X-RoundCube-Referer')) - { +if ($OUTPUT->ajax_call) { + if (empty($CONFIG['devel_mode']) && !rc_request_header('X-RoundCube-Referer')) { header('HTTP/1.1 404 Not Found'); die("Invalid Request"); } @@ -237,24 +186,25 @@ if ($OUTPUT->ajax_call) // set task and action to client $OUTPUT->set_env('task', $_task); -if (!empty($_action)) +if (!empty($_action)) { $OUTPUT->set_env('action', $_action); +} // not logged in -> show login page -if (empty($USER->ID)) -{ +if (empty($USER->ID)) { // check if installer is still active - if ($CONFIG['enable_installer'] && is_readable('./installer/index.php')) - $OUTPUT->add_footer(' -
-

Installer script is still accessible

-

The install script of your RoundCube installation is still stored in its default location!

-

Please remove the whole installer folder from the RoundCube directory because - these files may expose sensitive configuration data like server passwords and encryption keys - to the public. Make sure you cannot access the installer script from your browser.

-
'); + if ($CONFIG['enable_installer'] && is_readable('./installer/index.php')) { + $OUTPUT->add_footer(html::div(array('style' => "background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em"), + html::tag('h2', array('style' => "margin-top:0.2em"), "Installer script is still accessible") . + html::p(null, "The install script of your RoundCube installation is still stored in its default location!") . + html::p(null, "Please remove the whole installer folder from the RoundCube directory because . + these files may expose sensitive configuration data like server passwords and encryption keys + to the public. Make sure you cannot access the installer script from your browser.") + ) + ); + } $OUTPUT->task = 'login'; $OUTPUT->send('login'); @@ -263,16 +213,14 @@ if (empty($USER->ID)) // handle keep-alive signal -if ($_action=='keep-alive') -{ +if ($_action=='keep-alive') { $OUTPUT->reset(); $OUTPUT->send(''); exit; } // include task specific files -if ($_task=='mail') -{ +if ($_task=='mail') { include_once('program/steps/mail/func.inc'); if ($_action=='show' || $_action=='preview' || $_action=='print') @@ -327,13 +275,12 @@ if ($_task=='mail') include('program/steps/mail/rss.inc'); // make sure the message count is refreshed - $IMAP->messagecount($_SESSION['mbox'], 'ALL', TRUE); + $IMAP->messagecount($_SESSION['mbox'], 'ALL', true); } // include task specific files -if ($_task=='addressbook') -{ +if ($_task=='addressbook') { include_once('program/steps/addressbook/func.inc'); if ($_action=='save') @@ -363,8 +310,7 @@ if ($_task=='addressbook') // include task specific files -if ($_task=='settings') -{ +if ($_task=='settings') { include_once('program/steps/settings/func.inc'); if ($_action=='save-identity') @@ -385,7 +331,6 @@ if ($_task=='settings') if ($_action=='folders' || $_action=='subscribe' || $_action=='unsubscribe' || $_action=='create-folder' || $_action=='rename-folder' || $_action=='delete-folder') include('program/steps/settings/manage_folders.inc'); - } @@ -399,6 +344,6 @@ raise_error(array( 'type' => 'php', 'line' => __LINE__, 'file' => __FILE__, - 'message' => "Invalid request"), TRUE, TRUE); + 'message' => "Invalid request"), true, true); ?> diff --git a/installer/check.php b/installer/check.php index 2afa7da29..7ca982f2d 100644 --- a/installer/check.php +++ b/installer/check.php @@ -37,7 +37,7 @@ echo ' load_defaults(); @@ -29,7 +26,7 @@ if (!empty($_POST['submit'])) { echo ' within the config/ directory of your RoundCube installation.
'; echo ' Make sure that there are no characters outside the <?php ?> brackets when saving the files.

'; - $textbox = new textarea(array('rows' => 16, 'cols' => 60, 'class' => "configfile")); + $textbox = new html_textarea(array('rows' => 16, 'cols' => 60, 'class' => "configfile")); echo '
main.inc.php
'; echo $textbox->show($RCI->create_config('main')); @@ -56,7 +53,7 @@ if (!empty($_POST['submit'])) { getprop('debug_level'); -$check_debug = new checkbox(array('name' => '_debug_level[]')); +$check_debug = new html_checkbox(array('name' => '_debug_level[]')); echo $check_debug->show(($value & 1) ? 1 : 0 , array('value' => 1, 'id' => 'cfgdebug1')); echo '
'; @@ -74,7 +71,7 @@ echo '
';
'_product_name', 'size' => 30, 'id' => "cfgprodname")); +$input_prodname = new html_inputfield(array('name' => '_product_name', 'size' => 30, 'id' => "cfgprodname")); echo $input_prodname->show($RCI->getprop('product_name')); ?> @@ -85,7 +82,7 @@ echo $input_prodname->show($RCI->getprop('product_name'));
'_skin_path', 'size' => 30, 'id' => "cfgskinpath")); +$input_skinpath = new html_inputfield(array('name' => '_skin_path', 'size' => 30, 'id' => "cfgskinpath")); echo $input_skinpath->show($RCI->getprop('skin_path')); ?> @@ -96,7 +93,7 @@ echo $input_skinpath->show($RCI->getprop('skin_path'));
'_temp_dir', 'size' => 30, 'id' => "cfgtempdir")); +$input_tempdir = new html_inputfield(array('name' => '_temp_dir', 'size' => 30, 'id' => "cfgtempdir")); echo $input_tempdir->show($RCI->getprop('temp_dir')); ?> @@ -107,7 +104,7 @@ echo $input_tempdir->show($RCI->getprop('temp_dir'));
'_log_dir', 'size' => 30, 'id' => "cfglogdir")); +$input_logdir = new html_inputfield(array('name' => '_log_dir', 'size' => 30, 'id' => "cfglogdir")); echo $input_logdir->show($RCI->getprop('log_dir')); ?> @@ -118,7 +115,7 @@ echo $input_logdir->show($RCI->getprop('log_dir'));
'_ip_check', 'id' => "cfgipcheck")); +$check_ipcheck = new html_checkbox(array('name' => '_ip_check', 'id' => "cfgipcheck")); echo $check_ipcheck->show(intval($RCI->getprop('ip_check')), array('value' => 1)); ?> @@ -131,7 +128,7 @@ echo $check_ipcheck->show(intval($RCI->getprop('ip_check')), array('value' => 1)
'_des_key', 'size' => 30, 'id' => "cfgdeskey")); +$input_deskey = new html_inputfield(array('name' => '_des_key', 'size' => 30, 'id' => "cfgdeskey")); echo $input_deskey->show($RCI->getprop('des_key')); ?> @@ -144,7 +141,7 @@ If you enter it manually please provide a string of exactly 24 chars.

'_enable_caching', 'id' => "cfgcache")); +$check_caching = new html_checkbox(array('name' => '_enable_caching', 'id' => "cfgcache")); echo $check_caching->show(intval($RCI->getprop('enable_caching')), array('value' => 1)); ?> @@ -155,7 +152,7 @@ echo $check_caching->show(intval($RCI->getprop('enable_caching')), array('value'
'_enable_spellcheck', 'id' => "cfgspellcheck")); +$check_caching = new html_checkbox(array('name' => '_enable_spellcheck', 'id' => "cfgspellcheck")); echo $check_caching->show(intval($RCI->getprop('enable_spellcheck')), array('value' => 1)); ?> @@ -168,7 +165,7 @@ echo $check_caching->show(intval($RCI->getprop('enable_spellcheck')), array('val
'_mdn_requests', 'id' => "cfgmdnreq")); +$select_mdnreq = new html_select(array('name' => '_mdn_requests', 'id' => "cfgmdnreq")); $select_mdnreq->add(array('ask the user', 'send automatically', 'ignore'), array(0, 1, 2)); echo $select_mdnreq->show(intval($RCI->getprop('mdn_requests'))); @@ -192,17 +189,17 @@ require_once 'DB.php'; $supported_dbs = array('MySQL' => 'mysql', 'MySQLi' => 'mysqli', 'PgSQL' => 'pgsql', 'SQLite' => 'sqlite'); -$select_dbtype = new select(array('name' => '_dbtype', 'id' => "cfgdbtype")); +$select_dbtype = new html_select(array('name' => '_dbtype', 'id' => "cfgdbtype")); foreach ($supported_dbs AS $database => $ext) { if (extension_loaded($ext)) { $select_dbtype->add($database, $ext); } } -$input_dbhost = new textfield(array('name' => '_dbhost', 'size' => 20, 'id' => "cfgdbhost")); -$input_dbname = new textfield(array('name' => '_dbname', 'size' => 20, 'id' => "cfgdbname")); -$input_dbuser = new textfield(array('name' => '_dbuser', 'size' => 20, 'id' => "cfgdbuser")); -$input_dbpass = new textfield(array('name' => '_dbpass', 'size' => 20, 'id' => "cfgdbpass")); +$input_dbhost = new html_inputfield(array('name' => '_dbhost', 'size' => 20, 'id' => "cfgdbhost")); +$input_dbname = new html_inputfield(array('name' => '_dbname', 'size' => 20, 'id' => "cfgdbname")); +$input_dbuser = new html_inputfield(array('name' => '_dbuser', 'size' => 20, 'id' => "cfgdbuser")); +$input_dbpass = new html_inputfield(array('name' => '_dbpass', 'size' => 20, 'id' => "cfgdbpass")); $dsnw = DB::parseDSN($RCI->getprop('db_dsnw')); @@ -228,7 +225,7 @@ echo '
'; @include_once 'DB.php'; @include_once 'MDB2.php'; -$select_dbba = new select(array('name' => '_db_backend', 'id' => "cfgdbba")); +$select_dbba = new html_select(array('name' => '_db_backend', 'id' => "cfgdbba")); if (class_exists('DB')) $select_dbba->add('DB', 'db'); @@ -254,7 +251,7 @@ echo $select_dbba->show($RCI->getprop('db_backend'));
'_default_host[]', 'size' => 30)); +$text_imaphost = new html_inputfield(array('name' => '_default_host[]', 'size' => 30)); $default_hosts = $RCI->get_hostlist(); if (empty($default_hosts)) @@ -279,7 +276,7 @@ foreach ($default_hosts as $host) {
'_default_port', 'size' => 6, 'id' => "cfgimapport")); +$text_imapport = new html_inputfield(array('name' => '_default_port', 'size' => 6, 'id' => "cfgimapport")); echo $text_imapport->show($RCI->getprop('default_port')); ?> @@ -290,7 +287,7 @@ echo $text_imapport->show($RCI->getprop('default_port'));
'_username_domain', 'size' => 30, 'id' => "cfguserdomain")); +$text_userdomain = new html_inputfield(array('name' => '_username_domain', 'size' => 30, 'id' => "cfguserdomain")); echo $text_userdomain->show($RCI->getprop('username_domain')); ?> @@ -303,7 +300,7 @@ echo $text_userdomain->show($RCI->getprop('username_domain'));
'_auto_create_user', 'id' => "cfgautocreate")); +$check_autocreate = new html_checkbox(array('name' => '_auto_create_user', 'id' => "cfgautocreate")); echo $check_autocreate->show(intval($RCI->getprop('auto_create_user')), array('value' => 1)); ?> @@ -320,7 +317,7 @@ what means that you have to create those records manually or disable this option
'_sent_mbox', 'size' => 20, 'id' => "cfgsentmbox")); +$text_sentmbox = new html_inputfield(array('name' => '_sent_mbox', 'size' => 20, 'id' => "cfgsentmbox")); echo $text_sentmbox->show($RCI->getprop('sent_mbox')); ?> @@ -333,7 +330,7 @@ echo $text_sentmbox->show($RCI->getprop('sent_mbox'));
'_trash_mbox', 'size' => 20, 'id' => "cfgtrashmbox")); +$text_trashmbox = new html_inputfield(array('name' => '_trash_mbox', 'size' => 20, 'id' => "cfgtrashmbox")); echo $text_trashmbox->show($RCI->getprop('trash_mbox')); ?> @@ -346,7 +343,7 @@ echo $text_trashmbox->show($RCI->getprop('trash_mbox'));
'_drafts_mbox', 'size' => 20, 'id' => "cfgdraftsmbox")); +$text_draftsmbox = new html_inputfield(array('name' => '_drafts_mbox', 'size' => 20, 'id' => "cfgdraftsmbox")); echo $text_draftsmbox->show($RCI->getprop('drafts_mbox')); ?> @@ -364,7 +361,7 @@ echo $text_draftsmbox->show($RCI->getprop('drafts_mbox'));
'_smtp_server', 'size' => 30, 'id' => "cfgsmtphost")); +$text_smtphost = new html_inputfield(array('name' => '_smtp_server', 'size' => 30, 'id' => "cfgsmtphost")); echo $text_smtphost->show($RCI->getprop('smtp_server')); ?> @@ -377,7 +374,7 @@ echo $text_smtphost->show($RCI->getprop('smtp_server'));
'_smtp_port', 'size' => 6, 'id' => "cfgsmtpport")); +$text_smtpport = new html_inputfield(array('name' => '_smtp_port', 'size' => 6, 'id' => "cfgsmtpport")); echo $text_smtpport->show($RCI->getprop('smtp_port')); ?> @@ -388,8 +385,8 @@ echo $text_smtpport->show($RCI->getprop('smtp_port'));
'_smtp_user', 'size' => 20, 'id' => "cfgsmtpuser")); -$text_smtppass = new textfield(array('name' => '_smtp_pass', 'size' => 20, 'id' => "cfgsmtppass")); +$text_smtpuser = new html_inputfield(array('name' => '_smtp_user', 'size' => 20, 'id' => "cfgsmtpuser")); +$text_smtppass = new html_inputfield(array('name' => '_smtp_pass', 'size' => 20, 'id' => "cfgsmtppass")); echo $text_smtpuser->show($RCI->getprop('smtp_user')); echo $text_smtppass->show($RCI->getprop('smtp_pass')); @@ -398,7 +395,7 @@ echo $text_smtppass->show($RCI->getprop('smtp_pass'));

'_smtp_user_u', 'id' => "cfgsmtpuseru")); +$check_smtpuser = new html_checkbox(array('name' => '_smtp_user_u', 'id' => "cfgsmtpuseru")); echo $check_smtpuser->show($RCI->getprop('smtp_user') == '%u' || $_POST['_smtp_user_u'] ? 1 : 0, array('value' => 1)); ?> @@ -410,7 +407,7 @@ echo $check_smtpuser->show($RCI->getprop('smtp_user') == '%u' || $_POST['_smtp_u

'_smtp_auth_type', 'id' => "cfgsmtpauth")); +$select_smtpauth = new html_select(array('name' => '_smtp_auth_type', 'id' => "cfgsmtpauth")); $select_smtpauth->add(array('(auto)', 'PLAIN', 'DIGEST-MD5', 'CRAM-MD5', 'LOGIN'), array('0', 'PLAIN', 'DIGEST-MD5', 'CRAM-MD5', 'LOGIN')); echo $select_smtpauth->show(intval($RCI->getprop('smtp_auth_type'))); */ @@ -422,7 +419,7 @@ echo $select_smtpauth->show(intval($RCI->getprop('smtp_auth_type')));
'_smtp_log', 'id' => "cfgsmtplog")); +$check_smtplog = new html_checkbox(array('name' => '_smtp_log', 'id' => "cfgsmtplog")); echo $check_smtplog->show(intval($RCI->getprop('smtp_log')), array('value' => 1)); ?> @@ -441,7 +438,7 @@ echo $check_smtplog->show(intval($RCI->getprop('smtp_log')), array('value' => 1)
'_locale_string', 'size' => 6, 'id' => "cfglocale")); +$input_locale = new html_inputfield(array('name' => '_locale_string', 'size' => 6, 'id' => "cfglocale")); echo $input_locale->show($RCI->getprop('locale_string')); ?> @@ -453,7 +450,7 @@ echo $input_locale->show($RCI->getprop('locale_string'));
'_pagesize', 'size' => 6, 'id' => "cfgpagesize")); +$input_pagesize = new html_inputfield(array('name' => '_pagesize', 'size' => 6, 'id' => "cfgpagesize")); echo $input_pagesize->show($RCI->getprop('pagesize')); ?> @@ -464,7 +461,7 @@ echo $input_pagesize->show($RCI->getprop('pagesize'));
'_prefer_html', 'id' => "cfghtmlview", 'value' => 1)); +$check_htmlview = new html_checkbox(array('name' => '_prefer_html', 'id' => "cfghtmlview", 'value' => 1)); echo $check_htmlview->show(intval($RCI->getprop('prefer_html'))); ?> @@ -475,7 +472,7 @@ echo $check_htmlview->show(intval($RCI->getprop('prefer_html')));
'_preview_pane', 'id' => "cfgprevpane", 'value' => 1)); +$check_prevpane = new html_checkbox(array('name' => '_preview_pane', 'id' => "cfgprevpane", 'value' => 1)); echo $check_prevpane->show(intval($RCI->getprop('preview_pane'))); ?> @@ -486,7 +483,7 @@ echo $check_prevpane->show(intval($RCI->getprop('preview_pane')));
'_htmleditor', 'id' => "cfghtmlcompose", 'value' => 1)); +$check_htmlcomp = new html_checkbox(array('name' => '_htmleditor', 'id' => "cfghtmlcompose", 'value' => 1)); echo $check_htmlcomp->show(intval($RCI->getprop('htmleditor'))); ?> @@ -498,7 +495,7 @@ echo $check_htmlcomp->show(intval($RCI->getprop('htmleditor'))); '_draft_autosave', 'id' => 'cfgautosave')); +$select_autosave = new html_select(array('name' => '_draft_autosave', 'id' => 'cfgautosave')); $select_autosave->add('never', 0); foreach (array(3, 5, 10) as $i => $min) $select_autosave->add("$min min", $min*60); diff --git a/installer/index.php b/installer/index.php index cb5f3febd..f6fa47975 100644 --- a/installer/index.php +++ b/installer/index.php @@ -3,8 +3,26 @@ ini_set('error_reporting', E_ALL&~E_NOTICE); ini_set('display_errors', 1); +define('INSTALL_PATH', realpath(dirname(__FILE__) . '/../').'/'); +$include_path = INSTALL_PATH . 'program/lib' . PATH_SEPARATOR . INSTALL_PATH . 'program' . PATH_SEPARATOR . INSTALL_PATH . 'program/include' . PATH_SEPARATOR . ini_get('include_path'); +set_include_path($include_path); + session_start(); +/** + * Use PHP5 autoload for dynamic class loading + * (copy from program/incllude/iniset.php) + */ +function __autoload($classname) +{ + $filename = preg_replace( + array('/MDB2_(.+)/', '/Mail_(.+)/', '/^html_.+/', '/^utf8$/'), + array('MDB2/\\1', 'Mail/\\1', 'html', 'utf8.class'), + $classname + ); + include_once $filename. '.php'; +} + ?> @@ -32,11 +50,6 @@ session_start(); load_config(); diff --git a/installer/test.php b/installer/test.php index 5be343a31..bdaf3ee52 100644 --- a/installer/test.php +++ b/installer/test.php @@ -3,10 +3,8 @@

Check config files

config)) { $RCI->pass('main.inc.php'); @@ -38,7 +36,7 @@ else if (!$read_db) { if ($RCI->configured) { $pass = false; foreach (array($RCI->config['temp_dir'],$RCI->config['log_dir']) as $dir) { - $dirpath = $dir{0} == '/' ? $dir : $docroot . '/' . $dir; + $dirpath = $dir{0} == '/' ? $dir : INSTALL_PATH . $dir; if (is_writable(realpath($dirpath))) { $RCI->pass($dir); $pass = true; @@ -68,10 +66,9 @@ if ($RCI->configured) { echo 'Backend: '; echo 'PEAR::' . strtoupper($RCI->config['db_backend']) . '
'; - $_class = 'rcube_' . strtolower($RCI->config['db_backend']); - require_once 'include/' . $_class . '.inc'; + $dbclass = 'rcube_' . strtolower($RCI->config['db_backend']); - $DB = new $_class($RCI->config['db_dsnw'], '', false); + $DB = new $dbclass($RCI->config['db_dsnw'], '', false); $DB->db_connect('w'); if (!($db_error_msg = $DB->is_error())) { $RCI->pass('DSN (write)'); @@ -164,11 +161,11 @@ if ($RCI->getprop('smtp_server')) { $pass = $RCI->getprop('smtp_pass', '(none)'); if ($user == '%u') { - $user_field = new textfield(array('name' => '_smtp_user')); + $user_field = new html_inputfield(array('name' => '_smtp_user')); $user = $user_field->show($_POST['_smtp_user']); } if ($pass == '%p') { - $pass_field = new passwordfield(array('name' => '_smtp_pass')); + $pass_field = new html_passwordfield(array('name' => '_smtp_pass')); $pass = $pass_field->show(); } @@ -176,8 +173,8 @@ if ($RCI->getprop('smtp_server')) { echo "Password: $pass
"; } -$from_field = new textfield(array('name' => '_from', 'id' => 'sendmailfrom')); -$to_field = new textfield(array('name' => '_to', 'id' => 'sendmailto')); +$from_field = new html_inputfield(array('name' => '_from', 'id' => 'sendmailfrom')); +$to_field = new html_inputfield(array('name' => '_to', 'id' => 'sendmailto')); ?>

@@ -186,8 +183,7 @@ $to_field = new textfield(array('name' => '_to', 'id' => 'sendmailto')); if (isset($_POST['sendmail']) && !empty($_POST['_from']) && !empty($_POST['_to'])) { - require_once 'lib/rc_mail_mime.inc'; - require_once 'include/rcube_smtp.inc'; + require_once 'rcube_smtp.inc'; echo '

Trying to send email...
'; @@ -214,7 +210,7 @@ if (isset($_POST['sendmail']) && !empty($_POST['_from']) && !empty($_POST['_to'] $CONFIG['smtp_pass'] = $_POST['_smtp_pass']; } - $mail_object = new rc_mail_mime(); + $mail_object = new rcube_mail_mime(); $send_headers = $mail_object->headers($headers); $status = smtp_mail($headers['From'], $headers['To'], @@ -271,15 +267,15 @@ echo '

'; $default_hosts = $RCI->get_hostlist(); if (!empty($default_hosts)) { - $host_field = new select(array('name' => '_host', 'id' => 'imaphost')); + $host_field = new html_select(array('name' => '_host', 'id' => 'imaphost')); $host_field->add($default_hosts); } else { - $host_field = new textfield(array('name' => '_host', 'id' => 'imaphost')); + $host_field = new html_inputfield(array('name' => '_host', 'id' => 'imaphost')); } -$user_field = new textfield(array('name' => '_user', 'id' => 'imapuser')); -$pass_field = new passwordfield(array('name' => '_pass', 'id' => 'imappass')); +$user_field = new html_inputfield(array('name' => '_user', 'id' => 'imapuser')); +$pass_field = new html_passwordfield(array('name' => '_pass', 'id' => 'imappass')); ?> @@ -308,8 +304,6 @@ $pass_field = new passwordfield(array('name' => '_pass', 'id' => 'imappass')); if (isset($_POST['imaptest']) && !empty($_POST['_host']) && !empty($_POST['_user'])) { - require_once 'include/rcube_imap.inc'; - echo '

Connecting to ' . Q($_POST['_host']) . '...
'; $a_host = parse_url($_POST['_host']); diff --git a/installer/welcome.html b/installer/welcome.html index 200f680f3..bfec23337 100644 --- a/installer/welcome.html +++ b/installer/welcome.html @@ -6,7 +6,7 @@

The basic requirements are: