Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/pfcc.yacl.site/web-service/
Upload File :
Current File : /home/bitrix/ext_www/pfcc.yacl.site/web-service/index.php

<?
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();
?>