php Выгрузкафайловизинфоблоковсогласноструктуреразделов
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Выгрузкафайловизинфоблоковсогласноструктуреразделов相关的知识,希望对你有一定的参考价值。
<?php
define('BX_BUFFER_USED', true);
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
define('NO_AGENT_STATISTIC', true);
define('STOP_STATISTICS', true);
define('SITE_ID', 's1');
//$_SERVER['DOCUMENT_ROOT'] = realpath(__DIR__ . '/../../../');
require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
//error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);
ignore_user_abort(true);
while (ob_get_level()) {
ob_end_flush();
}
if (!CModule::IncludeModule('iblock')) {
echo 'Не удалось подключить модуль инфоблоков' . PHP_EOL;
exit;
}
$EVENT = 86;
$REGIST_EVENT = 91;
$REGIST_EVENT_NC = 109;
// Получаем список секций с id
$arSelect = array('ID', 'NAME');
$arFilter = array('IBLOCK_ID' => $EVENT, 'ACTIVE' => 'Y', 'GLOBAL_ACTIVE' => 'Y');
$res = CIBlockSection::GetList(array('SORT'=>'ASC'), $arFilter, true, $arSelect);
$section = array();
while($ob = $res->GetNext()) {
$section[$ob['ID']] = $ob['NAME'];
}
// Вытаскиваем название события и его тип
$filter = array(
'IBLOCK_ID' => $EVENT,
);
$arSelect = array(
'ID',
'IBLOCK_ID',
'NAME',
'IBLOCK_SECTION_ID',
);
$events = CIBlockElement::GetList(array(), $filter, false, false, $arSelect);
$arEvents = array();
while ($dbRow = $events->GetNext()) {
if (isset($section[$dbRow['IBLOCK_SECTION_ID']])) {
$arEvents[md5($dbRow['NAME'])] = array(
'section_name' => trim($section[$dbRow['IBLOCK_SECTION_ID']]),
'original_name' => trim($dbRow['NAME']),
);
}
//DebugMessage($dbRow['NAME']);
}
$filter = array(
'IBLOCK_ID' => $REGIST_EVENT,
'ACTIVE' => 'Y',
"?PROPERTY_HIDDEN_EVENT_DATE" => "2017",
);
$arSelect = array(
'ID',
'IBLOCK_ID',
'NAME',
'PROPERTY_HIDDEN_EVENT_DATE',
'PROPERTY_HIDDEN_EVENT_NAME',
'PROPERTY_DOC_REFERENCE_FORM',
'PROPERTY_DOC_REGISTRY_STATEMENT',
'PROPERTY_ISMSPFILE',
'PROPERTY_ISMANUFACTURERFILE',
'PROPERTY_APPLICATIONDOC',
'PROPERTY_DOCS',
'PROPERTY_COMPANY_NAME',
);
$arGroupBy = array();
$arTempData = array();
// Корневая папка
$root = $_SERVER['DOCUMENT_ROOT'] . '/upload/event_docs/';
$rootFile = $_SERVER['DOCUMENT_ROOT'];
$eventsForm = CIBlockElement::GetList(array(), $filter, false, false, $arSelect);
$arFolder = array(
'kongvist' => array(
'folder_name' => 'Конгрессно-выставочные',
'folders_event' => array(),
),
'degust' => array(
'folder_name' => 'Дегустационно-демонстрационные',
'folders_event' => array(),
),
);
while ($dbRow = $eventsForm->GetNext()) {
//$FILE_DOCS = CFile::GetPath($dbRow['PROPERTY_DOCS_VALUE']);
//DebugMessage($dbRow);
$name = trim($dbRow['~PROPERTY_HIDDEN_EVENT_NAME_VALUE']);
$cName = trim($dbRow['~PROPERTY_COMPANY_NAME_VALUE']);
$hName = md5($name);
$hcName = md5($cName);
$arDocs = array();
if (!empty($dbRow['PROPERTY_DOCS_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_DOCS_VALUE']);
}
if (!empty($dbRow['PROPERTY_DOC_REFERENCE_FORM_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_DOC_REFERENCE_FORM_VALUE']);
}
if (!empty($dbRow['PROPERTY_DOC_REFERENCE_FORM_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_DOC_REFERENCE_FORM_VALUE']);
}
if (!empty($dbRow['PROPERTY_DOC_REGISTRY_STATEMENT_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_DOC_REGISTRY_STATEMENT_VALUE']);
}
if (!empty($dbRow['PROPERTY_ISMSPFILE_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_ISMSPFILE_VALUE']);
}
if (!empty($dbRow['PROPERTY_ISMANUFACTURERFILE_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_ISMANUFACTURERFILE_VALUE']);
}
if (!empty($dbRow['PROPERTY_APPLICATIONDOC_VALUE'])) {
$arDocs[] = CFile::GetPath($dbRow['PROPERTY_APPLICATIONDOC_VALUE']);
}
// Создадим структуру
if (isset($arEvents[$hName])) {
if ($arEvents[$hName]['section_name'] == 'Конгрессно-выставочные') {
if (isset($arFolder['kongvist']['folders_event'][$hName])) {
if (isset($arFolder['kongvist']['folders_event'][$hName]['folders_comp'][$hcName])) {
$arDocs_dop = $arFolder['kongvist']['folders_event'][$hName]['folders_comp'][$hcName]['folders_docs'];
$arFolder['kongvist']['folders_event'][$hName]['folders_comp'][$hcName]['folders_docs'] = array_merge($arDocs_dop, $arDocs);
//echo "STOP - НЕСКОЛЬКО ФОРМ ОТ ОДНОЙ КОМПАНИИ !!! " . $dbRow['ID'] . ' ' . $name . '<br> ';
} else {
$arFolder['kongvist']['folders_event'][$hName]['folders_comp'][$hcName] = array(
'folder_name' => $cName,
'folders_docs' => $arDocs,
);
}
} else {
$arFolder['kongvist']['folders_event'][$hName] = array(
'folder_name' => $name,
);
}
} elseif ($arEvents[$hName]['section_name'] == 'Дегустационно-демонстрационные') {
if (isset($arFolder['degust']['folders_event'][$hName])) {
if (isset($arFolder['degust']['folders_event'][$hName]['folders_comp'][$hcName])) {
$arDocs_dop = $arFolder['degust']['folders_event'][$hName]['folders_comp'][$hcName]['folders_docs'];
$arFolder['degust']['folders_event'][$hName]['folders_comp'][$hcName]['folders_docs'] = array_merge($arDocs_dop, $arDocs);
//echo "STOP - НЕСКОЛЬКО ФОРМ ОТ ОДНОЙ КОМПАНИИ !!! " . $dbRow['ID'] . ' ' . $name . '<br> ';
} else {
$arFolder['degust']['folders_event'][$hName]['folders_comp'][$hcName] = array(
'folder_name' => $cName,
'folders_docs' => $arDocs,
);
}
} else {
$arFolder['degust']['folders_event'][$hName] = array(
'folder_name' => $name,
);
}
}
}
}
// Наполним каталог
foreach ($arFolder as $key => $value) {
if (isset($value['folder_name']) && !empty($value['folder_name'])) {
$type_root = $root . $value['folder_name'] . '/';
if (isset($value['folders_event']) && is_array($value['folders_event'])) {
foreach ($value['folders_event'] as $key2 => $events) {
if (isset($events['folder_name']) && !empty($events['folder_name'])) {
$event_root = $type_root . $events['folder_name'] . '/';
if (isset($events['folders_comp']) && is_array($events['folders_comp'])) {
foreach ($events['folders_comp'] as $key3 => $comp) {
if (isset($comp['folder_name']) && !empty($comp['folder_name'])) {
$comp_root = $event_root . $comp['folder_name'] . '/';
// если папки не существует создаем её
if (!folder_exist($comp_root)) {
if (mb_strlen($comp['folder_name']) > 70) {
$temp = substr($comp['folder_name'], 0, 70);
$comp_root = $event_root . $temp . '/';
echo "создана папка с обрезанным названием компании " . $comp_root . ' <br>';
}
if (!mkdir($comp_root, 0777, true)) {
die('Не удалось создать директории... ' . $comp_root);
}
}
if (isset($comp['folders_docs']) && is_array($comp['folders_docs'])) {
foreach ($comp['folders_docs'] as $key4 => $doc) {
if (!empty($doc)) {
if (file_exists($rootFile . $doc)) {
$oldFile = $rootFile . $doc;
$newFile = $comp_root . basename($doc);
if (!copy($oldFile, $newFile)) {
echo "неудалось скопировать файл $doc..." . ' <br>';
} else {
echo "файл $doc скопирован... " . ' <br>';
}
} else {
echo 'Файл ' . $doc . ' не найден <br>';
}
}
}
}
}
}
}
}
}
}
}
}
function folder_exist($folder) {
// Get canonicalized absolute pathname
$path = realpath($folder);
// If it exist, check if it's a directory
return ($path !== false AND is_dir($path)) ? $path : false;
}
DebugMessage($_SERVER['DOCUMENT_ROOT']);
echo "string";
以上是关于php Выгрузкафайловизинфоблоковсогласноструктуреразделов的主要内容,如果未能解决你的问题,请参考以下文章
php ФормаобратнойсвязисзагрузкойфайлавWordPressнаосновеплагинаAjaxSimply。
php Рекурсивноекопированиеразделовинфоблокавновыйинфоблок
sh Cоздатьtar-архивпроектаизаписатьеговфайл~/ prj.tar。 Внутринегофайлыбудутнаходитсявпапкеproj-1.2.3
php ЗагружаемфайлпоURL,перемещаемвпапкуuploads,привязываемфайлкюзеру,обновляеммету
php Загрузкафайлов,проверяемвременныйпуть,еслинеок - делаемправильнымего