%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/home/bitrix/www/local/components/UB/adbase.offer.edit/
Upload File :
Create Path :
Current File : //proc/self/root/home/bitrix/www/local/components/UB/adbase.offer.edit/component.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

$arResult["BX_SESSION_CHECK"] = bitrix_sessid_post();

$isDebug = false;

if ($isDebug) { // Отладка
	$arResult['CASTING']['NAME'] = GetMessage("IT_REQUIRES_THE_SUPER_MIRACLE");
	$arResult['CASTING_PROPS']['CASTING_TEXT'] = GetMessage("EVERY_WHIM_FOR_YOUR_MONEY");
	$arResult['CASTING_PROPS']['COMPENSATION'] = '100';
	$arResult['CASTING_PROPS']['SECTIONS'] = array(7);
	$arResult['CASTING_PROPS']['JOB_DATE'] = GetMessage("MARCH_28_2015");
}

// Режим AJAX-подгрузки справочников
if ($arParams['AJAX_REF']=='Y' && $_SERVER["REQUEST_METHOD"]=="GET") {	

	$rs = CIBlockProperty::GetByID('COUNTRY', $arParams['IBLOCK_ID']);
	if($ar_res=$rs->GetNext()) {

		if ($_GET['REF']=='CITY') { // Список городов для текущего региона пользователя
			
						$arFilter = Array("ID"=>$_GET["SID"]);
						$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU");
						$rsCity = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
								
			if ($arCity = $rsCity->GetNext()) {				
				$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
				$region = '';
				
				while($arNav = $rsNav->GetNext()) {
					
					$arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6);
					$arSelectR = Array("ID", "NAME",  "IBLOCK_SECTION_ID", "UF_NAME_RU");
					$res = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false);
					if($ar_res = $res->GetNext()) {$nam_region = (isset($ar_res["UF_NAME_RU"]) && SITE_ID == "s1") ? $ar_res["UF_NAME_RU"] : $arNav['NAME'];  }		
						
					$region .= $nam_region.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', ');
				}
				?><optgroup label="<?=$region?>"><?
				$res = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "SECTION_ID"=>$arCity['IBLOCK_SECTION_ID'], "INCLUDE_SUBSECTIONS"=>"Y"), false, false, $arSelect);	
				while($ar_result=$res->GetNext()) {
					$nam_reg = (isset($ar_result["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "s1") ? $ar_result["PROPERTY_NAME_RU_VALUE"] : $ar_result["NAME"];
					?><option value="<?=$ar_result['ID']?>"><?=$nam_reg?></option><?
				}
				?></optgroup><?
			}
		}
		elseif (!empty($_GET['term'])) {
			$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU");
			$response = array();
			$arFilt = Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y", 
				array(
					"LOGIC" => "OR",
					array("NAME"=>"%".$_GET['term']."%"),
					array("PROPERTY_NAME_RU"=>"%".$_GET['term']."%"),
				)
			);
			$rsCity = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), $arFilt, false, false, $arSelect);
			while ($arCity = $rsCity->GetNext()) {
				if (!array_key_exists($arCity['IBLOCK_SECTION_ID'], $response)) {
					$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
					$region = '';
					while($arNav = $rsNav->GetNext()) {
						$arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6);
						$arSelectR = Array("ID", "NAME",  "IBLOCK_SECTION_ID", "UF_NAME_RU");
						$resr = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false);
						if($ar_resr = $resr->GetNext()) {$nam_reg_t = (isset($ar_resr["UF_NAME_RU"]) && SITE_ID == "s1") ? $ar_resr["UF_NAME_RU"] : $arNav['NAME'];  }	
						$region .= $nam_reg_t.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', ');
					}
					
					$response[$arCity['IBLOCK_SECTION_ID']] = array(
						'group' => true,
						'text' => $region,
						'items' => array()
					);	
				}
				$nam_r = (isset($arCity["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "s1") ? $arCity["PROPERTY_NAME_RU_VALUE"] : $arCity["NAME"];				
				$response[$arCity['IBLOCK_SECTION_ID']]['items'][] = array('value'=>$arCity['ID'],'text'=>$nam_r);
			}			
			echo json_encode($response);
		}
		else {
			echo json_encode($_REQUEST);
		}
		
	}	
	
	define("PUBLIC_AJAX_MODE", true);
	require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
	die();

}

