Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $eventManager = \Bitrix\Main\EventManager::getInstance();
- $eventManager->addEventHandler('disk', 'onAfterAddFile', function (\Bitrix\Main\Event $event)
- {
- CModule::IncludeModule("disk");
- list($file) = $event->getParameters();
- //AddMessage2Log($file->getName(), "fileName");
- //AddMessage2Log($file->getID(), "fileID");
- //AddMessage2Log($file->getFile(), "getFile");
- $fileID = $file->getID();
- $arrType = $file->getFile();
- $path = CFile::GetPath($arrType["ID"]);
- if ($file)
- {
- $fileInfo = $file->getFile();
- $fileName = $file->getName();
- $fileNameOne = substr($fileName, 0, -5);
- $info = new SplFileInfo($fileName);
- $infoFile = $info->getExtension();
- $storageID = "";
- if(($infoFile == "heic") || ($infoFile == "HEIC")){
- function curl_get_file_contents($URL)
- {
- session_start();
- $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
- session_write_close();
- $c = curl_init();
- curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($c, CURLOPT_COOKIE, $strCookie);
- curl_setopt($c, CURLOPT_URL, $URL);
- $contents = curl_exec($c);
- curl_close($c);
- if ($contents) return $contents;
- else return FALSE;
- }
- //Скачиваем файл себе в папку
- $local_file_path = "";
- $local_file_name = "";
- if ( Loader::IncludeModule('disk') )
- {
- $arDiskFiles = Disk\Internals\FileTable::getList(['filter'=>['ID'=>$fileID]]);
- // Работает для версии main старше 17.0
- foreach( $arDiskFiles as $arFile )
- {
- $storageID = $arFile["STORAGE_ID"];
- $file_two = Disk\BaseObject::buildFromArray($arFile);
- // Опять же в $file_two будет объект класса Bitrix\Disk\File
- // ссылка на файл на портале
- $urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager();
- //echo $urlManager->getPathFileDetail($file_two).'<br>';
- // публичная ссылка
- $urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager();
- $extLink = $file_two->addExternalLink(
- array(
- 'CREATED_BY' => 1,
- 'TYPE' => \Bitrix\Disk\Internals\ExternalLinkTable::TYPE_MANUAL,
- )
- );
- $getDataHash = $extLink->getHash();
- $downloadToken = Random::getString(12);
- $_SESSION['DISK_PUBLIC_VERIFICATION'][$fileID] = $downloadToken;
- $extLinkUrl = $urlManager->getShortUrlExternalLink(
- array(
- 'hash' => $getDataHash,
- 'action' => 'default',
- ),
- true
- );
- //Ссылка на скачивание файла
- $input = "https://bitrix24.tui.ru/docs/pub/".$getDataHash."/download/?&token=".$downloadToken;
- $result = curl_get_file_contents($input);
- file_put_contents($_SERVER["DOCUMENT_ROOT"]."/upload/mobile_heic/".$fileNameOne.".heic", $result);
- $local_file_path = "https://bitrix24.tui.ru/upload/mobile_heic/".$fileNameOne.".heic";
- $local_file_name = $fileNameOne.".heic";
- $htslc = "/upload/mobile_heic/".$fileNameOne.".heic";
- //Удаляем исходный файл
- $file->delete($file_two);
- }
- }
- //Конвертируем в jpg
- function convertFile($path_file, $file_name, $start_name){
- $result_url_download = "";
- // конвертация
- $query = "https://api.cloudconvert.com/convert?apikey=".CLOUDCONVERT_KEY."&inputformat=heic&outputformat=jpg&input=download&file=".$path_file."&filename=".$file_name."&wait=true&download=true&save=true";
- if($curl = curl_init()){
- $headers = array("Content-type: application/x-www-form-urlencoded; charset=utf-8");
- curl_setopt($curl, CURLOPT_URL, $query);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
- $result_curl = curl_exec($curl);
- curl_close($curl);
- }
- $tmpExp = explode("https://", $result_curl);
- $result_url_download = trim("https://".$tmpExp[1]);
- return $result_url_download;
- }
- $download_file = convertFile($local_file_path, $local_file_name, $htslc);
- // скачиваем файл
- if($ch = curl_init($download_file)){
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
- curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (http://www.googlebot.com/bot.html)');
- $output = curl_exec($ch);
- // проверить что нет ошибок
- if(substr_count($output, "error") == 0){
- $fh = fopen($_SERVER['DOCUMENT_ROOT']."/upload/mobile_heic/".$fileNameOne.".jpg", 'w');
- fwrite($fh, $output);
- fclose($fh);
- }
- }
- //Загружаем новый файл
- $storage = \Bitrix\Disk\Storage::loadById($storageID);
- if ($storage)
- {
- $folder = $storage->getRootObject();
- $fileArray = \CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT']."/upload/mobile_heic/".$fileNameOne.".jpg");
- $file = $folder->uploadFile($fileArray, array(
- 'CREATED_BY' => 1326
- ));
- }
- //Удаляем временные файлы
- unlink($_SERVER['DOCUMENT_ROOT']."/upload/mobile_heic/".$fileNameOne.".jpg");
- unlink($_SERVER['DOCUMENT_ROOT']."/upload/mobile_heic/".$fileName);
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement