You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.7 KiB
101 lines
3.7 KiB
<?php
|
|
/*
|
|
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
|
|
* @license http://www.dzzoffice.com/licenses/license.txt
|
|
* @package DzzOffice
|
|
* @link http://www.dzzoffice.com
|
|
* @author zyx(zyx@dzz.cc)
|
|
*/
|
|
if (!defined('IN_DZZ')) {
|
|
exit('Access Denied');
|
|
}
|
|
$h0 = array('username' => lang('compellation'), 'email' => lang('email'), 'password' => lang('user_login_password'), 'birth' => lang('date_birth'), 'gender' => lang('gender'), 'mobile' => lang('cellphone'), 'weixinid' => lang('weixin'), 'orgname' => lang('category_department'), 'job' => lang('department_position'));
|
|
$h1 = getProfileForImport();
|
|
$h0 = array_merge($h0, $h1);
|
|
$title = lang('bulk_import_user_template');
|
|
$objPHPExcel = new PHPExcel();
|
|
$objPHPExcel->getProperties()->setCreator($_G['username'])
|
|
->setTitle($title . ' - DzzOffice')
|
|
->setSubject($title)
|
|
->setDescription($title . ' Export By DzzOffice ' . date('Y-m-d H:i:s'))
|
|
->setKeywords($title)
|
|
->setCategory($title);
|
|
$list = array();
|
|
// Create a first sheet
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
$j = 0;
|
|
foreach ($h0 as $key => $value) {
|
|
$index = getColIndex($j) . '1';
|
|
$objPHPExcel->getActiveSheet()->setCellValue($index, $value);
|
|
if ($key == 'username' || $key == 'email') {
|
|
$objPHPExcel->getActiveSheet()->getStyle($index)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);
|
|
}
|
|
$list[1][$index] = $value;
|
|
$j++;
|
|
}
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
|
|
$filename = $_G['setting']['attachdir'] . './cache/' . random(5) . '.xlsx';
|
|
$objWriter->save($filename);
|
|
|
|
|
|
$name = $title . '.xlsx';
|
|
$name = '"' . (strtolower(CHARSET) == 'utf-8' && (strexists($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strexists($_SERVER['HTTP_USER_AGENT'], 'rv:11')) ? urlencode($name) : $name) . '"';
|
|
|
|
$filesize = filesize($filename);
|
|
$chunk = 10 * 1024 * 1024;
|
|
if (!$fp = @fopen($filename, 'rb')) {
|
|
exit(lang('export_failure'));
|
|
}
|
|
dheader('Date: ' . gmdate('D, d M Y H:i:s', TIMESTAMP) . ' GMT');
|
|
dheader('Last-Modified: ' . gmdate('D, d M Y H:i:s', TIMESTAMP) . ' GMT');
|
|
dheader('Content-Encoding: none');
|
|
dheader('Content-Disposition: attachment; filename=' . $name);
|
|
dheader('Content-Type: application/octet-stream');
|
|
dheader('Content-Length: ' . $filesize);
|
|
@ob_end_clean();
|
|
if (getglobal('gzipcompress')) @ob_start('ob_gzhandler');
|
|
while (!feof($fp)) {
|
|
echo fread($fp, $chunk);
|
|
@ob_flush(); // flush output
|
|
@flush();
|
|
}
|
|
@unlink($filename);
|
|
exit();
|
|
|
|
function getColIndex($index) {
|
|
$string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
$ret = '';
|
|
if ($index > 255) return '';
|
|
for ($i = 0; $i < floor($index / strlen($string)); $i++) {
|
|
$ret = $string[$i];
|
|
}
|
|
$ret .= $string[($index % (strlen($string)))];
|
|
return $ret;
|
|
}
|
|
|
|
function getProfileForImport() {
|
|
global $_G;
|
|
if (empty($_G['cache']['profilesetting'])) {
|
|
loadcache('profilesetting');
|
|
}
|
|
$profilesetting = $_G['cache']['profilesetting'];
|
|
$ret = array();
|
|
foreach ($profilesetting as $key => $value) {
|
|
if (in_array($key, array('department', 'realname', 'gender', 'birthyear', 'birthmonth', 'birthday', 'constellation', 'zodiac'))) continue;
|
|
elseif ($value['formtype'] == 'file') continue;
|
|
elseif ($value['formtype'] == 'select' || $value['formtype'] == 'radio') {
|
|
$ret[$key] = $value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'|',$value['choices']).')':'')*/
|
|
;
|
|
} elseif ($value['formtype'] == 'checkbox') {
|
|
$ret[$key] = $value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'-',$value['choices']).')':'')*/
|
|
;
|
|
} else {
|
|
$ret[$key] = $value['title'];
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
?>
|