public static function Request($action, $site) { global $USER; if (!$USER->CanDoOperation('fileman_view_file_structure')) { return; } $io = CBXVirtualIo::GetInstance(); CUtil::JSPostUnescape(); switch ($action) { case "count": case "search": case "replace": $oSearch = new CFilemanSearch(); $oSearch->Init(array('lastPath' => isset($_POST['last_path']) ? $_POST['last_path'] : false, 'bCount' => $action == "count", 'bReplace' => $action == "replace", "fileName" => trim($_POST['file']), "phrase" => trim($_POST['phrase']), "replacePhrase" => trim($_POST['replace_phrase']), "dir" => CFilemanUtils::NormalizePath($_POST['dir']), "bSubdir" => $_POST['subdir'], "dateFrom" => $_POST['date_from'], "dateTo" => $_POST['date_to'], "sizeFrom" => intVal($_POST['size_from']), "sizeTo" => intVal($_POST['size_to']), "entire" => $_POST['entire'], "bCaseSens" => $_POST['case_sens'], "bDirsToo" => $_POST['dirs_too'], "ssess" => $_POST['ssess'], "bInResult" => $_POST['in_result'], "site" => CFileMan::__CheckSite($_GET['fu_site']))); CFileMan::SaveLastPath(CFilemanUtils::NormalizePath($_POST['dir'])); break; case "clean_old": CFilemanSearch::CleanOldSearchResult(); break; case "search_save_config": CFilemanSearch::SaveConfig(array("advMode" => (bool) $_POST['adv_mode'], "bSubdir" => (bool) $_POST['subdir'], "entire" => (bool) $_POST['entire'], "bCaseSens" => (bool) $_POST['case_sens'], "bDirsToo" => (bool) $_POST['dirs_too'])); break; case "copy_save_config": CFilemanCopy::SaveConfig(array("advMode" => (bool) $_POST['adv_mode'], "caseOption" => $_POST['case_option'])); break; case "copy": case "move": $oCopy = new CFilemanCopy(); $oCopy->Init(array("bCopy" => $action == "copy", "caseOption" => $_POST['case_option'], "arFiles" => $_POST['files'], "copyTo" => $_POST['copy_to'], "createCopyTo" => $_POST['create_copy_to'] == "Y", "userCaseAnswer" => isset($_POST['uc_answer']) ? $_POST['uc_answer'] : false, "userCaseToAll" => isset($_POST['uc_to_all']) ? $_POST['uc_to_all'] : false, "userCaseLastPath" => isset($_POST['uc_last_path']) ? $_POST['uc_last_path'] : false, "bSearch" => $_POST['search'] == "Y", "ssess" => $_POST['ssess'], "siteTo" => CFileMan::__CheckSite($_GET['fu_site']))); CFileMan::SaveLastPath($_POST['copy_to']); break; case "get_last_pathes": ?> <script>window.bx_last_pathes = <?php echo CUtil::PhpToJSObject(CFilemanUtils::GetLastPathes()); ?> ;</script> <?php break; case "pack": if (isset($_POST["startFile"])) { $startFile = trim($_POST["startFile"]); } if (isset($_POST["quickPath"])) { $quickPath = trim($_POST["quickPath"]); } if (isset($_POST["packTo"])) { if (substr($_POST["packTo"], 0, 1) == "/") { $pack_to = $_POST["packTo"]; } else { $pack_to = "/" . $_POST["packTo"]; } } $siteTo = CFileMan::__CheckSite($_POST['siteTo']); $docRootTo = CSite::GetSiteDocRoot($siteTo) ? CSite::GetSiteDocRoot($siteTo) : ''; $siteFrom = CFileMan::__CheckSite($site); $docRootFrom = CSite::GetSiteDocRoot($siteFrom); if (!$USER->IsAdmin()) { $pack_to = RemoveScriptExtension($pack_to); } //check writing permissions if (!$USER->CanDoFileOperation('fm_create_new_file', array($siteTo, $pack_to))) { ?> <script> window.BXFM_archivePermsError = true; </script> <?php return; } if (IsFileUnsafe($docRootTo . $pack_to) || CFileMan::CheckFileName(GetFileName($pack_to)) !== true) { ?> <script> window.BXFM_archiveFNameError = true; </script> <?php return; } //ask if the file already exists if (file_exists($io->GetPhysicalName($docRootTo . $pack_to))) { if (empty($startFile)) { if ($_POST["bPackReplace"] != "replace") { ?> <script> window.BXFM_archiveExists = { fileOld: { name: "<?php echo CUtil::JSEscape(basename($pack_to)); ?> ", path: "<?php echo CUtil::JSEscape($pack_to); ?> ", site: "<?php echo CUtil::JSEscape($siteTo); ?> ", size: "<?php echo CFile::FormatSize(filesize($io->GetPhysicalName($docRootTo . $pack_to))); ?> ", date: "<?php echo date(CDatabase::DateFormatToPHP(CLang::GetDateFormat('FULL')), filemtime($io->GetPhysicalName($docRootTo . $pack_to)) + CTimeZone::GetOffset()); ?> " } }; </script> <?php return; } } } $packarc = CBXArchive::GetArchive($docRootTo . $pack_to, trim($_POST['arcType'])); if ($packarc instanceof IBXArchive) { //this set of options is common for every archive type $packarc->SetOptions(array("COMPRESS" => true, "STEP_TIME" => COption::GetOptionString("fileman", "archive_step_time", 30), "ADD_PATH" => false, "REMOVE_PATH" => $docRootFrom . $quickPath, "CHECK_PERMISSIONS" => $USER->IsAdmin() ? false : true)); $arPackFiles = array(); foreach ($_POST["files"] as $path2file) { $arPackFiles[] = $docRootFrom . $path2file['path']; } @set_time_limit(0); $pRes = $packarc->Pack($arPackFiles, $startFile); switch ($pRes) { case IBXArchive::StatusContinue: ?> <script> window.fmPackTimeout = true; window.fmPackLastFile = '<?php echo CUtil::JSEscape($packarc->GetStartFile()); ?> '; </script> <?php break; case IBXArchive::StatusSuccess: ?> <script> window.fmPackTimeout = false; window.fmPackLastFile = ''; window.fmPackSuccess = true; </script> <?php break; case IBXArchive::StatusError: $arErrors = $packarc->GetErrors(); ?> <script> window.fmPackTimeout = false; window.fmPackSuccess = false; window.fmPackErrors = <?php echo CUtil::PhpToJSObject($arErrors); ?> ; </script> <?php break; } } else { ?> <script> window.fmPackSuccess = false; window.fmPackErrors = <?php echo CUtil::PhpToJsObject(GetMessage("FM_UTIL_ARC_ERROR")); ?> ; </script> <?php } break; case "unpack": global $USER; if (isset($_POST["packTo"])) { if (substr($_POST["packTo"], 0, 1) == "/") { $pack_to = $_POST["packTo"]; } else { $pack_to = "/" . $_POST["packTo"]; } } $siteFrom = CFileMan::__CheckSite($_GET['site']); $siteTo = CFileMan::__CheckSite($_POST['siteTo']); $docRootFrom = CSite::GetSiteDocRoot($siteFrom); $docRootTo = CSite::GetSiteDocRoot($siteTo); if (!($USER->CanDoFileOperation('fm_create_new_file', array($siteTo, $_POST["packTo"])) || $USER->CanDoFileOperation('fm_create_new_folder', array($siteTo, $_POST["packTo"])))) { ?> <script> window.BXFM_archivePermsError = true; </script> <?php return; } $bReplaceFiles = $_POST["case_option"] == "replace" ? true : false; $arc = CBXArchive::GetArchive($docRootFrom . $_POST["files"][0]); if ($arc instanceof IBXArchive) { global $USER; $arc->SetOptions(array("REMOVE_PATH" => $docRootFrom, "UNPACK_REPLACE" => $bReplaceFiles, "CHECK_PERMISSIONS" => $USER->IsAdmin() ? false : true)); $uRes = $arc->Unpack($docRootTo . $pack_to); if (!$uRes) { $uErrors = $arc->GetErrors(); ?> <script> window.fmUnpackSuccess = false; window.fmUnpackErrors = <?php echo CUtil::PhpToJSObject($uErrors); ?> </script> <?php } else { ?> <script> window.fmUnpackSuccess = true; </script> <?php } } else { ?> <script> window.fmUnpackSuccess = false; window.fmUnpackErrors = <?php echo CUtil::PhpToJsObject(GetMessage("FM_UTIL_ARC_ERROR")); ?> ; </script> <?php } break; } }
public static function import($arParams) { global $APPLICATION; // check fields $aMsg = array(); $arParams['SET_ID'] = intval($arParams['SET_ID']); $arParams['IMPORT_IF_FILE_EXISTS'] = isset($arParams['IMPORT_IF_FILE_EXISTS']) && $arParams['IMPORT_IF_FILE_EXISTS'] == 'Y' ? true : false; if (isset($arParams['FILE']) && GetFileExtension($arParams['FILE']) != 'zip') { $aMsg["FILE_EXT"] = array("id" => "FILE_EXT", "text" => GetMessage("MAIN_SMILE_IMPORT_FILE_EXT_ERROR")); } else { if (!isset($arParams['FILE']) || !file_exists($arParams['FILE'])) { $aMsg["FILE"] = array("id" => "FILE", "text" => GetMessage("MAIN_SMILE_IMPORT_FILE_ERROR")); } else { if ($arParams['SET_ID'] <= 0) { $aMsg["SET_ID"] = array("id" => "SET_ID", "text" => GetMessage("MAIN_SMILE_IMPORT_SET_ID_ERROR")); } } } if (!empty($aMsg)) { $e = new CAdminException($aMsg); $APPLICATION->ThrowException($e); return false; } $sUnpackDir = CTempFile::GetDirectoryName(1); CheckDirPath($sUnpackDir); /** @var IBXArchive $oArchiver */ $oArchiver = CBXArchive::GetArchive($arParams['FILE'], "ZIP"); $oArchiver->SetOptions(array("STEP_TIME" => 300)); if (!$oArchiver->Unpack($sUnpackDir)) { $aMsg["UNPACK"] = array("id" => "UNPACK", "text" => GetMessage("MAIN_SMILE_IMPORT_UNPACK_ERROR")); $e = new CAdminException($aMsg); $APPLICATION->ThrowException($e); return false; } $arSmiles = array(); if (file_exists($sUnpackDir . 'install.csv')) { $arLang = array(); $db_res = CLanguage::GetList($b = "sort", $o = "asc"); while ($res = $db_res->Fetch()) { if (file_exists($sUnpackDir . 'install_lang_' . $res["LID"] . '.csv')) { $arSmiles = array(); $csvFile = new CCSVData(); $csvFile->LoadFile($sUnpackDir . 'install_lang_' . $res["LID"] . '.csv'); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); while ($smile = $csvFile->Fetch()) { if (defined('BX_UTF') && BX_UTF && $res["LID"] == 'ru') { $smile[1] = $APPLICATION->ConvertCharset($smile[1], 'windows-1251', 'utf-8'); } $arLang[$smile[0]][$res["LID"]] = $smile[1]; } } } $csvFile = new CCSVData(); $csvFile->LoadFile($sUnpackDir . 'install.csv'); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); while ($smileRes = $csvFile->Fetch()) { $smile = array('TYPE' => $smileRes[0], 'CLICKABLE' => $smileRes[1] == 'Y' ? 'Y' : 'N', 'SORT' => intval($smileRes[2]), 'IMAGE' => $smileRes[3], 'IMAGE_WIDTH' => intval($smileRes[4]), 'IMAGE_HEIGHT' => intval($smileRes[5]), 'IMAGE_DEFINITION' => in_array($smileRes[6], array(self::IMAGE_SD, self::IMAGE_HD, self::IMAGE_UHD)) ? $smileRes[6] : ($smileRes[6] == 'Y' ? self::IMAGE_HD : self::IMAGE_SD), 'HIDDEN' => in_array($smileRes[7], array('Y', 'N')) ? $smileRes[7] : 'N', 'IMAGE_LANG' => in_array($smileRes[7], array('Y', 'N')) ? $smileRes[8] : $smileRes[7], 'TYPING' => in_array($smileRes[7], array('Y', 'N')) ? $smileRes[9] : $smileRes[8]); if (!in_array($smile['TYPE'], array(CSmile::TYPE_SMILE, CSmile::TYPE_ICON))) { continue; } $smile['IMAGE'] = GetFileName($smile['IMAGE']); $imgArray = CFile::GetImageSize($sUnpackDir . $smile['IMAGE']); if (!is_array($imgArray)) { continue; } $arInsert = array('TYPE' => $smile['TYPE'], 'SET_ID' => $arParams['SET_ID'], 'CLICKABLE' => $smile['CLICKABLE'], 'SORT' => $smile['SORT'], 'IMAGE' => $smile['IMAGE'], 'IMAGE_WIDTH' => $smile['IMAGE_WIDTH'], 'IMAGE_HEIGHT' => $smile['IMAGE_HEIGHT'], 'IMAGE_DEFINITION' => $smile['IMAGE_DEFINITION'], 'HIDDEN' => $smile['HIDDEN'], 'TYPING' => $smile['TYPING']); if (isset($arLang[$smile['IMAGE_LANG']])) { $arInsert['LANG'] = $arLang[$smile['IMAGE_LANG']]; } $arSmiles[] = $arInsert; } } else { $smileSet = CSmileSet::getById($arParams['SET_ID']); if ($handle = @opendir($sUnpackDir)) { $sort = 300; while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_file($sUnpackDir . $file)) { $imgArray = CFile::GetImageSize($sUnpackDir . $file); if (is_array($imgArray)) { $smileHR = self::IMAGE_SD; $smileType = CSmile::TYPE_SMILE; $smileCode = GetFileNameWithoutExtension($file); if (strpos($file, 'smile_') !== false && strpos($file, 'smile_') == 0) { $smileCode = substr($smileCode, 6); } elseif (strpos($file, 'smile') !== false && strpos($file, 'smile') == 0) { $smileCode = substr($smileCode, 5); } elseif (strpos($file, 'icon_') !== false && strpos($file, 'icon_') == 0) { $smileType = CSmile::TYPE_ICON; $smileCode = substr($smileCode, 5); } else { if (strpos($file, 'icon') !== false && strpos($file, 'icon') == 0) { $smileType = CSmile::TYPE_ICON; $smileCode = substr($smileCode, 4); } } if (strrpos($smileCode, '_hr') !== false && strrpos($smileCode, '_hr') == strlen($smileCode) - 3) { $smileHR = self::IMAGE_HD; $smileCode = substr($smileCode, 0, strrpos($smileCode, '_hr')); } if ($pos = strpos($smileCode, '_hr_')) { $smileHR = self::IMAGE_HD; $smileCode = substr($smileCode, 0, $pos) . '_' . substr($smileCode, $pos + 4); } $arSmiles[] = array('TYPE' => $smileType, 'SET_ID' => $arParams['SET_ID'], 'CLICKABLE' => 'Y', 'SORT' => $sort, 'IMAGE' => $file, 'IMAGE_WIDTH' => intval($imgArray[0]), 'IMAGE_HEIGHT' => intval($imgArray[1]), 'IMAGE_DEFINITION' => $smileHR, 'TYPING' => ':' . (isset($smileSet['STRING_ID']) ? $smileSet['STRING_ID'] : $smileSet['ID']) . '/' . $smileCode . ':'); $sort = $sort + 5; } } } @closedir($handle); } } $importSmile = 0; foreach ($arSmiles as $smile) { $sUploadDir = ($smile['TYPE'] == CSmile::TYPE_ICON ? CSmile::PATH_TO_ICON : CSmile::PATH_TO_SMILE) . intval($smile["SET_ID"]) . '/'; if (file_exists($sUnpackDir . $smile['IMAGE']) && ($arParams['IMPORT_IF_FILE_EXISTS'] || !file_exists($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE']))) { if (CheckDirPath($_SERVER["DOCUMENT_ROOT"] . $sUploadDir)) { $insertId = CSmile::add($smile); if ($insertId) { if ($arParams['IMPORT_IF_FILE_EXISTS'] && file_exists($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'])) { $importSmile++; } else { if (copy($sUnpackDir . $smile['IMAGE'], $_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'])) { @chmod($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'], BX_FILE_PERMISSIONS); $importSmile++; } else { CSmile::delete($insertId); } } } $APPLICATION->ResetException(); } } } return $importSmile; }
$dirInstall = $_SERVER['DOCUMENT_ROOT'].'/local/modules/mytools'; switch($_REQUEST['action']) { case 'install': if(!is_dir($dirDownload)) mkdir($dirDownload, 0755, true); if(copy('http://mytools.nbykov.ru/upload/mytools/mytools.zip', $dirDownload.'/mytools.zip')) { $arUnpackOptions = Array( 'REMOVE_PATH' => $_SERVER['DOCUMENT_ROOT'], 'UNPACK_REPLACE' => true ); $resArchiver = CBXArchive::GetArchive($dirDownload . '/mytools.zip', 'ZIP'); $resArchiver->SetOptions($arUnpackOptions); if(!$resArchiver->Unpack($dirDownload)) $arErrors[] = 'Ошибка при распаковке архива'; unlink($dirInstall.'/mytools.zip'); } else $arErrors[] = 'Ошибка при скачивании архиа'; break; case 'delete': unlink(__FILE__); localredirect('/'); break;
protected function packData($xmlFile) { $tmpDir = $this->path . "/tmp"; $archiveName = $tmpDir . "/" . $this->feedType . "_" . $this->fileNameSalt . ".zip"; $oArchiver = \CBXArchive::GetArchive($archiveName, "ZIP"); $oArchiver->SetOptions(array("REMOVE_PATH" => $this->path . "/xml", "ADD_PATH" => $this->feedType)); if ($oArchiver->Pack($xmlFile)) { \Bitrix\Main\IO\File::deleteFile($xmlFile); } return $archiveName; }
if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($backButton) > 0) { $STEP = 1; } if ($_SERVER["REQUEST_METHOD"] == "POST" && $STEP == 2 && check_bitrix_sessid()) { if (!is_array($SITE_ID) || empty($SITE_ID)) { $strError .= GetMessage("LEARNING_BAD_SITE_ID") . "<br>"; } if (strlen($URL_DATA_FILE) > 0) { if (!CBXArchive::IsArchive($_SERVER["DOCUMENT_ROOT"] . $URL_DATA_FILE)) { $strError .= GetMessage("LEARNING_NOT_TAR_GZ") . "<br>"; } } else { $strError .= GetMessage("LEARNING_DATA_FILE_NOT_FOUND"); } if (strlen($strError) <= 0) { $oArchiver = CBXArchive::GetArchive($_SERVER["DOCUMENT_ROOT"] . $URL_DATA_FILE); if ($oArchiver === false) { $strError .= GetMessage("LEARNING_NOT_TAR_GZ") . "<br>"; } } if (strlen($strError) <= 0 && $oArchiver !== false) { $tmp_dir = BX_PERSONAL_ROOT . "/tmp/learning/" . uniqid(rand()); CheckDirPath($_SERVER["DOCUMENT_ROOT"] . $tmp_dir); if ($oArchiver->Unpack($_SERVER["DOCUMENT_ROOT"] . $tmp_dir)) { if (!isset($SCORM)) { $package = new CCourseImport($tmp_dir, $SITE_ID); if (!strlen($package->LAST_ERROR)) { if (!$package->ImportPackage()) { $strError .= $package->LAST_ERROR; } } else {
$exportFilePath = "/acrit.exportpro/" . $profileDefaults["PROFILE_CODE"] . ".xml"; } $bUseCompress = $arProfile["USE_COMPRESS"] == "Y" ? 'checked="checked"' : ""; if ($arProfile["USE_COMPRESS"] == "Y") { $originalName = $_SERVER["DOCUMENT_ROOT"] . $arProfile["SETUP"]["URL_DATA_FILE"]; $zipPath == false; $fileZipPath == false; if (stripos($arProfile["SETUP"]["URL_DATA_FILE"], "csv") !== false) { $zipPath = str_replace("csv", "zip", $originalName); $fileZipPath = str_replace("csv", "zip", $arProfile["SETUP"]["URL_DATA_FILE"]); } elseif (stripos($arProfile["SETUP"]["URL_DATA_FILE"], "xml") !== false) { $zipPath = str_replace("xml", "zip", $originalName); $fileZipPath = str_replace("xml", "zip", $arProfile["SETUP"]["URL_DATA_FILE"]); } if ($zipPath) { $packarc = CBXArchive::GetArchive($zipPath); } } $productsPerStep = intval($arProfile['SETUP']['EXPORT_STEP']) <= 0 ? 50 : intval($arProfile['SETUP']['EXPORT_STEP']); ?> <tr class="heading"> <td colspan="2" valign="top"><?php echo GetMessage('ACRIT_EXPORTPRO_RUNTYPE_RUN'); ?> </td> </tr> <?php if ($arProfile["SETUP"]["FILE_TYPE"] == "csv") { ?> <tr id="tr_csv_info"> <td colspan="2">