thomascube
2010-03-02 7c9d922b96f9a88b350d6e07f5bde84ccc40f9b0
program/steps/addressbook/import.inc
@@ -5,7 +5,7 @@
 | program/steps/addressbook/import.inc                                  |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2008, RoundCube Dev. - Switzerland                      |
 | Copyright (C) 2008-2009, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
@@ -25,11 +25,15 @@
function rcmail_import_form($attrib)
{
  global $RCMAIL, $OUTPUT;
  $target = get_input_value('_target', RCUBE_INPUT_GPC);
  
  $attrib += array('id' => "rcmImportForm");
  
  $abook = new html_hiddenfield(array('name' => '_target', 'value' => $target));
  $form = $abook->show();
  $upload = new html_inputfield(array('type' => 'file', 'name' => '_file', 'id' => 'rcmimportfile', 'size' => 40));
  $form = html::p(null, html::label('rcmimportfile', rcube_label('importfromfile')) . html::br() . $upload->show());
  $form .= html::p(null, html::label('rcmimportfile', rcube_label('importfromfile')) . html::br() . $upload->show());
  
  $check_replace = new html_checkbox(array('name' => '_replace', 'value' => 1, 'id' => 'rcmimportreplace'));
  $form .= html::p(null, $check_replace->show(get_input_value('_replace', RCUBE_INPUT_GPC)) .
@@ -58,7 +62,7 @@
  global $IMPORT_STATS;
  
  $vars = get_object_vars($IMPORT_STATS);
  $vars['names'] = join(', ', $IMPORT_STATS->names);
  $vars['names'] = join(', ', array_map('Q', $IMPORT_STATS->names));
  
  return html::p($attrib, Q(rcube_label(array(
    'name' => 'importconfirm',
@@ -74,19 +78,20 @@
function rcmail_import_buttons($attrib)
{
  global $IMPORT_STATS, $OUTPUT;
  $target = get_input_value('_target', RCUBE_INPUT_GPC);
  
  $attrib += array('type' => "input");
  $attrib += array('type' => 'input');
  unset($attrib['name']);
  
  if (is_object($IMPORT_STATS)) {
    $attrib['class'] = trim($attrib['class'] . ' mainaction');
    $out = $OUTPUT->button(array('command' => "list", 'label' => "done") + $attrib);
    $out = $OUTPUT->button(array('command' => 'list', 'prop' => $target, 'label' => 'done') + $attrib);
  }
  else {
    $out = $OUTPUT->button(array('command' => "list", 'label' => "cancel") + $attrib);
    $out = $OUTPUT->button(array('command' => 'list', 'label' => 'cancel') + $attrib);
    $out .= ' ';
    $attrib['class'] = trim($attrib['class'] . ' mainaction');
    $out .= $OUTPUT->button(array('command' => "import", 'label' => "import") + $attrib);
    $out .= $OUTPUT->button(array('command' => 'import', 'label' => 'import') + $attrib);
  }
  
  return $out;
@@ -98,9 +103,9 @@
$importstep = 'rcmail_import_form';
if ($_FILES['_file']['tmp_name'] && is_uploaded_file($_FILES['_file']['tmp_name'])) {
  $replace = (bool)get_input_value('_replace', RCUBE_INPUT_GPC);
  $CONTACTS = $RCMAIL->get_address_book(null, true);
  $target = get_input_value('_target', RCUBE_INPUT_GPC);
  $CONTACTS = $RCMAIL->get_address_book($target, true);
  // let rcube_vcard do the hard work :-)
  $vcards = rcube_vcard::import(file_get_contents($_FILES['_file']['tmp_name']));
@@ -142,19 +147,22 @@
        }
      }
      
      $success = $CONTACTS->insert(array(
      $a_record = array(
        'name' => $vcard->displayname,
        'firstname' => $vcard->firstname,
        'surname' => $vcard->surname,
        'email' => $email,
        'vcard' => $vcard->export(),
      ));
      );
      
      if ($success) {
      $plugin = $RCMAIL->plugins->exec_hook('create_contact', array('record' => $a_record, 'source' => null));
      $a_record = $plugin['record'];
      // insert record and send response
      if (!$plugin['abort'] && ($success = $CONTACTS->insert($a_record))) {
        $IMPORT_STATS->inserted++;
        $IMPORT_STATS->names[] = $vcard->displayname;
      }
      else {
      } else {
        $IMPORT_STATS->errors++;
      }
    }
@@ -165,8 +173,7 @@
else if ($err = $_FILES['_file']['error']) {
  if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
    $OUTPUT->show_message('filesizeerror', 'error', array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))));
  }
  else {
  } else {
    $OUTPUT->show_message('fileuploaderror', 'error');
  }
}