From 22f4acadc05c16c19c312517ba494752fe385ccc Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Tue, 24 Apr 2012 01:43:21 +0200 Subject: [PATCH] Contacts: In app import (for Chrome and Firefox only) --- apps/contacts/ajax/uploadimport.php | 11 ++--------- apps/contacts/import.php | 17 +++++++++++------ apps/contacts/js/contacts.js | 8 +------- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/apps/contacts/ajax/uploadimport.php b/apps/contacts/ajax/uploadimport.php index 08bc436bc5..ab680c8823 100644 --- a/apps/contacts/ajax/uploadimport.php +++ b/apps/contacts/ajax/uploadimport.php @@ -37,16 +37,9 @@ function debug($msg) { // If it is a Drag'n'Drop transfer it's handled here. $fn = (isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : false); if($fn) { - /*$dir = OC_App::getStorage('contacts'); - $handle = $dir->touch(''.$fn); - if(!$handle) { - bailOut('Bugger!'); - } else { - bailOut('Yippie!'); - } - debug('Internal path: '.$dir->getInternalPath());*/ + $view = OC_App::getStorage('contacts'); $tmpfile = md5(rand()); - if(OC_Filesystem::file_put_contents('/'.$tmpfile, file_get_contents('php://input'))) { + if($view->file_put_contents('/'.$tmpfile, file_get_contents('php://input'))) { debug($fn.' uploaded'); OC_JSON::success(array('data' => array('path'=>'', 'file'=>$tmpfile))); } else { diff --git a/apps/contacts/import.php b/apps/contacts/import.php index c98e46995f..93af7e6281 100644 --- a/apps/contacts/import.php +++ b/apps/contacts/import.php @@ -17,8 +17,14 @@ if(is_writable('import_tmp/')){ fwrite($progressfopen, '10'); fclose($progressfopen); } -$file = OC_Filesystem::file_get_contents($_POST['path'] . '/' . $_POST['file']); -if($_POST['method'] == 'new'){ +$view = $file = null; +if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') { + $view = OC_App::getStorage('contacts'); + $file = $view->file_get_contents('/' . $_POST['file']); +} else { + $file = OC_Filesystem::file_get_contents($_POST['path'] . '/' . $_POST['file']); +} +if(isset($_POST['method']) && $_POST['method'] == 'new'){ $id = OC_Contacts_Addressbook::add(OC_User::getUser(), $_POST['addressbookname']); OC_Contacts_Addressbook::setActive($id, 1); }else{ @@ -121,10 +127,9 @@ sleep(3); if(is_writable('import_tmp/')){ unlink($progressfile); } -if(isset($_POST['istmpfile'])) { - OC_Log::write('contacts','Import: Unlinking '.$_POST['path'] . '/' . $_POST['file'], OC_Log::ERROR); - if(!OC_Filesystem::unlink($_POST['path'] . '/' . $_POST['file'])) { - OC_Log::write('contacts','Import: Error unlinking '.$_POST['path'] . '/' . $_POST['file'], OC_Log::ERROR); +if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') { + if(!$view->unlink('/' . $_POST['file'])) { + OC_Log::write('contacts','Import: Error unlinking OC_FilesystemView ' . '/' . $_POST['file'], OC_Log::ERROR); } } OC_JSON::success(array('data' => array('imported'=>$imported, 'failed'=>$failed))); diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index f471a7f25a..a3e1a1361d 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -1348,16 +1348,12 @@ Contacts={ this.droptarget = $('#import_drop_target'); console.log($('#import_drop_target').html()); $(this.droptarget).bind('dragover',function(event){ - //console.log('dragover'); $(event.target).addClass('droppable'); event.stopPropagation(); event.preventDefault(); }); $(this.droptarget).bind('dragleave',function(event){ - //console.log('dragleave'); $(event.target).removeClass('droppable'); - //event.stopPropagation(); - //event.preventDefault(); }); $(this.droptarget).bind('drop',function(event){ event.stopPropagation(); @@ -1421,12 +1417,11 @@ Contacts={ var tr = $(document.createElement('tr')) .load(OC.filePath('contacts', 'ajax', 'importaddressbook.php')); $(object).closest('tr').after(tr).hide(); - //this.loadImportHandlers(); }, doImport:function(path, file){ var id = $('#importaddressbook_dialog').find('#book').val(); console.log('Selected book: ' + id); - $.post(OC.filePath('contacts', '', 'import.php'), { id: id, path: path, file: file, istmpfile: true }, + $.post(OC.filePath('contacts', '', 'import.php'), { id: id, path: path, file: file, fstype: 'OC_FilesystemView' }, function(jsondata){ if(jsondata.status == 'success'){ Contacts.UI.Addressbooks.droptarget.html(t('contacts', 'Import done. Success/Failure: ')+jsondata.data.imported+'/'+jsondata.data.failed); @@ -1478,7 +1473,6 @@ Contacts={ } else{ OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - //alert(jsondata.data.message); } }); setTimeout(Contacts.UI.Contacts.lazyupdate, 500);