Example #1
0
 /**
  * Check test requirements (e.g. max_execution_time)
  *
  * @param array $params
  * @throws CSecurityRequirementsException
  * @return bool
  */
 public function checkRequirements($params = array())
 {
     if (extension_loaded('tokenizer') !== true) {
         throw new CSecurityRequirementsException(GetMessage("SECURITY_SITE_CHECKER_TAINT_TOKENIZER_NOT_FOUND"));
     }
     $maxExecutionTime = ini_get("max_execution_time");
     if ($maxExecutionTime > 0 && $maxExecutionTime <= 20) {
         throw new CSecurityRequirementsException(GetMessage("SECURITY_SITE_CHECKER_TAINT_EXECUTION_TIME"));
     }
     $memoryLimit = CUtil::Unformat(ini_get("memory_limit"));
     if ($memoryLimit > 0 && $memoryLimit <= 250 * 1024 * 1024) {
         throw new CSecurityRequirementsException(GetMessage("SECURITY_SITE_CHECKER_TAINT_MEMORY_LIMIT"));
     }
     return true;
 }
Example #2
0
 function ResizeImageFile($sourceFile, &$destinationFile, $arSize, $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL, $arWaterMark = array(), $jpgQuality = false, $arFilters = false)
 {
     $io = CBXVirtualIo::GetInstance();
     if (!$io->FileExists($sourceFile)) {
         return false;
     }
     $bNeedCreatePicture = false;
     if ($resizeType != BX_RESIZE_IMAGE_EXACT && $resizeType != BX_RESIZE_IMAGE_PROPORTIONAL_ALT) {
         $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL;
     }
     if (!is_array($arSize)) {
         $arSize = array();
     }
     if (!array_key_exists("width", $arSize) || intval($arSize["width"]) <= 0) {
         $arSize["width"] = 0;
     }
     if (!array_key_exists("height", $arSize) || intval($arSize["height"]) <= 0) {
         $arSize["height"] = 0;
     }
     $arSize["width"] = intval($arSize["width"]);
     $arSize["height"] = intval($arSize["height"]);
     $arSourceSize = array("x" => 0, "y" => 0, "width" => 0, "height" => 0);
     $arDestinationSize = array("x" => 0, "y" => 0, "width" => 0, "height" => 0);
     $arSourceFileSizeTmp = CFile::GetImageSize($sourceFile);
     if (!in_array($arSourceFileSizeTmp[2], array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF, IMAGETYPE_BMP))) {
         return false;
     }
     if (class_exists("imagick") && function_exists('memory_get_usage')) {
         //When memory limit reached we'll try to use ImageMagic
         $memoryNeeded = round(($arSourceFileSizeTmp[0] * $arSourceFileSizeTmp[1] * $arSourceFileSizeTmp['bits'] * ($arSourceFileSizeTmp['channels'] > 0 ? $arSourceFileSizeTmp['channels'] : 1) / 8 + pow(2, 16)) * 1.65);
         $memoryLimit = CUtil::Unformat(ini_get('memory_limit'));
         if (memory_get_usage() + $memoryNeeded > $memoryLimit) {
             if ($arSize["width"] <= 0 || $arSize["height"] <= 0) {
                 $arSize["width"] = $arSourceFileSizeTmp[0];
                 $arSize["height"] = $arSourceFileSizeTmp[1];
             }
             CFile::ScaleImage($arSourceFileSizeTmp[0], $arSourceFileSizeTmp[1], $arSize, $resizeType, $bNeedCreatePicture, $arSourceSize, $arDestinationSize);
             if ($bNeedCreatePicture) {
                 $new_image = CTempFile::GetFileName(bx_basename($sourceFile));
                 CheckDirPath($new_image);
                 $im = new Imagick();
                 try {
                     $im->setSize($arDestinationSize["width"], $arDestinationSize["height"]);
                     $im->readImage($io->GetPhysicalName($sourceFile));
                     $im->setImageFileName($new_image);
                     $im->thumbnailImage($arDestinationSize["width"], $arDestinationSize["height"], true);
                     $im->writeImage();
                     $im->destroy();
                 } catch (ImagickException $e) {
                     $new_image = "";
                 }
                 if ($new_image != "") {
                     $sourceFile = $new_image;
                     $arSourceFileSizeTmp = CFile::GetImageSize($io->GetPhysicalName($sourceFile));
                 }
             }
         }
     }
     if ($io->Copy($sourceFile, $destinationFile)) {
         switch ($arSourceFileSizeTmp[2]) {
             case IMAGETYPE_GIF:
                 $sourceImage = imagecreatefromgif($io->GetPhysicalName($sourceFile));
                 $bHasAlpha = true;
                 break;
             case IMAGETYPE_PNG:
                 $sourceImage = imagecreatefrompng($io->GetPhysicalName($sourceFile));
                 $bHasAlpha = true;
                 break;
             case IMAGETYPE_BMP:
                 $sourceImage = CFile::ImageCreateFromBMP($io->GetPhysicalName($sourceFile));
                 $bHasAlpha = false;
                 break;
             default:
                 $sourceImage = imagecreatefromjpeg($io->GetPhysicalName($sourceFile));
                 $bHasAlpha = false;
                 break;
         }
         $sourceImageWidth = intval(imagesx($sourceImage));
         $sourceImageHeight = intval(imagesy($sourceImage));
         if ($sourceImageWidth > 0 && $sourceImageHeight > 0) {
             if ($arSize["width"] <= 0 || $arSize["height"] <= 0) {
                 $arSize["width"] = $sourceImageWidth;
                 $arSize["height"] = $sourceImageHeight;
             }
             CFile::ScaleImage($sourceImageWidth, $sourceImageHeight, $arSize, $resizeType, $bNeedCreatePicture, $arSourceSize, $arDestinationSize);
             if ($bNeedCreatePicture) {
                 if (CFile::IsGD2()) {
                     $picture = ImageCreateTrueColor($arDestinationSize["width"], $arDestinationSize["height"]);
                     if ($arSourceFileSizeTmp[2] == IMAGETYPE_PNG) {
                         $transparentcolor = imagecolorallocatealpha($picture, 0, 0, 0, 127);
                         imagefilledrectangle($picture, 0, 0, $arDestinationSize["width"], $arDestinationSize["height"], $transparentcolor);
                         imagealphablending($picture, false);
                         imagecopyresampled($picture, $sourceImage, 0, 0, $arSourceSize["x"], $arSourceSize["y"], $arDestinationSize["width"], $arDestinationSize["height"], $arSourceSize["width"], $arSourceSize["height"]);
                         imagealphablending($picture, true);
                     } elseif ($arSourceFileSizeTmp[2] == IMAGETYPE_GIF) {
                         imagepalettecopy($picture, $sourceImage);
                         //Save transparency for GIFs
                         $transparentcolor = imagecolortransparent($sourceImage);
                         if ($transparentcolor >= 0 && $transparentcolor < imagecolorstotal($sourceImage)) {
                             $RGB = imagecolorsforindex($sourceImage, $transparentcolor);
                             $transparentcolor = imagecolorallocate($picture, $RGB["red"], $RGB["green"], $RGB["blue"]);
                             imagecolortransparent($picture, $transparentcolor);
                             imagefilledrectangle($picture, 0, 0, $arDestinationSize["width"], $arDestinationSize["height"], $transparentcolor);
                         }
                         imagecopyresampled($picture, $sourceImage, 0, 0, $arSourceSize["x"], $arSourceSize["y"], $arDestinationSize["width"], $arDestinationSize["height"], $arSourceSize["width"], $arSourceSize["height"]);
                     } else {
                         imagecopyresampled($picture, $sourceImage, 0, 0, $arSourceSize["x"], $arSourceSize["y"], $arDestinationSize["width"], $arDestinationSize["height"], $arSourceSize["width"], $arSourceSize["height"]);
                     }
                 } else {
                     $picture = ImageCreate($arDestinationSize["width"], $arDestinationSize["height"]);
                     imagecopyresized($picture, $sourceImage, 0, 0, $arSourceSize["x"], $arSourceSize["y"], $arDestinationSize["width"], $arDestinationSize["height"], $arSourceSize["width"], $arSourceSize["height"]);
                 }
             } else {
                 $picture = $sourceImage;
             }
             if (is_array($arFilters)) {
                 foreach ($arFilters as $arFilter) {
                     $bNeedCreatePicture |= CFile::ApplyImageFilter($picture, $arFilter, $bHasAlpha);
                 }
             }
             if (is_array($arWaterMark)) {
                 $arWaterMark["name"] = "watermark";
                 $bNeedCreatePicture |= CFile::ApplyImageFilter($picture, $arWaterMark, $bHasAlpha);
             }
             if ($bNeedCreatePicture) {
                 if ($io->FileExists($destinationFile)) {
                     $io->Delete($destinationFile);
                 }
                 switch ($arSourceFileSizeTmp[2]) {
                     case IMAGETYPE_GIF:
                         imagegif($picture, $io->GetPhysicalName($destinationFile));
                         break;
                     case IMAGETYPE_PNG:
                         imagealphablending($picture, false);
                         imagesavealpha($picture, true);
                         imagepng($picture, $io->GetPhysicalName($destinationFile));
                         break;
                     default:
                         if ($arSourceFileSizeTmp[2] == IMAGETYPE_BMP) {
                             $destinationFile .= ".jpg";
                         }
                         if ($jpgQuality === false) {
                             $jpgQuality = intval(COption::GetOptionString('main', 'image_resize_quality', '95'));
                         }
                         if ($jpgQuality <= 0 || $jpgQuality > 100) {
                             $jpgQuality = 95;
                         }
                         imagejpeg($picture, $io->GetPhysicalName($destinationFile), $jpgQuality);
                         break;
                 }
                 imagedestroy($picture);
             }
         }
         return true;
     }
     return false;
 }
