%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/UB/photogallery.upload/
Upload File :
Create Path :
Current File : /home/bitrix/www/local/components/UB/photogallery.upload/functions.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
function getImageUploaderId()
{
	static $iIndexOnPage = 0;
	$iIndexOnPage++;
	return 'bx_img_upl_'.$iIndexOnPage;
}

// Called once before all uploads
function onBeforeUpload($Params)
{
	CModule::IncludeModule("iblock");
	$_SESSION['arUploadedPhotos'] = Array();
	$arParams = $Params['arParams'];
	$savedData = CImageUploader::GetSavedData();
	$savedData['UPLOADING_START'] = "Y";
	CImageUploader::SetSavedData($savedData);

	if ($savedData["SECTION_ID"] <= 0)
	{
		$arParams["SECTION_ID"] = GetAlbumId(
			array(
				'id' => $Params['packageFields']['photo_album_id'],
				'name' => $Params['packageFields']['new_album_name'],
				'arParams' => $arParams,
				'~arResult' => $Params['~arResult']
			)
		);

		$savedData = CImageUploader::GetSavedData();
		$savedData["SECTION_ID"] = $arParams["SECTION_ID"];
	}
	else
	{
		$arParams["SECTION_ID"] = $savedData["SECTION_ID"];
	}

	// Check and create properties
	if (count($savedData['arError']) == 0)
	{
		$arPropertiesNeed = array(); // Array of properties needed to create
		foreach ($arParams['converters'] as $key => $val)
		{
			if ($val['code'] == "real_picture" || $val['code'] == "thumbnail" || $val['code'] == "detail_picture")
				continue;

			$db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $val['code']));
			if (!($db_res && $res = $db_res->Fetch()))
				$arPropertiesNeed[] = $val['code'];
		}

		if (count($arPropertiesNeed) > 0)
		{
			$obProperty = new CIBlockProperty;
			foreach ($arPropertiesNeed as $key)
			{
				$res = $obProperty->Add(array(
					"IBLOCK_ID" => $arParams["IBLOCK_ID"],
					"ACTIVE" => "Y",
					"PROPERTY_TYPE" => "F",
					"MULTIPLE" => "N",
					"NAME" => (strLen(GetMessage("P_".strToUpper($key))) > 0 ? GetMessage("P_".strToUpper($key)) : strToUpper($key)),
					"CODE" => strToUpper($key),
					"FILE_TYPE" => "jpg, gif, bmp, png, jpeg"
				));
			}
		}

		// Check Public property
		$arPropertiesNeed = array();
		foreach (array("PUBLIC_ELEMENT", "APPROVE_ELEMENT") as $key)
		{
			$db_res = CIBlock::GetProperties($arParams["IBLOCK_ID"], array(), array("CODE" => $key));
			if (!$db_res || !($res = $db_res->Fetch()))
				$arPropertiesNeed[] = $key;
		}

		if (count($arPropertiesNeed) > 0)
		{
			$obProperty = new CIBlockProperty;
			foreach ($arPropertiesNeed as $key)
			{
				$res = $obProperty->Add(array(
					"IBLOCK_ID" => $arParams["IBLOCK_ID"],
					"ACTIVE" => "Y",
					"PROPERTY_TYPE" => "S",
					"MULTIPLE" => "N",
					"NAME" => (strLen(GetMessage("P_".$key)) > 0 ? GetMessage("P_".$key) : $key),
					"DEFAULT_VALUE" => "N",
					"CODE" => $key
				));
			}
		}
	}

	CImageUploader::SetSavedData($savedData);
	return true;
}

