Your IP : 216.73.216.170
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if(!CModule::IncludeModule("webservice") || !CModule::IncludeModule("iblock"))
return;
// наш новый класс наследуется от базового IWebService
class CVebBazaZnaniy extends IWebService
{
static $iblockID = 23;
static $iblockIDLib = 21;
function GetSections()
{
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME");
$arFilter = Array("IBLOCK_ID"=>self::$iblockID, 'ACTIVE' => 'Y');
$res = CIBlockSection::GetList($arSort, $arFilter, true, $arSelect);
while($arSect = $res->GetNext()){
$result['items'][$i++.":item"] = array(
"SectionName" => $arSect['NAME'],//urlencode($arItem['NAME']),
"SectionId" => $arSect['ID'],
"ElementsQty" => $arSect['ELEMENT_CNT'],
);
}
return $result;
}
function GetSectionInfo($sectionId)
{
if(!$sectionId) return;
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME");
$arFilter = Array("IBLOCK_ID"=>self::$iblockID, "ID" => $sectionId);
$res = CIBlockSection::GetList($arSort, $arFilter, true, $arSelect);
if($arSect = $res->GetNext()){
return array(
"SectionName" => $arSect['NAME'],//urlencode($arItem['NAME']),
"SectionId" => $arSect['ID'],
"ElementsQty" => $arSect['ELEMENT_CNT'],
);
}
}
function GetElementsInfoBySectionID($sectionId)
{
if(!$sectionId) return;
$HTTP_SERVER_NAME = $_SERVER["SERVER_NAME"].(strpos($_SERVER["SERVER_NAME"],'test')!==false?':50080':'');
$result = array();
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "TAGS", "DETAIL_PAGE_URL", "ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_TEXT");
$arFilter = Array("IBLOCK_ID"=>self::$iblockID, "SECTION_ID" => $sectionId, 'INCLUDE_SUBSECTIONS' => 'Y', 'ACTIVE' => 'Y');
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$i = 0;
while($obItem = $res->GetNextElement()){
$arItem = $obItem->GetFields();
$arItem['PROPS'] = $obItem->GetProperties();
$arData = array(
'ID' => $arItem['ID'],
'NAME' => $arItem['NAME'],
'DATE' => $arItem['ACTIVE_FROM'],
'PREVIEW_TEXT' => htmlspecialchars($arItem['PREVIEW_TEXT']),
'DETAIL_TEXT' => htmlspecialchars($arItem['DETAIL_TEXT']),
'TAGS' => $arItem['TAGS'],
'URL' => CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME.$arItem["DETAIL_PAGE_URL"],
);
$arProp = array('LINKS_VIDEO', 'LINKS_DOP', 'LINKS_BOOK');
foreach($arProp as $code)
if(!empty($arItem['PROPS'][$code]['VALUE']))
{
$p = 0;
foreach($arItem['PROPS'][$code]['VALUE'] as $i => $v)
$arData[$code][$p++.":item"] = array(
'NAME' => htmlspecialchars($arItem['PROPS'][$code]['DESCRIPTION'][$i]),
'LINK' => htmlspecialchars($v),
);
}
$result['items'][$i++.":item"] = $arData;
}
return $result;
}
function GetAllElementsInfo()
{
$HTTP_SERVER_NAME = $_SERVER["SERVER_NAME"].(strpos($_SERVER["SERVER_NAME"],'test')!==false?':50080':'');
$result = array();
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "TAGS", "DETAIL_PAGE_URL", "ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_TEXT");
$arFilter = Array("IBLOCK_ID"=>self::$iblockID, 'ACTIVE' => 'Y');
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$i = 0;
while($obItem = $res->GetNextElement()){
$arItem = $obItem->GetFields();
$arItem['PROPS'] = $obItem->GetProperties();
$arData = array(
'ID' => $arItem['ID'],
'NAME' => $arItem['NAME'],
'DATE' => $arItem['ACTIVE_FROM'],
'PREVIEW_TEXT' => htmlspecialchars($arItem['PREVIEW_TEXT']),
'DETAIL_TEXT' => htmlspecialchars($arItem['DETAIL_TEXT']),
'TAGS' => $arItem['TAGS'],
'URL' => CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME.$arItem["DETAIL_PAGE_URL"],
);
$arProp = array('LINKS_VIDEO', 'LINKS_DOP', 'LINKS_BOOK');
foreach($arProp as $code)
if(!empty($arItem['PROPS'][$code]['VALUE']))
{
$p = 0;
foreach($arItem['PROPS'][$code]['VALUE'] as $i => $v)
$arData[$code][$p++.":item"] = array(
'NAME' => htmlspecialchars($arItem['PROPS'][$code]['DESCRIPTION'][$i]),
'LINK' => htmlspecialchars($v),
);
}
$result['items'][$i++.":item"] = $arData;
}
return $result;
}
/*iblockIDLib Библиотека развития*/
function GetSectionsLibrary()
{
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME");
$arFilter = Array("IBLOCK_ID"=>self::$iblockIDLib, 'ACTIVE' => 'Y');
$res = CIBlockSection::GetList($arSort, $arFilter, true, $arSelect);
while($arSect = $res->GetNext()){
$result['items'][$i++.":item"] = array(
"SectionName" => $arSect['NAME'],//urlencode($arItem['NAME']),
"SectionId" => $arSect['ID'],
"ElementsQty" => $arSect['ELEMENT_CNT'],
);
}
return $result;
}
function GetSectionLibraryInfo($sectionId)
{
if(!$sectionId) return;
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME");
$arFilter = Array("IBLOCK_ID"=>self::$iblockIDLib, "ID" => $sectionId);
$res = CIBlockSection::GetList($arSort, $arFilter, true, $arSelect);
if($arSect = $res->GetNext()){
return array(
"SectionName" => $arSect['NAME'],//urlencode($arItem['NAME']),
"SectionId" => $arSect['ID'],
"ElementsQty" => $arSect['ELEMENT_CNT'],
);
}
}
function GetElementsLibraryInfoBySectionID($sectionId)
{
if(!$sectionId) return;
$HTTP_SERVER_NAME = $_SERVER["SERVER_NAME"].(strpos($_SERVER["SERVER_NAME"],'test')!==false?':50080':'');
$prefix = CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME;
$result = array();
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DETAIL_PAGE_URL", "ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_TEXT", "PREVIEW_PICTURE");
$arFilter = Array("IBLOCK_ID"=>self::$iblockIDLib, "SECTION_ID" => $sectionId, 'INCLUDE_SUBSECTIONS' => 'Y', 'ACTIVE' => 'Y');
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$i = 0;
while($obItem = $res->GetNextElement()){
$arItem = $obItem->GetFields();
$arItem['PROPS'] = $obItem->GetProperties();
$arData = array(
'ID' => $arItem['ID'],
'NAME' => $arItem['NAME'],
'PREVIEW_TEXT' => htmlspecialchars($arItem['PREVIEW_TEXT']),
'DETAIL_TEXT' => htmlspecialchars($arItem['DETAIL_TEXT']),
'PREVIEW_PICTURE' => $prefix.CFile::GetPath($arItem['PREVIEW_PICTURE']),
'COVER' => $prefix.CFile::GetPath($arItem['PROPS'][COVER]['VALUE']),
'URL' => $prefix.$HTTP_SERVER_NAME.$arItem["DETAIL_PAGE_URL"],
'AUTHOR' => $arItem['PROPS'][AUTHOR]['VALUE'],
'BOOK_PDF' => $arItem['PROPS'][BOOK_PDF]['VALUE'] ? $prefix.CFile::GetPath($arItem['PROPS'][BOOK_PDF]['VALUE']) : '',
'BOOK_MOBI' => $arItem['PROPS'][BOOK_MOBI]['VALUE'] ? $prefix.CFile::GetPath($arItem['PROPS'][BOOK_MOBI]['VALUE']) : '',
'BOOK_EPUB' => $arItem['PROPS'][BOOK_EPUB]['VALUE'] ? $prefix.CFile::GetPath($arItem['PROPS'][BOOK_EPUB]['VALUE']) : '',
);
$result['items'][$i++.":item"] = $arData;
}
return $result;
}
function GetAllElementsLibraryInfo()
{
$HTTP_SERVER_NAME = $_SERVER["SERVER_NAME"].(strpos($_SERVER["SERVER_NAME"],'test')!==false?':50080':'');
$result = array();
$arSort = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "TAGS", "DETAIL_PAGE_URL", "ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_TEXT");
$arFilter = Array("IBLOCK_ID"=>self::$iblockIDLib, 'ACTIVE' => 'Y');
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$i = 0;
while($obItem = $res->GetNextElement()){
$arItem = $obItem->GetFields();
$arItem['PROPS'] = $obItem->GetProperties();
$arData = array(
'ID' => $arItem['ID'],
'NAME' => $arItem['NAME'],
'PREVIEW_TEXT' => htmlspecialchars($arItem['PREVIEW_TEXT']),
'DETAIL_TEXT' => htmlspecialchars($arItem['DETAIL_TEXT']),
'PREVIEW_PICTURE' => CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME.CFile::GetPath($arItem['PREVIEW_PICTURE']),
'COVER' => CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME.CFile::GetPath($arItem['PROPS'][COVER]['VALUE']),
'URL' => CVebSiteTemplateTools::GetProtocolPrefix().$HTTP_SERVER_NAME.$arItem["DETAIL_PAGE_URL"],
'AUTHOR' => $arItem['PROPS'][AUTHOR]['VALUE'],
'BOOK_PDF' => $arItem['PROPS'][BOOK_PDF]['VALUE'] ? CFile::GetPath($arItem['PROPS'][BOOK_PDF]['VALUE']) : '',
'BOOK_MOBI' => $arItem['PROPS'][BOOK_MOBI]['VALUE'] ? CFile::GetPath($arItem['PROPS'][BOOK_MOBI]['VALUE']) : '',
'BOOK_EPUB' => $arItem['PROPS'][BOOK_EPUB]['VALUE'] ? CFile::GetPath($arItem['PROPS'][BOOK_EPUB]['VALUE']) : '',
);
$result['items'][$i++.":item"] = $arData;
}
return $result;
}
function GetWebServiceDesc()
{
$wsdesc = new CWebServiceDesc();
$wsdesc->wsname = "veb.webservice.baza.znaniy"; // название сервиса
$wsdesc->wsclassname = "CVebBazaZnaniy"; // название класса
$wsdesc->wsdlauto = true;
$wsdesc->wsendpoint = CWebService::GetDefaultEndpoint();
$wsdesc->wstargetns = CWebService::GetDefaultTargetNS();
$wsdesc->classTypes = array();
$wsdesc->structTypes = array();
$wsdesc->classTypes['arElements'] = array(
"ID" => array("varType" => "integer", "strict" => "no"),
"NAME" => array("varType" => "string", "strict" => "no"),
"DATE" => array("varType" => "string", "strict" => "no"),
"PREVIEW_TEXT" => array("varType" => "string", "strict" => "no"),
"DETAIL_TEXT" => array("varType" => "string", "strict" => "no"),
"TAGS" => array("varType" => "string", "strict" => "no"),
"URL" => array("varType" => "string", "strict" => "no"),
"PREVIEW_PICTURE" => array("varType" => "string", "strict" => "no"),
"COVER" => array("varType" => "string", "strict" => "no"),
"AUTHOR" => array("varType" => "string", "strict" => "no"),
"LINKS_VIDEO" => array("varType" => "ArrayOfarProp", "arrType" => "arProp"),
"LINKS_DOP" => array("varType" => "ArrayOfarProp", "arrType" => "arProp"),
"LINKS_BOOK" => array("varType" => "ArrayOfarProp", "arrType" => "arProp"),
"BOOK_PDF" => array("varType" => "string", "strict" => "no"),
"BOOK_MOBI" => array("varType" => "string", "strict" => "no"),
"BOOK_EPUB" => array("varType" => "string", "strict" => "no"),
);
$wsdesc->classTypes['arProp'] = array(
"LINK" => array("varType" => "string", "strict" => "no"),
"NAME" => array("varType" => "string", "strict" => "no"),
);
$wsdesc->classTypes['arSections'] = array(
"SectionName" => array("varType" => "string", "strict" => "no"),
"SectionId" => array("varType" => "integer", "strict" => "no"),
"ElementsQty" => array("varType" => "integer", "strict" => "no")
);
$wsdesc->classes = array(
"CVebBazaZnaniy"=> array(
"GetSections" => array(
"type" => "public",
"description" => "Данный класс позволяет получить информацию по всем разделам ИБ Производительность",
"input" => array(
),
"output" => array(
"items" => array(
"varType" => "ArrayOfSections",
"arrType" => "arSections"
),
),
"httpauth" => "N"
),
"GetSectionInfo" => array(
"type" => "public",
"description" => "Данный класс позволяет получить информацию по одному разделу ИБ Производительность",
"input" => array(
"SectionId" => array("varType" => "string"),
),
"output" => array(
"SectionName" => array("varType" => "string"),
"SectionId" => array("varType" => "integer"),
"ElementsQty" => array("varType" => "integer")
),
"httpauth" => "N"
),
"GetElementsInfoBySectionID" => array(
"type" => "public",
"description" => "Данный класс позволяет получить все элементы в рамках одной категории ИБ Производительность",
"input" => array(
"SectionId" => array("varType" => "string"),
),
"output" => array(
"items" => array(
"varType" => "ArrayOfElements",
"arrType" => "arElements"
),
),
"httpauth" => "N"
),
"GetAllElementsInfo" => array(
"type" => "public",
"description" => "Данный класс позволяет получить все элементы ИБ Производительность",
"input" => array(
// "IncludeAllProducts" => array("varType" => "string"),
),
"output" => array(
"items" => array(
"varType" => "ArrayOfarElements",
"arrType" => "arElements"
),
),
"httpauth" => "N"
),
/*Библиотека развития*/
"GetSectionsLibrary" => array(
"type" => "public",
"description" => "Данный класс позволяет получить информацию по всем разделам ИБ Библиотека развития",
"input" => array(
),
"output" => array(
"items" => array(
"varType" => "ArrayOfSections",
"arrType" => "arSections"
),
),
"httpauth" => "N"
),
"GetSectionLibraryInfo" => array(
"type" => "public",
"description" => "Данный класс позволяет получить информацию по одному разделу ИБ Библиотека развития",
"input" => array(
"SectionId" => array("varType" => "string"),
),
"output" => array(
"SectionName" => array("varType" => "string"),
"SectionId" => array("varType" => "integer"),
"ElementsQty" => array("varType" => "integer")
),
"httpauth" => "N"
),
"GetElementsLibraryInfoBySectionID" => array(
"type" => "public",
"description" => "Данный класс позволяет получить все элементы в рамках одной категории ИБ Библиотека развития",
"input" => array(
"SectionId" => array("varType" => "string"),
),
"output" => array(
"items" => array(
"varType" => "ArrayOfElements",
"arrType" => "arElements"
),
),
"httpauth" => "N"
),
"GetAllElementsLibraryInfo" => array(
"type" => "public",
"description" => "Данный класс позволяет получить все элементы ИБ Библиотека развития",
"input" => array(
// "IncludeAllProducts" => array("varType" => "string"),
),
"output" => array(
"items" => array(
"varType" => "ArrayOfarElements",
"arrType" => "arElements"
),
),
"httpauth" => "N"
),
)
);
return $wsdesc;
}
}
$arParams["WEBSERVICE_NAME"] = "veb.webservice.baza.znaniy";
$arParams["WEBSERVICE_CLASS"] = "CVebBazaZnaniy";
$arParams["WEBSERVICE_MODULE"] = "";
$APPLICATION->IncludeComponent(
"bitrix:webservice.server",
"",
$arParams
);
die();
?>