Your IP : 18.188.12.188


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/modules/translate/admin/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/modules/translate/admin/translate_csv_download.php

<?
/** @global CMain $APPLICATION */
use Bitrix\Main\Loader;

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/translate/prolog.php");
$TRANS_RIGHT = $APPLICATION->GetGroupRight("translate");
if($TRANS_RIGHT=="D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
if (!check_bitrix_sessid()) die();
Loader::includeModule('translate');

$arTLangs = GetTLangList();

$NO_TRANSLATE = array_key_exists('download_translate_lang', $_REQUEST) && $_REQUEST['download_translate_lang'] == 'N';

$path = $_REQUEST["path"];
if(preg_match("#\.\.[\\/]#".BX_UTF_PCRE_MODIFIER, $path))
	$path = "";

$path = Rel2Abs("/", "/".$path."/");

$IS_LANG_DIR = is_lang_dir($path);

if ($IS_LANG_DIR)
{
	foreach ($arTLangs as $hlang)
	{
		$ph = add_lang_id($path, $hlang, $arTLangs);
		if (strlen($ph)>0) GetTDirList($ph, true);
		$ph = "";
	}
}
else GetTDirList($path, true);

$strFile = '';
$arFileFilter = array();
if (isset($_REQUEST['file']))
	$strFile = strval($_REQUEST['file']);
if(preg_match("#\.\.[\\/]#".BX_UTF_PCRE_MODIFIER, $strFile))
	$strFile = "";
if ('' != $strFile)
{
	$strFile = Rel2Abs("/", "/".$strFile);

	foreach ($arTLangs as $hlang)
	{
		$ph = add_lang_id($strFile, $hlang, $arTLangs);
		if ('' != $ph)
			$arFileFilter[] = $ph;
	}
}

if (!empty($arFileFilter) && !empty($arFiles))
{
	$arTemp = array();
	foreach ($arFiles as &$arOneFile)
	{
		if ('N' == $arOneFile['IS_DIR'] && in_array($arOneFile['PATH'], $arFileFilter))
		{
			$arTemp[] = $arOneFile;
		}
	}
	if (isset($arOneFile))
		unset($arOneFile);
	$arFiles = $arTemp;
}

$customScriptsFile = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/langs.txt";
if(file_exists($customScriptsFile) && $_REQUEST["use_custom_list"]=="Y")
{
	$customScriptsList = array();
	$customScriptsListTemp = file($customScriptsFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
	foreach($customScriptsListTemp as $pathScript)
		$customScriptsList[replace_lang_id($pathScript, '#LANG_ID#')] = true;

	$arTemp = array();
	foreach ($arFiles as $f)
	{
		$fname = replace_lang_id($f['PATH'], '#LANG_ID#');
		if($customScriptsList[$fname])
			$arTemp[] = $f;
	}
	$arFiles = $arTemp;
}

$arrCSV = GetTCSVArray();
$strCSV = '"file";"key";';
foreach ($arTLangs as $l)
{
	$strCSV .= '"'.$l.'";';
}
$strCSV .= "\r\n";


foreach ($arrCSV as $file => $arTranslations)
{
	foreach ($arTranslations as $key => $arLangTexts)
	{
		$_strCSV = '';
		$_strCSV .= '"'.$file.'";"'.$key.'";';
		$_noTranslate = false;
		foreach ($arTLangs as $l)
		{
			$val = str_replace('"', '""', $arLangTexts[$l]);
			$val = str_replace("\\", "\\\\", $val);
			$_strCSV .= '"'.$val.'";';
			if (empty($val))
				$_noTranslate = true;
		}
		$_strCSV .= "\r\n";
		if (!$NO_TRANSLATE || ( $NO_TRANSLATE && $_noTranslate))
			$strCSV .= $_strCSV;
	}
}

$csv_fn = trim(str_replace('/', '_', $path), '_') . '.csv';

ob_get_clean();

if(CModule::IncludeModule("compression"))
	CCompress::Disable2048Spaces();

header("Content-Type: text/csv; charset=".LANG_CHARSET);
header('Content-Disposition: attachment; filename="'.$csv_fn.'"');

echo $strCSV;

//require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin_after.php");