// Called once after uploads
function onAfterUpload($Params)
{
	$savedData = CImageUploader::GetSavedData();
	$arParams = $Params['arParams'];
	$arResult = $Params['~arResult'];

	$savedData['UPLOADING_SUCCESS'] = "Y";
	CImageUploader::SetSavedData($savedData);

	$sectionsIds = array(0, $arParams['SECTION_ID']);
	$arGalleriesIds = array(0);
	$arUsers = array();


	if ($arResult['SECTION'] && $arResult['SECTION']['IBLOCK_SECTION_ID'])
		$sectionsIds[] = $arResult['SECTION']['IBLOCK_SECTION_ID'];
	if ($arParams["BEHAVIOUR"] == "USER")
		$sectionsIds[] = $arResult["GALLERY"]["ID"];

	if (isset($arResult["GALLERY"]["CODE"]))
	{
		$arGalleriesIds[] = $arResult["GALLERY"]["CODE"];
		if ($arResult["GALLERY"]["CREATED_BY"])
			$arUsers[] = $arResult["GALLERY"]["CREATED_BY"];
	}

	PClearComponentCacheEx($arParams["IBLOCK_ID"], $sectionsIds, $arGalleriesIds, $arUsers);
}

// Used to get album and create new album (only once)
function GetAlbumId($Params)
{
	$arParams = $Params['arParams'];
	$sectionId = false;
	$savedData = CImageUploader::GetSavedData();
	$arResult = $Params['~arResult'];

	if ($savedData['SECTION_ID'] <= 0)
	{
		// Upload photos to existing album
		if ($Params['id'] !== 'new' && intVal($Params['id']) > 0)
		{
			$sectionId = intVal($Params['id']);
		}
		// Create new album
		else	if ($Params['id'] == 'new')
		{
			$Params['name'] = trim($Params['name']);
			if (empty($Params['name']))
				$Params['name'] = (strLen(GetMessage("P_NEW_ALBUM")) > 0) ? GetMessage("P_NEW_ALBUM") : "New album";

			$arFields = Array(
				"ACTIVE" => "Y",
				"IBLOCK_ID" => $arParams["IBLOCK_ID"],
				"IBLOCK_SECTION_ID" => ($arParams["BEHAVIOUR"] == "USER" ? $arResult["GALLERY"]["ID"] : 0),
				"DATE" => ConvertTimeStamp(time()+CTimeZone::GetOffset()),
				"UF_DATE" => ConvertTimeStamp(time()+CTimeZone::GetOffset()),
				"NAME" => $Params['name']
			);
			$GLOBALS["UF_DATE"] = $arFields["UF_DATE"];

			$bs = new CIBlockSection;
			$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_".$arParams["IBLOCK_ID"]."_SECTION", $arFields);

			$ID = $bs->Add($arFields);
			if ($ID > 0)
			{
				CIBlockSection::ReSort($arParams["IBLOCK_ID"]);
				$sectionId = intVal($ID);
				$arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "CODE" => $arParams["USER_ALIAS"], "SECTION_ID" => 0);
				//$db_res = CIBlockSection::GetList(array(), $arFilter, false, array("ID", "NAME", "CREATED_BY", "RIGHT_MARGIN", "LEFT_MARGIN", "CODE", "UF_GALLERY_SIZE"));
				//$arResult["GALLERY"] = $db_res->Fetch();

				$savedData['NEW_SECTION_NAME'] = $Params['name'];
				$savedData['NEW_SECTION_PICTURE'] = "";
			}
			else
			{
				CImageUploader::SaveError(array(array("id" => "BXPH_FUNC_001", "text" => $bs->LAST_ERROR)));
			}
		}
	}

	$savedData["SECTION_ID"] = $sectionId;
	CImageUploader::SetSavedData($savedData);
	return $sectionId;
}

