Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/school1535.yacl.site/
Upload File :
Current File : /home/bitrix/ext_www/school1535.yacl.site/oktest.php

<?
define("NOT_CHECK_PERMISSIONS", true);
if (!$_SERVER["DOCUMENT_ROOT"]) {
    $_SERVER["DOCUMENT_ROOT"] = realpath(__DIR__);
} else {
//    die ('Script for console only');
}

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
require_once $_SERVER['DOCUMENT_ROOT'] . '/local/composer/vendor/autoload.php';

use Bitrix\Main\Type\DateTime;
use Bitrix\Main\Loader;
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
use Bitrix\Disk\Security\DiskSecurityContext;
use Bitrix\Disk\Security\SecurityContext;
use Bitrix\Disk\Storage;
use Bitrix\Main\Localization\Loc;

Loader::includeModule('tasks');
Loader::includeModule('im');
Loader::includeModule('blog');

$userList = \Bitrix\Main\UserTable::getList([
    'filter' => ['ACTIVE' => 'Y', '!UF_DEPARTMENT' => false],
    'select' => ['ID', 'LOGIN', 'EMAIL', 'UF_DEPARTMENT'],
    'order' => ['LAST_NAME' => 'ASC', 'NAME' => 'ASC', 'SECOND_NAME' => 'ASC'],
]);

$depUsers = [];
while($item = $userList->fetch()) {
    if (is_int($item['UF_DEPARTMENT'])) {
        $depUsers[$item['UF_DEPARTMENT']][] = $item;
    } elseif (is_array($item['UF_DEPARTMENT'])) {
        foreach ($item['UF_DEPARTMENT'] as $dep) {
            $depUsers[$dep][] = $item;
        }
    }
}

$sectionList = CIBlockSection::GetList(['LEFT_MARGIN' => 'ASC'], ['IBLOCK_ID' => 5]);
//okp($depUsers);
//okp($all);

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$spreadsheet->getProperties()
    ->setCreator('Portal')
    ->setLastModifiedBy('Portal')
    ->setTitle('Телефонный справочник ТОФК');

$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->setTitle('Телефонный справочник');

$all = [];
$row = 0;
$userColumns = [
    1 => 'FULL_NAME',
    2 => 'WORK_POSITION',
    3 => 'PHONE',
    4 => 'FAX',
    5 => 'MOBILE',
    6 => 'BIRTHDATE',
    7 => 'EMAIL',
];
while($item = $sectionList->Fetch()) {
    ++$row;
    $column = 1;
    $level = str_repeat('.', $item['DEPTH_LEVEL'] - 1);
    $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($column, $row, $level . $item['NAME']);
    $spreadsheet->getActiveSheet()->getRowDimension($row)->setOutlineLevel($item['DEPTH_LEVEL'])->setVisible(true)->setCollapsed(true);
//    echo $level . $item['NAME'] . "\n<br>";
    foreach ($depUsers[$item['ID']] as $userInfo) {
        ++$row;
        foreach ($userColumns as $columnId => $columnCode) {
            $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($columnId, $row, $userInfo[$columnCode] ? $userInfo[$columnCode] : $columnCode);
            $spreadsheet->getActiveSheet()->getRowDimension($row)->setOutlineLevel($item['DEPTH_LEVEL']);
        }
//        echo $level . $userInfo['ID'] . ': ' . $userInfo['LOGIN'] . "\n<br>";
    }
    $all[] = $item;
}


// Redirect output to a client’s web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="phone_list.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0

$writer = PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

die();