error)) { // error should not happen here, because src/addressbook.php would // freak out first. aie_error_box(nl2br(htmlspecialchars($abook->error)),'',true); } if (sqGetGlobalVar('backend',$backend,SQ_POST)) { $backend = (int) $backend; } else { $backend = $abook->localbackend; } /* Get field delimiter */ if (! sqgetGlobalVar('field_delimiter',$field_delimiter,SQ_POST) || ! in_array($field_delimiter,array("'",'"',',',';','custom'))) { $field_delimiter = ','; } elseif ($field_delimiter=='custom') { if (! sqgetGlobalVar('custom_field_delimiter',$field_delimiter,SQ_POST)) { $field_delimiter = ','; } } /* Get text delimiter */ if (! sqgetGlobalVar('text_delimiter',$text_delimiter,SQ_POST) || ! in_array($text_delimiter,array("'",'"',',',';','custom'))) { $text_delimiter = '"'; } elseif ($text_delimiter=='custom') { if (! sqgetGlobalVar('custom_text_delimiter',$text_delimiter,SQ_POST)) { $text_delimiter = '"'; } } /* list addresses */ $rows = $abook->list_addr($backend); /* switch domain */ bindtextdomain('abook_import_export',SM_PATH . 'locale'); textdomain('abook_import_export'); if (function_exists('bind_textdomain_codeset')) { if ($squirrelmail_language == 'ja_JP') { bind_textdomain_codeset ('abook_import_export', 'EUC-JP'); } else { bind_textdomain_codeset ('abook_import_export', $default_charset ); } } /* Compare text and field delimiters */ if ($text_delimiter == $field_delimiter) { $error_msg = html_tag('p',_("You must use different symbols for text and field delimiters.")) .html_tag('p',sprintf(_("Return to main %sAddress Book%s page."), '', ''), 'center'); aie_error_box($error_msg,'',true); } /* count returned results */ if (! count($rows)) { $error_msg = html_tag('p',_("Selected address book is empty.")) .html_tag('p',sprintf(_("Return to main %sAddress Book%s page."), '', ''), 'center'); aie_error_box($error_msg,'',true); } // csv mime type is 'text/comma-separated-values' and not 'application/CSV' SendDownloadHeaders('text', 'comma-separated-values', $username . '-addresses.csv', 1); /* header row */ $first_key = true; foreach(array_keys(current($rows)) as $abook_field) { if ($abook_field !='extra' && $abook_field!='backend' && $abook_field!='source') { if ($first_key) { $first_key = false; } else { echo $field_delimiter; } switch ($abook_field) { case 'firstname': $name = 'First Name'; break; case 'lastname': $name = 'Last Name'; break; case 'email': $name = 'E-mail Address'; break; case 'name': case 'label': default: $name = $abook_field; break; } echo $text_delimiter .str_replace($text_delimiter,'\\' . $text_delimiter,$name) .$text_delimiter; } } echo "\r\n"; foreach($rows as $row) { /* remove internal SquirrelMail fields */ unset($row['backend']); // backend id unset($row['source']); // backend name unset($row['extra']); // extra backend field $first_key = true; foreach($row as $key => $value) { if ($first_key) { $first_key = false; } else { echo $field_delimiter; } echo $text_delimiter; // escape text delimiter echo str_replace($text_delimiter,'\\' . $text_delimiter,$value); echo $text_delimiter; } echo "\r\n"; }