// Called for every file which loaded by Java/ActiveX/Flash or simple uploader
function handleFile($Info, $arFiles, $Params)
{
	CModule::IncludeModule("iblock");

	global $USER;
	$arParams = $Params['arParams'];
	$savedData = CImageUploader::GetSavedData();

	$arErrors = array();
	// Check file sizes and types (types only for mass uploaders)

	foreach($arFiles as $file)
	{
		if ($file['size'] > 0 && $arParams["UPLOAD_MAX_FILE_SIZE"] > 0 && $file['size'] > $arParams["UPLOAD_MAX_FILE_SIZE"])
			$arErrors[] = array("file" => $file['name'], "id" => "BXPH_FUNC_HANDLE_2_LARGE_SIZE","text" => GetMessage('P_WM_IMG_ERROR04'));

		if ($file['type'] && strpos(strtolower($file['type']), 'image') === false)
			$arErrors[] = array("file" => $file['name'], "id" => "BXPH_FUNC_HANDLE_2_TYPE","text" => GetMessage('P_WM_IMG_ERROR02'));
	}

	if (count($arErrors) > 0) // Exit if we have any errors
		return CImageUploader::SaveError($arErrors);

	// Handle watermark for Flash-uploader
	if ($arParams["UPLOADER_TYPE"] == 'flash')
	{
		$arWatermark = false;

		if ($arParams['WATERMARK_RULES'] == 'ALL')
		{
			$arWatermark = array(
				'type' => strtolower($arParams['WATERMARK_TYPE']),
				'position' => $arParams['WATERMARK_POSITION']
			);

			if($arParams['WATERMARK_TYPE'] == 'TEXT')
			{
				$arWatermark['coefficient'] = $arParams['WATERMARK_SIZE'];
				$arWatermark['text'] = trim($arParams['WATERMARK_TEXT']);
				$arWatermark['font'] = trim($arParams['PATH_TO_FONT']);
				$arWatermark['color'] = trim($arParams['WATERMARK_COLOR']);
				$arWatermark['use_copyright'] = "N";
			}
			else
			{
				$arWatermark['file'] = $arParams['WATERMARK_FILE'];
				$arWatermark['alpha_level'] = $arParams['WATERMARK_TRANSPARENCY'];
				$arWatermark['size'] = 'real';
				$arWatermark['fill'] = $arParams['WATERMARK_FILE_ORDER'] == 'usual' ? 'exact' : $arParams['WATERMARK_FILE_ORDER'];
			}
		}
		elseif ($Params['packageFields']['photo_watermark_use'] == 'Y')
		{
			$arWatermark = array(
				'type' => $Params['packageFields']['photo_watermark_type'],
				'text' => $Params['packageFields']['photo_watermark_text'],
				'font' => $arParams['PATH_TO_FONT'],
				'position' => $Params['packageFields']['photo_watermark_position'],
				'color' => $Params['packageFields']['photo_watermark_color'],
				'size' => $Params['packageFields']['photo_watermark_size'],
				'fill' => 'resize', // resize | exact | repeat
				'file' => $_SERVER["DOCUMENT_ROOT"].$Params['packageFields']['photo_watermark_path'], // TODO!
				'alpha_level' => $Params['packageFields']['photo_watermark_opacity'],
				'use_copyright' => $Params['packageFields']["photo_watermark_copyright"] == "Y" ? "Y" : "N"
			);
		}

		if($arWatermark)
		{
			// Add watermark here
			foreach($arFiles as $i => $file)
			{
				if ($i == 1) // It's thumbnail skip it
					continue;

				$size = CFile::GetImageSize($file['tmp_name']);
				$type = $size[2];
				$sourceImage = CFile::CreateImage($file['tmp_name'], $type);

				if ($sourceImage)
				{
					$res = CFile::Watermark($sourceImage, $arWatermark);
					if(file_exists($file['tmp_name']))
						unlink($file['tmp_name']);

					switch ($type)
					{
						case IMAGETYPE_GIF:
							imagegif($sourceImage, $file['tmp_name']);
							break;
						case IMAGETYPE_PNG:
							imagealphablending($sourceImage, false);
							imagesavealpha($sourceImage, true);
							imagepng($sourceImage, $file['tmp_name']);
							break;
						default:
							if ($arSourceFileSizeTmp[2] == IMAGETYPE_BMP)
								$file['tmp_name'] .= ".jpg";
							imagejpeg($sourceImage, $file['tmp_name'], 100);
							break;
					}
					if ($sourceImage)
						imagedestroy($sourceImage);
				}
			}
		}
	}

	// Props
	$Prop = array();
	// Additional image copyies
	$ind = -1;
	foreach ($arParams['converters'] as $key => $val)
	{
		$ind++;
		if ($val['code'] == "real_picture" || $val['code'] == "thumbnail" || $val['code'] == "detail_picture")
			continue;
		$Prop[strtoupper($val['code'])] = array("n0" => $arFiles[$ind]);
	}

	$_REQUEST["Public"] = $_REQUEST["Public"] == "N" ? "N" : "Y";
	$Prop["PUBLIC_ELEMENT"] = array("n0" => $_REQUEST["Public"]);
	$Prop["APPROVE_ELEMENT"] = array("n0" => (($arParams["ABS_PERMISSION"] >= "U" || $arParams["APPROVE_BY_DEFAULT"] == "Y") && $_REQUEST["Public"] == "Y") ? "Y" : "X");

	// Real photo
	$Prop["REAL_PICTURE"] = array("n0" => $arFiles[0]);
	$arFields = Array(
		"ACTIVE" => (($arParams["MODERATION"] == "Y" && $arParams["ABS_PERMISSION"] < "U") ? "N" : "Y"),
		"MODIFIED_BY" => $USER->GetID(),
		"IBLOCK_SECTION" => $savedData['SECTION_ID'],
		"IBLOCK_ID" => $arParams["IBLOCK_ID"],
		"NAME" => $Info['name'],
		"CODE" => $Info['name'],
		"TAGS" => $Info['tags'],
		"DETAIL_PICTURE" => $arFiles[2],
		"DETAIL_TEXT" => $Info['description'],
		"DETAIL_TEXT_TYPE" => "text",
		"PREVIEW_PICTURE" => $arFiles[1],
		"PREVIEW_TEXT" => $Info['description'],
		"PREVIEW_TEXT_TYPE" => "text",
		"PROPERTY_VALUES" => $Prop
	);

	//$arFields["NAME"] = (!empty($arFields["NAME"]) ? $arFields["NAME"] : $File["REAL_PICTURE"]["name"]);
	//$arFields["DATE_CREATE"] = (intVal($arRealFile["ExifTimeStamp"]) > 0 ?
	//	ConvertTimeStamp($arRealFile["ExifTimeStamp"], "FULL") : $arFields["DATE_CREATE"]);

	$bs = new CIBlockElement;
	$ID = $bs->Add($arFields);

	if ($ID <= 0)
	{
		$strError = $bs->LAST_ERROR;
		$arErrors = array();
		$arTmp = explode("<br>", $strError);
		foreach($arTmp as $er)
			if (trim($er) != '' && !in_array($er, $arErrors))
				$arErrors[] = array("id" => "BXPH_FUNC_002","text" => $er);
		CImageUploader::SaveError($arErrors);
	}
	else
	{
		$arFields['ID'] = $ID;
		$_SESSION['arUploadedPhotos'][] = $ID;
		CIBlockElement::RecalcSections($ID);

		$arParams['SECTION_ID'] = $savedData['SECTION_ID'];
		$arResult = $Params['~arResult'];

		$events = GetModuleEvents("photogallery", "OnAfterUpload");
		while ($arEvent = $events->Fetch())
			ExecuteModuleEventEx($arEvent, array(&$arFields, $arParams, $arResult));

		// Add thumbnail only for new album
		if ($savedData['NEW_SECTION_NAME'] && !$savedData['NEW_SECTION_PICTURE'])
		{
			$File = $arFiles[0]; // Big picture
			$File['tmp_name_1'] = $File['tmp_name'];
			$File['tmp_name'] = substr($File['tmp_name'], 0, strrpos($File['tmp_name'], "."))."_album_cover.tmp";

			if (CFile::ResizeImageFile($File['tmp_name_1'], $File['tmp_name'], array('width' => $arParams["ALBUM_PHOTO_THUMBS"]["SIZE"], 'height' => $arParams["ALBUM_PHOTO_THUMBS"]["SIZE"]), BX_RESIZE_IMAGE_PROPORTIONAL_ALT))
			{
				$bs = new CIBlockSection;
				if ($bs->Update($savedData["SECTION_ID"], Array("PICTURE" => $File), false, false))
				{
					$savedData['NEW_SECTION_PICTURE'] = true;
					CImageUploader::SetSavedData($savedData);
				}
			}
		}
	}
	return $ID;
}

