| +-----------------------------------------------------------------------+ */ // suppress php notices @ini_set('error_reporting', E_ALL&~E_NOTICE); // include the converter class file require_once('vcard_convert.php'); require_once('utils.php'); if (!empty($_FILES['_vcards'])) { // instantiate a parser object $conv = new vcard_convert(array( 'mailonly' => !empty($_POST['_mailonly']), 'phoneonly' => !empty($_POST['_phoneonly']), 'accesscode' => preg_replace('/[^1-9]/', '', $_POST['_accesscode']), )); // check for errors if ($err = $_FILES['_vcards']['error']) { $GLOBALS['error_msg'] = ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) ? "The uploaded file was too big! Maximum file size allowed: ".show_bytes(parse_bytes(ini_get('upload_max_filesize'))) : "Upload failed, please try again"; } // parse the vCard file else if ($conv->fromFile($_FILES['_vcards']['tmp_name'])) { $ext = $_POST['_format'] == 'gmail' ? 'csv' : ($_POST['_format'] == 'img' ? 'zip' : $_POST['_format']); $fname = asciiwords(preg_replace('/\.[a-z]+$/i', '', $_FILES['_vcards']['name'])); header(sprintf('Content-Type: text/%s', $ext)); header(sprintf('Content-Disposition: attachment; filename="%s.%s"', $fname, $ext)); if ($_POST['_format'] == 'ldif') { print $conv->toLdif(); exit; } else if ($_POST['_format'] == 'ldap') { // Clean the input dn modifier from dangerous chars $dnID = substr(preg_replace('/[^\da-z=,_ -]/i', '', $_POST['_dn']), 0, 255); print $conv->toLdif($dnID ? $dnID : "", null, $_POST['_encoding']); exit; } else if ($_POST['_format'] == 'gmail') { print $conv->toGmail(); exit; } else if ($_POST['_format'] == 'fritzbox') { print $conv->toFritzBox(); exit; } else if ($_POST['_format'] == 'csv') { $header = $_POST['_header'] === '1' ? true : false; $delimiter = $_POST['_delimiter'] == 'tab' ? "\t" : $_POST['_delimiter']; print $conv->toCSV($delimiter, $header, $_POST['_encoding'], $_POST['_newlines']); exit; } // extract all images from the vcard file else if ($_POST['_format'] == 'img') { mkdir($tmpdir = __DIR__ . '/tmp/'.md5(mt_rand())); // Diretory safe naming if ($conv->toImages($tmpdir)) { shell_exec('cd ' . escapeshellarg($tmpdir) . "; zip $fname *"); $zipfile = "$tmpdir/$fname.zip"; } if ($zipfile && is_readable($zipfile)) { header('Content-Type: application/zip', true); readfile($zipfile); $success = true; } else { $GLOBALS['error_msg'] = "No images were found in this file."; header('Content-Type: text/html', true); header('Content-Disposition: inline', true); } shell_exec('rm -rf '.escapeshellarg($tmpdir)); if ($success) exit; } } else $GLOBALS['error_msg'] = "Could not parse vCard file. Either it is empty or of a format not supported."; } include('page.html'); ?>