/** * <p>Получение данных о галереях по ID. Статичный метод.</p> * * * @param mixed $id идентификатор галереи * * @param mixed $lang = LANGUAGE_ID Идентификатор языка для получения локализации, по умолчанию * LANGUAGE_ID (можно передать константу CSmileSet::GET_ALL_LANGUAGE для получения * всех локализаций) * * @return mixed <p>Возвращает массив с данными о галерее. </p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/csmilegallery/getbyid.php * @author Bitrix */ public static function getById($id, $lang = LANGUAGE_ID) { return CSmileSet::getById($id, $lang); }
} if ($_REQUEST['action'] == 'delete') { CSmile::delete($ID); } } } if ($lAdmin->EditAction()) { foreach ($FIELDS as $ID => $arFields) { $ID = IntVal($ID); if ($ID <= 0) { continue; } CSmile::update($ID, array('LANG' => array(LANGUAGE_ID => $arFields['NAME']), 'SORT' => $arFields['SORT'], 'TYPING' => $arFields['TYPING'])); } } $arSmileSet = CSmileSet::getById($arFilter['SET_ID']); $dbResultList = CSmile::getList(array('SELECT' => array('ID', 'SET_ID', 'SET_NAME', 'TYPE', 'NAME', 'SORT', 'TYPING', 'IMAGE', 'IMAGE_WIDTH', 'IMAGE_HEIGHT'), 'FILTER' => $arFilter, 'ORDER' => array($by => $order), 'NAV_PARAMS' => array("nPageSize" => CAdminResult::GetNavSize($sTableID)), 'RETURN_RES' => 'Y')); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("SMILE_NAV"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("SMILE_ID"), "sort" => "ID", "default" => false), array("id" => "TYPE", "content" => GetMessage('SMILE_TYPE'), "default" => true), array("id" => "NAME", "content" => GetMessage("SMILE_NAME"), "default" => true), array("id" => "TYPING", "content" => GetMessage("SMILE_TYPING"), "default" => true), array("id" => "ICON", "content" => GetMessage("SMILE_ICON"), "default" => true), array("id" => "SORT", "content" => GetMessage("SMILE_SORT"), "sort" => "SORT", "default" => true, "align" => "right"), array("id" => "SET_NAME", "content" => GetMessage("SMILE_SET_NAME"), "default" => false), array("id" => "IMAGE", "content" => GetMessage("SMILE_IMAGE_FILE"), "default" => false))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); while ($arForum = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arForum); $row->AddField("ID", $f_ID); $row->AddField("SORT", $f_SORT); $row->AddField("TYPE", $f_TYPE == CSmile::TYPE_ICON ? GetMessage("SMILE_TYPE_ICON") : GetMessage("SMILE_TYPE_SMILE")); $row->AddViewField("SET_NAME", '<a title="' . GetMessage("SMILE_EDIT_DESCR") . '" href="' . "smile_set_edit.php?ID=" . $f_SET_ID . "&lang=" . LANG . "&" . GetFilterParams("filter_") . '">' . (strlen($f_SET_NAME) > 0 ? $f_SET_NAME : GetMessage('SMILE_SET_NO_NAME', array('#ID#' => $f_SET_ID))) . '</a>'); $row->AddViewField("NAME", '<a title="' . GetMessage("SMILE_EDIT_DESCR") . '" href="' . "smile_edit.php?ID=" . $f_ID . "&lang=" . LANG . "&" . GetFilterParams("filter_") . '">' . (strlen($f_NAME) > 0 ? $f_NAME : GetMessage('SMILE_NO_NAME')) . '</a>'); $row->AddField("TYPING", $f_TYPING); $row->AddField("ICON", "<img src=\"" . ($f_TYPE == CSmile::TYPE_ICON ? CSmile::PATH_TO_ICON : CSmile::PATH_TO_SMILE) . $f_SET_ID . "/" . $f_IMAGE . "\" border=\"0\" " . (IntVal($f_IMAGE_WIDTH) > 0 ? "width=\"" . $f_IMAGE_WIDTH . "\"" : "") . " " . (IntVal($f_IMAGE_HEIGHT) > 0 ? "height=\"" . $f_IMAGE_HEIGHT . "\"" : "") . ">");
LocalRedirect(isset($_REQUEST['IMPORT']) ? "smile_import.php?lang=" . LANG . "&SET_ID=" . $ID : (strlen($save) > 0 ? "smile_set.php?GALLERY_ID=" . $parentId . "&lang=" . LANG . "&" . GetFilterParams("filter_", false) : "smile_set_edit.php?GALLERY_ID=" . $parentId . "&lang=" . LANG . "&ID=" . $ID . "&" . GetFilterParams("filter_", false))); } } $e = new CAdminException($arError); $message = new CAdminMessage($ID > 0 ? GetMessage("ERROR_EDIT_SMILE") : GetMessage("ERROR_ADD_SMILE"), $e); $bInitVars = true; } if ($bInitVars && !empty($arFields)) { if (isset($arFields['NAME'])) { foreach ($arFields['NAME'] as $key => $value) { $arFields['NAME'][htmlspecialcharsbx($key)] = htmlspecialcharsbx($value); } } $arSmileSet = array("SORT" => isset($arFields['SORT']) ? intval($arFields['SORT']) : 300, "STRING_ID" => isset($arFields['STRING_ID']) ? htmlspecialcharsbx($arFields['STRING_ID']) : "", "NAME" => isset($arFields['NAME']) ? $arFields['NAME'] : array(), "PARENT_ID" => isset($arFields['GALLERY_ID']) ? $arFields['GALLERY_ID'] : 0); } elseif ($ID > 0) { $arSmileSet = CSmileSet::getById($ID, CSmileSet::GET_ALL_LANGUAGE); } else { if (isset($_REQUEST['NAME'])) { foreach ($_REQUEST['NAME'] as $key => $value) { $_REQUEST['NAME'][htmlspecialcharsbx($key)] = htmlspecialcharsbx($value); } } $arSmileSet = array("SORT" => isset($_REQUEST['SORT']) ? intval($_REQUEST['SORT']) : 300, "STRING_ID" => isset($_REQUEST['STRING_ID']) ? htmlspecialcharsbx($_REQUEST['STRING_ID']) : "", "NAME" => isset($_REQUEST['NAME']) ? $_REQUEST['NAME'] : array(), "PARENT_ID" => isset($_REQUEST['GALLERY_ID']) ? $_REQUEST['GALLERY_ID'] : 0); } require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $aMenu = array(array("TEXT" => GetMessage("SMILE_BTN_BACK"), "LINK" => "/bitrix/admin/smile_set.php?GALLERY_ID=" . $arSmileSet['PARENT_ID'] . "&lang=" . LANG . "&" . GetFilterParams("filter_", false), "ICON" => "btn_list")); if ($ID > 0) { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array("TEXT" => GetMessage("SMILE_BTN_NEW"), "LINK" => "/bitrix/admin/smile_set_edit.php?GALLERY_ID=" . $arSmileSet['PARENT_ID'] . "&lang=" . LANG . "&" . GetFilterParams("filter_", false), "ICON" => "btn_new"); if (!in_array($arSmileSet["STRING_ID"], array('bitrix_main'))) { $aMenu[] = array("TEXT" => GetMessage("SMILE_BTN_DELETE"), "LINK" => "javascript:if(confirm('" . GetMessage("SMILE_BTN_DELETE_CONFIRM") . "')) window.location='/bitrix/admin/smile_set.php?GALLERY_ID=" . $arSmileSet['PARENT_ID'] . "&action=delete&ID[]=" . $ID . "&lang=" . LANG . "&" . bitrix_sessid_get() . "#tb';", "ICON" => "btn_delete");
public static function import($arParams) { global $APPLICATION; // check fields $aMsg = array(); $arParams['SET_ID'] = intval($arParams['SET_ID']); $arParams['IMPORT_IF_FILE_EXISTS'] = isset($arParams['IMPORT_IF_FILE_EXISTS']) && $arParams['IMPORT_IF_FILE_EXISTS'] == 'Y' ? true : false; if (isset($arParams['FILE']) && GetFileExtension($arParams['FILE']) != 'zip') { $aMsg["FILE_EXT"] = array("id" => "FILE_EXT", "text" => GetMessage("MAIN_SMILE_IMPORT_FILE_EXT_ERROR")); } else { if (!isset($arParams['FILE']) || !file_exists($arParams['FILE'])) { $aMsg["FILE"] = array("id" => "FILE", "text" => GetMessage("MAIN_SMILE_IMPORT_FILE_ERROR")); } else { if ($arParams['SET_ID'] <= 0) { $aMsg["SET_ID"] = array("id" => "SET_ID", "text" => GetMessage("MAIN_SMILE_IMPORT_SET_ID_ERROR")); } } } if (!empty($aMsg)) { $e = new CAdminException($aMsg); $APPLICATION->ThrowException($e); return false; } $sUnpackDir = CTempFile::GetDirectoryName(1); CheckDirPath($sUnpackDir); /** @var IBXArchive $oArchiver */ $oArchiver = CBXArchive::GetArchive($arParams['FILE'], "ZIP"); $oArchiver->SetOptions(array("STEP_TIME" => 300)); if (!$oArchiver->Unpack($sUnpackDir)) { $aMsg["UNPACK"] = array("id" => "UNPACK", "text" => GetMessage("MAIN_SMILE_IMPORT_UNPACK_ERROR")); $e = new CAdminException($aMsg); $APPLICATION->ThrowException($e); return false; } $arSmiles = array(); if (file_exists($sUnpackDir . 'install.csv')) { $arLang = array(); $db_res = CLanguage::GetList($b = "sort", $o = "asc"); while ($res = $db_res->Fetch()) { if (file_exists($sUnpackDir . 'install_lang_' . $res["LID"] . '.csv')) { $arSmiles = array(); $csvFile = new CCSVData(); $csvFile->LoadFile($sUnpackDir . 'install_lang_' . $res["LID"] . '.csv'); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); while ($smile = $csvFile->Fetch()) { if (defined('FX_UTF') && FX_UTF && $res["LID"] == 'ru') { $smile[1] = $APPLICATION->ConvertCharset($smile[1], 'windows-1251', 'utf-8'); } $arLang[$smile[0]][$res["LID"]] = $smile[1]; } } } $csvFile = new CCSVData(); $csvFile->LoadFile($sUnpackDir . 'install.csv'); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); while ($smile = $csvFile->Fetch()) { if (!in_array($smile[0], array(CSmile::TYPE_SMILE, CSmile::TYPE_ICON))) { continue; } $smile[3] = GetFileName($smile[3]); $imgArray = CFile::GetImageSize($sUnpackDir . $smile[3]); if (!is_array($imgArray)) { continue; } $arInsert = array('TYPE' => $smile[0], 'SET_ID' => $arParams['SET_ID'], 'CLICKABLE' => $smile[1] == 'Y' ? 'Y' : 'N', 'SORT' => intval($smile[2]), 'IMAGE' => $smile[3], 'IMAGE_WIDTH' => intval($smile[4]), 'IMAGE_HEIGHT' => intval($smile[5]), 'IMAGE_HR' => $smile[6] == 'Y' ? 'Y' : 'N', 'TYPING' => $smile[8]); if (isset($smile[7]) && isset($arLang[$smile[7]])) { $arInsert['LANG'] = $arLang[$smile[7]]; } $arSmiles[] = $arInsert; } } else { $smileSet = CSmileSet::getById($arParams['SET_ID']); if ($handle = @opendir($sUnpackDir)) { $sort = 300; while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_file($sUnpackDir . $file)) { $imgArray = CFile::GetImageSize($sUnpackDir . $file); if (is_array($imgArray)) { $smileHR = 'N'; $smileType = CSmile::TYPE_SMILE; $smileCode = GetFileNameWithoutExtension($file); if (strpos($file, 'smile_') !== false && strpos($file, 'smile_') == 0) { $smileCode = substr($smileCode, 6); } else { if (strpos($file, 'smile') !== false && strpos($file, 'smile') == 0) { $smileCode = substr($smileCode, 5); } elseif (strpos($file, 'icon_') !== false && strpos($file, 'icon_') == 0) { $smileType = CSmile::TYPE_ICON; $smileCode = substr($smileCode, 5); } else { if (strpos($file, 'icon') !== false && strpos($file, 'icon') == 0) { $smileType = CSmile::TYPE_ICON; $smileCode = substr($smileCode, 4); } } } if (strrpos($smileCode, '_hr') !== false && strrpos($smileCode, '_hr') == strlen($smileCode) - 3) { $smileHR = 'Y'; $smileCode = substr($smileCode, 0, strrpos($smileCode, '_hr')); } if ($pos = strpos($smileCode, '_hr_')) { echo substr($smileCode, 0, $pos); $smileHR = 'Y'; $smileCode = substr($smileCode, 0, $pos) . '_' . substr($smileCode, $pos + 4); } $arSmiles[] = array('TYPE' => $smileType, 'SET_ID' => $arParams['SET_ID'], 'CLICKABLE' => 'Y', 'SORT' => $sort, 'IMAGE' => $file, 'IMAGE_WIDTH' => intval($imgArray[0]), 'IMAGE_HEIGHT' => intval($imgArray[1]), 'IMAGE_HR' => $smileHR, 'TYPING' => ':' . (isset($smileSet['STRING_ID']) ? $smileSet['STRING_ID'] : $smileSet['ID']) . '/' . $smileCode . ':'); $sort = $sort + 5; } } } @closedir($handle); } } $importSmile = 0; foreach ($arSmiles as $smile) { $sUploadDir = ($smile['TYPE'] == CSmile::TYPE_ICON ? CSmile::PATH_TO_ICON : CSmile::PATH_TO_SMILE) . intval($smile["SET_ID"]) . '/'; if (file_exists($sUnpackDir . $smile['IMAGE']) && ($arParams['IMPORT_IF_FILE_EXISTS'] || !file_exists($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE']))) { if (CheckDirPath($_SERVER["DOCUMENT_ROOT"] . $sUploadDir)) { $insertId = CSmile::add($smile); if ($insertId) { if ($arParams['IMPORT_IF_FILE_EXISTS'] && file_exists($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'])) { $importSmile++; } else { if (copy($sUnpackDir . $smile['IMAGE'], $_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'])) { @chmod($_SERVER["DOCUMENT_ROOT"] . $sUploadDir . $smile['IMAGE'], FX_FILE_PERMISSIONS); $importSmile++; } else { CSmile::delete($insertId); } } } $APPLICATION->ResetException(); } } } return $importSmile; }
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } IncludeModuleLangFile(__FILE__); $sTableID = "tbl_smile_set"; $oSort = new CAdminSorting($sTableID, "ID", "asc"); $lAdmin = new CAdminList($sTableID, $oSort); $arFilterFields = array(); $lAdmin->InitFilter($arFilterFields); $arFilter = array(); if ($arID = $lAdmin->GroupAction()) { foreach ($arID as $ID) { if (strlen($ID) <= 0) { continue; } if ($_REQUEST['action'] == 'delete') { $arSmileSet = CSmileSet::getById($ID); if (!in_array($arSmileSet["STRING_ID"], array('bitrix_main'))) { CSmileSet::delete($ID); } } } } if ($lAdmin->EditAction()) { foreach ($FIELDS as $ID => $arFields) { $ID = IntVal($ID); if ($ID <= 0) { continue; } CSmileSet::update($ID, array('LANG' => array(LANGUAGE_ID => $arFields['NAME']), 'STRING_ID' => $arFields['STRING_ID'], 'SORT' => $arFields['SORT'])); } }
$arFields['LANG'][htmlspecialcharsbx($key)] = htmlspecialcharsbx($value); } } $arSmile = array("SORT" => isset($arFields['SORT']) ? intval($arFields['SORT']) : 300, "TYPE" => isset($arFields['TYPE']) ? htmlspecialcharsbx($arFields['TYPE']) : CSmile::TYPE_SMILE, "TYPING" => isset($arFields['TYPING']) ? htmlspecialcharsbx($arFields['TYPING']) : "", "HIDDEN" => isset($arFields['HIDDEN']) ? $arFields['HIDDEN'] : "N", "IMAGE" => "", "IMAGE_DEFINITION" => isset($arFields['IMAGE_DEFINITION']) ? $arFields['IMAGE_DEFINITION'] : CSmile::IMAGE_SD, "SET_ID" => isset($arFields['SET_ID']) ? intval($arFields['SET_ID']) : 0, "LANG" => isset($arFields['LANG']) ? $arFields['LANG'] : array()); } elseif ($ID > 0) { $arSmile = CSmile::getById($ID, CSmile::GET_ALL_LANGUAGE); $arSmile['LANG'] = $arSmile['NAME']; } else { if (isset($_REQUEST['LANG'])) { foreach ($_REQUEST['LANG'] as $key => $value) { $_REQUEST['LANG'][htmlspecialcharsbx($key)] = htmlspecialcharsbx($value); } } $arSmile = array("SORT" => isset($_REQUEST['SORT']) ? intval($_REQUEST['SORT']) : 300, "TYPE" => isset($_REQUEST['TYPE']) ? htmlspecialcharsbx($_REQUEST['TYPE']) : CSmile::TYPE_SMILE, "TYPING" => isset($_REQUEST['TYPING']) ? htmlspecialcharsbx($_REQUEST['TYPING']) : "", "HIDDEN" => isset($_REQUEST['HIDDEN']) ? "Y" : "N", "IMAGE" => "", "IMAGE_DEFINITION" => isset($_REQUEST['IMAGE_DEFINITION']) ? $_REQUEST['IMAGE_DEFINITION'] : CSmile::IMAGE_SD, "SET_ID" => isset($_REQUEST['SET_ID']) ? intval($_REQUEST['SET_ID']) : 0, "LANG" => isset($_REQUEST['LANG']) ? $_REQUEST['LANG'] : array()); } $smileSet = CSmileSet::getById($arSmile['SET_ID']); $arSmile['PARENT_ID'] = $smileSet['PARENT_ID']; require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $aMenu = array(array("TEXT" => GetMessage("SMILE_BTN_BACK"), "LINK" => "/bitrix/admin/smile.php?SET_ID=" . $arSmile['SET_ID'] . "&lang=" . LANG . "&" . GetFilterParams("filter_", false), "ICON" => "btn_list")); if ($ID > 0) { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array("TEXT" => GetMessage("SMILE_BTN_NEW"), "LINK" => "/bitrix/admin/smile_edit.php?lang=" . LANG . "&SET_ID=" . $arSmile['SET_ID'] . "&" . GetFilterParams("filter_", false), "ICON" => "btn_new"); $aMenu[] = array("TEXT" => GetMessage("SMILE_BTN_DELETE"), "LINK" => "javascript:if(confirm('" . GetMessage("SMILE_BTN_DELETE_CONFIRM") . "')) window.location='/bitrix/admin/smile.php?SET_ID=" . $arSmile['SET_ID'] . "&action=delete&ID[]=" . $ID . "&lang=" . LANG . "&" . bitrix_sessid_get() . "#tb';", "ICON" => "btn_delete"); } $context = new CAdminContextMenu($aMenu); $context->Show(); if (isset($message) && $message) { echo $message->Show(); } ?> <form method="POST" action="<?php