// Публикация объявления доступна только для пользователей, обладающих публичных профилем
if ($USER->IsAuthorized()) {
	if (!($arParams['NEED_PROFILE']=='Y'?
		isUserProfile($USER->GetID()):isJobUser($USER->GetID()))
		) {
		$arResult["ERROR_ACCESS_DENIED"] = 'Y';
	}
	elseif (intval($arParams['SILENT_PERIOD'])>0 && !$USER->IsAdmin()) {		
		$rsOffers = CIBlockElement::GetList(Array("id"=>"desc"),
			Array("IBLOCK_ID"=>$arParams['IBLOCK_ID'],'CREATED_BY'=>$USER->GetID(),'ACTIVE'=>'Y'));
		if ($arLastOffer = $rsOffers->GetNext()) {
			$silentPeriod = round((mktime() - MakeTimeStamp($arLastOffer['DATE_CREATE'],CLang::GetDateFormat("FULL"))) / 60 / 24);
			if ($silentPeriod<IntVal($arParams['SILENT_PERIOD'])) {
				$arResult["ERROR_SILENT_PERIOD"] = 'Y';
				$silentPeriod = IntVal($arParams['SILENT_PERIOD']) - $silentPeriod;
				
				if ($silentPeriod==0) $s=GetMessage("LESS_THAN_ONE_HOUR");
				elseif ($silentPeriod==1) $s=$silentPeriod.GetMessage("HOUR");
				elseif ($silentPeriod>1 && $silentPeriod<5) $s=$silentPeriod.GetMessage("HOURS_A");
				else $s=$silentPeriod.GetMessage("HOURS_OV");
				
				$arResult["SILENT_PERIOD"] = $s;
			}
		}
	}
}
else {
	$arResult["ERROR_ACCESS_DENIED"] = 'Y';
}

/*
function checkDateFormat($datetime) {
	$format = "DD.MM.YYYY";
	if ($arr = ParseDateTime($datetime, $format)) return true;
	else return false;
}
*/

function clearDateMask($date) {
	if ($date=="__.__.____" || $date=="__/__/____") return '';
	else return $date;
}

