You should have received a copy of the GNU Public
License along with this package; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
$need_horde_db = 1;
require '../lib/horde.lib';
require './lib/imp.lib'; /* IMPlib is the IMP function library */
require '../config/horde.php3';
require './config/defaults.php3'; /* Defaults Configuration File */
require './config/lang.php3';
if ($default->use_ldap_search) include './config/ldap.php3';
require './config/html.php3';
$language = select_lang();
require './lib/postconf.php3';
require "./locale/$language/contacts.lang";
require './locale/local/contacts.lang';
$help_file = 'contacts.help';
require "./locale/defines/$help_file";
/* Setup the this_client object */
$this_client = new WebClient;
error_reporting($default->error_level); /* set error level from imp.lib */
/* retrieve authentication information from session */
page_open(array('sess' => 'HordeSession'));
page_close();
if (!isset($imp) || !is_object($imp)) { echo ''; exit; }
$imp->unpickle();
/* proceed only with a valid login */
/* doctype */
require "$default->include_dir/doctype.inc";
/* Run through the action handlers */
if (isset($actionID)) {
/* translate non-int values into the correct int */
if (strcspn($actionID, '0123456789')) {
$actionID = isset($actions[$actionID]) ? $actions[$actionID] : $actions[htmlentities($actionID)];
}
switch($actionID) {
case NO_ACTION:
break;
case DELETE_ADDR:
if ($new_address) {
if (!(imp_delete_address($new_address, $imp->user, $imp->server))) {
$errormsg = $lang->error_delete_address;
}
}
$new_address = '';
break;
case ADD_CONTACT:
if ($imp && $index && $bodypart) {
$imp->authenticate();
$h = imap_header($imp->stream, imap_msgno($imp->stream, $index));
if (isset($h->reply_toaddress)) { $new_address = chop(htmlspecialchars($h->reply_toaddress)); }
elseif (isset($h->fromaddress)) { $new_address = chop(htmlspecialchars($h->fromaddress )); }
else $new_address = '';
}
break;
case ADD_ADDR:
if (!empty($new_address) && !empty($new_nickname) && !empty($new_fullname)) {
// escape/quote special characters as necessary
if ($new_nickname[0] == '"' && $new_nickname[strlen($new_nickname) - 1] == '"') {
$new_nickname = substr($new_nickname, 1, strlen($new_nickname) - 2);
}
$nickname = $new_nickname;
$clean_nickname = imap_rfc822_write_address('', '', $nickname);
$clean_nickname = substr($clean_nickname, 0, strlen($clean_nickname)-4);
$clean_nickname = str_replace("'", "\\'", $clean_nickname);
if ($new_fullname[0] == '"' && $new_fullname[strlen($new_fullname) - 1] == '"') {
$new_fullname = substr($new_fullname, 1, strlen($new_fullname) - 2);
}
$fullname = $new_fullname;
$clean_fullname = imap_rfc822_write_address('', '', $fullname);
$clean_fullname = substr($clean_fullname, 0, strlen($clean_fullname)-4);
$clean_fullname = str_replace("'", "\\'", $clean_fullname);
$clean_address = str_replace(',', '', $new_address);
$clean_address = str_replace("'", '', $clean_address);
$errormsg = '';
if ($clean_address != $new_address) {
$errormsg .= $lang->error_address_chars;
echo '';
}
$clean_address = addslashes($clean_address);
if (!(imp_add_address($clean_address, $clean_nickname, $clean_fullname, $imp->user, $imp->server))) {
$errormsg .= $lang->error_create_address;
}
}
$new_address = '';
break;
case UPDATE_ADDR:
if ($old_address && $new_address && $new_nickname && $new_fullname) {
// escape/quote special characters as necessary
if ($new_nickname[0] == '"' && $new_nickname[strlen($new_nickname) - 1] == '"') {
$new_nickname = substr($new_nickname, 1, strlen($new_nickname) - 2);
}
$nickname = $new_nickname;
$clean_nickname = imap_rfc822_write_address('', '', $nickname);
$clean_nickname = substr($clean_nickname, 0, strlen($clean_nickname)-4);
$clean_nickname = str_replace("'", "\\'", $clean_nickname);
if ($new_fullname[0] == '"' && $new_fullname[strlen($new_fullname) - 1] == '"') {
$new_fullname = substr($new_fullname, 1, strlen($new_fullname) - 2);
}
$fullname = $new_fullname;
$clean_fullname = imap_rfc822_write_address('', '', $fullname);
$clean_fullname = substr($clean_fullname, 0, strlen($clean_fullname)-4);
$clean_fullname = str_replace("'", "\\'", $clean_fullname);
$clean_address = str_replace(',', '', $new_address);
$clean_address = str_replace("'", '', $clean_address);
$errormsg = '';
if ($clean_address != $new_address) {
$errormsg .= $lang->error_address_chars;
echo '';
}
$clean_address = addslashes($clean_address);
if (!(imp_update_address($old_address, $clean_address, $clean_nickname, $clean_fullname, $imp->user, $imp->server))) {
$errormsg = $lang->error_update_address;
}
}
$new_address = '';
break;
}
}
$title = $lang->addressbook_title;
$sidebar = false;
require("$default->include_dir/contacts/header.inc");
if (!isset($new_address)) { $new_address = ''; }
$addresses = imp_get_addresses($imp->user, $imp->server);
$options = '';
if (isset($addresses) && is_array($addresses)) {
for ($i = 0; $i < count($addresses); $i++) {
if (is_array($addresses[$i]) && sizeof($addresses[$i] > 1)) {
$options .= '