Example #3
0
 public static function getMaximumFileUploadSize()
 {
     return min(CUtil::Unformat(ini_get('post_max_size')), CUtil::Unformat(ini_get('upload_max_filesize')));
 }
Example #4
0
<?php

$pathJS = '/bitrix/js/main/core';
$pathCSS = '/bitrix/js/main/core/css';
$pathCSSPanel = '/bitrix/panel/main';
$pathLang = BX_ROOT . '/modules/main/lang/' . LANGUAGE_ID;
//WARNING: Don't use CUserOptions here! CJSCore::Init can be called from php_interface/init.php where no $USER exists
$arJSCoreConfig = array('ajax' => array('js' => $pathJS . '/core_ajax.js'), 'admin' => array('js' => $pathJS . '/core_admin.js', 'css' => array($pathCSS . '/core_panel.css', $pathCSSPanel . '/admin-public.css'), 'lang' => $pathLang . '/js_core_admin.php', 'rel' => array('ajax'), 'use' => CJSCore::USE_PUBLIC), 'admin_interface' => array('js' => $pathJS . '/core_admin_interface.js', 'lang' => $pathLang . '/js_core_admin_interface.php', 'css' => $pathCSSPanel . '/admin-public.css', 'rel' => array('ajax', 'popup', 'window', 'date', 'fx'), 'lang_additional' => array('TITLE_PREFIX' => CUtil::JSEscape(COption::GetOptionString("main", "site_name", $_SERVER["SERVER_NAME"])) . " - ")), "admin_login" => array('js' => $pathJS . "/core_admin_login.js", 'css' => $pathCSSPanel . "/login.css", 'rel' => array("ajax", "window")), 'autosave' => array('js' => $pathJS . '/core_autosave.js', 'lang' => $pathLang . '/js_core_autosave.php', 'rel' => array('ajax')), 'fx' => array('js' => $pathJS . '/core_fx.js'), 'dd' => array('js' => $pathJS . '/core_dd.js'), 'webrtc' => array('js' => $pathJS . '/core_webrtc.js'), 'popup' => array('js' => $pathJS . '/core_popup.js', 'css' => $pathCSS . '/core_popup.css'), 'tags' => array('js' => $pathJS . '/core_tags.js', 'css' => $pathCSS . '/core_tags.css', 'lang' => $pathLang . '/js_core_tags.php', 'rel' => array('popup')), 'timer' => array('js' => $pathJS . '/core_timer.js'), 'tooltip' => array('js' => $pathJS . '/core_tooltip.js', 'css' => $pathCSS . '/core_tooltip.css', 'rel' => array('ajax'), 'lang_additional' => array('TOOLTIP_ENABLED' => IsModuleInstalled("socialnetwork") && COption::GetOptionString("socialnetwork", "allow_tooltip", "Y") == "Y" ? "Y" : "N")), 'translit' => array('js' => $pathJS . '/core_translit.js', 'lang' => $pathLang . '/js_core_translit.php', 'lang_additional' => array('YANDEX_KEY' => COption::GetOptionString('main', 'translate_key_yandex', ''))), 'image' => array('js' => $pathJS . '/core_image.js', 'css' => $pathCSS . '/core_image.css', 'rel' => array('ls')), 'viewer' => array('js' => $pathJS . '/core_viewer.js', 'css' => $pathCSS . '/core_viewer.css', 'lang' => $pathLang . '/js_core_viewer.php', 'rel' => array('ls', 'ajax', 'popup')), 'window' => array('js' => $pathJS . '/core_window.js', 'css' => $pathCSSPanel . '/popup.css', 'rel' => array('ajax')), 'access' => array('js' => $pathJS . '/core_access.js', 'css' => $pathCSS . '/core_access.css', 'rel' => array('popup', 'ajax', 'finder'), 'lang' => $pathLang . '/js_core_access.php'), 'finder' => array('js' => $pathJS . '/core_finder.js', 'css' => $pathCSS . '/core_finder.css', 'rel' => array('popup', 'ajax')), 'date' => array('js' => $pathJS . '/core_date.js', 'css' => $pathCSS . '/core_date.css', 'lang' => $pathLang . '/date_format.php', 'lang_additional' => array('WEEK_START' => CSite::GetWeekStart()), 'rel' => array('popup')), 'ls' => array('js' => $pathJS . '/core_ls.js', 'rel' => array('json')), 'db' => array('js' => $pathJS . '/core_db.js'), 'fc' => array('js' => $pathJS . '/core_frame_cache.js', 'rel' => array('db', 'ajax', 'ls')), 'jquery' => array('js' => '/bitrix/js/main/jquery/jquery-1.8.3.min.js', 'skip_core' => true), 'jquery_src' => array('js' => '/bitrix/js/main/jquery/jquery-1.8.3.js', 'skip_core' => true), 'json' => array('js' => '/bitrix/js/main/json/json2.min.js', 'skip_core' => true), 'json_src' => array('js' => '/bitrix/js/main/json/json2.js', 'skip_core' => true), 'canvas' => array('js' => $pathJS . '/core_canvas.js', 'css' => $pathCSS . '/core_canvas.css', 'lang' => $pathLang . '/js_core_canvas.php', 'rel' => array('popup')), 'uploader' => array('js' => array($pathJS . '/core_uploader/common.js', $pathJS . '/core_uploader/uploader.js', $pathJS . '/core_uploader/file.js', $pathJS . '/core_uploader/queue.js'), 'lang_additional' => array("phpMaxFileUploads" => ini_get("max_file_uploads"), "phpPostMaxSize" => CUtil::Unformat(ini_get("post_max_size")), "phpUploadMaxFilesize" => CUtil::Unformat(ini_get("upload_max_filesize"))), 'lang' => $pathLang . '/js_core_uploader.php', 'rel' => array('ajax', 'dd')));
foreach ($arJSCoreConfig as $ext => $arExt) {
    CJSCore::RegisterExt($ext, $arExt);
}
Example #5
0
		'js' => $pathJS.'/core_canvas.js',
		'css' => $pathCSS.'/core_canvas.css',
		'lang' => $pathLang.'/js_core_canvas.php',
		'rel' => array('popup'),
	),
	'uploader' => array(
		'js' => array(
			$pathJS.'/core_uploader/common.js',
			$pathJS.'/core_uploader/uploader.js',
			$pathJS.'/core_uploader/file.js',
			$pathJS.'/core_uploader/queue.js',
		),
		'lang_additional' => array(
			"phpMaxFileUploads" => ini_get("max_file_uploads"),
			"phpPostMaxSize" => CUtil::Unformat(ini_get("post_max_size")),
			"phpUploadMaxFilesize" => CUtil::Unformat(ini_get("upload_max_filesize")),
			"bxImageExtensions" => CFile::GetImageExtensions()
		),
		'lang' => $pathLang.'/js_core_uploader.php',
		'rel' => array('ajax', 'dd')
	),
	'site_speed' => array(
		'js' => $pathJS.'/site_speed/site_speed.js',
		'lang' => $pathLang.'/js_site_speed.php',
		'rel' => array('amcharts_serial', 'ajax', "date")
	),
	'qrcode' => array(
		'js' => array(
			'/bitrix/js/main/qrcode/qrcode.js'
		)
	),