if ($_SERVER["REQUEST_METHOD"]=="POST" && check_bitrix_sessid()) {
	
	if (!empty($_REQUEST['ACTION']) && intval($_REQUEST['ID'])>0) {
	
		$response = '';
		$rsItem = CIBlockElement::GetByID(intval($_REQUEST['ID']));
		if ($arItem = $rsItem->GetNext()) {
			if( $arItem['CREATED_BY']!=$USER->GetID())
				$response = GetMessage("YOU_ARE_NOT_THE_AUTHOR_OF_AD").$_REQUEST['ID'];
		}
		else 
			$response = GetMessage("AD_ID").$_REQUEST['ID'].GetMessage("NOT_FOUND");

		if (!empty($response)) { // Выход по ошибке
			echo $response;
			define("PUBLIC_AJAX_MODE", true);
			require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
			die();
		}
	
		if ($_REQUEST['ACTION']=='STOP') { // Снятие с публикации
			$el = new CIBlockElement;
			if ($el->Update($arItem['ID'], array('ACTIVE'=>'N')))
				$response = GetMessage("AD_IS_REMOVED_FROM_PUBLICATION");
			else
				$response = GetMessage("AN_ERROR_HAS_OCCURRED_WHEN_REMOVING_AD_ID").$_REQUEST['ID'].GetMessage("FROM_PUBLICATION_PLEASE_CONTACT");
			echo $response;
			define("PUBLIC_AJAX_MODE", true);
			require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
			die();
		}
		elseif ($_REQUEST['ACTION']=='COPY') { // Повторить

		}
		elseif ($_REQUEST['ACTION']=='EDIT') { // Редактировать
			$rsProps = CIBlockElement::GetProperty($arParams['IBLOCK_ID'], $arItem['ID'], array(), array());
	    while ($ob = $rsProps->GetNext())
	    {
		    if ($ob['MULTIPLE']=='Y') {
			    if (array_key_exists($ob['CODE'],$arProps))
				    $arProps[$ob['CODE']][] = $ob['VALUE'];
				  else
						$arProps[$ob['CODE']] = array($ob['VALUE']);
		    }
		    else
			    $arProps[$ob['CODE']] = $ob['VALUE'];

		  }
		  $arResult['CASTING'] = $arItem;
		  $arResult['CASTING_PROPS'] = $arProps;
		}
		elseif ($_REQUEST['ACTION']=='DELETE') { // Удалить
			
		}

	} else {

		CModule::IncludeModule("bizproc");
		
		if (isset($_POST['CASTING_PROPS']['JOB_DATE'])) $_POST['CASTING_PROPS']['JOB_DATE']=clearDateMask($_POST['CASTING_PROPS']['JOB_DATE']);
		if (isset($_POST['CASTING_PROPS']['START_DATE'])) $_POST['CASTING_PROPS']['START_DATE']=clearDateMask($_POST['CASTING_PROPS']['START_DATE']);
		if (isset($_POST['CASTING_PROPS']['END_DATE'])) $_POST['CASTING_PROPS']['END_DATE']=clearDateMask($_POST['CASTING_PROPS']['END_DATE']);
	
		$rsCity = CIBlockElement::GetByID($_POST['CASTING_PROPS']['CITY']);			
		if ($arCity = $rsCity->GetNext()) {				
			$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
			if($arNav = $rsNav->GetNext())
				$_POST['CASTING_PROPS']['COUNTRY'] = $arNav['ID'];

				$_POST['CASTING']['PREVIEW_TEXT'] = $arParams['PREFIX'].$_POST['CASTING']['NAME']."\n".$arNav['NAME']." / ".$arCity['NAME'];
		}
		
		if (!empty($_POST['NEW_IMAGE'])) { // Загружаем изображение
			$tmpdir = $_SERVER["DOCUMENT_ROOT"]."/tmp";
			$tmpfname = tempnam($tmpdir,"OFFER").".jpg";
			$image = explode(",",$_POST["NEW_IMAGE"]);
			file_put_contents($tmpfname, base64_decode($image[1]));
			$arFile = CFile::MakeFileArray($tmpfname);
	
			if ($isDebug) {
				?><pre><? print_r($arFile); ?></pre><?
			}
	
			// $arFile['old_file'] = $ar_fields['DETAIL_PICTURE']; ДЛЯ УДАЛЕНИЯ ПРИ ОБНОВЛЕНИИ
			$_POST['CASTING']['DETAIL_PICTURE'] = $arFile;
		}
		else { // Подгружаем аватар (если не задано изображение)

			$r = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$USER->GetID()), false, false,
				array("IBLOCK_ID", "ID", "NAME", "DETAIL_PICTURE"));
				
			if($ar_fields = $r->GetNext()) {
				$avatar = $ar_fields["DETAIL_PICTURE"];
				if ($avatar>0) {
					$image = CFile::CopyFile($avatar);
					$_POST['CASTING']['DETAIL_PICTURE'] = CFile::MakeFileArray($image);
				}
			}		

		}
				
		$rsEnum = CIBlockPropertyEnum::GetList(array(), array("ID"=>IntVal($_POST['CASTING_PROPS']['PUBLIC_DATE'])));
		if ($arEnum = $rsEnum->GetNext())
			$publicDays = $arEnum['XML_ID'];
		
		// Используется для вывода в ЛК до модерации (БП устаналивает значения от даты модерации)
		$_POST['CASTING']['DATE_ACTIVE_FROM'] = date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")),mktime());
		$_POST['CASTING']['DATE_ACTIVE_TO'] = date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")),
			mktime(date("H"), date("i"), date("s"), date("m"), date("d")+IntVal($publicDays), date("Y")));
	
		$el = new CIBlockElement();
				
		if (intval($_POST['CASTING']['ID'])>0) {
			$response = '';
			$rsItem = CIBlockElement::GetByID(intval($_POST['CASTING']['ID']));
			if ($arItem = $rsItem->GetNext()) {
				if( $arItem['CREATED_BY']!=$USER->GetID())
					$response = GetMessage("YOU_ARE_NOT_THE_AUTHOR_OF_AD").$_POST['CASTING']['ID'];
			}
			else 
				$response = GetMessage("AD_ID").$_POST['CASTING']['ID'].GetMessage("NOT_FOUND");

			if (!empty($response)) { // Выход по ошибке
				echo $response;
				define("PUBLIC_AJAX_MODE", true);
				require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
				die();
			}
		// Редактирование
			if ($el->Update($_POST['CASTING']['ID'], $_POST['CASTING'])) {
				$arResult['CASTING_ID'] = $_POST['CASTING']['ID'];
				CIBlockElement::SetPropertyValuesEx($arResult['CASTING_ID'], false, $_POST['CASTING_PROPS']);
			}
			else
			  $arResult['ERRORS'] = GetMessage("ERROR_AD_REGISTRATION").'<br/>'.$el->LAST_ERROR;
		}
		else {  // Создание

			$_POST['CASTING']['IBLOCK_ID'] = $arParams['IBLOCK_ID'];
			if (intval($arParams['IBLOCK_ID']) == 12) {
				$_POST['CASTING_PROPS']['UB_ONLY'] = "Y";
			};
			$_POST['CASTING']['PROPERTY_VALUES'] = $_POST['CASTING_PROPS'];

			if($CASTING_ID = $el->Add($_POST['CASTING'])) {
				$arResult['CASTING_ID'] = $CASTING_ID;
				$arResult['CASTING']['ID'] = $CASTING_ID;
			}
			else
			  $arResult['ERRORS'] = GetMessage("ERROR_AD_REGISTRATION").'<br/>'.$el->LAST_ERROR;
		}

		if (isset($tmpfname)) unlink($tmpfname);
	
		if($arResult['CASTING_ID']>0) { // Запускаем БП

			$bpList = CBPDocument::GetWorkflowTemplatesForDocumentType(array("iblock", "CIBlockDocument", 'iblock_'.$arParams['IBLOCK_ID']));
			foreach($bpList as $bp)
				if ($bp['AUTO_EXECUTE'] & 1) {
					$arErrorsTmp = array();
					CBPDocument::StartWorkflow($bp['ID'],array("iblock", "CIBlockDocument", $arResult['CASTING_ID']),array(),$arErrorsTmp);
					if (count($arErrorsTmp) > 0)
					   $arResult['ERRORS'] = print_r($arErrorsTmp,true);					
				}			
		}
		
		$arResult['CASTING'] = $_POST['CASTING'];
		$arResult['CASTING_PROPS'] = $_POST['CASTING_PROPS'];
	
		if ($isDebug) {
			?><pre><? print_r($arResult); ?></pre><?
		}
	
	}
		
}