function simpleUploadHandler($arParams, $arResult = array())
{
	global $APPLICATION;
	global $USER;

	$APPLICATION->RestartBuffer();
	$sTmpPath = CImageUploader::SetTmpPath($_REQUEST["PackageGuid"], $arParams["PATH_TO_TMP"]);

	$savedData = CImageUploader::GetSavedData();
	if ($savedData['SECTION_ID'])
	{
		unset($savedData['SECTION_ID']);
		CImageUploader::SetSavedData($savedData);
	}

	onBeforeUpload(array(
		'pathToTmp' => $arParams["PATH_TO_TMP"],
		'arParams' => $arParams,
		"~arResult" => $arResult,
		'sessid' => bitrix_sessid(),
		'packageFields' => array(
			'photo_album_id' => $_POST['photo_album_id'],
			'new_album_name' => $_POST['new_album_name'],
			'photo_resize_size' => intVal($_POST['photo_resize_size'])
		)
	));

	$files = $_FILES['photos'];

	$file_count = 0;
	if (!empty($files))
	{
		if (!is_array($files['name']) && is_string($files['name']))
			$files = array(
				'name' => array($files['name']),
				'type' => array($files['type']),
				'tmp_name' => array($files['tmp_name']),
				'error' => array($files['error']),
				'size' => array($files['size'])
			);
		$file_count = count($files['name']);
	}

	// Проверяем лимит и если нарушен - отказываем полностью в обработку : add vladmir@tyrtov.ru
	$uploadLimit = getPortfolioLimit($USER->GetID(),$_POST['photo_album_id']);
	if ($file_count > intval($uploadLimit['ALBUM_AVAIL'])) {
		CImageUploader::SaveError(array(array("id" => "BXPH_FUNC_LIMIT_OVER",
			"text" => 'Upload limit error ('.$file_count.'>'.$uploadLimit['ALBUM_AVAIL'].') for album #'.$_POST['photo_album_id'])));
		return;
	}

	if ($arParams['WATERMARK_RULES'] == 'ALL')
	{
		$arWatermark = array(
			'type' => strtolower($arParams['WATERMARK_TYPE']),
			'position' => $arParams['WATERMARK_POSITION']
		);

		if($arParams['WATERMARK_TYPE'] == 'TEXT')
		{
			$arWatermark['coefficient'] = $arParams['WATERMARK_SIZE'];
			$arWatermark['text'] = trim($arParams['WATERMARK_TEXT']);
			$arWatermark['font'] = trim($arParams['PATH_TO_FONT']);
			$arWatermark['color'] = trim($arParams['WATERMARK_COLOR']);
			$arWatermark['use_copyright'] = "N";
		}
		else
		{
			$arWatermark['file'] = $arParams['WATERMARK_FILE'];
			$arWatermark['alpha_level'] = $arParams['WATERMARK_TRANSPARENCY'];
			$arWatermark['size'] = 'real';
			$arWatermark['fill'] = $arParams['WATERMARK_FILE_ORDER'] == 'usual' ? 'exact' : $arParams['WATERMARK_FILE_ORDER'];
		}
	}
	elseif ($_POST['photo_watermark_use'] == 'Y')
	{
		$arWatermark = array(
			'type' => $_POST['photo_watermark_type'],
			'text' => $_POST['photo_watermark_text'],
			'font' => $arParams['PATH_TO_FONT'],
			'position' => $_POST['photo_watermark_position'],
			'color' => $_POST['photo_watermark_color'],
			'size' => $_POST['photo_watermark_size'],
			'fill' => 'resize', // resize | exact | repeat
			'file' => $_SERVER["DOCUMENT_ROOT"].$_POST['photo_watermark_path'],
			'alpha_level' => $_POST['photo_watermark_opacity'],
			'use_copyright' => $_POST["photo_watermark_copyright"] == "Y" ? "Y" : "N"
		);
	}
	else
	{
		$arWatermark = array();
	}

	$arIds = array();
	for ($i = 0; $i < $file_count; $i++)
	{
		$Info = array(
			'name' => $files['name'][$i],
			'filename' => $files['name'][$i],
			'description' => '',
			'tags' => ''
		);
		$arFiles = array();
		$name_i = $files['name'][$i];
		$type_i = $files['type'][$i];
		$tmp_name_i = $files['tmp_name'][$i];
		$error_i = $files['error'][$i];
		$size_i = $files['size'][$i];

		if ($size_i > 0 && $arParams["UPLOAD_MAX_FILE_SIZE"] > 0 && $size_i > $arParams["UPLOAD_MAX_FILE_SIZE"])
		{
			CImageUploader::SaveError(array(array("file" => $name_i, "id" => "BXPH_FUNC_HANDLE_LARGE_SIZE","text" => GetMessage('P_WM_IMG_ERROR04'))));
			continue;
		}
		if ($type_i && strpos(strtolower($type_i), 'image') === false)
		{
			CImageUploader::SaveError(array(array("file" => $name_i, "id" => "BXPH_FUNC_HANDLE_TYPE","text" => GetMessage('P_WM_IMG_ERROR02'))));
			continue;
		}

		$ext_i = GetFileExtension($name_i);
		$name_i = GetFileNameWithoutExtension($name_i);
		$name_i_ = preg_replace("/[^a-zA-Z0-9_]/i", "", $name_i);
		if ($name_i_ != $name_i)
			$name_i = ($name_i_ == '' ? substr(md5(mt_rand()), 0, 6) : '').$name_i_;

		// TODO: exif, iptc
		//$exif = CFile::ExtractImageExif($tmp_name_i);
		//$iptc = CFile::ExtractImageIPTC($tmp_name_i);

		$thumbSize = round($arParams["THUMBNAIL_SIZE"] * 1.8);
		foreach ($arParams['converters'] as $key => $val)
		{
			$destPath = $sTmpPath.$name_i."_".$key.".".$ext_i;
			if ($val["code"] == "real_picture") // original file
			{
				$size = intVal($_POST['photo_resize_size']);
				if ($arParams['ORIGINAL_SIZE'] && $arParams['ORIGINAL_SIZE'] > 0 && ($arParams['ORIGINAL_SIZE'] < $size || $size <= 0))
					$size = $arParams['ORIGINAL_SIZE'];

				$arSize = array('width' => $size, 'height' => $size);
				$jpegQuality = $arParams['JPEG_QUALITY'];
			}
			else if ($val["code"] == "detail_picture") // detail image
			{
				$size = 0; // intVal($_POST['photo_resize_size']);
				if ($arParams['DETAIL_SIZE'] && $arParams['DETAIL_SIZE'] > 0 && ($arParams['DETAIL_SIZE'] < $size || $size <= 0))
					$size = $arParams['DETAIL_SIZE'];

				$arSize = array('width' => $size, 'height' => $size);
				$jpegQuality = $arParams['JPEG_QUALITY'];
			}
			else if($val["code"] == "thumbnail")
			{
				$arSize = array('width' => $thumbSize, 'height' => $thumbSize);
				$jpegQuality = $arParams['JPEG_QUALITY1'];
			}
			else
			{
				$arSize = array('width' => intVal($val['width']), 'height' => intVal($val['height']));
			}

			if (!$jpegQuality || $jpegQuality < 20)
				$jpegQuality = false;

			$arCurWatermark = ($arSize['width'] > $arParams['WATERMARK_MIN_PICTURE_SIZE'] || $arSize['height'] > $arParams['WATERMARK_MIN_PICTURE_SIZE']) ? $arWatermark : array();

			$res = CFile::ResizeImageFile($tmp_name_i, $destPath, $arSize, BX_RESIZE_IMAGE_PROPORTIONAL_ALT, $arCurWatermark, $jpegQuality, array());

			$arFiles[] = array(
				'name' => $files['name'][$i],
				'tmp_name' => $destPath,
				'errors' => $files['error'][$i],
				'type' => $files['type'][$i],
				'size' => '',
				'mode' => $val["code"],
				'width' => '',
				'height' => '',
				'path' => $destPath
			);
		}

		$elementId = handleFile($Info, $arFiles, array('arParams' => $arParams, "~arResult" => $arResult));
		if ($elementId)
			$arIds[] = $elementId;

		foreach ($arFiles as $arFile)
		{
			if (file_exists($arFile['tmp_name']))
				unlink($arFile['tmp_name']);
		}
	}

	$jsResFiles = array();
	if (count($arIds) > 0)
	{
		$rsElement = CIBlockElement::GetList(array(), array("ID" => $arIds), false, false, array("ID", "PREVIEW_PICTURE"));
		while($arElement = $rsElement->Fetch())
		{
			$arFile = CFile::GetFileArray($arElement["PREVIEW_PICTURE"]);
			$jsResFiles[$arFile['ORIGINAL_NAME']] = Array(
				'ID' => $arElement["ID"],
				'PATH' => $arFile['SRC'],
				'WIDTH' => $arFile['WIDTH'],
				'HEIGHT' => $arFile['HEIGHT'],
				'NAME' => $arFile['FILE_NAME']
			);
		}
	}

	$savedData = CImageUploader::GetSavedData();
	if ($savedData['NEW_SECTION_NAME'] && $savedData['SECTION_ID'] > 0)
	{
		$newSectionName = $savedData['NEW_SECTION_NAME'];
		unset($savedData['NEW_SECTION_NAME']);
		CImageUploader::SetSavedData($savedData);
	}

	onAfterUpload(array('arParams' => $arParams, "~arResult" => $arResult));
	// Update redirect url
	$REDIRECT_URL = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"], array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $savedData["SECTION_ID"]));
	//$REDIRECT_URL = $REDIRECT_URL.(strpos($REDIRECT_URL, "?") === false ? "?" : "&")."uploader_redirect=Y&sessid=".bitrix_sessid();

	?>
	<script>top.bxiu_simple_res = {
		error: <?if ($savedData['arError'] && count($savedData['arError']) > 0){echo CUtil::PhpToJSObject($savedData['arError']);} else {echo '""';}?>,
		files: <?= CUtil::PhpToJSObject($jsResFiles)?>,
		redirectUrl: '<?= CUtil::JSEscape($REDIRECT_URL)?>'
		<? if (!empty($newSectionName)):?>
		,newSection: {
			id: <?= intVal($savedData['SECTION_ID'])?>,
			title: '<?= CUtil::JSEscape($newSectionName);?>'
		}
		<?endif;?>
	};</script>
	<?
	$savedData['arError'] = array();
	CImageUploader::SetSavedData($savedData);
	die();
}

if (!function_exists("_get_size"))
{
	function _get_size($v)
	{
		$l = substr($v, -1);
		$ret = substr($v, 0, -1);
		switch(strtoupper($l))
		{
			case 'P':
				$ret *= 1024;
			case 'T':
				$ret *= 1024;
			case 'G':
				$ret *= 1024;
			case 'K':
				$ret /= 1024;
			break;
		}
		return $ret;
	}
}
?>

Zerion Mini Shell 1.0