Example #6
0
    $arParams["~" . strToUpper($URL) . "_URL"] = $arParams[strToUpper($URL) . "_URL"];
    $arParams[strToUpper($URL) . "_URL"] = htmlspecialcharsbx($arParams["~" . strToUpper($URL) . "_URL"]);
}
$arParams["CONVERT_PATH"] = strPos($arParams["~SECTIONS_URL"], "?") === false;
if (!$arParams["CONVERT_PATH"]) {
    $arParams["CONVERT_PATH"] = strPos($arParams["~SECTIONS_URL"], "?") > strPos($arParams["~SECTIONS_URL"], "#PATH#");
}
$arParams["CONVERT_PATH"] = strToLower($arParams["CONVERT"]) == "full" ? true : $arParams["CONVERT_PATH"];
/***************** ADDITIONAL **************************************/
$arParams["WORKFLOW"] = !$ob->workflow ? "N" : $ob->workflow;
$arParams["DOCUMENT_ID"] = $arParams["DOCUMENT_TYPE"] = $arParams["OBJECT"]->wfParams["DOCUMENT_TYPE"];
$arParams["DOCUMENT_ID"][2] = 0;
$arParams["UPLOAD_MAX_FILE"] = intVal(!empty($arParams["UPLOAD_MAX_FILE"]) ? $arParams["UPLOAD_MAX_FILE"] : 1);
$arParams["UPLOAD_MAX_FILE"] = 1;
$iUploadMaxFilesize = CUtil::Unformat(ini_get('upload_max_filesize'));
$iPostMaxSize = CUtil::Unformat(ini_get('post_max_size'));
$arParams["UPLOAD_MAX_FILESIZE"] = intVal($arParams["UPLOAD_MAX_FILESIZE"]);
if ($arParams["UPLOAD_MAX_FILESIZE"] > 0) {
    $arParams["UPLOAD_MAX_FILESIZE"] = min($iUploadMaxFilesize, $iPostMaxSize, $arParams["UPLOAD_MAX_FILESIZE"]);
} else {
    $arParams["UPLOAD_MAX_FILESIZE"] = min($iUploadMaxFilesize, $iPostMaxSize);
}
$arParams["UPLOAD_MAX_FILESIZE_BYTE"] = $arParams["UPLOAD_MAX_FILESIZE"] * 1024 * 1024;
/***************** STANDART ****************************************/
if (!isset($arParams["CACHE_TIME"])) {
    $arParams["CACHE_TIME"] = 3600;
}
if ($arParams["CACHE_TYPE"] == "Y" || $arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y") {
    $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]);
} else {
    $arParams["CACHE_TIME"] = 0;
Example #7
0
<?php

$pathJS = '/bitrix/js/main/core';
$pathCSS = '/bitrix/js/main/core/css';
$pathCSSPanel = '/bitrix/panel/main';
$pathLang = BX_ROOT . '/modules/main/lang/' . LANGUAGE_ID;
//WARNING: Don't use CUserOptions here! CJSCore::Init can be called from php_interface/init.php where no $USER exists
$amChartsPath = '/bitrix/js/main/amcharts/3.13/';
$arJSCoreConfig = array('ajax' => array('js' => $pathJS . '/core_ajax.js'), 'admin' => array('js' => $pathJS . '/core_admin.js', 'css' => array($pathCSS . '/core_panel.css', $pathCSSPanel . '/admin-public.css'), 'lang' => $pathLang . '/js_core_admin.php', 'rel' => array('ajax'), 'use' => CJSCore::USE_PUBLIC), 'admin_interface' => array('js' => $pathJS . '/core_admin_interface.js', 'lang' => $pathLang . '/js_core_admin_interface.php', 'css' => $pathCSSPanel . '/admin-public.css', 'rel' => array('ajax', 'popup', 'window', 'date', 'fx'), 'lang_additional' => array('TITLE_PREFIX' => CUtil::JSEscape(COption::GetOptionString("main", "site_name", $_SERVER["SERVER_NAME"])) . " - ")), "admin_login" => array('js' => $pathJS . "/core_admin_login.js", 'css' => $pathCSSPanel . "/login.css", 'rel' => array("ajax", "window")), 'autosave' => array('js' => $pathJS . '/core_autosave.js', 'lang' => $pathLang . '/js_core_autosave.php', 'rel' => array('ajax')), 'fx' => array('js' => $pathJS . '/core_fx.js'), 'dd' => array('js' => $pathJS . '/core_dd.js'), 'webrtc' => array('js' => $pathJS . '/core_webrtc.js'), 'popup' => array('js' => $pathJS . '/core_popup.js', 'css' => $pathCSS . '/core_popup.css'), 'tags' => array('js' => $pathJS . '/core_tags.js', 'css' => $pathCSS . '/core_tags.css', 'lang' => $pathLang . '/js_core_tags.php', 'rel' => array('popup')), 'timer' => array('js' => $pathJS . '/core_timer.js'), 'tooltip' => array('js' => $pathJS . '/core_tooltip.js', 'css' => $pathCSS . '/core_tooltip.css', 'rel' => array('ajax'), 'lang_additional' => array('TOOLTIP_ENABLED' => IsModuleInstalled("socialnetwork") && COption::GetOptionString("socialnetwork", "allow_tooltip", "Y") == "Y" ? "Y" : "N")), 'translit' => array('js' => $pathJS . '/core_translit.js', 'lang' => $pathLang . '/js_core_translit.php', 'lang_additional' => array('YANDEX_KEY' => COption::GetOptionString('main', 'translate_key_yandex', ''))), 'image' => array('js' => $pathJS . '/core_image.js', 'css' => $pathCSS . '/core_image.css', 'rel' => array('ls')), 'viewer' => array('js' => $pathJS . '/core_viewer.js', 'css' => $pathCSS . '/core_viewer.css', 'lang' => $pathLang . '/js_core_viewer.php', 'rel' => array('ls', 'ajax', 'popup')), 'window' => array('js' => $pathJS . '/core_window.js', 'css' => $pathCSSPanel . '/popup.css', 'rel' => array('ajax')), 'access' => array('js' => $pathJS . '/core_access.js', 'css' => $pathCSS . '/core_access.css', 'rel' => array('popup', 'ajax', 'finder'), 'lang' => $pathLang . '/js_core_access.php'), 'finder' => array('js' => $pathJS . '/core_finder.js', 'css' => $pathCSS . '/core_finder.css', 'rel' => array('popup', 'ajax', 'db_indexeddb')), 'date' => array('js' => $pathJS . '/core_date.js', 'css' => $pathCSS . '/core_date.css', 'lang' => $pathLang . '/date_format.php', 'lang_additional' => array('WEEK_START' => CSite::GetWeekStart()), 'rel' => array('popup')), 'ls' => array('js' => $pathJS . '/core_ls.js', 'rel' => array('json')), 'db' => array('js' => $pathJS . '/core_db.js'), 'db_indexeddb' => array('js' => $pathJS . '/core_db_indexeddb.js'), 'fc' => array('js' => $pathJS . '/core_frame_cache.js', 'rel' => array('db', 'ajax', 'ls', 'fx')), 'canvas' => array('js' => $pathJS . '/core_canvas.js', 'css' => $pathCSS . '/core_canvas.css', 'lang' => $pathLang . '/js_core_canvas.php', 'rel' => array('popup')), 'uploader' => array('js' => array($pathJS . '/core_uploader/common.js', $pathJS . '/core_uploader/uploader.js', $pathJS . '/core_uploader/file.js', $pathJS . '/core_uploader/queue.js'), 'lang_additional' => array("phpMaxFileUploads" => ini_get("max_file_uploads"), "phpPostMaxSize" => CUtil::Unformat(ini_get("post_max_size")), "phpUploadMaxFilesize" => CUtil::Unformat(ini_get("upload_max_filesize")), "bxImageExtensions" => CFile::GetImageExtensions(), "bxUploaderLog" => COption::GetOptionString("main", "uploaderLog", "N")), 'lang' => $pathLang . '/js_core_uploader.php', 'rel' => array('ajax', 'dd')), 'site_speed' => array('js' => $pathJS . '/site_speed/site_speed.js', 'lang' => $pathLang . '/js_site_speed.php', 'rel' => array('amcharts_serial', 'ajax', "date")), 'qrcode' => array('js' => array('/bitrix/js/main/qrcode/qrcode.js')), 'fileinput' => array('js' => $pathJS . '/core_fileinput.js', 'css' => $pathCSS . '/core_fileinput.css', 'lang' => $pathLang . '/js_core_fileinput.php', 'rel' => array("ajax", "window", "popup", "uploader", "canvas", "dd")), 'jquery' => array('js' => '/bitrix/js/main/jquery/jquery-1.8.3.min.js', 'skip_core' => true), 'jquery_src' => array('js' => '/bitrix/js/main/jquery/jquery-1.8.3.js', 'skip_core' => true), 'jquery2' => array('js' => '/bitrix/js/main/jquery/jquery-2.1.3.min.js', 'skip_core' => true), 'jquery2_src' => array('js' => '/bitrix/js/main/jquery/jquery-2.1.3.js', 'skip_core' => true), 'json' => array('js' => '/bitrix/js/main/json/json2.min.js', 'skip_core' => true), 'json_src' => array('js' => '/bitrix/js/main/json/json2.js', 'skip_core' => true), 'amcharts' => array('js' => $amChartsPath . 'amcharts.js', 'lang_additional' => array('AMCHARTS_PATH' => $amChartsPath, 'AMCHARTS_IMAGES_PATH' => $amChartsPath . 'images/'), 'skip_core' => true), 'amcharts_funnel' => array('js' => $amChartsPath . 'funnel.js', 'rel' => array('amcharts'), 'skip_core' => true), 'amcharts_gauge' => array('js' => $amChartsPath . 'gauge.js', 'rel' => array('amcharts'), 'skip_core' => true), 'amcharts_pie' => array('js' => $amChartsPath . 'pie.js', 'rel' => array('amcharts'), 'skip_core' => true), 'amcharts_radar' => array('js' => $amChartsPath . 'radar.js', 'rel' => array('amcharts'), 'skip_core' => true), 'amcharts_serial' => array('js' => $amChartsPath . 'serial.js', 'rel' => array('amcharts'), 'skip_core' => true), 'amcharts_xy' => array('js' => $amChartsPath . 'xy.js', 'rel' => array('amcharts'), 'skip_core' => true), 'helper' => array('js' => '/bitrix/js/main/helper/helper.js', 'css' => '/bitrix/js/main/helper/css/helper.css'));
foreach ($arJSCoreConfig as $ext => $arExt) {
    CJSCore::RegisterExt($ext, $arExt);
}