// Формируем поля-справочники из ИБ
if (CModule::IncludeModule("iblock")) {

	// Разделы	
	$res = CIBlockProperty::GetByID('SECTIONS', $arParams['IBLOCK_ID']);
	if($ar_res = $res->GetNext()) {
		$rs = CIBlockSection::GetList(array('SORT'=>'ASC','NAME'=>'ASC'),array('IBLOCK_ID'=>$ar_res['LINK_IBLOCK_ID'],/*'UF_PROF'=>1,*/'ACTIVE'=>'Y'));
		while ($ar = $rs->GetNext()) {
			$arResult['SECTIONS'][$ar['ID']] = $ar['DESCRIPTION'];
		}
	}

	$arResult['PREVIEW_IMG'] = '';
	if (intval($arResult['CASTING']['DETAIL_PICTURE'])>0) {
		$arResult['AVATAR'] = CFile::ShowImage($arResult['CASTING']['DETAIL_PICTURE'], 140, 97, "border=0");
		$arResult['PREVIEW_IMG'] = $arResult['AVATAR'];
	}
	
	// Город и аватар
	if ($USER->GetID()>0) {

		$r = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$USER->GetID()), false, false,
			array("IBLOCK_ID", "ID", "NAME", "DETAIL_PICTURE", "PROPERTY_REGION"));
			
		if($ar_fields = $r->GetNext()) {
			if (empty($arResult['CASTING_PROPS']['CITY'])) {
				$arResult['CASTING_PROPS']['CITY'] = $ar_fields['PROPERTY_REGION_VALUE'];
			}
			if (empty($arResult['AVATAR'])) $arResult['AVATAR'] = CFile::ShowImage($ar_fields["DETAIL_PICTURE"], 140, 97, "border=0");
		}
		else { // Заказчик
			$arUser = CUser::GetByID($USER->GetID())->Fetch();
			if (empty($arResult['CASTING_PROPS']['CITY'])) {
				$arResult['CASTING_PROPS']['CITY'] = $arUser['PERSONAL_CITY'];
			}
			if (empty($arResult['AVATAR'])) $arResult['AVATAR'] = CFile::ShowImage($arUser["PERSONAL_PHOTO"], 140, 97, "border=0");
		}
			
		$arResult['NO_EDIT'] = 'Y';
	}
	
	// Компенсация валюта
	$property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'COMPENSATION_CURRENCY'));
	while($enum_fields = $property_enums->GetNext()) {
		$arResult['CURRENCY'][$enum_fields['ID']] = $enum_fields['VALUE'];
	}	

	// Типы компенсации
	$property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'COMPENSATION_TYPE'));
	while($enum_fields = $property_enums->GetNext()) {
		$arResult['COMPENSATION_TYPE'][$enum_fields['ID']] = $enum_fields['VALUE'];
	}	

	// Пол (если есть)
	$property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'SEX'));
	while($enum_fields = $property_enums->GetNext()) {
		$arResult['SEX'][$enum_fields['ID']] = $enum_fields['VALUE'];
	}

	// Обнаженка (если есть)
	$property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'NUDITY'));
	while($enum_fields = $property_enums->GetNext()) {
		$arResult['NUDITY'][$enum_fields['ID']] = $enum_fields['VALUE'];
	}

	// Срок публикации
	$property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'PUBLIC_DATE'));
	while($enum_fields = $property_enums->GetNext()) {
		$arResult['PUBLIC_DATE'][$enum_fields['ID']] = $enum_fields['VALUE'];
	}	

}

/* ?><pre><? print_r($arResult); ?></pre><? // */
	
if (intval($arResult['CASTING_ID'])>0 && strlen($arParams['OK_URL'])>0) {
	header("Location: ".$arParams['OK_URL'].'&POST_ID='.$arResult['CASTING_ID']);
}
else {
	$this->IncludeComponentTemplate();
}

Zerion Mini Shell 1.0