AuthForm(GetMessage("ACCESS_DENIED")); /** * Bitrix vars * @var CMain $APPLICATION * @var CUser $USER */ class filemanMedialibUpload { var $post = array(); var $collectionId = 0; var $ext = array(); function onBeforeUpload(&$package, $upload, $post, $files, &$error) { $post["collectionId"] = intval($post['collection_id']); $this->post = $post; if ($post["collectionId"] <= 0) { $error = "Bad collection"; return false; } else if (!CMedialib::CanDoOperation("medialib_new_item", $post["collectionId"])) // Check access { $error = "Access denied"; return false; } $package["collectionId"] = $post["collectionId"]; $package["ml_type"] = $post["ml_type"]; return true; } function handleFile($hash, $file, &$package, &$upload) { global $APPLICATION; $name = $file["name"]; $pattern = defined('BX_UTF') ? "/[^\p{L}L0-9!\p{Z}\$&\(\)\[\]\{\}\-\.;=@\^_\~]/uis" : "/[^A-Za-zÀ-ߨà-ÿ¸0-9!\s\$&\(\)\[\]\{\}\-\.;=@\^_\~]/is"; $name = trim(preg_replace($pattern, "", $name)); if (trim(mb_substr($name, 0, mb_strpos($name, '.'))) == '') $name = mb_substr(md5(uniqid(rand(), true)), 0, 8).trim($name); $res = CMedialibItem::Edit(array( 'file' => (array_key_exists("files", $file) ? $file["files"]["default"] : $file), 'arFields' => array( 'NAME' => $name, 'DESCRIPTION' => $file['description'], 'KEYWORDS' => '' ), 'arCollections' => array($package["collectionId"]) )); if (!isset($upload["redirectUrl"]) && $res && $res['ID'] > 0) { $upload["redirectUrlPart"] = "action=redirect&".bitrix_sessid_get()."&first_id=".$res["ID"]. "&col_id=".$package["collectionId"]."&ml_type=".htmlspecialcharsEx($package["ml_type"]); $upload["redirectUrl"] = $APPLICATION->GetCurPageParam($upload["redirectUrlPart"], array("action", "ml_type", "first_id", "col_id", "sessid")); } return $res; } } $obj = new filemanMedialibUpload(); $params = array( "allowUpload" => "F", "allowUploadExt" => CMedialib::GetMediaExtentions(true), "events" => array( "onUploadIsStarted" => array($obj, "onBeforeUpload"), "onFileIsUploaded" => array($obj, "handleFile") ) ); $uploader = (class_exists("CFileUploader") ? new CFileUploader($params, "get") : false); // **************************** Add items to medialibrary **************************** $action = (array_key_exists("action", $_REQUEST) && check_bitrix_sessid() ? $_REQUEST["action"] : ""); if ($action == 'uploadhtml5' && is_object($uploader)) { $uploader->checkPost(); } else if ($action == 'upload') { $collectionId = intval($_POST['collection_id']); $fileCount = intval($_POST['FileCount']); $firstId = false; if (!CMedialib::CanDoOperation("medialib_new_item", $collectionId)) // Check access die(); // Save elements if ($fileCount > 0 && $collectionId > 0) { CMedialib::Init(); $arExt = CMedialib::GetMediaExtentions(false); for ($i = 1; $i <= $fileCount; $i++) { $name = $_FILES['SourceFile_'.$i]['name']; if (!CMedialib::CheckFileExtention($name, $arExt)) continue; $name = trim(preg_replace("/[^a-zA-Z0-9!\$&\(\)\[\]\{\}\-\.;=@\^_\~]/is", "", $name)); if (trim(mb_substr($name, 0, mb_strpos($name, '.'))) == '') $name = mb_substr(md5(uniqid(rand(), true)), 0, 8).trim($name); $res = CMedialibItem::Edit(array( 'file' => $_FILES['SourceFile_'.$i], 'arFields' => array( 'NAME' => $name, 'DESCRIPTION' => '', 'KEYWORDS' => '' ), 'arCollections' => array($collectionId) )); if ($i == 1 && $res && $res['ID'] > 0) $firstId = $res['ID']; } } die('#JS#&first_id='.$firstId.'&col_id='.$collectionId.'&ml_type='.htmlspecialcharsEx($_GET['ml_type']).'#JS#'); } elseif($action == 'redirect') //Redirect after files uploading { $APPLICATION->SetTitle(GetMessage('FM_ML_UPL_TITLE2')); $APPLICATION->SetAdditionalCSS('/bitrix/js/fileman/medialib/medialib_admin.css'); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aContext = Array(); $aContext[] = Array( "TEXT" => GetMessage("FM_ML"), "ICON" => "btn_list", "LINK" => "/bitrix/admin/fileman_medialib_admin.php?lang=".LANGUAGE_ID."&".bitrix_sessid_get() ); $menu = new CAdminContextMenu($aContext); $menu->Show(); $firstId = intval($_GET['first_id']); $colId = intval($_GET['col_id']); // Get all items with id > $firstId $arItems = CMedialibItem::GetList(array( 'arCollections' => array($colId), 'minId' => $firstId )); $len = count($arItems); if ($len > 0) { $res = CMedialib::GetCollectionTree(array('checkByType' => true, 'typeId' => intval($_GET['ml_type']))); $strSel = ''.CMedialib::_BuildCollectionsSelectOptions($res['Collections'], $res['arColTree']); $module_id="fileman"; $thumbWidth = COption::GetOptionInt($module_id, "ml_thumb_width", 140); $thumbHeight = COption::GetOptionInt($module_id, "ml_thumb_height", 105); $tmbWidth = ($thumbWidth + 10).'px'; ?>